Python is bloated, slow, and breaks whenever a dependency
Python has OOP/classes, which you left out in your blog post. It’s also not bloated at the core. Back in the day, I wrote embedded stuff in Python. Rust/Go didn’t exist back then, and python-mini for OpenWRT was under 1MB, had all the standard python libraries and fit, with the OS, on a 4MB flash chip. That was critical back in my startup days, long before Raspberry Pis existed and embedded boards were expensive. It can seem bigger once you start pulling libraries, but it’s hardly node or Java.
Python is slow due to green threads and that is a problem. With both Python and Ruby, you just tend to scale up a bunch of full processes rather than threads (both celery and sidekiq work this way). For dependencies, poetry is an amazing build tool for Python (or you can use plain old virtualenvs .. same with rbenv/Ruby). pip can also install dependencies in .local if you use pip install --user if you don’t want to use virtualenvs or poetry and don’t want to muck up your operating system.
And I happen to really like the lack of braces and clean, whitespace based syntax; which you saw as a disadvantage. That’s common .. people either love it or hate it.
Java is owned by Oracle and that is a problem. It has a high startup cost and high memory footprint, but the trade off is that once JVM code is hot, it’s unbelievably fast. When I worked at a stock photo company, we had Scala services that could scale to process over 1,000 photos per minute during big events like the Olympics.
I haven’t really touched C# in years. I do like the syntax in general. At that same stock photo company, some of the web stuff was written in C# and ported to .NET Core (Mono is kinda dead) and we could run it in Linux. I don’t develop on Windows at all anymore, so I can’t say much other than that.
Reading your post, I think there’s a considerable difference when evaluating programming languages by just playing around with them on your own, and using them in the corporate world with large projects that have to scale up. I’ve used all of these in the wild (even C#) at a couple of different companies and see the advantages/disadvantages of each as a whole.