7 ms·
I have nothing against Kotlin, but we should be much more ambitious for the Next Generation of programmers. There's so much more progress to be made in (mainstr
by valw 8y ago
I have nothing against Kotlin, but we should be much more ambitious for the Next Generation of programmers. There's so much more progress to be made in (mainstream) programming languages than the tiny step from Java to Kotlin.
As it has always been in the history of programming, what it takes for this potential to come true is for the current generation of programmers to retire, leaving room for fresh paradigms.
Imagine if all the industry got one generation after Assembly language was "hey, we've made the instruction codes shorter and an IDE that can navigate to line numbers".
- maxxxxx 8y ago"hey, we've made the instruction codes shorter and an IDE that can navigate to line numbers". That's almost what happened with C. In general I agree with your point though. "As it has always been in the history of programming, what it takes for this potential to come true is for the current generation of programmers to retire, leaving room for fresh paradigms." Not so sure about this. I see more of a trend to repeat previous errors because the industry as a whole quickly forgets lessons.
- oblio 8y agoDoes it truly forget? A lot of the past knowledge is locked away or it was only experienced by 1000 programmers back in the 70s. It stands to reason that the huge amounts of programmers today have to learn their own lessons. I think maybe in 2050 or so we will reach software development maturity, once the base of experienced developers is not dwarfed by the generation of developers joining the work force in one single year. Keep in mind that the number of programmers is not only increasing moderately in developed countries, but much more so in developing countries, where hundreds of millions of people are joining the global middle class.
- valw 8y agoA lot of past knowledge is also very available and mostly ignored. Even the most popular books about programming are read only by a tiny minority of programmers. Listening to our elders is simply not part of the current programming culture.
- maxxxxx 8y agoI always think that a lot of the young guys who are struggling with C would actually read K&R instead of random blogs they would quickly have a solid understanding. Most of today's books are really bad in comparison. Too long, no depth. On the other hand the cool thing about programming is that you can get started and be productive without almost no knowledge of theory. Compare that to physics or math where anything interesting requires years of prior training. I hope we'll find some balance where we don't lose the ability to get started quickly but still respect and study older achievements.
- valw 8y ago> Not so sure about this. I see more of a trend to repeat previous errors because the industry as a whole quickly forgets lessons. It is a necessary condition, certainly not a sufficient one
- ionforce 8y agoI love powerful languages also, but... It's easier to boil the ocean one degree at a time. A snowball used to be a snowflake.
- valw 8y agoRevolutions do happen! For instance, JavaScript, with all its defects, brought a lot of great ideas to the mainstream (first-class functions, data literals, etc.).
- xedarius 8y agoIs that how it works? So in order to progress in other fields such as physics, medicine, robotics - the current incumbents must retire? Anyone can have an idea.
- valw 8y agoThe innovation dynamics in the software industry are (have been) really different than in these fields IMHO. But there are some similar historical precedents. Fourier's work was rejected in his time because Lagrange wouldn't adopt his approach to mathematics. This video is a great retrospective on the evolution and adoption of programming languages / paradigms: https://www.youtube.com/watch?v=JxAXlJEmNMg https://www.youtube.com/watch?v=JxAXlJEmNMg
- ihsw2 8y agoSuch an argument is bereft of logic and full of lazy moralization and Utopian rhetoric. It has not always been that incumbent programmers hold back the next generation and in many cases it was absolutely warranted due to shortsighted and narrow-minded ambitions. Your talk of "fresh paradigms" reeks of NIH syndrome. The advancement of an industry requires careful consideration and conscientious measurement of competency, not some nihilistic desire to burn everything down for the sake of some vague Utopian future.
- valw 8y agoI'm sorry you feel that way, but why get so angry?
- vbezhenar 8y agoWhat features do you miss in Kotlin so much?
- edem 8y agoHomoiconicity
- nine_k 8y agoClojure is likely your only choice on the JVM. Also, you miss the point of Kotlin; it would be like saying that what you miss from Clojure is similarity to Java syntax.
- valw 8y agoI don't recommend assessing languages by looking at features individually - how they play together is much more important
- clhodapp 8y agoNot the person you are replying to but: * Typeclasses (over higher kinded types) * Extensible typeclass instance derivation * Comprehensions on par with SQL in expressiveness
- nine_k 8y agoTypeclasses can be introduced; there's a PR doing that in a reasonable manner: https://github.com/Kotlin/KEEP/pull/87 https://github.com/Kotlin/KEEP/pull/87 It's not shot down. Instance derivation is likely not impossible when typeclasses support is there. I wonder how expensive it could be, though. Making them also usable from Java (e.g. Comparable) would likely be problematic sometimes due to Java's inconsistencies. Can receiver lambdas (the "DSL" feature) be used to produce something comparable? For something comparable to LINQ, though (same expression targeting e.g. an object graph and an SQL database), compiler support would likely be needed.
- geoka9 8y ago> we should be much more ambitious for the Next Generation of programmers There's a lot of value in using simpler (but modern) languages in production instead of something choke-full of paradigms. Creators of popular languages seem to more or less agree with that (e.g. Java -> Kotlin, C++ -> Golang, Scala -> Dotty/Scala3).
- tiuPapa 8y agoI guess C++ -> Golang is debatable, maybe Python -> Golang?
- geoka9 8y agoIf I remember correctly, one of the motivators for Go was the desire to avoid having to use C++ by the original authors. That said, I agree that Pyhon -> Golang fits in that trend too.
- pjmlp 8y agoTrue, but they dumbed Go so much down that they hardly attracted anyone used to write modern code in C++. https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html https://commandcenter.blogspot.com/2012/06/less-is-exponenti...
- erik_seaberg 8y agoTo be fair, Googlers can't write modern C++ because they have a critical mass of legacy code that has never been exception-safe. Avoiding RAII kneecaps the whole language badly.
- repolfx 8y agoGoogle doesn't avoid RAII, they just avoid exceptions.
- 8y ago
- pdpi 8y agoThe two aren't incompatible. Progress tends to be made of revolutionary jumps followed by evolutionary refinements. It's perfectly legitimate and useful for Kotlin to fall firmly under the "evolutionary refinement" category, and we can all reap the rewards of that evolution, while other teams elsewhere are trying for the revolutionary jump.
- valw 8y agoSure, but I do hope that there's at least one revolutionary jump per generation. If the next generation ends up with Kotlin, we'll have missed ours
- edem 8y agoClojure tried that and it was a step too big. And we better not talk about the baroque abomination named Scala. I think Kotlin is in the sweet spot.
- valw 8y agoWhile Clojure has failed to become mainstream so far, it certainly hasn't failed to be influential. Whatever programmers use in a generation, it may have a lot of ideas from Clojure in it!
- yogthos 8y agoAnd while it's far from mainstream, it's certainly a healthy language with a vibrant community nowadays. There's also a lot of exciting work being done on ClojureScript, and I think that it has even higher value proposition seeing how front-end development with Js is a hot mess right now.
- swsieber 8y agoEdit: Oh ho ho. I missed that "Next Generation of Programmers" is in the title. I think it's a pretty misleading title. I think Kotlin just makes places where java is required less painful. You mean like Rust, Scala, Clojure, Haskell, Erlang, etc? I don't think Kotlin is aimed at the Next Generation of programmers. I think it's squarely aimed at "We Have A Big App In Java" or "It's This Or Java" programmers. The other bits that don't seem related (the typescript support, the native support), support that because it reduces code duplication. Why write things twice (once in Kotlin, once it java), when you could just write things once, in Kotlin. Don't get me wrong, they are sanding down a lot of rough corners; but ultimately their explicit goal of really nice java interop limits them. But their goals isn't to be for the Next Generation of programmers, it's to be for java programers.