Panasonic Youth rob sanheim writes about software, business, ruby, music, stuff and things



Posted
29 December 2005 @ 7pm

Tagged
Java, Software

Discuss

The problem with JavaSchools according to Joel

Java is too easy to be the primary language taught in university computer science, according to Joel. I agree. Good thing I caught the last wave of C++ courses at my school, so I at least learned pointers.

update: Chad weighs in on it, asking where is the room for non-engineers:

What worries me is that this will weed out the artists and the craftspeople, leaving us with nothing but a bunch of engineers. Sometimes you need an engineer. Sometimes you need an artist.

Now I just need to work through those MIT lectures… (or read the book).


7 Comments

Posted by
xx
29 December 2005 @ 9pm

If Java is too easy, why is there so much crappy Java code?


Posted by
PJ Hyett
30 December 2005 @ 5am

My school is also migrating to Java next year. I’m quite happy I was still taught C++ to fully appreciate how much it sucked coding 10 years ago. And ironically enough, my sister went to Whitewater, small world.


Posted by
Shai
30 December 2005 @ 10am

Thats just stupid (and so is Joel).
Java is simple in the memory management which means you don’t have to solve the same problem over again. What it simplifies in terms of memory and redundancy it makes up by allowing you to build more complicated object oriented models that are just not practical in C++. Java allows you to focus on the code algorithm and object oriented design rather than fight with the language to get the bloody thing to work. In C++ I spend weeks sometimes trying to locate a leak and several systems I know of went to market with serious memory problems. In C++ I just spent 2 days trying to get the set of HORRIBLE make files to work correctly (and people complain about classpath problems).
Real hackers (unlike wannabies) work with the algorithm not the language and get results.


Posted by
Macon
30 December 2005 @ 11am

If Java is the lowest level language one learns as part of a degree program in Computer Science then I completely agree that it is innappropriate. I work on a daily basis with people who finished CS programs in the last few years, and only know java. They have NO CLUE what’s going on “under the covers”. They can’t write or recognize optimal code, nor do they know how to diagnose problems happening beneath the API layer. Java is a good language for teaching OO concepts, but I’ve found that those developers that know what’s going on BEHIND those abstractions produce the best designs and implementations for our customers.

Do I work in Java daily? Yes! Would I want to go back to C++? Heck no! But I’ve taken my lumps in several other languages (including assembly), and know that it makes me a better Java designer/developer today.


Posted by
Alexandre Rafalovitch
30 December 2005 @ 12pm

Is Java going to be the only language tought in the Computer Science course (as Joel implies)? If so, ‘maybe’ it is too easy.

But really, a good course should teach several languages. In which case Java (especially with BlueJ) is a good way to get introduced into programming. We did introduction to OO with Eiffel, which was too confusing all at once and just led to copy/paste programming. But we also did Assembler, Pascal, Miranda and couple of others to round the education up.

So, I vote for starting easy and then introduce other languages with different paradigms and styles.

Alex.


Posted by
Rob
30 December 2005 @ 12pm

xx: the problem is crappy java code is easy to write, I don’t think anyone would say that well designed, easily maintained code (in any language) is easy to write.


Posted by
BlogReader
3 January 2006 @ 3am

Macon They have NO CLUE what’s going on “under the covers�.

So you make all your coworkers open up an assembly editor to see what the ‘real” code looks like?

They can’t write or recognize optimal code, nor do they know how to diagnose problems happening beneath the API layer.

“Optimal” code to a recent grad might involve re-implementing the code for regexs. Is that what you want?

What problem are you trying to solve?

As for debugging beneath the API layer I can sort of see where you are coming from — a lot of devs don’t know how to use ethereal to see the actual IP traffic their code generates. However that comes with experience (”why can’t I get past the firewall”?). Perhaps if you posted some specifics we could talk about that.


Leave a Comment

web framework deathmatch: Rails vs Seaside Prototype and extending javascript’s Object or Array