Featured image of post Good programming languages are nice but not vital

Good programming languages are nice but not vital

While no programming language is perfect with the right tools and effort, you can work effectively with any of them.

When someone says, “I want a programming language in which I need only say what I wish done,” give him a lollipop. (Alan Perlis, Epigrams in Programming)

People love to talk trash about programming languages on Twitter. Every day there’s a new viral tweet about the inadequacies of Python.

I have worked with many programming languages and studied others in school, but I’ve spent most of the last ten years deep into Python. Of course, Python has warts and wrinkles; I’m intimately familiar with many of them! At the same time, people worldwide effectively use Python to solve all kinds of problems. As it turns out, many common frustrations can be set aside with a little effort (e.g., by integrating modern tooling like Ruff).

I’m regularly convinced that Brian Kernighan knew everything there is to know about software engineering practice, and he wrote it down before I was born in 1986. He doesn’t miss the mark in his 1979 paper with Plauger:

…many people try to excuse badly written programs by blaming inadequacies of the language that must be used. We have seen repeatedly that even Fortran can be tamed with proper discipline. The presence of bad features is not an invitation to use them, nor is the absence of good features an excuse to avoid simulating them as cleanly as possible. Good languages are nice, but not vital.

People forget that two of the top three most visited websites (Youtube and Facebook) were originally implemented in PHP, a language rarely considered a Platonic ideal.

Bjarne Stroustrup, creator of C++, says, “There are only two kinds of languages: the ones people complain about and the ones nobody uses.” He’s right, and I’m guessing we’ll never move entirely beyond that (even as language improvement continues). I, for one, am willing to embrace this and learn to do the best with the tools we have.

Last updated on Apr 03, 2024 16:20 UTC