7 ms·
I'd nominate Java itself. In the decades Java sources have been available, any of the kazillion junior programmers could debug-step into java.* and see exactly
by w10-1 3y ago
I'd nominate Java itself.
In the decades Java sources have been available, any of the kazillion junior programmers could debug-step into java.* and see exactly what's happening -- progressive disclosure at its finest for building expertise.
Most other languages have a hard boundary, so the roots of language are a matter of conceptual documentation and experience. Java also offers that fly-over knowledge, but when problems arise, programmers love knowing exactly and seeing directly.
Personally, in a pinch I prefer the actual to the elegant.
- diarrhea 3y agoYes. I have been burned by this in C#, it’s very frustrating.
- acedTrex 3y agoyou can step directly into System.* source as well...
- ldjkfkdsjnv 3y agoAfter a decade of programming 50+ hours a week in many languages (typescript, javascript, python, scala, java, lua, bash, c++, etc), I have come to the conclusion that Java is simply the best. The tooling, libraries, stability, verbose rigidity. It forces a style of programming that simply scales to more engineers better
- AtlasBarfed 3y agoIn javaland, the actual ideal is somewhere in the feature set supported by Groovy. CompileStatic groovy is probably the best, you get a lot of good features for no performance hit.
- deleted 3y ago[deleted]
- 29athrowaway 3y agohttps://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris... On a more serious note, most Java code on Github is now written by Copilot.
- winrid 3y agoHave you tried C#? It looks a lot nicer to work with than Java.
- watermelon59 3y agoThe ecosystem is nowhere near as mature though. I don’t work with either anymore but back in 2017 I made the switch from C# to Java and it felt like a breath of fresh air when it came to the maturity and capability of JVM tooling compared to what’s available for .NET.
- ablob 3y agoI'm curious, what kind of tooling are we talking about?
- winrid 3y agoInteresting. Did you try Jetbrains Rider as an IDE?
- acedTrex 3y agoThe dotnet ecosystem is incredibly mature. Its as old as java in most tooling cases, IDE, Language, Build System etc. The runtime is the newish part.
- kaba0 3y agoThe ecosystem is certainly more mature than many smaller languages, but it is still in a different league than Java’s. Most of it is not too great copies of the corresponding Java library, often being made by Microsoft only, with plenty of paid options while in the java world all of it is open-source and free, while offering a much wider selection. Also, you will find a java library for that random new tech you want to use, while it is likely missing for .NET.
- NBJack 3y agoTry JetBrains Rider, and be sure you are using a recent flavor of dotnet. When I migrated past 4.x to 6 of the .Net ecosystem, it dramatically improved my ability to work and deploy in C# with their rather delightful build system. For example, in the Monogame game library, you can build a self contained binary for Windows, Linux or MacOSX nearly effortlessly with just a single command line.
- _2z1p 3y agoAs an end user though, I honestly can’t think of any Java software I actually enjoy using. Minecraft? That’s literally the only thing that comes to mind.
- foobarbecue 3y agoHave you tried Jetbrains stuff?
- lockhouse 3y agoI have. Maybe I don’t have enough RAM for it, but I find their IDEs to be slow and laggy. Xcode and Visual Studio Code feel so much snappier on the same machine.
- KptMarchewa 3y agoI find it very weird that Xcode is faster than... anything, really
- NBJack 3y agoTake some time to learn the navigation and refactoring abilities of the JetBrains family. It is IMHO unmatched by most. Using almost any other IDE feels like a downgrade, especially on large codebases with complex dependencies. Beyond Java, they have excellent support for Python, C#, Go, Javascript, and more. The engine builds a deep understanding of your code, which can make ctrl-space to suggest a method on an object feel delightful (and a Godsend on big Java names). I also strongly prefer the keyboard shortcut set JetBrains uses. Having to reach all the way up to my function keys for combo operations makes me sad; even when I use other IDEs I love using an Intellij keybinding when available to quickly jump in and be efficient. But to your point, I also tend to use it on higher end workstations (i.e. minimum of 16GB RAM, local repo pulls on fast SSDs, tons of logical cores, etc.).
- 0x445442 3y agoJava doesn’t enforce any particular style. I’ve seen extremely procedural code that is full of statics where it’s obvious the authors were attempting to write C in Java. I’ve seen all manner of attempts at OOP where classes were meticulously restricted to nouns and the opposite where every class was a Service/Verb. Of late I’ve seen Java server side code that’s drank the reactive kool aid and done it’s level best to recreate NodeJS in Java. Now, your assertion about scaling to more engineers may be true but I’d argue tooling is the main reason for this because Java certainly doesn’t enforce any particular style of programming.
- stickfigure 3y agoWhile I think there's a lot to love about Java, the standard library itself is not an especially great role model. Most of it was written a long time ago and has a fairly antiquated style - lots of mutable state, nullability, and checked exceptions. Not that the library isn't an incredible asset - it's luxuriously rich compared to working in Node.js - but if it were written from scratch today, I suspect it would look fairly different. Eg, the collection classes would use Optional and have separate read/write interfaces. For an example of "modern Java" I would point at something like this (which I wrote, sorry about the hubris): https://github.com/stickfigure/hattery https://github.com/stickfigure/hattery
- NBJack 3y agoAs much of a fan as I am of Java, I have to agree. There are some real bombshells in the library that can either make your coding life or debugging a prod service miserable (sometimes both). Other additions are great, but have hurt readability a bit (i.e. Java lambdas). Checked exceptions get a bad rep, but I've frequently found taking advantage of their hierarchical nature can be beneficial to at least making them less bad to catch. When I work with languages that have no exception support at all, I sometimes even miss them.
- flashgordon 3y agoAs much as "not" a big fan of java, I need to give credit where it is due.. as my (almost) first language almost 25 years ago I learnt heaps by going through the source code. Sure there were bad and (what are now) outdated conventions etc. But as a junior eng learning how layouts worked, how data structures were implemented, how network code was written and tons more, the Java src folder was a huge treasure mine. Did I mention swing?
- kaba0 3y agoFrom your repo: Respectfully, I disagree that checked exceptions are a misfeature. Java’s implementation definitely leaves a lot to be desired (inheritance doesn’t make sense for them), but otherwise checked exceptions are a better form of Result types.
- SkyPuncher 3y agoJava was the language I used in university. While it may be well structured, I hated it as a junior level dev. There’s just so many unnecessary classes and abstractions to accomplish basic stuff. It makes sense in large applications with experienced developers, but it sucks to learn.
- KptMarchewa 3y agoIt was very sparse with any syntactic sugar or ways to shorten common operations. Now it's much better, especially if you eschew the 00s style of programming - with obligatory getters and AbstractSingletonProxyFactoryBeans.
- kaba0 3y agoMy experience with languages is that people want more exotic languages as they gain experience, than they grow away from them and go back to pragmatic ones. I think Java strikes a great balance here, and while I also had a phase where I thought how much better Scala is for example, I can appreciate java much more nowadays and will default to it for most projects.