I hate this dichotomy about hated and unused programming languages

Published on

Preface

I think most of the software developers have heard this famous quote:

There are only two kinds of languages: the ones people complain about and the ones nobody uses.

It's usually attributed to Bjarne Stroustrup (the creator of C++). The quote definitely shows that people will always criticize the programming language, no mater how popular it is, because programming languages are not ideal and also because of different tastes, edge cases, conflicting tastes, visible warts, etc. The more popular it gets, the more will be complaints.

I can't even count how many times this quote was used as a defense during "holy wars".

What's wrong with this quote

This seems like an universal answer to every criticism, right? Actually, popularity isn't always a proxy for good design. Popularity is multifactorial:

While virtually every popular successful programming language will get some criticism, some languages will get it much less compared to other languages with comparable popularity. For example, C# is a very popular language, but you don't hear as much complaints about C# compared to JavaScript or PHP. Most of its criticism is mostly about GC / runtime trade-offs, language growth, and tooling edges instead of poor language design (that JS, PHP and some others get).

Early "flawed" designs still win

Older programming tend to be more popular, sometimes largely from historical reasons. Some of them didn't succeed because they were carefully designed, they succeeded because they shipped fast, got bundled with a dominant platform, and then adoption snowballed despite design warts. Later, those warts were mitigated (at least partially) with crutches (add-ons, modes, or tooling) rather than clean breaks.

Here are examples:

Here are examples of more modern and relatively well designed languages:

Conclusion

Here I'm not claiming you should use only the "latest and greatest" tech. As mentioned, there are other factors as well. I'm just claiming you should't use Bjarne Stroustrup's quote as an argument since it's actually a witty half-truth, not a rule. Newer programming languages, while not flawless, tend to not repeat the past mistakes of older programming languages.

Also, there are true tradeoffs, for example, a more flexible / dynamically typed language might be better suited for rapid prototyping but not so much for large and complex projects and vice versa. Thus, sometimes it's not the fault of the tech stack, it's just the wrong choice for the given problem.

Happy coding!





UP
Read previous


This site uses cookies. By continuing to use this website, you agree to their use. To find out more, including how to control cookies, see here: Privacy & cookies.