←back to thread

176 points chhum | 7 comments | | HN request time: 1.003s | source | bottom
1. aabajian ◴[] No.44006819[source]
Just going to remind y'all of this: https://www.joelonsoftware.com/2005/12/29/the-perils-of-java...

I went to a Java school. I remember my operating systems class involved writing simulated OS code in Java (for example, round robin for context switching). The argument was that it would be easier to understand the algorithms if the hardware complexities were minimized. I understand that sentiment, but I don't think Java was the right choice. Python would have accomplished the same task even better (understanding algorithms). I think there was a huge influence from industry to teach college students Java from day one. I had taught myself BASIC and some C back in high school, so it was a bit of a step backwards to learn a high-level language just to do simulated low-level OS programming.

replies(2): >>44007023 #>>44008617 #
2. cbm-vic-20 ◴[] No.44007023[source]
A lot of the arguments Joel makes in that article also apply to Python, and pretty much any other higher-level language that doesn't make you think about pointers. Ironically, he points out the Google had a great leap over Microsoft with MapReduce, which was built in Java.
replies(2): >>44007694 #>>44011265 #
3. jonhohle ◴[] No.44007694[source]
Back in the early 2000s, I was taught in C, C++, Motorola 68HC11, and MIPs assembly. I can clearly understand how Java works, even if I don’t know its GC is implemented. I can understand how programs were written from the 80s to currently. Had I learned programming in Java or, worse, Python, I doubt I’d have the same understanding. It’s relatively easy to go from low level to high level languages if you’re willing to give up control. My experience is that the opposite is less true. It’s certainly possible, but not as straightforward as understanding some foundational ideas.
4. briankelly ◴[] No.44008617[source]
My school started us off in microcontroller programming in C then Java for intro to data structures and OOP then back to C (and MIPS assembly) for systems/OS/concurrency. One thing I appreciate Java over Python for DS/Algo is the clear delineation between abstract data type and underlying data structure - IMO is easy to get a wrong mental model with Python. But teaching OS concepts in Java seems a little crazy to me.
replies(1): >>44009718 #
5. Koshkin ◴[] No.44009718[source]
Hm... Why? Java seems to be a perfect language in which to understand things at a conceptual level!
replies(1): >>44009958 #
6. briankelly ◴[] No.44009958{3}[source]
Good to get your hands in the dirt as well.
7. telotortium ◴[] No.44011265[source]
The original version of MapReduce was written in C++. The successor library, Flume, was however written in Java, but Spolsky would certainly have been referring to the original MapReduce, since the Flume paper wasn't published until 2010.