Then came Python 3 and it just never felt the same. PyQT projects faltered. Deps split. Strings broke.
However I started using Nim a few years back which has given me that Python 2 feeling – except with static types, better overall language design, meta-programming, and performance!
And except tooling, ecosystem, documentation and practical real-world application.
True the LSP is pretty bad, but Cursor makes up for a lot of that for me. Atlas dependency manager is great. Valgrind and TSan work perfectly. Gdb sorta works now. LLMS solve the docs issue.
The ecosystem is smaller, but I've been able to use it to successfully create tools for an IoT project with Nim running on an embedded esp32, a multi-threaded api server on linux processing images, and a web SPA with Karax in a couple of weeks of programming work. Oh and calling into Python for some datascience.
But then you find out that Nim people still rely on Nimpy, Rust people on PyO3, and even Julia people on PythonCall.
Yeah, no reason to use Python anymore, except by calling Python from your awesome language. The fact that these awesome Python packages are just wrappers over C/C++ doesn't change much - for some reason people using other languages are not willing to write and maintain wrappers of similar quality, including documentation.
> The fact that these awesome Python packages are just wrappers over C/C++ doesn't change much - for some reason people using other languages are not willing to write and maintain wrappers of similar quality, including documentation.
True, the older I get the more I’m amazed at communities of people who just build things and keep them running. It’s impressive. But hey calling Python from other languages is pretty sweet.
Though I recently found the Python libraries for automation stuff to be lacking. So I wrote my own library with Claude. I suspect that the friction of creating good wrappers in smaller languages is lowering. I still used Python for actual clicking with a super small rest api.