3 ms·
I object to the idea that Java has an easy learning curve. Java is only easy because there is a massive investment put into it up front, in the form of freshman
by eslaught 8y ago
I object to the idea that Java has an easy learning curve. Java is only easy because there is a massive investment put into it up front, in the form of freshman CS courses. So (a) a lot of the learning curve gets attributed to programming itself being difficult, and (b) once you internalize the model you categorize everything else as being "easy" or "hard" based on how similar it is to Java.
If you take people who instead learned Python as their first language, and put them through all the ceremony that is getting "hello world" to work in Java, you're going to get a very different reaction. A lot of this is very dependent on perspective.
- peterashford 8y agoI completely disagree. I learned Java after C++ and I found it to be a breeze to learn - and I was self taught. Python is a good language too, granted.
- starkruzr 8y agoPython's environment management stuff makes me dizzy every time I try to get back into it.
- eslaught 8y agoI agree with your experience, but not your conclusion. How quickly you can switch from C++ to Java is a function of how similar Java and C++ are, not how easy one or the other is. For the record, I also learned C++ first. I also found Java to be a breeze. And then I discovered a whole world of other languages, and learned that in the grand scheme of things, Java and C++ are actually really similar to each other. Even Python is not so incredibly different, though it is vastly easier thanks to dynamic typing. Compare any of these to stack based languages (Forth), array-based languages (APL), dataflow/graphical languages (LabView), homoiconic languages (Lisp), dependently-typed languages (Coq), etc. There are so many paradigms that are so dizzyingly different from each other. C++ and Java really are much more similar than they are different. And it's worth pointing out that many if not most of these, though they would probably induce shock in a typical C++/Java programmer, are actually built on top of a small set of core concepts that is probably more coherent than either of Java or C++. And this matters a lot for people who are learning truly from scratch. There isn't necessarily enough data to make any definitive statements here, but there are schools that start with e.g. Haskell as a first language, and offhand I would probably say they get off the ground faster than a lot of Java/C++ introductory courses I see.
- peterashford 8y agoSure, C++ and Java are both Algol based languages. I agree that a different paradigm is a better way to go for learning - LISP as I mentioned or Haskell as you mentioned. I have done a little Haskell and Erlang, but not enough to say that I know those languages. LISP I value chiefly for making me think differently which I guess is what you are going for in your comments. Although, I do still assert that Java is an inherently good language. I knew C before C++ and I would rank C and Java as 'better' languages than C++ from a design perspective. C and Java for being simple. C++ is good in other ways - it is arguably 'powerful' although the bang for buck over Java is reasonably low in that regard these days. My point is, I know several Algol languages and in my opinion C++, C# are the 'worse' ones and Java, C are the 'best'. I completely accept that other people will view this entirely differently and that this is largely a matter of taste.
- Traubenfuchs 8y ago> and put them through all the ceremony that is getting "hello world" to work in Java Ceremony? It's one line with the official java REPL jshell. Two lines, if you want a GUI (Swing).