Does the choice of programming language matter?

For years, many programmers would answer “no.” There was an “OOP consensus” across languages as different as C++ and Python. Choice of programming language was just a matter of which syntax to use to express the same OOP patterns, or what libraries were needed for the application. Language features like type checking or closures were seen as incidental, curiosities to distract from or get in the way of OOP design. If a language did not support the full range of OOP features, this was just something to be worked around, and the code would still be structured as if it did, simulating OOP with the tools that language did have.

But times are changing. Javascript, Python, and Ruby are getting type checking. Java is getting a mishmash of “functional” features. C++ is de-emphasizing inheritance and doubling down instead on templates. Even Go is getting generics.

When in the last 30 years have we seen so many concurrent pivots in major languages?

Amongst mainstream languages, Rust is the vanguard of this programming revolution (though less mainstream languages go much further). It is on the bleeding edge of this transition. Learn Rust, but don’t learn it as a mismash of exotic cool features. And don’t let it lull you into thinking you must do some sort of whiz-bang systems programming that almost no one does.

Learn Rust, idiomatic Rust, yes, for solving all the mundane problems you face in your programming life, but also to get a head start on what will be the next era of accepted programming practice.