[comp.sw.components] Are "production" programming languages are dinosaurs?

scc@cl.cam.ac.uk (Stephen Crawley) (09/29/89)

Bill Wolfe writes:
> Ada is the result of a language ENGINEERING process.  There was
> a deliberate decision that the definition of the language would
> be held stable for ten years at a time.  This permits certain
> economic assumptions to be made, which was judged to be more
> important than satisfying those who think that new versions of
> a language should be generated every six months.  This is a
> PRODUCTION language, not a RESEARCH language.  It offers a lot
> of advantages (portability, compiler validation, infrastructure)
> not present with other languages, in addition to a very high level
> of support for good software engineering practices. 

Well how come ADA seems to be largely irrelevant outside of the defense
sector?  

ADA 83 was 5 - 10 years out of date even before it was finalised.  Unless 
it gets a RADICAL overhaul, ADA 9x will be 10 - 15 years out of date.
Doubtless, the reasctionaries and religious zealots from the software 
engineering industry will make sure that much of the important work done 
by researchers over the last 15 years (like GC technology, functional
programming, designing languages to make formal verification possible) 
will be ignored ... just like they did for ADA 83.

> We are nearing the end of the ten-year period of definitional
> stability, and obviously this is when the number of new ideas
> which have not yet been incorporated is at its largest.  

Sadly ADA 83 isn't anywhere nearing the end of its life ... even for
writing new software.  It would be very optimistic to expect ADA 9x 
software development environments to be available before 1995, which  
puts ADA 83 only 1/2 way through its life.  And even that is ignoring 
the inertia inherent in the software development process.  I can't see
many project managers leaping to ADA 9x half way through a large project.

--

Production language design should be an on-going evolutionary process.
The language design should reviewed regularly to incorporate new proven
ideas from research languages and the results of experience from the
production language itself.  A new language version every 2 years sounds
about right to me. 

Production language designers should also avoid the pitfall of excessively
compromising the language design for backwards compatibility.  Outdated 
ideas and language constructs should be phased out as quickly as possible.

What about all the software in old versions of the language?  Who does 
the job of converting it I hear you ask?  It should be the task of the 
people who build programming support environments to write conversion 
tools to largely automate the task of converting code from one version 
of the PL to the next one.

Maybe these ideas are not workable right now ... production programming
support environments aren't really up to the task yet.  But this is the 
direction the Software Engineering industry should be aiming.  The process
of change in computing is inevitable; we should be going with the flow
not trying to hold back the tide.

-- Steve

baur@venice.SEDD.TRW.COM (Steven L. Baur) (10/03/89)

in article <929@scaup.cl.cam.ac.uk>, scc@cl.cam.ac.uk (Stephen Crawley) says:
> Posted: Fri Sep 29 13:41:17 1989
> 
> Well how come ADA seems to be largely irrelevant outside of the defense
> sector?  

It is not really.  But current Ada compiler technology produces large slow
code.  Given mature languages like "C", there should not be much incentive
currently, to use Ada.  What is most interesting is that Ada is not
particularly acceptible for D.O.D. applications either.

(Some background first)
I produced a Heterogeneous Interprocess Communications library for Ada that
was used for the Army FAAD (Forward Area Air Defense) project (and might well
be used on future contracts).

FAAD is part of a five-part Army contract to computerize the entire battle-
field.  The MCS project (Maneuver Control System - part of the same system
FAAD is to run in) was fielded first, and
runs on a system with MC68010s, bubble memory, and a plasma display.
It uses a specialized version of Ada developed by Ford Aerospace Corp. that
has needed properties for implementing the system.  The extensions to Ada
that Ford wrote are incompatible with any Ada standard.  I emphasize this
point because DOD has published data about Ada-using contracts and has
emphasized (among others MCS), and I know MCS does not use "true" Ada.
(Other TRW Ada using projects depend on system dependent facilities of the
local Ada, with portability being thrown out the door).

> ... ADA 9x will be 10 - 15 years out of date.

Agreed.  But I don't have to like it.

> ...
> Sadly ADA 83 isn't anywhere nearing the end of its life ... even for
> writing new software.  It would be very optimistic to expect ADA 9x 
> software development environments to be available before 1995, which  
> puts ADA 83 only 1/2 way through its life.  And even that is ignoring 
> the inertia inherent in the software development process.  I can't see
> many project managers leaping to ADA 9x half way through a large project.

You may be wrong on that.  We see the limitations of ADA83 too clearly.
(I hope you're wrong on that -- I'm a TRW stockholder).

> ...

There are two remaining things:

Ford Aerospace is rewriting X-Windows because it takes up too much core and
is too slow (for the MCS project).

The Heterogeneous IPC effort was an order of magnitude more difficult to
implement in Ada than in "C".


steve    (baur@venice.sedd.trw.com)

rang@cs.wisc.edu (Anton Rang) (10/03/89)

In article <30@venice.SEDD.TRW.COM> baur@venice.SEDD.TRW.COM (Steven L. Baur) writes:
>in article <929@scaup.cl.cam.ac.uk>, scc@cl.cam.ac.uk (Stephen Crawley) says:
>> Posted: Fri Sep 29 13:41:17 1989
>> 
>> Well how come ADA seems to be largely irrelevant outside of the defense
>> sector?  
>
>It is not really.  But current Ada compiler technology produces large slow
>code.

  Well, I'm not an Ada person, but current Ada compiler technology
does *not* produce large, slow code.  I used to use the Telesoft
VAX/VMS Ada compiler; even without global optimization, it produced
code comparable to the other VMS compilers (which are all fairly
mature and produce excellent code).
  I haven't used many other Ada compilers, but VAX Ada also appears to
do a pretty good job of code generation.

>  Given mature languages like "C", there should not be much incentive
>currently, to use Ada.

  C is mature?  There isn't even a standard for it yet!  Besides, it
is missing a LOT of features very useful for large projects: nested
packages, information hiding, etc.  It doesn't even have nesting in
the namespace (writing two functions called "sort_array" generally
leads to trouble).

>  [ a few experiences with Ada use deleted ]

>The Heterogeneous IPC effort was an order of magnitude more difficult to
>implement in Ada than in "C".

  Is this because of the language itself, or because it requires a
different programming methodology?  The learning curve for Ada is
pretty steep, and I suspect that it's even worse for managers of large
projects.  Did the managers and programmers have experience with both
Ada and C before the project was started?
  I'm not saying that Ada is universally better than (or even as good
as) C, but I've run into a lot of cases where using C was a big
headache (usually due to the lack of nested procedures/modules).
   
+----------------------------------+------------------+
| Anton Rang (grad student)        | rang@cs.wisc.edu |
| University of Wisconsin--Madison |                  |
+----------------------------------+------------------+

rcd@ico.ISC.COM (Dick Dunn) (10/05/89)

rang@cs.wisc.edu (Anton Rang) writes:
>...scc@cl.cam.ac.uk (Stephen Crawley) says:
> >  Given mature languages like "C", there should not be much incentive
> >currently, to use Ada.
> 
>   C is mature?  There isn't even a standard for it yet!...

This is a cheap shot.  C has been developed in the natural sequence, namely
"try it first, then standardize it."  The fact that Ada was standardized
before there was even an honest working compiler for it--let alone any
useful experience with the language--is such a massive act of monstrous
stupidity that even now, years later, I (and most other programming-lang-
uage folks) have trouble believing it was done that way.

The standardization of C also followed an arduous, but very open, pro-
cess...in which the issues surrounding the language were exposed to
serious (and sometimes seemingly endless!) debate.  The Ada standard, on
the other hand, was lambasted as ill-advised, ill-considered, premature,
etc., on various counts and in various ways by leaders of the profession
and by at least one professional society (ACM).  The response from the DoD
was, essentially, "Thank you for your concerns.  Damn the torpedoes; full
speed ahead."  The Ada standardization process is something to be ashamed
of.  The refusal (and inability) to let the language evolve is precisely
the reason you're seeing comments in this newsgroup that Ada is behind the
times and falling farther behind.

As for maturity...C IS "mature" in the sense of being heavily-used and
well-understood for a long time--not "mature" in the sense of having a
well-established, hidebound bureaucracy to protect it.

>...Besides, it
> is missing a LOT of features very useful for large projects: nested
> packages, information hiding, etc.  It doesn't even have nesting in
> the namespace (writing two functions called "sort_array" generally
> leads to trouble).

Information hiding happens (and is intended to happen) at the "module"
(which essentially means "source file") level in C.  Frankly, experience
has indicated that this one level of nesting and hiding hasn't caused as
much trouble as people outside C might think.  It's simplistic, perhaps,
but it's also simple.  Nested procedures are more expensive, particularly
in the face of procedure variables--which are both useful and commonly
used in C.
-- 
+---------+     Dick Dunn    rcd@ico.isc.com    ico!rcd      (303)449-2870
| In this |         4th annual MadHatterDay [10/6/89]:
|  style  |            A Thousand Points of Madness
|__10/6___|

ok@cs.mu.oz.au (Richard O'Keefe) (10/05/89)

In article <16160@vail.ICO.ISC.COM>, rcd@ico.ISC.COM (Dick Dunn) writes:
: This is a cheap shot.  C has been developed in the natural sequence, namely
: "try it first, then standardize it."  The fact that Ada was standardized
: before there was even an honest working compiler for it--let alone any
: useful experience with the language--is such a massive act of monstrous
: stupidity that even now, years later, I (and most other programming-lang-
: uage folks) have trouble believing it was done that way.

Believe it.  How did you think COBOL was produced? 

The BSI/ISO committee working on a Prolog standard aren't quite that
silly, but they have consistently taken the attitude "never mind what
people happen to be _using_ already, it's what we like or don't like
that counts".  (Would you believe that the error handling construct
is called "block"?)

amull@Morgan.COM (Andrew P. Mullhaupt) (10/07/89)

> > 
> >   C is mature?  There isn't even a standard for it yet!...
> 
> This is a cheap shot.  C has been developed in the natural sequence, namely
> "try it first, then standardize it."  The fact that Ada was standardized
> before there was even an honest working compiler for it--let alone any
> useful experience with the language--is such a massive act of monstrous
> stupidity that even now, years later, I (and most other programming-lang-
> uage folks) have trouble believing it was done that way.
> 
>

It is impossible to take a cheap shot at the lack of standardization of C.

C has been developed along the lines of; get something working and lists the
bugs as features later. When it turns out you have to turn your head inside
out to cope with the goo that passes for 'traditional' C source, you excuse
the miscreants because when they were growing up, that piece of code could
only be done by machine specific finesse, and now they write all their goo
likewise so the awful parts don't stick out so much.

C is the only widely used compiled language for which a program can (in 
principle) be constructed so that:

1. The program is syntactically correct.

2. For every input, the program eventually halts.

3. It is not possible to determine from the sources what logical relation
the input bears to the output. 

(In the jargon of computer science, rules for proving partial correctness
cannot be given for all of the C language. The commonly used unbound pointer
is the culprit here.)

Let's not get into the stupid issues, (what order should bytes appear in a word
in), and the glaring unreadabilities, (int* a,b,c; often written, always a
miscue!), and the downright ugliness of this woeful UNIX stepchild. Let's
talk about what C does to otherwise good programmers.


I am the first to admit that working in an ad-hoc language corrupts your
ability to program effective readable code. I was once a very sharp Pascal
programmer (on the grounds that ALGOL 68 was never really coming). After
about one year of exposure to the insidious APL language and first went
my FORTRAN skills (the least structured are the first to go) but recently
I have been stuck for syntax of case statements, and other simple Pascal
constructs, which do not need to be remembered, but can be reconstructed
from the principles of the language. I'm starting to remember little tricks
and devices as opposed to reasoning about code constructs. Having been 
exposed to both APL and C, I can definitely state that the fewer letters
in the language name, the more ad hoc the syntax is.

There are no cheap shots at C; it deserves all the flames it gets, and much
more.

If C is a mature language, let's ask: "Does this mean we won't have to put
up with it much longer?"

Oh well, wishful thinking, I guess.

Later,
Andrew Mullhaupt

Disclaimer: Any opinions expressed here are entirely my own. Often I wished
more people would admit to themselves what a hodgepodge C is.