Java Damaging to Students
Miscellaneous Forums/General Discussion/Java Damaging to Students
As reported from slashdot..
2 New York University professors penned this article in which they berate their univeristy for not teaching solid lanuages like C, C++, Lisp and ADA.
Here's the artilce..
http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html
Well it's not as if its not by design...it's no coincidence the western world is unravelling its own foundations.
triple negative!
I had to stop as soon as I got to the line about not learning pointers. It's already possible to go an entire career without using pointers, in the future it will get to be even more of a niche. An important niche to be sure.
Sounds like sour grapes to me.
Programmers should know theory and a group of languages though, not just a single one.
Funny, the CS Masters at ETH Zurich (where Pascal, Modulo and a few other languages were invented and the inventor of Eiffel, Bertrand Meyer is head of SE institute) are progressing in exactly the opposite:
1. Java / C++ are not officially teached at all. C++ totally breaks the programming by contract, Java needs several addons etc to do so (JML ++). For that reason, SE focuses on Eiffel as Programming Language. There are optional courses for efficient C++ templating and the like.
2. ETH does not teach any language at all. The courses have their stuff and you are meant to teach the programming language of the course to yourself. I've learned Eiffel, C, C++, Java, Matlab, VHDL, Prolog, Datalog and a few other languages yet ...
3. The amount of maths in that damned courses is brain breaking ... the only courses with more maths are math and physics / electrotechnical engineering (field and quantum physics) ... even biology and chemistry have less maths ...
so it seems like this degeneration is mainly a problem of this or US universities, not a common one.
PS: a good programmer anyway does not know one language but many programming concepts etc. learning a language is a thing of 2 months, learning concepts a thing of 2 years
It's true - deconstruction and the such like is taking place in different countries at different times and rates but it's only so the average joe cannot get a clear picture of what the hell is going on. It's why out self-designated masters stay out of the limelight.
Meanwhile ....
I speak as one of those poorly educated students they criticise. I did an MSc in Computer Science in the mid 90's. I did it as a 'conversion course' from the humanities and there were no prerequisites in terms of maths or computing.
The course was divided into 'software engineering' and 'information technology' streams. The former was for the more experienced and maths literate, the latter for relative noobs like myself. We learnt VB (changed to Java the following year), the SE's learnt C++.
We did have to sit through lectures on formal subjects - a course on data structures and algorithm design was very hard going and difficult to relate to the simple little VB apps we were creating.
I do recognise myself in their assertion that 'dumbing down' to Java or other 'easier' languages means that Uni's end up producing easily replaceable professionals (which could be just as easily educated by non-Uni training courses).
The problem is: who is going to do the hard stuff - invent the new tech - if HE doesn't teach students how to think in the right ways?
The dumbing-down is happening in many fields, not just CS. I read an article which said it's mainly due to an increasing lack of interest in science, particularly maths and physics. As a result they make it less intimidating to get the numbers up.
First I thought this article would be interesting. And it was until in the end they had to bring up the fictious terrorists again, which in today's world are the excuse for almost anything: "In this day and age, the fear of terrorist cyber attacks..."
A-ha, sure. If nothing else brings new cannon fodder to the Ada company, the sledgehammer method will help.
Still, they've got some points, although their choice of languages is very debatable.
Pascal is a much better language for teaching than C, it also supports pointers, but enforces a cleaner and more structured programming style than C. In the 80s, Pascal was --the-- academic language in Germany, and I think it should have stayed that way.
I still don't see ANY purpose in the C++ programming language. It is an unnecessarily complex abomination. You want to learn something about object-oriented programming? Go and get yourself a Smalltalk environment:
"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."
- Alan Kay
Java probably helped selling many servers, so it's no wonder that certain companies champion it so much. Like COBOL, it is too established to ever go away, so if you want to work in certain business niches, you cannot avoid this language. Unfortunately, too many people mistake it for the Holy Grail of Information Technology, which it certainly isn't.
Ada... Now that's funny. The only people that I ever heard of using that language were the military. NORAD's software is written in it. And isn't Ada basically an even stricter version of Pascal? So there you go again: We should go back to teaching Pascal.
Mathematics: I am in this industry for many, many years now, and if there is anything that I actually NEVER had any use for in my daily job life, then it was a mathematical background or education. Was I just lucky? Or is it rather the case that if you want to put the word "science" on something, then you need to add heavy loads of mathematics to the curriculum, because that probably is the only way how you can make programming and computers an academic excercise?
For me, programming is about LANGUAGE, it is about explaining in very simple words how to perform a specific task.
But "computer scientists" are NOT programmers; that is the one thing that they do not actually learn during their education. It is a thing they might do on the side, but it is not the --profession-- that they are learning. So I'd say that companies are idiotically trying to put exactly the kind of people on the job that are usually the least optimal choice, when they put "CS degree required" in a job ad. Every physicists that I've met knew more about programming than most of these "CS degree" folks. (Naturally, there are always exceptions. I also know a few historians and even an agricultural economist who are great programmers. ;-)
It certainly is not the fault of the Java programming language that universities mistake CS studies with mathematics. And it also is hardly the fault of either the Java programming language or the CS students that the latter do not learn 'real' programming.
Anyway, I know that my point of view in this matter does not make me a lot of friends, but we won't change that system anyway and that's the end of the discussion for me.
I hat Java but I wouldn't say it's less "solid" language compared to C/C++ etc.
I know about pointers (from C64 days) but none of my games use them!
Well main problem with all "enginner like" studies is that most of them just never evolved ...
For XY years they do the same trash now but start adding more and more content instead of rethink their stuff and go with the time.
My own study is such an example ... We learn semiconductor device stuff from "day 0" till now in a single term which is just bullshit and totally overfloods your brain even thought half of that stuff would not even be needed to understand the concepts of the "now" ... It is as pointless as the physics courses we have: Yes we need quantum mechanics. But heck we do stuff in 8 lectures that physicians do in a whole term (26+ lectures) and we are definitely less interested in the stuff below the surface than them, as we create devices using it, not working on "evolve" them to something new. Without us beeing able to use the devices they actually wouldn't even have a job as nobody would have a use for electrical nanostructure devices if we didn't build ICs etc out of them ...
But for some reason they don't see that point, no mather how often it is pointed out in the evaluations ...
The other worse point is (don't know if your unis have that issue as well) that whenever the prof changes (yearly or near that here), half of the course changes elementally again which can be good but can be deadly if other courses assume that you had XY and due to the "highly educated" morron you didn't have it just because he thought he knows better what you should have than your other 5-7 profs of the other fullterm courses.
Hahahah. Hilarious.
Isn't this like saying that metalworkers are being "dumbed down" by having to learn to use CNC tooling, instead of just banging hot iron with a hammer?
I don't get it. If you use a language like Java, you can learn and solve much more complex problems than in a language like C or C++. Not because it's a "dumber" or "easier" language, but because it's not based on archaic design ideas, banged together by two hippies at AT&T in their spare time over 40 years ago.
I'm surprised they don't think we should bring back assembly and punch cards! I also find it academically irresponsible that they single out chiefly imperative programing languages what about Haskell? SQL? Prolog? Not to mention that LISP is about as "solid" a language (having undergone more permutations than any other formalized programming language) as Linux is a "mainstream" OS.
I do recognise myself in their assertion that 'dumbing down' to Java or other 'easier' languages means that Uni's end up producing easily replaceable professionals
And how is this a bad thing?
The problem is: who is going to do the hard stuff - invent the new tech - if HE doesn't teach students how to think in the right ways?
The problem is that "the right way" is not static. Programing paradigms evolve and change over time, as technology moves forward, and the tasks we need to solve grows increasingly complex. The way it works is that we use our primitive tools to make better tools. The idea that using a wrecking ball or a excavator is "dumber" than using a sledgehammer or shovel is simply absurd.
The same applies in alot of fields, nearly every one actually. Better tools usually means the job gets done faster. Maybe their scared that eventually very few people will know or understand c++?
Maybe their scared that eventually very few people will know or understand c++?
One can only hope.
Isn't this like saying that metalworkers are being "dumbed down" by having to learn to use CNC tooling, instead of just banging hot iron with a hammer?
No, it would be more like saying aircraft pilots would be dumbed down they were taught to use the autopilot only, with absolutely no training on manual flight.
I don't get it. If you use a language like Java, you can learn and solve much more complex problems than in a language like C or C++.
It seems the general cause for concern is that Java is overall producing less competent programmers, not that Java is in any way an inferior language. In fact, when a language is so powerful, and includes a large amount of libraries, it can make it almost as if you don't have to program at all, but rather snap together a few simple blocks. Yes, this is good for experienced programmers, but I think the problem is that in this case a new programmer may never learn the very important skills of inventing your own algorithms in creative ways.
I can agree with the article.
I don't think they are saying that java in itself is bad. Its that the high levelness and abstractions are interfering with students ability to learn, and see the big picture of constructing software.
How many people have you seen or know of, that think programming is a matter of picking and choosing design patterns from a cookbook. Or maybe dragging controls onto a form, filling out a dialog, and then writing an ever so small, trivial bit of code?
+1 on pascal being superior to c/c++ for teaching...or most things for that matter :)
ADA?!? is that even still used?
We did that at university using those horrible old greenovision terminals. I remember it being kind of pascal-ish. I hated it as you had to wait 10 mins or something for the server to compile 20 lines of code.
I do agree though, C++ & C is certainly more ground level than anything else and is better than learning MS platform only stuff like VB & C#.
I don't get it. If you use a language like Java, you can learn and solve much more complex problems than in a language like C or C++. Not because it's a "dumber" or "easier" language, but because it's not based on archaic design ideas, banged together by two hippies at AT&T in their spare time over 40 years ago.
Yes, and if you use a language such as Lisp, or anything with ANY metaprogramming features whatsoever, you can solve much more complex problems still.
C is important as a learning language for developing in essentially a portable assembler close to the metal. It's a beautiful language for when it's appropriate. I agree about C++.
c# is not ms platform only.
</tangent>
c# is not ms platform only.
Unless you want to do anything useful with it. Mono is a joke.
Yes, and if you use a language such as Lisp, or anything with ANY metaprogramming features whatsoever, you can solve much more complex problems still.
Also, Lisp is just plain fun to work with.
Gonna have to disagree with you there noel.
http://unity3d.com/ , among many other apps.
Mono is and will always be playing catch up to .net. No surprise there. But its very usable, and plenty capable as is. If your talking winforms, then you might have a point.
Anyways, don't want to disrail this thread, so thats my final word on that :)
> ADA?!? is that even still used?
It's still out there, but not used a lot. When I was running a version the compiler was nowhere near as slow as the one you mention. I sort of liked ADA, it had some neat concepts, too bad I could never find any employment that used the language.