Peter Amey wrote:

Firstly a tactical one: Ada is by no means a dead language.  There is a great tendency in our industry to 
regard whatever is in first place at any particular point in life's race to be "the winner" and 
everything else to be "dead".

Ada was pushed hard enough by the DoD for a decade that it is to be expected that there is a lot of Ada code to be maintained. I'm also willing to believe that your business in Ada may be growing, but that is likely because others are exiting the business and leaving the remainders for you; I do not believe (unless you have evidence to the contrary) in significant growth in new project starts in Ada.

I focus on new project starts because that is the only case in which language selection is even an interesting question. For any kind of on-going work, using the same language that the project was started in is the obvious choice most of the time.

 In practice very substantial use may continue to be made of things which are not in 
the ultra-visible first place.  For example, OS/2 was killed by Windows yet most ATMs 
in the USA still run OS/2.

But no new OS2 ATMs are being built, and they are being phased out.

 We have't discussed the dead languages Cobol and Prolog but both are actually still 
in widespread use,

COBOL: same reason, legacy systems, and LOTS of them.

Prolog: not so sure. Prolog may still be a language of choice for expert systems projects. But I don't work in that field. I do have a completely un-used Prolog text book left over from grad school if someone wants to buy it :)

Secondly, in response to your suggestion that we teach concepts (which I wholly agree with), languages, including dead ones, encapsulate and illustrate concepts. Pascal was designed to teach structured programming. Occam provides a splendid introduction to concurrency. Modula-2 and Ada are ideal for illustrating the vital concepts of abstraction, encapsulation and the separation of specification and implementation. The languages are worth studying for these reasons alone. Those exposed to them will be better programmers in any language and will find adoption of new ones much easier.

In programming language terms, Ada is grossly primitive. Its object orientation mechanisms are crude at best. A *great* deal of progress in language technology has been made since Ada was developed. For just about any kind of concept or safety feature, students and developers would be better served to consider Java, C#, or ML instead of Ada.

As you say, languages come in and out of fashion; what I find sad is that so many of the new languages have failed to learn and build on the lessons of those that have gone before. I think it highly probable that this is because their designers have casually dismissed those that went before as dead and therefore of no interest. They would have done better to emulate Newton and "stood on the shoulders of giants" such as Wirth.


And that is what I meant by "history of programming languages". Java, C#, and ML are strictly better than Pascal and Ada for almost everything. But they did not spring out of the earth, they were built on the progress of previous languages. Java in particular contains no novel features at all, but rather shows good taste in the features it borrows from others. What made Java interesting was the accident of history that caused it to become the first strongly typed polymorphic programming language to become widely popular.

You *can* teach object orientation with Simula 67 or SmallTalk, if you really want to. But teaching object orientation with Java is a lot more approachable in the contemporary context.

I would never recruit someone just because they knew Ada rather than C; however, I would be highly unlikely to recruit someone who had such a closed mind that they thought Ada had nothing to teach them and was only fit for snide mockery.


I don't mock Ada for what it is: a fairly good programming language from the 1970s, with obvious scars from having been designed by committee (too big, too many features). Ada's defects are artifacts of its age and its history, not of poor design.

I do mock the suggestion that a large, complex, and retrograde language with no industrial growth is a suitable subject for undergraduate education.

Crispin

--
Crispin Cowan, Ph.D.  http://immunix.com/~crispin/
CTO, Immunix          http://immunix.com




Reply via email to