Hacker News new | ask | show | jobs
by billfruit 2629 days ago
IMHO, I find python increasingly lacking in features, especially its lack of enthusiasm in adopting functional features, including immutable data structures, pattern matching/ destructuring, python lambda functions are restrictive. To my eye a strong imperative flavor pervades most python code. After some time spend dabbling in Clojure, I find python rather primitive.

Generally it is true that learning a new language, will give one new tools to reason about problems. I find Kotlin and Python amongst the languages I have used, to offer the least new insights and ideas to the student.

2 comments

> To my eye a strong imperative flavor pervades most python code. After some time spend dabbling in Clojure, I find python rather primitive.

Likewise here (except Rebol instead of Clojure). I've never been able to explain it well, but something about Python feels really limited in a very similar way as Java (like, 1.6ish) does.

Not all languages need to be functional, or grow in their functional support. Functional programming isn't the future, and Python is very opinionated about how you use it, so adding functional features would further muddy the water in terms of how a new user gets started in the language.

Adding functional features would make Python materially worse.

If that opinionated manner is the usage of a plain imperative form, then it isn't leveraging the advancements made more popular in the upsurge of interest in functional methods in the last 10 years.

I am not saying python should grow these features, but merely that for any new work for which python is being considered there could be a strong case made for choosing a more modern, more safer, more functional language instead.

Functional isn't safer or modern, and Python is about as safe as they come. Try out type hinting if you're scared of duck typing.

Besides, safety for its own sake isn't all it's cracked up to be. I'm happy to take on additional risk in my development process if it allows me to move as fast as Python does. I can account for that risk in other areas, like how I deploy changes and how I do redundancy/failover.