Followup On Java As "Damaging" To Students 626
hedley writes "A prior article on the damage Java does to CS education was discussed here recently. There was substantial feedback and the mailbox of one of the authors, Prof Dewar, also has been filled with mainly positive responses. In this followup to the article, Prof. Dewar clarifies his position on Java. In his view the core of the problem is universities 'dumbing down programs, hoping to make them more accessible and popular. Aspects of curriculum that are too demanding, or perceived as tedious, are downplayed in favor of simplified material that attracts a larger enrollment.'"
Re:@_@ (Score:5, Informative)
Authors have a vested interest (Score:3, Informative)
Re:Truth (Score:3, Informative)
Well, a lot depends upon your eventual focus. Me, I started out in life on a Rockwell PPS-4 4-bit micro, eventually graduating to an 8080 and then the 6502, 6800, 6809
However, given the level of abstraction in more sophisticated programming languages (Java and
And this is why... (Score:4, Informative)
There are trade offs to be made. Sure you can probably hack something together using less lines in Java or
Re:What a "BS" degree really is (Score:1, Informative)
Computer Science and Programming (Score:1, Informative)
The problem lies in this notion that Programmer == Computer Scientist. Which isn't and shouldn't be the case. I could go on, but what really needs to change is the perception around what is to be expected from a computer scientist versus a software engineer versus a computer engineer versus someone who's taught how to program. Indeed there are curriculum based in hardcore coding in C/C++ and then there are others where are based in theory and use Java. It really depends on the school, its research focus, and its quality.
I'll stop rambling here.
Re:@_@ (Score:3, Informative)
Re:C is overkill for most people (Score:2, Informative)
Re:@_@ (Score:3, Informative)
The advantage to java is that it's safer to make errors there. Screw up with a reference, and you get a nice stacktrace. In C/C++, your program just dies (you can get a debugger on there, sure, but 1st year students are rarely taught debugging skills).
That said, Java's good for getting someone into the proper habits of programming. Let them cut their teeth there - make their typos, basic logic mistakes, etc in a safer sandbox. Teach them how to print out debug statements early to understand what's going on, and to identify what mistakes they often make. When they know how to properly type in a loop construct and declare/invoke a function, then let them play with pointers.
And then you let them use C++. Not the big scary version of C++ everyone in
Re:Programming is different (Score:3, Informative)
To be precise, Java is a language specification. It's typically implemented as a virtual machine, but there's no fundamental requirement to do so.
Let's consider Lisp instead for a moment, since Gosling, Steele, et al used it as a conceptual basis for Java. It has an extremely rich history. Lisp predates Java in being implemented as a virtual machine. The dialect was Interlisp.
The Xerox model 11xx AI workstations used Interlisp as the system language. Lisp device drivers and network stacks were also implemented for the MIT Lisp Machine and its commercial derivatives based on variations of MIT Lisp and later Common Lisp. Note particularly that Lisp is running in silicon on these systems. There is no virtual machine.
These systems were not a great commercial success, because they entered the market as very exotic and very expensive research workstations at exactly the same time as commodity microprocessors were experiencing exponential growth. The various Lisp systems just couldn't keep up with commodity growth effects on price/performance. There was nothing functionally lacking with them, and I can say from firsthand experience that it was a pleasure to work on their operating systems.
I'm not convinced that I would enjoy working with an operating system written entirely in Java, but there's no reason such a thing couldn't exist. If a JVM can perform acceptably on top of a foreign processor architecture, it should only perform better without the virtual machine overhead.
Load of Crap (Score:2, Informative)