4 ms·
Programming tastes evolve over time. At one point, and for at least a few years, I believed Python was the one true language revealed mystically to GVR. Up unti
by postfuturist 14y ago
Programming tastes evolve over time. At one point, and for at least a few years, I believed Python was the one true language revealed mystically to GVR. Up until that point, I'd done most programming in C++, so you can imagine how much fun Python was, in comparison. After further development and discovery of other programming languages, the shortcomings of Python have become obnoxious, much like torturing someone by dripping water on their forehead incessantly. Part of the problem is that I have to use Python for my professional work now. Using a language for your day job is a sure way to reveal all the issues.
Here's what rubs me raw day-in and day-out:
1. Lack of immutable/persistent data structures.
2. Lack of multi-line anonymous functions/lambda.
3. Variable scoping fail, causing hacks like the new `nonlocal` keyword.
4. worst_possible_variable_name_convention.
5. Python evangelism. (community issue, mostly)
6. Hypocritical "explicit is better" and "flat over nested" values with insane amounts of magic built into language and class system.
7. No switch.
8. GIL. (Actually the CPython runtime in general)
9. No macros.
10. the insane way "unicode" is supported.
11. and on and on...
At this point I write Python code, but not generally by choice. Mostly my coworkers can't even imagine writing code in another language, given that we have been allowed to choose our implementation language(s) as a team.
- sausagefeet 14y agoI went through a similar progressions, or I guess I'm still in it. I have found multiple languages to replace aspect sof what I liked about Python but not one that addresses all of it. I think if F# existed on *nix in strong way I'd consider it a Python replacement.
- Jtsummers 14y agoWhat about OCaml/SML, or is .NET/Mono the thing that really sells it for you?
- sausagefeet 14y agoOcaml, as a language, is amazing. But it's implementation isn't much better than Python's. No parallelism for example. And its ecosystem is worse than Python's in many ways, such as building code. I love the language, it's just the implementation that makes it an incomplete solution for me.
- soc88 14y agoDid you consider Scala? From my POV it could fit your bill pretty well. It has tons of data structures for pretty much every usecase, and even lists the complexity of various operations. All the data structures share the same API so replacing one with another is fairly painless. 2. — 8. are all no problem in Scala and running on the JVM means not having to worry about speed or stability anymore, while having all the superior tools of the JVM ecosystem for monitoring and debugging available to you. 9. Macros will ship as an experimental feature in 2.10, to make sure everything can be adjusted and fixed as necessary before declaring it stable. 10. Perl 5/6 is still ahead in Unicode, but judging from the Unicode presentation by Tom Christiansen the JVM is more or less on the second place, which fits with my experience. Overall Scala is a impressively well-designed language imho, although some people really dislike that it doesn't restrict method names like Java does.
- sausagefeet 14y agoI don't care for Scala. I find the language to be complicated without any strong benefit. The type inferencing isn't particularly good either, which is annoying. The JVM also hasn't made life easier for functional programmers yet. Compare Scala to Ocaml, in terms of language, and I think Ocaml simply blows it away for power relative to complexity.
- lucian1900 14y agoI've found I like almost every aspect of Clojure. I've yet to try to seriously replace Python with Clojure for any large project, but I plan to try it soon.