3 ms·
Regardless of Python 2 vs 3, what is sad is that every new language, be it Go, Rust, Swift, Dart, Nim whatever is dividing whatever set of ‘good, smart, and cre
by harikb 7y ago
Regardless of Python 2 vs 3, what is sad is that every new language, be it Go, Rust, Swift, Dart, Nim whatever is dividing whatever set of ‘good, smart, and creative’ engineers we have into smaller group each implementing their own sorting algorithm in their own language. Just to be clear, I am not counting myself among them. I am talking about those who design languages, write runtimes, JITs, stdlibs whatever - people much smarter than us. They do this in their free time!
I am surprised that even 1,000+ languages (at least 50+ mainstream) haven’t satisfied all the wishes and itches. May be that is humanities curse! Creative people constantly want to create a new language and redesign everything while bigger and better problems remain unsolved.
Python 2 vs 3 just seems like yet another thing that breaks up the creative talent pool to waste time solving the same problem in two ways.
LLVM is the first thing I have seen that removes at least some of this duplication. But I hear even Rust is looking at alternate backend! Go doesn’t even use LLVM, all for good reasons I am sure.
- black_puppydog 7y agoFunny. I was actually hoping that with python2 officially dying, after more than ten years there's finally a chance to re-join at least these two specific camps. Now that managers will have to have good reasons to keep maintaining the language on their own or make the switch, I was hoping to see a more focused community with less "import * from six" overhead.
- staticassertion 7y agoAre they really divided? Maybe if people only used one language. I would suspect that almost any Rust, Go, Swift, Dart, and Nim developer today is proficient in one, probably two other languages, at the least. I doubt that even 10% of "Rust programmers" are employed to write Rust full time. What I might agree with is that interoperability is something that should be considered more going forward. I'm unsure about some of them, but Rust focuses a lot on interoperability via FFI, Go's FFI story is bad, as far as I know, Nim's is decent, and I don't knwo about Dart or Swift. The top languages are all virtually identical. There's so little difference between, say, Java and Python, despite there being so much difference. So maybe there are 50 "serious" languages, but they all fall into a few buckets. There's less meaningful diversity than it seems, I think.
- harikb 7y agoYour point about interoperability is probably a better expression about what I had in mind. Whenever there is a new advance in algorithms, at least all languages should benefit from the “reference implementation”, be it C-FFI (the current story - write in C first and everyone wraps) or something like WebAssembly. Then when a fancier/more idiomatic one is available, use that. Current story with the C library path is so hard to use in practice.
- theonemind 7y agoThat seems like a bit of a tangent for a page explaining that the talent works on Python 3 and not 2 now.
- enriquto 7y agoI do not really understand your concern. What you say "duplication" is not harmful in any way, but a path towards progress. A new programming language is like a new material. You can build chairs and tables in wood. But when a new metal is introduced, is it worth to "duplicate" the work and build chairs in the new material? Maybe, who knows. You may end up with a chair that has surprising new properties, impossible to have in wood. Or maybe it is worse in any measurable way, but some people may still prefer it for some reason. Would you complain to the discoverer of a new material that they should not build chairs in that material, because chairs are already solved (by using wood), and they are just losing time by reinventing the wheel? Technology advances by the continued reinvention of the wheel. Rewriting old algorithms in new languages is a beautiful part of that.
- bsder 7y ago> Python 2 vs 3 just seems like yet another thing that breaks up the creative talent pool to waste time solving the same problem in two ways. Most people who actually used Python 2 have zero issue using Python 3. And most people coming into the Python ecosystem now only ever experience Python 3. The people whining about Python 2 have legacy codebases. And, they have a right to whine, but Python 2 at least will continue to exist. Look at Visual Basic 6 codebases by contrast--more and more of those break with every Windows release. This is also way different that say the ObjC to Swift transition. Apple simply said "Move, or don't. And if you don't we won't ship your app." And the community moved. > Regardless of Python 2 vs 3, what is sad is that every new language, be it Go, Rust, Swift, Dart, Nim whatever is dividing whatever set of ‘good, smart, and creative’ engineers we have into smaller group each implementing their own sorting algorithm in their own language. Sorta, but the whole point of a language is to have a strength that outweighs the negatives of creating it. If I go through the Tiobe index and look at relatively new languages (there aren't that many in the top--Python, Ruby, and Javascript hardly count as new): Swift is ObjC moved forward. That one was never going away. Go is for concise networky client/server thingys. Okay. That's better than most other languages and has some large codebase improvements. Rust is the only non-GC language in the pile and it aims to be a better C/replace C++--an arena that has been absolutely stagnant for 30+ years. <dons asbestos suit> Dart ... okay, you got me. I have no idea "Why Dart?". Every time I interact with it it seems to look like a crappier Clojure with Google foisting it on the world. When your function closings look like this: ); }, ), ); } You have Lisp-envy. I often wonder if this is just some team inside Google going: "Android Studio is absolutely terrible, anything is better, but we can't budge the glacier. We need to route around the brain damage." D was meant to be a better C--but it took far too long to get a useful non-GC subset so never found its niche. Scala--Meant to bring Haskelly goodness to the Java ecosystem. In my opinion, overreached, never really achieved its goals and now is competing against better languages. It took FOREVER until the whole Actor system worked decently in Scala, for example. To be fair, it also appeared in like 2000(?) back when the Java language ecosystem was basically crickets chirping. The JVM has improved a lot since then and made language development a lot better. Kotlin--presumably in the right place at the right time. A modern Java before modern Java. And appeared at the point where Google needs to make sure to have an escape hatch against Oracle if required. Groovy--Possibly the worst language to have any traction. However, most people's interactions with Groovy come about when they have to fix something broken in the absolutely horrible Android Studio build system. Friends I trust say that Groovy isn't really that bad (but not that compelling) but that, yeah, the Android Studio Build system is a horrible exemplar.