Secure Coding mailing list archives

Re: Education and security -- another perspective (was "ACM Queue - Content")


From: Crispin Cowan <crispin () immunix com>
Date: Fri, 09 Jul 2004 14:45:26 +0100


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






Current thread: