3 ms·
I think we're still in the bashing rocks together stage of programming, but things like this definitely make me smile. Java is not an innovative language and th
by noelwelsh 2y ago
I think we're still in the bashing rocks together stage of programming, but things like this definitely make me smile. Java is not an innovative language and the fact it is evolving towards something better shows that the industry as a whole is moving forward. We can't be more than a decade away from everyone being able to program in a language with the features of ML circa 1983.
- pas 2y agoScala is doing fine. ;P There's a huge inertia to "strictly wrong, but already existing", so there is a bias to keep maintaining those things. (And there are - at least - hundreds of thousands of programmers with huge status quo biases. We saw this mostly as C started to lose a lot of ground, finally, to safer languages with infinitely better tooling. It's that too many people put up with bad bad tools, mostly because they prefer very very incremental changes, and mostly those that give them results in "functional requirements".)
- staticlink 2y agoScala is doing fine-ish.
- xxs 2y ago>Java is not an innovative language Most of the innovation when it comes to concurrency, garbage collection, JIT did come from Java. Syntax - that's more of an opinion/preference. My gripe with yet another "improvement" of the language is still the lack of headerless objects (aka value classes) - JEP 401[0] [0]: https://bugs.openjdk.org/browse/JDK-8251554 https://bugs.openjdk.org/browse/JDK-8251554
- bkail 2y agonullability is directly related to the value classes effort (the top article mentions value classes, and the JEP you linked mentions nullability): in order to get the most benefit out of value classes, you need some way to express guaranteed non-nullability to avoid needing to encode null (imagine Point[] vs Point![]): https://cr.openjdk.org/~jrose/values/flattened-values.html#implementing-null-channels https://cr.openjdk.org/~jrose/values/flattened-values.html#i...
- xxs 2y ago'Value' classes would be useful in arrays only + some version of direct buffer mapping. All other cases are pretty uninteresting when it comes to performance or memory layouts.
- foooorsyth 2y ago>Java is not an innovative language Wild statement. Java certainly was incredibly innovative upon release. It didn’t explode in popularity by accident.
- mu53 2y agothat was 30 years ago? New Java developers have been born after the original inception and learned the language long after. Reputations change over time. Core Java was staunchly against incorporating any functional features while the rest of the ecosystem was innovating
- Spivak 2y agoSure, because Java isn't a functional language. Taking a wait-and-see approach to whether the style of programming will be a fad is defensible choice when you have to support it forever. And it kind of was a fad. The only thing that really came of it in most mainstream langages is passing functions as arguments. I've yet to encounter a code-base in the wild that's actually functional.
- noelwelsh 2y agoWhat does functional mean to you? From my POV I see lots of features in Java coming from the functional programming world, but perhaps I have a different understanding of the term to what you do.
- jeroenhd 2y ago"Java is not an innovative language" does not mean "Java was never an innovative language". I get the feeling Java seems to have suffered from its early success, pioneering things like generics in GC languages, which competitors like C# were able to do better, but only because Microsoft decided to break compatibility between .NET 1 and .NET 2 or because there was no compatibility to break. After that, the language seems to have shyed away from innovation out of fear of breaking things for a long time. In recent years, this has changed, but Java has a lot of language features to catch up on. Project Loom (green threading without coloured functions) is the first innovative thing I've seen Java do in recent history.
- deleted 2y ago[deleted]
- CharlieDigital 2y ago> Java is not an innovative language and the fact it is evolving towards something better... So basically C#?
- ygra 2y agoIn this particular case it goes further. C#'s nullable-reference types are useful, have a few problems, e.g. • The feature is compile-time only (unsurprising considering the type narrowing approach is very similar to how TypeScript works) • It interacts weirdly with Nullable<T> for structs since that already came before, uses some of the same syntax, but works differently because it's actually a type at runtime. Java seems to have the nice position here to make it consistent across value types and reference types (assuming Project Valhalla is ever done) and they seem to have opted to retain the types at runtime as well which will cause runtime checks. This may cause gripes about performance, but from a correctness standpoint it's definitely much nicer than just having APIs that tell you that null won't ever occur, only to still have that problem in certain cases.
- pjmlp 2y agoIronically, given how C# came to be, Microsoft is now a OpenJDK contributor and has their own distribution, turns out it is quite valuable to do so for Azure. Just like 60% of Azure runs Linux workloads, as per official numbers. Interesting the rounds that the world makes.
- self_awareness 2y agoJava is not an innovative language, but it's one of its strengths. We live in a world where everything new is being marketed as an improvement of the previous thing, which is often not the case. Java is a healthy counterbalance. It should evolve, but it's fine if it does it more slowly than others.