In an undergraduate computer science program, it is probably OK to
start students with any programming language, Ada, Java, Eiffel, or
C++, among some good choices. The danger is leading those students
to believe that, once they have learned one programming language, there
is no need to lead any other.
At University of California, Berkeley, the first programming language
is Scheme. Certainly such a choice was not made for economic reasons.
Instead, Scheme was selected for its logical facilities as opposed to
its mathematical support. Later, students are introduced to other
with more powerful features for generalized softwar development. There
is a bias toward C++ at this stage, but Java is making inroads as well.
If a university takes the decision to be a trade school rather than an
institution seeking to prepare students with the intellectual tools for
the life-long process of reasoning about ideas, that decision will always
lead to the choice of current fads. This is as true of the English
Department, where some professor is enamoured of the works of some
contemporary hack poet over the long history of excellent literature. It
is sometimes true of the Psychology Department were the most recent
psychobabble substitutes for seriouis researchg. It can even be true
in some of the Engineering Departments. I recall how we used to tease
chemical engineering students about being "plumbers."
If the university still has a few professors around who have enough gray
in their hair to understand that today's academic fad is tommorow's
faculty break-room joke, some students may be lucky enough to graduate
with more than a trade school education. If there are some professors
with enough courage and enough up-to-date knowledge to challenge students
who think they know, from reading the popular press and want-ads, what
constitutes an education, a few of their students will benefit.
Ada should not be the only language taught in a university. I should be
taught. Java has some interesting properties. It should be taught. Neither
language should be taught as, "Look how wonderful this is!" Rather, each
subject should be presented so the students can take a critical view of its
good and bad points. The role of the faculty is not one of advocacy but
one of challenging cherished biases.
One of the worst things to happen in some universities is the casual
acceptance Microsoft operating systems as the standard by which others
should be judged. Anytime a university adopts a position of that nature,
it is failing its students. The same would be true of a university that
advocated Ada, advocated Java, or advocated any other language.
Go ahead and teach Java as a first language. But teach it critically.
Highlight its deficiencies as well as its good points. If you teach
Ada as a first language, you should do the same. There is no perfect
programming language. One hundred years from now, our successors in
whatever software development is called, will recall our puny efforts
with the same high regard we give to mathematicians in the time of
Charlemagne. Twenty years from now, some student is going to reflect
on the education they had today. Will they look back and say, "Everything
I learned is obsolete?" Will they recall some professor of note and say,
"The professor really helped me keep my perspective on how to think about
the choices I must make, all these years later."
Sorry to pounce on this issue in such a non-Ada way, but we are talking
about education here.
[log in to unmask]
AdaWorks Software Engineering
2555 Park Boulevard
Palo Alto, CA 94306