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

Reply via email to