4 ms·
I just have one question: Why? Why, in this day and age, learn Java unless you absolutely must? (which you probably will, at some point, but if you're lucky, m
by qwertyuiop924 10y ago
I just have one question: Why?
Why, in this day and age, learn Java unless you absolutely must? (which you probably will, at some point, but if you're lucky, maybe avoid it). It was a pretty miserable language to begin with, and has since been surpassed in just about every way.
If you're thinking about using Java for a project, you can probably use C, Rust, or JS/Python/Ruby/etc. Hell, you could even use Haskell, ML, Lisp, or Smalltalk, if you're that sort of person.
But don't use Java if you can avoid it. It will make you feel better, likely improve your productivity, and make you stop wishing that you could commit seppuku.
- TurboHaskal 10y agoBefore down-voting this poor soul: Hobbyist programmer, Schemer (although not smug about it, really), gamer, voracious reader, and highschool student.
- qwertyuiop924 10y agoI did say if you had to. In the industry, I can understand why you might have to learn it. I just don't understand why you'd want to. But then, I never liked Java: maybe I just don't "get it".
- ddorian43 10y agoMany of the 'big data' tools are in java. If you want to extend them or even just use them you'll need it(~hbase, apache samza, lucene/solr/elasticsearch etc)
- TurboHaskal 10y agoI highly dislike Java as well but as a professional and somewhat pragmatic programmer I'd be extremely wary of discouraging a fellow developer to learn such a dominant language like Java. Worry not, your Scheme kool-aid will fade out eventually.
- qwertyuiop924 10y agoThat's a fair criticism. Hell, I'll probably have to learn Java sooner or later, like it or not. >Worry not, your Scheme kool-aid will fade out eventually It's not Kool-Aid. I can tell because I am still capable of criticising Scheme, and am not in awe of it. Scheme has a weak stdlib (which is both good and bad), its string handling is painful at best, as srfi-13 doesn't provide a lot of common functionality, its function names are painfully long (call-with-current-continuation. Really? What would you call 'do' if you hadn't inherited it from maclisp? iterate-over-variables-incrementing-until-condition?) Which matters a lot when your whole language is made up of them, or things that look like them (how many times do you want to type 'vector-ref'?). Scheme has no dynamic variables. Chicken, my scheme of choice, and the most viable one for real work, lacks a decent debugger. Gambit and Guile have good debuggers, but Guile is slow, and Gambit has no libraries, so you can't get anything done. Schemestill doesn't have a standard imperative macro system. And the SSC is still working on R7RS-large, which will finally bring together a stdlib large enough to write scheme portable across implementations without snapping and spending the rest of your life in a corner, dribbling about syntax-rules. I like scheme: it's both syntactically and semantically small, beautifully clean, and even decent for some kinds of real work. But it's not even close to perfect, or even ready for industry.
- tdb7893 10y agoYou suggested systems languages (C and Rust) that aren't good for most projects for obvious reasons and dynamic languages (JavaScript, Ruby, and Python) which I think aren't as good for large enterprise programs. For example I've seen a complicated billing program that if it was written in Python would've been very hard to figure out and in that case Java's verbosity and static typing made reasoning allowed me to have tools to make analysis much easier. That combined with a huge and battle tested ecosystem of libraries and the fact that it's a common language that many programmers already know make it still a fine choice for many organizations.
- qwertyuiop924 10y agoThat's a fair reason. Thanks for the response. I suppose my hatred of Java did give me a bias against it here...
- HCIdivision17 10y agoAs you'll find is often the case, many simply can't avoid it. I can't. The systems I work on are backed by the JVM and run Java, but with Python on top. (Jython - Python 2.5 implemented in Java - if you're looking for the implementation.) As is almsot always the case, it's utter crap except for how useful and great it is. You get to do a ton of scripting in Python, and it has near-transparent access to the Java modules, too. So you can do things like from com.companyName.module.class import myFunction and it just works. And it's terrible because you're doing crazy things like mixing Java paradigms with Python's style and it gets a bit nuts. But you're making money, solving problems, and in the end, it's all about the trade-offs. For my work, Jython nails that sweet spot. I would run screaming if I saw it stand alone, but I won't spite it given my alternative is VBA. (Which I also won't shit on - VBA has saved my bacon more than a few times!)
- qwertyuiop924 10y agoThat's the big issue, and I did note this: like it or not, sooner or later, you will probably use Java. Sometimes it's even the best tool for the job.