comp.lang.ada
 help / color / mirror / Atom feed
From: schwartz@dinl.uucp (Michael Schwartz)
Subject: Re: A farewell to Ada
Date: 17 Nov 89 17:19:33 GMT	[thread overview]
Message-ID: <1492@dinl.mmc.UUCP> (raw)
In-Reply-To: 14033@grebyn.com

OK.  You win. I have to put in my 2 cents' worth.  It's hard, because I
agree with many things that everybody has said.

Ada has been getting a bum rap.  Ada was not designed by committee, it
was designed by competition.  C, on the other hand, has been judged by
its applications.

Ada had no substantial applications to benchmark its design against.
The software engineering requirements imposed on Ada were for
programming in the large.  Precisely what Ada has been shown to be good
at.  Not surprisingly, Ada has not been found perfect for every
application area.  Where it has failed, Ada-9X proposals have been
submitted to change it.

C was developed for systems programming.  The worth of a compiler was
judged by the ability to build a good, modular, maintainable operating
system.  Where C failed, the language was changed.  And changed.  And
changed.

It has surprised no one that C is more responsive to change requests
than Ada.  Nor is it surprising that inexperienced software engineers
write better code in Ada than in C.  It has not escaped anyone's
attention that there are more inexperienced software engineers than
experienced software engineers.

Sorry for belaboring the obvious, but let's start somewhere.  Now let's
talk about Ada and Unix.  

Areas where Ada and Unix have problems:  a) System-dependent features
accessed from Ada b) Scheduler conflicts--Ada tasks vs Unix tasks c)
Ada image sizes and startup times

Of these areas, (c) is the most readily addressed.  I have heard a
number of Ada 9X proposals amounting to a mechanism to freeze the Ada
image after elaboration, but before execution.  So much for startup
times.  I have also heard several vendors tout smarter link-editors
which will help resolve image size problems.  I also hold hope for
shared library implementations; the Ada runtime can be shared among all
processes needing it.

Area (a) is one that requires Ada vendor support.  It is difficult to
think of a non-trivial software system without some system-dependent
feature.  After all, we buy different hardware precisely because of
these features.  In my mind, a major difference between a good Ada
compiler and a marginal one can be found in the support for operating
system signals, pragma interfaces, and representation specifications.
It is no anathema to me to have an Ada system contain bodies which are
Pragma Interface (C,...) EVEN IF I DON'T HAVE TO.  Maintenance costs
must be kept foremost.  Reducing maintenance costs is, after all, one
of the major considerations in developing Ada.  Let's not spoil this by
insisting that every Unix guru learn Ada.

Scheduler conflicts (b) remain a problem because Unix processes are not
the same as Ada tasks.  Several have pointed out that Ada tasks are
'lightweight'; they mean that Ada tasks are represented by different
execution threads (instruction pointers and stack frames) but the same
data space.  At least one Unix vendor has implemented a lightweight
process type in the Unix kernel.  It is possible that a good solution
will be to build an Ada compiler which maps its tasks to lightweight
Unix processes, letting the Ada scheduler be either eliminated or
vastly reduced.

In the absence of this solution, a multi-tasking Ada program must build
a monitor to mediate all operating system calls which may 'use up' its
most vital resource -- the Unix operating system process.  The
efficiency with which this may be done is directly related to both the
Ada compilation system's (ACS) ability to interface with Unix (see
(a)), and the 'goodness' of the Unix in question.

Since 'signals' are to Unix more or less what 'rendezvous' are to Ada,
the more events which can be propogated to the Ada monitor from Unix
via signals, the more efficient the implementation.  Broad support for
SIGIO seems to particularly help.

With current compiler technology, one published result we have obtained
is multi-tasking access through sockets within 20% of the performance
of a C program using standard fork() and exec() calls.  Both
applications were able to exchange over 5000 tcp/ip messages per
second with a cheap 68020 box.  Turning off the time-sliced tasking in
the Ada program helped significantly.

One other result is that using our Ada abstraction, new employees were
able to contribute to our project within one to two days, even with no
prior Unix experience.  Of course, a C abstraction is possible--but why
doesn't anyone use one?

A 'today' note: Dennis Ritchie spoke to the FRUUG (Front Range Unix
Users Group) last night about 9th Edition IPC.  He has developed a
different IPC abstraction for his research.  In syntax, it is similar
to our Ada (and C) abstractions.  Of course, it has kernel support :-).

There.  I feel better now ('thar she blows!)

Michael
-----------------------
schwartz@pogo.den.mmc.com  "Expect everything ... 
mschwartz@mmc.com                   and the unexpected never happens." 
ncar!dinl!schwartz                               --the phantom tollbooth

DISCLAIMER:  The opinions expressesed are not necessarily those of my 
	     employer or myself.

-- 
-----------------------
schwartz@pogo.den.mmc.com "Expect everything ... 
mschwartz@mmc.com                   and the unexpected never happens." 
ncar!dinl!schwartz                               --the phantom tollbooth

DISCLAIMER:  The opinions expressesed are not necessarily those of my 
	     employer or myself.

  parent reply	other threads:[~1989-11-17 17:19 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1989-11-14 21:24 A farewell to Ada Ted Holden
1989-11-14 22:54 ` schmidt
1989-11-15 16:06 ` Ada William Thomas Wolfe, 2847 
1989-11-15 16:29   ` Ada & IBM William Thomas Wolfe, 2847 
1989-11-17 15:16     ` ryer
1989-11-18 18:47       ` William Thomas Wolfe, 2847 
1989-11-20  4:53       ` Jerry Callen
1989-11-19  6:05     ` Dick Dunn
1989-11-22 19:20       ` William Thomas Wolfe, 2847 
1989-11-19 20:19     ` Liam R. E. Quin
1989-11-20 12:55       ` William Thomas Wolfe, 2847 
1989-11-25 23:35         ` Liam R. E. Quin
1989-11-26  9:03           ` Ken Ritchie
1989-11-15 23:18   ` Ada Promises Doug Schmidt
1989-11-16 22:45     ` Ada compilers William Thomas Wolfe, 2847 
1989-11-19  6:30       ` This has gotten stupid! Dick Dunn
1989-11-16 19:08   ` Ada Walter Rowe
1989-11-16 21:33     ` Ada William Thomas Wolfe, 2847 
1989-11-17 18:53       ` Ada Pablo Fernicola
1989-11-18 18:55         ` Ada William Thomas Wolfe, 2847 
1989-11-21  5:24           ` Ada Andrew Koenig
1989-11-22  9:54             ` Ada Mats Luthman
1989-11-22 18:44             ` Ada William Thomas Wolfe, 2847 
1989-11-23  9:44               ` Ada Mats Luthman
1989-11-23  7:12             ` Ada Markku Sakkinen
1989-11-21 14:35           ` Ada [and the object oriented metaphor] mjl
1989-11-22 20:54             ` Hoare, Ada, and safety/complexity John Goodenough
1989-11-24  0:38               ` Richard Pattis
1989-11-26  6:09           ` Ada vs. C++ Paul S. R. Chisholm
1989-11-18  6:38       ` Ada Marco S Hyman
1989-11-19  7:25       ` interesting statistic Dick Dunn
1989-11-22 18:54         ` William Thomas Wolfe, 2847 
1989-11-24 17:44           ` Cay Horstmann
1989-11-25 19:59             ` William Thomas Wolfe, 2847 
1989-11-17 15:59     ` Ada allows one-char names (was Re: Ada) Steve Frysinger of Blue Feather Farm
1989-11-19  5:52   ` Forward into the past Dick Dunn
1989-11-20 16:47   ` Ada vs. Posix -- the battle continues mjl
1989-11-20 21:51     ` Ada & Posix William Thomas Wolfe, 2847 
1989-11-21  1:06       ` William Thomas Wolfe, 2847 
1989-11-15 18:55 ` A farewell to Ada Richard S D'Ippolito
1989-11-17 17:19 ` Michael Schwartz [this message]
  -- strict thread matches above, loose matches on Subject: below --
1989-11-19  3:33 Ted Holden
1989-11-22 15:07 ` Richard S D'Ippolito
1989-11-21 20:11 Ted Holden
1989-11-22 13:10 ` achille petrilli
1989-11-22  5:21 Michael Hunter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox