This could have been a very interesting article, yet it unfortunately stays in the superficial. Lot’s of criticism seems to be rooted in the author’s unfamiliarity with Python. I like Clojure and mainly develop in Python, and a few things that he author mentions are just nicer in Python actually (repl vs. Ipython, debugging/stack traces, etc.).
Agree with a lot of this, but:
Python 3 and asyncio aren’t some distant land of milk and honey, they’re available now; if you’re not using them you have only yourself to blame.
Limiting language extension is vital to maintainability. I complain about Python decorators but honestly they’re a pretty good point on the power/maintainability scatterplot; there’s very little you can’t do with them, and they’re quite visible/understandable and not too much of an issue refactoring.
(FWIW I’m a big Scala fan. All the advantages listed for Clojure (but also structured alternatives to macros so that you don’t have to use macros very often), and keyword arguments with default values and standardized class/function documentation formats)
I agree with these, but it depends on the level of the task you’re
solving. We can use any language or tool to solve a problem, but
shouldn’t we chose the correct and efficient tool to solve a problem
the fastest way? That’s the main problem with this kind of
classification. I love Python and Ruby , but I won’t write an app that
will take many requests with either. But with that said, I will
definitely write a fast script or tool to transform text with it, a
CLI tool, and a repetitive shell task. The same goes for Guile or Lua
which are best for extensions. Each language has a strength, make use