Live data from Hacker News

How to Evangelize a Programming Language

levelup.gitconnected.com

21–30 of 56 posts

Re: How to Evangelize a Programming Language

#21

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 have a "Rust Evangelism Strike Force" laptop sticker, but I will caution: the more aggressive evangelism stuff that you cite here is not coming from the core team or people who actually build the Rust ecosystem.

Re: How to Evangelize a Programming Language

#22
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…

I think that part of the problem is to define data structures in a way that can be produced and consumed in multiple languages, algebraic data types are a good "least common denominator" for this.

Also w.r.t. reinventing the schema for databases, I have got a lot of mileage out of deriving the schema from code. Shameless plug, I have this little project (https://github.com/Morgan-Stanley/hobbes/) where we have a self-contained header-only library to push structured data out of process with minimal latency, query data concurrently with a Haskell-like PL. It works well for our kinds of systems (millions of orders per day, ~1 billion market data ticks, structured log data from multiple systems involved, ...).

Re: How to Evangelize a Programming Language

#23

Earlier quoted context omitted.

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.

> 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.

It's usually accurate, but it rarely spurs compelling discussion in my experience. Whether it's inertia or actual pigheadedness, smugly suggesting that they could have "just" rewritten their software in Rust and they wouldn't have their day ruined doesn't invite the best kind of discussion, considering that the people involved are either just coming out of the bad day or tend to underestimate the costs of switching.

Re: How to Evangelize a Programming Language

#24
post #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 get…

Java and intellij does all that.

Re: How to Evangelize a Programming Language

#25
Does it has cross-platform? One codebase, multiple targets? That's how you evangelize any programming language. In today's environment where the customer wants his solution to work on all devices, the programming language that has the least (zero might be impossible) quirks when targeting different OS'es wins my heart.

So far, IMO, there are zero programming languages that do this. Java comes closest but is like only half-way there, rest are either lagging behind or even don't even approach this. Also I hate Java, but that's my personal choice.

Re: How to Evangelize a Programming Language

#26

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.

There's nothing sneaky about it. Right at the start of the third paragraph, it says: "I’m a Smalltalk evangelist and Pharo is one of these languages."

The author is presenting one example, and pointing to a Pharo programming competition as the key exhibit. It's a pretty impressive competition, too. Impressive prizes. Impressive competition map and Pac-Man style game.

In fact, if you look around the same blog, you'll find a nice comparison to another competition called Battlesnake: https://smalltalk.tech.blog/2020/03/03/battlesnake-the-compe.... JRMPC seems to be a cut above.

Re: How to Evangelize a Programming Language

#27
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…

I disagree. Many languages are technically excellent, but not gaining much mind share. They languish in the job market. For example, at Indeed, Clojure has 393 job postings, Elixir has 430, F# has 156, Haskell has 419, Julia has 706, Lua has 562, and Nim has 81. These are for the U.S. at the time of writing.

Python has 76,979 job postings, Java has 72,743, and even lowly Perl has 14,802. Technical merit is not enough; those lesser languages need marketing.

The fact is, language adoption in the IT industry is very much a matter of luck, fad and fashion.

Re: How to Evangelize a Programming Language

#28
post #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…

Rather than rely on SQL, why not put the common info in tables? A "data dictionary" (DD). If tools can extract or sync that up to the actual schema, that's a great bonus, but is not a prerequisite. Using things POC annotations is ugly and hard to track.

And we don't have to rely on the DD to do everything. Of course intricate business logic should be in app code, but app code shouldn't reinvent the obvious things like minimum length ("required"), max length, field description, synopsis (longer "help"), display order, key type (primary, foreign) and their related "look-up" references, etc.

I've found that if the DD results can be intercepted by the program, then it's more flexible. It should have an event that allows the DD attributes to be programmatically altered per screen, and then another event to modify or remove the actual HTML and/or SQL generated from the those attributes. I call it "staged rendering". This allows the DD to do 90% of the grunt work, but not limit local customization. Local customization has been the most common bottleneck of past DD-based attempts.

I like it when computers do the grunt work; that's what they were invented for. Our current common CRUD stacks violate data-related D.R.Y. up the wazoo and nobody seems to care as long as they get a paycheck. Auto code generation is only a half solution because once you alter the copies, you can't rely on generators anymore: they wipe out your custom code.

Re: How to Evangelize a Programming Language

#29

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…

Thanks for replying, Steve :D

I was more suggesting that there's a story about how Rust became what it is today, and the active guidance that members of the core team(s) took on to take it there. It's a story I'd like to read, that's all.

The questions you bring up are very good ones, and they're relevant to anyone developing technology like a programming language - be it a FOSS project, a creative tool, whatever. But I think from a literary perspective it wouldn't be the job of the person telling the story to answer them, but for the reader to decide for themselves.

Re: How to Evangelize a Programming Language

#30

Does it has cross-platform? One codebase, multiple targets? That's how you evangelize any programming language. In today's environment where the customer wants his solution to work on all devices, the programming language that has the least (zero might be impossible) quirks when targeting different OS'es wins my heart. So far, IMO, there are zero programming languages that do this. Java comes closest but is like only…

Absolutely. Pharo is much like Java: it's VM-based, so Pharo software will run on any platform that has a Pharo VM. This includes Windows, macOS, and Linux.

And if you use PharoJS, which transpiles to JS, the same software will run in any web browser, and on mobile devices (using Apache Cordova).

Post reply on HN