Programming language evangelism
Translating a working, debugged, 80,000 line codebase from one language to another is usually a fool's errand.
-- Walter Bright, inventor of D
[E]very now and then someone comes along and suggest a complete rewrite in some other language. So far we've had Java (there's always one...), Python and now C++. It happens to all projects, sooner or later. The funny thing is that all those people that want their favourite software to be rewritten in their favourite programming language always wants someone else to rewrite it for them.
-- Andreas Ericsson
i wonder how many programming language evangelists realise that their approach is often dissuading people from using a programming language.
i here distinguish ‘evangelism’ from ‘promotion’. To me, ‘promotion’ is something like: “Hey, you might like to consider using language X for project Y, as despite the possible costs Z, I think it might offer a number of benefits.” ‘Evangelism’, on the other hand, is more like: “You should use language X for every project, and indeed, you should rewrite all existing projects in X.”
The latter describes the behaviour of the RESF, the Rust Evangelist Strike Force. The RESF is not, to the best of my knowledge, actually a thing; it's merely an appellation i've seen used to describe a certain subset of the Rust community. RESF people will tend to primarily parrot marketing phrases: “Rust provides blazing fast fearless concurrency with zero-cost abstractions, you should rewrite your project in Rust!!1!” It's one thing for official promotional material (OPM) to talk of Rust being “blazing fast”, providing “fearless concurrency”, and offering “zero-cost abstractions”; that's OPM's job. But if you're not actually writing OPM, and are simply a member of the general public trying to convince me to use Rust, you need to demonstrate that you can go beyond mere sloganeering.
To convince me to use language X, demonstrate to me that you're aware of its limitations - why it might not be suitable, what tradeoffs it makes, what design flaws it has (and every programming language has design flaws). If you regard any criticism of the language as coming from an ignoramus who Just Doesn't Get It, i can't take you seriously. If you think a project should be rewritten in X, show me you're aware of the costs of doing so. Whilst a rewrite might solve a number of current practical (not theoretical) technical problems with the project, it will also:
- reduce the resources available to fix existing bugs (many of which won't magically be fixed by moving to X);
- reduce the resources to add new functionality; and
- probably introduce new bugs which previously didn't exist.
The RESF seems to have become the “I'm on Arch btw” community of the programming world. And these sorts of attitudes and behaviours lead to a “Don't Shoot the Message” situation: people who might otherwise be interested are getting turned off by the naïve-to-obnoxious evangelism.