comp.lang.ada
 help / color / mirror / Atom feed
From: "Robert I. Eachus" <rieachus@comcast.net>
Subject: Re: += in ada
Date: Mon, 20 Oct 2003 17:10:12 GMT
Date: 2003-10-20T17:10:12+00:00	[thread overview]
Message-ID: <3F9416D8.30001@comcast.net> (raw)
In-Reply-To: bebbba07.0310192216.38e0af8f@posting.google.com

Russ wrote:

> At some point one must ask *why* Ada is so unpopular, despite the fact
> that the DoD forced its use on a massive scale. Yes, the DoD mandate
> created some resentment, but if Ada is really so good, those who
> adopted it under duress should have eventually learned to appreciate
> it. Many did, I realize, but why are so many of them now rushing to
> throw off the yoke?

I think that Robert Dewar hit the nail on the head many years ago.  In 
one of his Computer Science classes he asked the students how many 
enjoyed debugging.  A large majority raised their hands.  That is the 
problem.

I detest debugging.  In fact detest is probably to mild a word.  So I 
love Ada.  When I was at Honeywell many years ago (1982), a couple of us 
taught a course in Ada programming, complete with access to our Ada/SIL 
compiler which was of course somewhere between Ada 80 and Ada 83 at the 
time (except for one addition we kept hoping that the ANSI standard 
effort would fix, a decent notation for Boolean array literals).

We used the tapes from the Ichbiah, et. al. course that one of us had 
taken as well as three instructors who were pretty much constantly 
available to the students.  All of the students had been programming OS 
software at Honeywell in various assembler languages for years, and the 
selection process for students was designed to get a representative 
sample of the current Honeywell Small Systems programming staff.

The biggest and most shocking conclusion from the course was that we 
could easily pick out about 30% of the current programming staff who 
would NEVER be able to successfully program in Ada.   The 30% number had 
pretty wide bounds at the time, but we (Honeywell) went further.  We 
wrote a short questionaire that was given to all potential students 
before the course, and later used that questionaire before addtional 
sections of the Ada course, a Pascal course that I taught, and a C course.

Since the students who did well in the Ada course went on to write 
several significant parts of the next OS release in Ada, some from the 
Pascal course to write a section in Pascal, and there were three C 
projects.  (One which ended up using the C preprocessor to write very 
Ada-like code.)  After all this validation, we could use the 
questionaire on applicants for jobs and a larger portion of the existing 
staff.

The final conclusion was that, if you used Ada about 30% of the current 
staff were hopeless.  With C, the number was closer to 5%, in Pascal 
somewhere in between.  Ada showed more than a 100% cost benefit over 
using C, and a 350% benfit over assembler, on initial project costs, 
with Pascal somewhere in the middle.  As for maintenance costs, 
maintaining C code cost around 50% less than maintaining assembler, and 
we had no cost data for fixing bugs in Ada code--even after MOD 400 
Release 3.0 had been in beta test for more than a year, and in general 
release for six months after that.

But there were some serious problems from a management point of view to 
using Ada.  First, the training costs were well justified, but 
retraining everyone would bankrupt the division, whether we used 
internal or external training.  So any switchover would need to be 
evolutionary.  And Ada converts were just that.  They might be willing 
to occasionally use a code insert, or C for some low-level driver, but 
they would quit rather than be put back to working full-time in 
assembler or C once thay had worked on an Ada project for long enough.

Finally, the real bad news from an Ada perspective was using the survey 
on job applicants.  Unlike the numbers for current staff, less than 30% 
tested high enough on Ada compatibility, but 90% were capable of working 
in C.  And one of the biggest descriminators was that debugging question 
of Dewar's.  If you checked "Strongly Agree" to "I enjoy debugging my 
own code," forget Ada.  Even worse was the vote on "I enjoy debugging 
code written by others."  Check "Somewhat Agree" and forget Ada.  Oh, 
and the salery requirements were such that potential Ada programmers 
expected to make about 50% more than potential C programmers.

So the "short-term" decision was to switch from assembler to C for most 
code, and Ada for the more difficult sections of the OS.  I left the 
company before I found out what the long-term decision was, but I 
suspect that Ada was used less and less, not more and more.

Oh, and I can't tell this story without adding one anecdote.  A student 
in the class, Joe, called me up one morning and said he had found a bug 
in the Ada compiler.  Since compiler bugs and teaching the class were 
both high-priority, I asked him to bring his problem up.  He brought a 
listing with over sixty lines of declarations and about half-a-dozen 
statements all in one procedure.  I spend about twenty minuted figuring 
out what he was doing, and scribbled one statement at the bottom of the 
page.

"You can do THAT in Ada?"
"Sure."
"Okay, I'll go try it."
"What about the compiler bug."
"Let me try this instead, I'm not sure my code is right."
"Okay."  I marked two of lines of declarations. "You'll still need these 
lines, but the rest can go."

Ten minutes later, he calls back.  "It still generates the same code."

"Bring up a listing with the assembler output."
"Got one already."

It only took me a minute or so to look at the generated code.  There 
were exactly three one-word instructions for the procedure, and the last 
one was a return statement.  Pretty slick I thought.

"Looks okay to me."
"But you can't do that in three instructions!"
"Did you try running it?"
"Of course not! It can't work."
"Why not."
"It needs four instructions."
"No it doesn't look.  This first instruction loads the value of the 
first parameter into R1, and post-increments the stack pointer.  The 
second instruction indirects through the stack-pointer that now points 
at the second parameter, and indexed by R1.  The third instruction 
pre-decrements the stack pointer and does the return. I'm going to have 
to complement Harlan on this particular peephole optimization."
"But that's cheating!"

I later found out that Joe had "invented" the way to write that 
expression in four instructions, and his real purpose in writing the 
example was to show how inefficient any compiled language was.  Needless 
to say, Joe never turned in a completed assignment, and I think he 
stopped attending the course halfway through.

-- 
                                         Robert I. Eachus

"Quality is the Buddha. Quality is scientific reality. Quality is the 
goal of Art. It remains to work these concepts into a practical, 
down-to-earth context, and for this there is nothing more practical or 
down-to-earth than what I have been talking about all along...the repair 
of an old motorcycle."  -- from Zen and the Art of Motorcycle 
Maintenance by Robert Pirsig




  parent reply	other threads:[~2003-10-20 17:10 UTC|newest]

Thread overview: 303+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-25 16:25 += in ada Dmytry Lavrov
2003-10-01  8:35 ` Peter Amey
2003-10-01 12:38   ` Frank J. Lhota
2003-10-03 16:22     ` Isaac Gouy
2003-10-06 20:21       ` Russ
2003-10-06 22:47         ` (see below)
2003-10-04 20:17   ` Craig Carey
2003-10-06  7:36     ` Jean-Pierre Rosen
2003-10-06  8:13       ` Lutz Donnerhacke
2003-10-06 22:49       ` Wes Groleau
2003-10-01 14:06 ` Gautier
2003-10-02 12:26   ` Lutz Donnerhacke
2003-10-02 13:03     ` Preben Randhol
2003-10-02 13:36       ` Lutz Donnerhacke
2003-10-02 21:28         ` Keith Thompson
2003-10-07  0:41           ` Russ
2003-10-07 10:05             ` Dmytry Lavrov
2003-10-07 11:56               ` Lutz Donnerhacke
2003-10-07 14:02                 ` (see below)
2003-10-07 22:22                   ` Russ
2003-10-07 23:52                     ` (see below)
2003-10-08  6:08                     ` Preben Randhol
2003-10-09 19:07                       ` Russ
2003-10-09 19:42                         ` Vinzent 'Gadget' Hoefler
     [not found]                           ` <25oh51-uu2.ln1@beastie.ix.netcom.com>
2003-10-10  7:37                             ` Preben Randhol
2003-10-10 18:56                               ` Russ
2003-10-11  8:10                                 ` Preben Randhol
2003-10-11  8:30                                 ` Samuel Tardieu
2003-10-10 12:09                             ` Vinzent 'Gadget' Hoefler
2003-10-10  7:34                         ` Preben Randhol
2003-10-12  0:50                           ` Wes Groleau
2003-10-12  8:24                             ` Preben Randhol
2003-10-12 14:57                               ` Robert I. Eachus
2003-10-12 18:37                                 ` (see below)
2003-10-13  0:42                                   ` Robert I. Eachus
2003-10-13  8:32                                     ` Dmytry Lavrov
2003-10-13 19:18                                       ` Robert I. Eachus
2003-10-13 23:36                                     ` Alexandre E. Kopilovitch
2003-10-14  6:14                                       ` Vinzent 'Gadget' Hoefler
2003-10-14 15:19                                         ` Robert I. Eachus
2003-10-30 21:43                                     ` ARG process (was += in ada) Randy Brukardt
2003-10-30 23:21                                       ` Robert I. Eachus
2003-10-10 20:31                         ` += in ada Dmytry Lavrov
2003-10-12  8:23                           ` Dmytry Lavrov
2003-10-14 18:00                           ` Russ
2003-10-14 18:15                             ` Vinzent 'Gadget' Hoefler
2003-10-15 12:50                             ` Georg Bauhaus
2003-10-15 13:25                               ` Hyman Rosen
2003-10-15 14:04                                 ` Vinzent 'Gadget' Hoefler
2003-10-15 15:19                                   ` Hyman Rosen
2003-10-15 18:06                                     ` Vinzent 'Gadget' Hoefler
2003-10-15 18:53                                       ` Hyman Rosen
2003-10-15 19:34                                         ` Vinzent 'Gadget' Hoefler
2003-10-15 23:09                                         ` Alexandre E. Kopilovitch
2003-10-16  5:05                                     ` Russ
2003-10-16 12:07                                       ` Marin David Condic
2003-10-16 13:43                                       ` Hyman Rosen
2003-10-16 23:57                                         ` Robert I. Eachus
2003-10-17  6:22                                           ` Russ
2003-10-17  6:38                                             ` Preben Randhol
2003-10-17 15:48                                             ` Robert I. Eachus
2003-10-19  1:15                                               ` Russ
2003-10-19 16:04                                                 ` Robert I. Eachus
2003-10-19 23:59                                                   ` Russ
2003-10-20  5:24                                                     ` Chad R. Meiners
2003-10-20  5:52                                                       ` Robert I. Eachus
2003-10-20 12:40                                                         ` Marin David Condic
2003-10-20 14:36                                                           ` Preben Randhol
2003-10-21  0:23                                                           ` Wes Groleau
2003-10-21  3:46                                                             ` Hyman Rosen
2003-10-21  6:37                                                           ` Russ
2003-10-21 10:10                                                             ` Marius Amado Alves
2003-10-22  5:23                                                               ` Russ
2003-10-20 14:34                                                         ` Preben Randhol
2003-10-21  7:43                                                         ` Russ
2003-10-21 12:45                                                           ` Lutz Donnerhacke
2003-10-22  7:13                                                             ` Russ
2003-10-22  8:48                                                               ` Vinzent 'Gadget' Hoefler
2003-10-22  9:02                                                               ` Lutz Donnerhacke
2003-10-22 18:21                                                                 ` Russ
2003-10-22 19:10                                                                   ` Vinzent 'Gadget' Hoefler
2003-10-23  5:24                                                                     ` + " Russ
2003-10-22 19:16                                                                   ` += " sk
2003-10-22 19:13                                                                     ` Vinzent 'Gadget' Hoefler
2003-10-23  5:16                                                                     ` Russ
2003-10-23  5:45                                                                       ` sk
2003-10-22 21:22                                                                 ` Russ
2003-10-23  2:23                                                                   ` Wes Groleau
2003-10-22  9:46                                                               ` Preben Randhol
2003-10-22  8:01                                                             ` Russ
2003-10-21 13:38                                                           ` Robert I. Eachus
2003-10-22  7:24                                                             ` Russ
2003-10-22 19:50                                                               ` Robert I. Eachus
2003-10-23  5:34                                                                 ` Russ
2003-10-23 14:14                                                                   ` Robert I. Eachus
2003-10-24  9:15                                                                     ` Peter Hermann
2003-10-24 10:11                                                                       ` Marius Amado Alves
2003-10-26  7:35                                                                         ` Pascal Obry
2003-10-24 11:20                                                                       ` Marin David Condic
2003-10-25  3:14                                                                       ` Russ
2003-10-25  5:07                                                                     ` Russ
2003-10-19 23:19                                                 ` Robert A Duff
2003-10-20  6:16                                                   ` Russ
2003-10-20 14:31                                                     ` Preben Randhol
2003-10-20 17:10                                                     ` Robert I. Eachus [this message]
2003-10-20 17:53                                                       ` Hyman Rosen
2003-10-20 19:11                                                         ` Robert I. Eachus
2003-10-20 19:32                                                           ` Hyman Rosen
2003-10-20 23:24                                                           ` Alexandre E. Kopilovitch
2003-10-21  0:40                                                     ` Wes Groleau
2003-10-21  3:45                                                       ` Hyman Rosen
2003-10-21 12:07                                                         ` Preben Randhol
2003-10-21 12:18                                                           ` Marius Amado Alves
2003-10-21 12:45                                                         ` Marin David Condic
2003-10-21 14:46                                                           ` Robert I. Eachus
2003-10-21 17:54                                                             ` Chad R. Meiners
2003-10-21 20:23                                                               ` Robert I. Eachus
2003-10-22  0:18                                                             ` Wes Groleau
2003-10-22  4:07                                                               ` Robert I. Eachus
2003-10-22 20:41                                                                 ` Wes Groleau
2003-10-22 11:56                                                             ` Marin David Condic
2003-10-22  0:14                                                           ` Wes Groleau
2003-10-22 12:31                                                             ` Early Ada Mistakes (was: Re: += in ada) Marin David Condic
2003-10-22 20:05                                                               ` Robert I. Eachus
2003-10-23  4:47                                                                 ` Marin David Condic
2003-10-23 14:36                                                                   ` Early Ada Mistakes Hyman Rosen
2003-10-23 19:04                                                                     ` Chad R. Meiners
2003-10-24 13:33                                                                       ` Preben Randhol
2003-10-24 16:59                                                                         ` Robert I. Eachus
2003-10-23 19:08                                                                     ` Wes Groleau
2003-10-23 22:17                                                                       ` Robert I. Eachus
2003-10-24 11:26                                                                       ` Marin David Condic
2003-10-23 18:50                                                                   ` Wes Groleau
2003-10-22 21:00                                                               ` Wes Groleau
2003-10-23  4:53                                                                 ` Marin David Condic
2003-10-22  6:56                                                           ` += in ada Russ
2003-10-22  7:26                                                             ` Preben Randhol
2003-10-22 11:27                                                             ` Stephane Richard
2003-10-22 20:12                                                               ` Robert I. Eachus
2003-10-22 20:52                                                             ` Wes Groleau
     [not found]                                                         ` <emte61-d03.ln1@beastie.ix.netcom.com>
2003-10-21 12:57                                                           ` Hyman Rosen
2003-10-21  2:43                                                 ` Alexandre E. Kopilovitch
2003-10-21  9:39                                                   ` Stephane Richard
2003-10-19 22:26                                               ` Wes Groleau
2003-10-16  4:31                                   ` + " Russ
2003-10-16  8:57                                     ` += " Vinzent 'Gadget' Hoefler
2003-10-16 20:56                                     ` + " Georg Bauhaus
2003-10-16  4:04                               ` += " Russ
2003-10-16  8:57                                 ` Vinzent 'Gadget' Hoefler
2003-10-17  3:03                                 ` Wes Groleau
2003-10-17 11:46                                   ` Marin David Condic
2003-10-17 11:50                                     ` Preben Randhol
2003-10-17 12:40                                       ` sk
2003-10-17 12:48                                         ` Preben Randhol
2003-10-15 14:16                             ` Dmytry Lavrov
2003-10-16  5:40                               ` Russ
2003-10-16 12:45                                 ` Lutz Donnerhacke
2003-10-16 22:07                                   ` Russ
2003-10-17  9:10                                     ` Lutz Donnerhacke
2003-10-16 13:48                                 ` Dmytry Lavrov
2003-10-16 20:46                                 ` Georg Bauhaus
2003-10-17  2:37                                   ` Russ
2003-10-17  3:01                                     ` sk
2003-10-17  5:42                                       ` Russ
2003-10-17 11:26                                         ` sk
2003-10-17 20:24                                           ` Dmytry Lavrov
2003-10-17  3:52                                     ` Chad R. Meiners
2003-10-17  6:32                                     ` Preben Randhol
2003-10-17  8:48                                     ` Dmytry Lavrov
2003-10-16  1:25                             ` Chad R. Meiners
2003-10-19 23:50                               ` Robert A Duff
2003-10-20  5:52                                 ` Chad R. Meiners
2003-10-07 18:28                 ` Alexander Kopilovitch
2003-10-10 19:56                   ` Dmytry Lavrov
2003-10-20  7:41       ` idem (Was: += in ada) Jacob Sparre Andersen
2003-10-20  8:28         ` Dmitry A. Kazakov
2003-10-20  8:34         ` (see below)
2003-10-31 22:40         ` Nick Roberts
2003-10-14  9:52   ` += in ada Stuart Palin
2003-10-16  8:49     ` Russ
2003-10-16 12:46       ` Lutz Donnerhacke
2003-10-16 13:46         ` Hyman Rosen
2003-10-16 15:42           ` Mark A. Biggar
2003-10-16 16:48             ` Hyman Rosen
2003-10-17  0:26               ` Robert I. Eachus
2003-10-17  1:26                 ` Marin David Condic
2003-10-17  3:59                   ` Chad R. Meiners
2003-10-17 11:54                     ` Marin David Condic
2003-10-17 20:35                       ` Russ
2003-10-19 22:22                     ` Wes Groleau
2003-10-19  1:37                   ` Russ
2003-10-19  3:16                     ` sk
2003-10-19 14:10                     ` Preben Randhol
2003-10-19 14:29                     ` Marin David Condic
2003-10-20  2:47                       ` Russ
2003-10-20  3:03                         ` Vinzent 'Gadget' Hoefler
2003-10-20  5:47                         ` Chad R. Meiners
2003-10-20 12:56                           ` Marin David Condic
2003-10-20  6:19                         ` Ross Higson
2003-10-21 17:30                           ` Russ
2003-10-21 18:40                             ` sk
2003-10-22  7:35                               ` Russ
2003-10-21 23:28                             ` Ross Higson
2003-10-21 23:55                               ` Jerry Petrey
2003-10-22  7:35                             ` Preben Randhol
2003-10-20 16:30                         ` Martin Dowie
2003-10-20 17:05                           ` Hyman Rosen
2003-10-20 17:46                             ` Martin Dowie
2003-10-20 18:01                               ` Hyman Rosen
2003-10-21  0:57                           ` Wes Groleau
2003-10-21  1:46                             ` Stephane Richard
2003-10-21  3:38                             ` Hyman Rosen
2003-10-21  8:49                             ` Martin Dowie
2003-10-21  9:04                             ` Marius Amado Alves
2003-10-21 13:00                               ` Marin David Condic
2003-10-21 13:37                                 ` Marius Amado Alves
2003-10-21 14:50                                   ` Robert I. Eachus
2003-10-21 15:01                                     ` Stephane Richard
2003-10-21 15:03                                     ` Stephane Richard
2003-10-21 15:07                                     ` Vinzent 'Gadget' Hoefler
2003-10-21 15:13                                       ` Stephane Richard
2003-10-21 15:58                                       ` (see below)
2003-10-21 15:24                                     ` Dmitry A. Kazakov
2003-10-21 16:44                                     ` Marius Amado Alves
2003-10-22  7:32                                     ` Preben Randhol
2003-10-22  8:48                                       ` Vinzent 'Gadget' Hoefler
2003-10-22 20:24                                         ` Robert I. Eachus
2003-10-27 12:01                                           ` Vinzent 'Gadget' Hoefler
2003-10-27 17:31                                             ` Robert I. Eachus
2003-10-21 13:01                               ` Hyman Rosen
2003-10-21  4:49                           ` sk
2003-10-21 21:19                             ` Simon Wright
2003-10-22  4:37                               ` sk
2003-10-19 14:40                     ` chris
2003-10-19 15:12                     ` Stephane Richard
2003-10-19 16:26                     ` Robert I. Eachus
2003-10-20  2:02                       ` Hyman Rosen
2003-10-20  6:12                         ` Robert I. Eachus
2003-10-20 12:50                           ` Hyman Rosen
2003-10-20 17:53                             ` Robert I. Eachus
2003-10-20 18:03                               ` Hyman Rosen
2003-10-21  1:35                                 ` Marin David Condic
2003-10-21  3:05                             ` Alexandre E. Kopilovitch
2003-10-21  3:30                               ` Hyman Rosen
2003-10-21 13:22                                 ` Alexandre E. Kopilovitch
2003-10-21 15:02                                   ` Hyman Rosen
2003-10-19 21:09                     ` Dmytry Lavrov
2003-10-17 14:15                 ` Hyman Rosen
2003-10-17 14:40                   ` Lutz Donnerhacke
2003-10-17 15:40                     ` Hyman Rosen
2003-10-17 15:49                       ` Lutz Donnerhacke
2003-10-17 20:43                         ` Hyman Rosen
2003-10-17 16:02                       ` Preben Randhol
2003-10-17 16:06                         ` Preben Randhol
2003-10-19 22:36                         ` Wes Groleau
2003-10-18  0:08                   ` Russ
2003-10-18 10:31                     ` Georg Bauhaus
2003-10-20  5:35                   ` Chad R. Meiners
2003-10-20 13:00                     ` Hyman Rosen
2003-10-20 14:27                       ` (see below)
2003-10-20 15:58                         ` Chad R. Meiners
2003-10-16 21:53             ` Russ
2003-10-17  8:20           ` Lutz Donnerhacke
2003-10-17 14:21             ` Hyman Rosen
2003-10-17 14:42               ` Lutz Donnerhacke
2003-10-17 15:46                 ` Hyman Rosen
2003-10-17 15:35               ` Larry Kilgallen
2003-10-17 16:02               ` Robert I. Eachus
2003-10-17 17:20                 ` Chad R. Meiners
2003-10-16  8:57     ` Vinzent 'Gadget' Hoefler
  -- strict thread matches above, loose matches on Subject: below --
2003-10-01  8:54 christoph.grein
2003-10-04 12:51 ` Georg Bauhaus
2003-10-13  9:22 christoph.grein
2003-10-13 18:38 ` Wes Groleau
2003-10-13 18:59   ` Robert I. Eachus
2003-10-16  8:25 + " Lionel.DRAGHI
2003-10-16 13:22 ` Hyman Rosen
2003-10-16 14:30   ` Vinzent 'Gadget' Hoefler
2003-10-16 16:13 ` Russ
2003-10-16 21:47   ` Georg Bauhaus
2003-10-17 20:03     ` Russ
2003-10-16 15:55 Lionel.DRAGHI
2003-10-17  8:58 Lionel.DRAGHI
2003-10-20 10:42 += " christoph.grein
2003-10-21  6:16 ` Russ
2003-10-21  8:25   ` Ole-Hjalmar Kristensen
2003-10-21  8:40 += in Ada Marius Amado Alves
2003-10-21  8:41 += in ada christoph.grein
2003-10-22  5:00 ` Russ
2003-10-21  8:53 christoph.grein
2003-10-21 13:48 ` Ole-Hjalmar Kristensen
2003-10-22  7:31   ` Russ
2003-10-22  8:02     ` Preben Randhol
2003-10-22 11:41       ` Stephane Richard
2003-10-22 15:17       ` Chad R. Meiners
2003-10-22 15:47         ` Preben Randhol
2003-10-22 15:07     ` Martin Dowie
2003-10-21 10:03 christoph.grein
     [not found] <1066725615.2801.26.camel@localhost.localdomain>
2003-10-21 11:57 ` += in Ada sk
2003-10-21 12:07 += in ada christoph.grein
2003-10-21 13:51 ` Preben Randhol
     [not found] <3F957DAD.2020801@myob.com>
2003-10-21 21:16 ` Alexandre E. Kopilovitch
     [not found] ` <nSp8Qb_KxF@vib.usr.pu.ru>
2003-10-21 21:40   ` sk
replies disabled

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