[GAP] Regarding Cyril's Reply to My Rant

Anthony S Ruocco aruocco at rwu.edu
Fri Nov 9 16:11:41 CET 2007


The following is a comment from Col E. Ressler from the US Military Academy concerning the ongoing discussions:

Both Robert and Rich have points.  It's probably true that over 100 universities have Ada in use somewhere.  It's also relevant that very few are using it in CS1 and 2, where it might have the biggest impact.

At West Point we have the luxury of working on the task of teaching programming as a general thinking skill rather than teaching any particular language.  This is because zero of our graduates will need jobs as entry level programmers.  

Our students don't have much time, so learning _efficiently_ is more important than the normal mode of developing attention to detail by having the language consume huge chunks of your life as a punishment for small mistakes.  Such torture is part of what's driving kids away from Computer Science, but I digress.

If you consider objectively how to teach programming skill with high efficiency, then Ada is hard to beat.  

18-year-olds do not have the cognitive pieces in place for abstraction, so you can't expect OO-first teaching strategies to work very well.
This is pretty well documented, and we've verified it in the school of hard knocks.  

It follows that "everything is an object" languages are not well-suited to beginning programming.  You can make it work by temporarily hiding the object model, but you achieve only with pain what's painless in Ada.
It's more efficient to go through structured procedural style and then onto objects.  Ada supports this easily.  So Ada beats Java.

C/C++ are laughably quirky.  Beginning students lose huge amounts of time to pointer and reference nonsense and == vs. =  Ada has few quirks.
The Ada compiler is your friend.  (Though don't get me started on string
handling.)  So Ada easily beats C++.

Repeatedly we hear from multi-disciplinary design project leaders, summer internship sponsors, and exchange schools that our students rapidly absorb other languages and program well in them very quickly.  A Head of the Naval Academy CS department paid the greatest possible compliment a few years ago.  He said a couple of our exchange students (who in this case were slightly above average juniors in our courses), had learned C++ and wrote better C++ code by the end of a one-semester stint than most of his students who had started in C++.  This is anecdotal, but 10 years of anecdotes approximates real data.

We have worked all this out over a period of years starting in (gulp)
1979 with NYU Ada-Ed.  Long ago we wandered in the wilderness of FORTRAN, Pascal, then C++, and also some more recent trials in Java.  We have always come home to Ada for CS1 and CS2.  Recently we have moved to Java for "CS3," where we want to expose students to a different OO paradigm (and simultaneously design patterns).

The one place were the lack of broad use of Ada in commercial programming kills us is _simple_ access to GUI and graphics.  Graphics help beginning students connect code and consequences in their thought processes.  GUIs are needed for no other reason than to avoid the clunkiness of text-only I/O.  You just can't expect students to care about programming interfaces that are obviously outdated.  We've tried to address this with home-built Turtle Graphics libraries, and gtkAda has also been helpful.  But overall this is still a very weak spot in open source Ada capabilities for teaching.  Thank goodness for GAP, or we'd be done.  We publish our TurtleGraphics stuff at http://www.eecs.usma.edu/research/ in case anyone is interested.

Hope these thoughts are helpful and provoke more of this interesting discussion.

Colonel Gene Ressler
http://www.eecs.usma.edu




More information about the GAP mailing list