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
next prev 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