Gus Wirth wrote:
The Dewar piece is self-serving whining because they can't hire recent
graduates cheaply. When I see a phrase like "As founders of a company
that specializes in Ada programming tools for mission-critical
systems, we find it harder to recruit qualified applicants who have
the right foundational skills." what they mean is they are unwilling
to pay what it takes to get someone to use an essentially dead
language. When I got my Masters in Software Engineering, I had to take
Ada as a prerequisite course. Where is Ada now?
Hmmm... when I coded in Ada we didn't use pointers. I know I only
touched on a bit of the language, but it would seem to me that pointers
are far from an essential skill for Ada like they are for C.
The programmers of the future won't be using languages that have
pointers. Look at Java, Python, Perl, TCL/TK (Hi Lan!), PHP,
Javascript, Erlang, Haskell, Ruby, and many of the other new and
experimental languages coming out. NONE of the new languages have
pointers. There is a reason for this. Pointers result in bad code and
wasted programming effort.
Of course, it's not so much pointers that is the problem. Indeed, all of
the above language have notions of indirection of one kind or another.
Iterators/references/etc. are all perfectly useful. The troublesome
thing with C/C++ is the unmanaged memory access. Of course, there are
useful skills one develops learning to manage your own memory, but I
think it is safe to say there are other, less tedious ways to develop
said skills. I've seen opponents of Java in education argue time and
again that students who learn primarily in Java have a hard time
understanding the concept of pointers, but frankly I don't see the steps
in their logic. I think what is far more likely is that Java provides
enough of a buffer that students not really learn much in order to make
progress. You can learn about indirection, pass-by-value vs.
pass-by-reference, and referencing data by an offset in Java, but in C,
if you don't learn these concepts, you are toast. So it allows for lazy
students and lazy instructors. (It's worth noting that 6.001 students
tended to have little difficulty when it came time to learn C.)
In general, I think the essay missed the mark by insisting on the
criteria being languages, rather than the concept he is hoping students
learn from the language. I think he is mostly on the mark in the latter
area, and he ought not concern himself with *how* students get there.
They whine about floating point computations. Huh? That's for the
hardware. If your hardware doesn't have a co-processor, then what are
you doing trying to do floating point to begin with? If you really,
truly need to do floating point in software, buy the damn library.
I'm sorry, but therein lies madness. Understanding the difference
between fixed-point and floating-point arithmetic, when to use which,
what the pitfalls of each are, how to handle rounding, how to track
precision, etc., are all universally important skills. I had the great
joy of inheriting a Smalltalk project where folks had never learned this
concept, and despite all of Smalltalk's wondrous abstractions, it was a
total mess.
--Chris
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg