Previously on Eleanor on Everything: a year ago I have taken to this blog to share my own journey for evaluating what programming language to choose as a go-to language for most uses. I concluded that TypeScript is a clear winner, with Rust as a companion language for tasks requiring a greater level of control, and designated Python, my preferred go-to language for the last twenty-odd years, as a niche language for the (admittedly important) domain of data science.
I'm glad I did this exercise, and it did result in me spending a few months getting very comfortable with TypeScript and picking up enough Rust to be useful. Both remain important languages that are likely to continue growing in importance.
So, what changed in the last year? A lot! Much can be attributed to the rising trend of powerful general AI.
English is becoming the primary programming language. The best AIs are so good at understanding human language and acting on it, that most tasks can be achieved by simply asking. And it's likely to continue getting better, until it will no longer be necessary or advisable for anyone to write code for achieving any task.
AIs are really good at writing code. Where AIs can't yet directly act on our requests, they are fantastic at writing code for and with us. This makes the choice of programming language much less important - over the last few months I and many others have experienced writing code in languages we're not very confident in or even don’t know at all with the aid of AIs like GitHub co-pilot or GPT-4 and getting excellent results.
Python may be domain specific, but its domain is the one that matters most. If you want to be hyperbolic you could even say that Python's domain of data science / data engineering / machine learning / AI is the only domain that matters. The ecosystem of libraries and frameworks for working with AIs is Python-first.
Python is the primary programming language of AIs. It's the most popular programming language, even more so in open source, with the result that AIs had lots of code examples to train on. And the same factors that made it great for humans make it even better for AIs - a vast library of well-supported packages to choose from, interpreted runtime that's easy to work with interactively, lots of excellent documentation. The AIs have chosen Python as their programming language, who am I to argue.
Python is doing well on typing, speed, and parallelism. Optional typing, which has been available for a while, is growing in importance and becoming the default for "programming in the large" in Python, and with it a strong ecosystem of helper packages and tooling support. The Python developers continue investing in speed, with each new version of the runtime coming with significant performance improvements, and there's clear commitment to continue along this path. And there are now credible plans for removing the GIL (global interpreter lock), the main impediment to true parallelism in Python. Python will never be as performant as other languages, but it is getting much closer to good enough.
So, whereas a year ago I imagined myself mostly writing TypeScript and Rust, this was only true for the first part of the year. For the last few months, I programmed almost exclusively in English and in Python, and I don't see that changing much this year. Also, I am hopelessly bad at making predictions.