> As an academic, it must be soul destroying to see the world dominated by ad-hoc efforts like Python.
I dunno that I see it that way. (I am a PhD student in programming languages, likely going to end up in academia.)
In many ways, yes, Python is "bad". It lacks an expressive static type system, it has some bizarre rules about scope, and there are other idiosyncrasies that, were I to build my own language from scratch, I would seek to avoid.
But in many other ways, Python is very good. The standard library is phenomenally complete, featuring functionality for the vast majority of common use cases. I also find the documentation to be pretty approachable, though that sentiment seems to not be very well-shared. As for the language proper, the lack of a type system does irk me somewhat, but I use mypy to get back some of those guarantees so it's not as bad as it could be. I find the syntax mostly pleasant, and the module system is usually intuitive. Some of the things they've added are very nice features: I like that multiple consecutive string literals are treated as a single string (useful for splitting strings across lines); I like f-string formatting, too; the use of underscores as numerical separators is great (though not unique to Python); the overall design of the language, while truly odd at first, is relatively consistent and powerful (e.g., everything-is-an-object, iterators/iterables are prevalent, classes can be modified dynamically [which is maybe not always a good thing, but it's a neat tool for the power-user], etc.).
Again, it's not a language I would build myself, but as far as languages that exist, it's not even close to my least favorite.
I think it's also worth considering the space of programming language design in linguistic terms. Natural (human) languages are amazing because they constantly evolve through regular use. New terms are inducted into lexicons constantly, and new grammatical rules can be generated and regularized among a group to give the users their own characterization separate from other speakers of the same language. Natural language is beautiful.
If we look at individual programming languages as separate languages, they do not exhibit the same properties. They are pretty much static, except when a new major version is released.
But if we look at programming languages rather as dialects of a single common language (easy to do when we consider "Turing-complete languages" together, for example), then we see each language as a new manifestation of the unique ideas of a group of people, similar to a dialect in natural language. There are new idioms and expected constructions. The capability of expression remains constant, more or less, but the minor connotative differences are many and varied.
All this is to say: Python is not "should destroying". It's just another way of looking at the same system. One from which we can learn things when we seek to design new programming languages, certainly, but I don't think its idiosyncrasies inherently make it so bad as many portray it.