5 ms·
I'm not sure if this sort of thing is the done thing, but I flagged this because I think the title may flag the front page on some work proxies/filters/monitori
by i336_ 11y ago
I'm not sure if this sort of thing is the done thing, but I flagged this because I think the title may flag the front page on some work proxies/filters/monitoring systems. The title just needs minor redacting/editing, that's all.
Also - sorta-relevant discussion on the argument of Java being unnecessarily verbose (possibly interesting parent thread too): https://news.ycombinator.com/item?id=10769322 https://news.ycombinator.com/item?id=10769322
I've never used Java (not counting experimenting with Bluetooth in J2ME for lulz), but I've head a lot of opinions and thoughts about it. I wonder if (especially considering the parent thread off the above link) Java's tendency to encourage AbstractSingletonProxyFactoryBeans (see: https://news.ycombinator.com/item?id=4549544 https://news.ycombinator.com/item?id=4549544) is simply a way to fill developers' heads with so much indirection* that we simply cannot grasp that it ultimately makes no difference.
* - indirection: my poor word to describe having to constantly resolve what something means, and cross-reference information, etc - stuff that swamps and/or overflows our mental stacks really quickly.
Of course, the above being said, the elements of the language seem elegant - patterns and models and the like providing us with "everything has a place and everything in its place," if you will - and of course the encouragement in exponential verbosity looks really good in our progress reports.
- kuschku 11y agoJava is easy to do right, and easy to do simple. Until you ever start interfacing with enterprise libraries. As a novice, you'll just decide not to interface with them. Then you decide to build makros that make interfacing with them simpler, and then you build just another abstraction over them, using the very same AbstractSingleFactoryBeans that the library itself used. The reason why Java managed to be usable by modders of Minecraft — kids who've never seen code before — and enterprise people at the same time is that Java gives you the tools to build all the abstractions in simple ways, inside the language. In other languages you build a small hack using the preprocessor, or even decide to build a DSL. With Java, you just build an abstraction over the existing things. As a result, you have 20 years of abstractions right on top of each other.
- i336_ 11y agoOh, okay then. TIL. I have to admit that I've not really looked into Java that much, probably due to being tangled up in the opinions and rhetoric. Thanks for this perspective. I guess I need to explore the language further! (And ideally with moderation and discipline, it would seem.)
- jtolmar 11y agoJava is missing some features I'd really like, but there's nothing actually wrong with the language. You can write a C-like interface in Java and it will come out slightly simpler because of the garbage collector. It has features beyond that, of course, but I think you only need functions, structs, and namespaces to make clean code, and Java has at least all of those. I think the problem can be explained in two parts, having little to do with the language itself. Schools teach inexperienced programmers design patterns without teaching the absolute basics of code organization (refactor reused code into functions, move functions that deal with a class into that class) so they enter the workforce and try to solve easy problems with design patterns. Intermediate programmers in boring Java shops are judged by the complexity of their code, so the ones who never get past the solve-everything-with-design-patterns stage become senior programmers who mentor the newbies. Half of the world's bad, professional programmers use Java (the other half use Javascript), so they're quite effective at drowning out the good Java programmers. The whole system becomes clueless newbies cargo-culting together things that did well in performance reviews.