Live data from Hacker News

How to Evangelize a Programming Language

levelup.gitconnected.com

11–20 of 56 posts

Re: How to Evangelize a Programming Language

#11
post #5

Languages should stand or fall on their own technical merits. If you have to try and convince someone that language X is good (or bad), there is probably something not quite right. I hated Go when it first came out. I grew tired of hearing about it. My friends tried to get me to use it. I refused. One day, I needed to write some highly concurrent code, read about Go Routines, tried it and was hooked. I've been using…

Just like working on large technical projects, there is much more to success than just technical merits. Software engineering is mostly a social endeavor, and so social factors count—I’d argue they count more than technical ones in a lot of cases. Things like:

* whether the technology fits the background of your team/org/company

* the community/official support of the technology

* the long-term trajectory of the technology

* how the technology fares when used with groups of engineers, instead of individually

* social proof

* how easy it is for the existing job pool to learn the new technology

* if the technology has strong documentation

And there are more. These are more critical to me than eg goroutines. (And Go is my go-to language these days.)

Re: How to Evangelize a Programming Language

#12
The author gets you with some Pharo evangelizing in there, sneaky.

I'd really like someone from the Rust community (steveklabnik?) to write a history of the language/community and what decisions they took to grow. There's social and technical stuff that got people to go out and evangelize, which is half the battle - what they've really succeeded at is getting people to listen.

Re: How to Evangelize a Programming Language

#14

Can someone with actual real-life in-production-for-a-while in-an-actual-company-with-annoying-customers-who-change-mind-all-the-times tell me about the refactoring story in Smalltalk ? Sure, I know the IDE can change the signature of a function, and stuff like that, but is it enough to actually do broad refactorings with any level of confidence ("broad" meaning "the kind where you realize the next feature requests i…

On this note, I still haven't found a language that does broad refactoring as well as C# (with resharper) does.

From method extraction, to module, namespace, function renaming, to adding parameters to functions, it just takes care of it.

My suspicion is that Java does it as well (but I don't have experience with it), but every other language I've tried lags far behind it.

It's been really frustrating to be really getting into something then tripped up because it doesn't understand that when you're renaming Foo to Bar you also want foo.ext to become bar.ext. Or when you want to make foo(a,b,c) become foo(b,c) that it's the first parameter that needs removing (automatically) from all calls. Or even when transforming foo(a,b,c) to bar(b,c,d) that it can fix the calls with combined re-move and add parameter instructions.

Some languages are starting to catch up, but I've seen nothing that has come close to the productivity that C# has delivered specifically with respect to refactoring.

Can anyone recommend other language / IDE combinations that can deliver that kind of productivity?

(And I don't want to get into a discussion about whether that's misplaced productivity because it's better to write in a way that doesn't need re-writing and re-naming things all the time, because you might be right but it's one of those times that being right doesn't change the reality of the work environment.)

Re: How to Evangelize a Programming Language

#15

The author gets you with some Pharo evangelizing in there, sneaky. I'd really like someone from the Rust community (steveklabnik?) to write a history of the language/community and what decisions they took to grow. There's social and technical stuff that got people to go out and evangelize, which is half the battle - what they've really succeeded at is getting people to listen.

Frankly, Rust is not the example I would take about successful evanglization: the numerous Rewrite It In Rust (RIIC) posts, the ones asking on an inquisitional tone why the project haven't been written in rust, or those who changed the topic to rust in unrelated discussion (that's literally trolling) that is happening in a lot of threads here are really off-putting.

Re: How to Evangelize a Programming Language

#17

The author gets you with some Pharo evangelizing in there, sneaky. I'd really like someone from the Rust community (steveklabnik?) to write a history of the language/community and what decisions they took to grow. There's social and technical stuff that got people to go out and evangelize, which is half the battle - what they've really succeeded at is getting people to listen.

I think one of the hard things about making suggestions about how to do a thing like this is that it's unfalsifiable. I'm not suggesting that only things that are falsifiable are worthwhile, but like, let's take what you're saying here at face value: Rust was evangelized successfully. What we can't know is, could we have done a better job than we did? Did some of those choices that I or whoever else would suggest as a best practice actually harm the adoption of the language? How can we tell the difference?

Re: How to Evangelize a Programming Language

#18
post #3

This article has only one real tip: create a high school programming contest for it. The rest is evangelizing a specific language itself, which I won't mention to avoid fueling the gimmick. I think we've been had. In general programming language preferences are subjective. We all think different. I've been in many many debates over language merit. The only language that would truly make one happy is one custom fit fo…

One way that I feel comfortable with is publishing clear, real life-ish examples of what can be accomplished in the language by playing on it's strengths. Debating merits never really leads anywhere, all languages have strengths and weaknesses, all languages are compromises in some respect.

I've put quite some effort into the DRY database schema problem over the years. The only reasonable way forward that I've found is defining the schema in code and creating the database from that definition. SQL is a definitely more primitive and limited than most programming languages, so it makes perfect sense to generate it.

And the only way to truly custom fit a language is to create it [0].

[0] https://github.com/codr7/gfoo

Re: How to Evangelize a Programming Language

#19

PHP did not need anybody to evangelize it

PHP was evangelized by every website which mentioned it was built in it, including having URLs ending in ".php".

Similarly, C and shell were evangelized by every Unix installation, Javascript was evangelized by every website which used it, BASIC was evangelized by innumerable microcomputers which had a BASIC interpreter instead of an OS... the point is, the best evangelism is to tie the language to something useful. Make the language the way you get at the functionality of that thing. Python and R are both evangelized by tons of pre-written code which you can access most conveniently from those languages, for example.

Smalltalk is the language you use to get the value out of Smalltalk systems. The problem is that, for a lot of people, there's no next step: What do you use the Smalltalk system for? Very few have an answer.

The alternative is to make your language a better way to get value out of an existing system. Python spread in part by doing this to shell and Perl, and Perl spread in part by doing it to shell. Python isn't just a better Unix scripting language, because of its libraries, much like how Perl isn't just a better shell because of its libraries. However, it's one reason Python and Perl spread so effectively. Now, Go is trying to do it to Python and Rust is trying to do it to C++.

So tie your language to something big, or focus on displacing a language already tied to something big.

Re: How to Evangelize a Programming Language

#20

The author gets you with some Pharo evangelizing in there, sneaky. I'd really like someone from the Rust community (steveklabnik?) to write a history of the language/community and what decisions they took to grow. There's social and technical stuff that got people to go out and evangelize, which is half the battle - what they've really succeeded at is getting people to listen.

Frankly, Rust is not the example I would take about successful evanglization: the numerous Rewrite It In Rust (RIIC) posts, the ones asking on an inquisitional tone why the project haven't been written in rust, or those who changed the topic to rust in unrelated discussion (that's literally trolling) that is happening in a lot of threads here are really off-putting.

I mean my point was that it seemed to have worked. It's been awhile since I've seen RIIR posts or the dumb evangelism. More often I see comments like "this wouldn't have been a bug if you wrote it in Rust" which is usually accurate and engages compelling discussion.
Post reply on HN