4 ms·
Making Java an introductory programming language was a misbegotten idea IMO. I can sort of see the justifications: "it'll make students workforce ready", "it's
by jogjayr 10y ago
Making Java an introductory programming language was a misbegotten idea IMO. I can sort of see the justifications: "it'll make students workforce ready", "it's a modern programming language and teaches OOP" etc. And relevance to industry is also probably why Stanford might be switching to JS.
For me an intro programming language should have one of two qualities. It should either:
a) have simple, easy-to-understand syntax so that students can learn the fundamentals of stitching together a series of logical steps into a working program
OR
b) be low-level so that students learn computers and programming from the ground up. I mean registers and pointer arithmetic and memory allocation/deallocation.
Either is a valid approach. For a) the most obvious candidate (to me) is Python. For b) it's either some sort of assembler language (my first language was 8086 assembler) or C
Java is a "tweener" language; it's not simple enough to teach programming and logic, but not low-level enough for students to understand computers at a basic level.
- smsm42 10y ago> introductory programming language > make students workforce ready That's the problem right here - the idea that a single introductory programming course can make anyone "workforce ready".
- jogjayr 10y agoNot that one class alone. But it may very well be that students use predominantly Java throughout their degree, starting with this course. I got my bachelors in India so we started with C++ and learned Java for just one course in year 3. But when I came to the US for my Masters everyone who went to undergrad in the US only used Java for class projects. So it may be that for students who graduated in the last ~10 years in the US, Java is their strongest language. I didn't ask anyone about their language choices at the time so I don't know this for sure; others are welcome to chime in.
- afghanPower 10y agoRust and Go should probably also be considered for b), don't you think?
- jogjayr 10y agoMaybe? I'm not sufficiently familiar with either one to state that they would be appropriate. I haven't progressed beyond "Hello world" in both. If they support manual memory management and pointers (I seem to remember Go having pointers and Rust being a C/C++ replacement should have them) they may be decent candidates also.
- charles-salvia 10y agoI agree - I think for the most part, Java is a simple language that has straightforward C-like syntax. The main problem is specifically the boiler plate class and static main method you need to blurt out just to get anything even compiling. (Also the inevitable CLASSPATH errors that are an initiation rite for using Java). This is a direct result of the design decision to enforce an OO class structure on all Java programs. You literally can't write any code that isn't somehow part of a "class" (an OO concept that, as an intro CS student, you haven't even learned yet).