[comp.lang.ada] Ada Compiler for Educational Use

pattis@JUNE.CS.WASHINGTON.EDU (Richard Pattis) (05/12/88)

  I have been teaching the CS-1 and CS-2 courses here at the University of
Washington in Modula-2 for the past 4 years.  I am now strongly considering
teaching Ada in these classes.  I would like to solicit recommendations for
compilers: we use a large VAX/VMS for instruction, but will also ultimately
need compilers for our own department's machines (mostly VAX/ULTRIX and Suns).
I am looking for a system with short compile times and good error diagnostics;
fast run times are not as important.  We typically have 20-40 students logged
on at once.  Also, I am interested in other language related tools, such as
language sensitive editors, debuggers, and profilers. I hope to direct the
Computer Center while it examines a few compilers early in the summer, and
then choose one for use this Fall.  I'd appreciate any relevant comments.

dragon@trwspf.TRW.COM (Roger Vossler) (05/14/88)

In article <8805121644.AA02786@june.cs.washington.edu> pattis@JUNE.CS.WASHINGTON.EDU (Richard Pattis) writes:
*
*  I have been teaching the CS-1 and CS-2 courses here at the University of
*Washington in Modula-2 for the past 4 years.  I am now strongly considering
*teaching Ada in these classes.  I would like to solicit recommendations for
*compilers: we use a large VAX/VMS for instruction, but will also ultimately
*need compilers for our own department's machines (mostly VAX/ULTRIX and Suns).

In a word: DON'T! We have used Modula-2 a lot in our laboratory for
constructing a multi-sensor testbed to do high performance image
processing, synthetic aperture radar processing, and other applications.
Modula-2 has worked beautifully for this: it's clean, simple, elegant,
etc. Most of these prototypes are in the 50,000 to 100,000 lines of
code catagory.

We are also a large aerospace contractor which provides defense systems,
electronic systems, and spacecraft systems to the government. Needless
to say, more and more of this work is in Ada. We have a need for Ada
trained systems programmers as do many other defense contractors.

I would much prefer to hire people trained thoroughly in Modula-2
before we hit them with Ada. Why? As a hiring manager, I want my
young people to know how good it can be before I show them how bad
it can get. I do not want universities damaging their minds any more
than necessary before I hire them.

While many parts of Ada are useful, much of it is unnecessary for
teaching basic concepts, particularly, in something like CS-1 or
CS-2 (I'm assuming that these are entry level courses). If you really
must teach Ada, do it after they have a solid foundation - not when
their minds are soft and tender. I am not anti-Ada. Ada is a real
advance in software engineering when compared to assembly language
and Fortran which is still widely used on defense systems. I have
argued that Modula-2 is the subset of Ada that Ada should have been
before committees and contractors realized that they could get
rich from it. Sigh.
-- 
-- Roger Vossler
   TRW, Bldg O2-1395, One Space Park, Redondo Beach, CA 90278
   BIX: rvossler      UseNet: dragon@trwspf.trw.com
   ATT: 213.535.2804          ....!trwrb!trwspf!dragon

ecragg@GMUVAX.GMU.EDU ("EDWARD CRAGG") (05/14/88)

> Date: Thu, 12 May 88 09:44:03 PDT
> From: pattis@june.cs.washington.edu (Richard Pattis)
> Subject: Ada Compiler for Educational Use
> 
>   I have been teaching the CS-1 and CS-2 courses here at the University of
> Washington in Modula-2 for the past 4 years.  I am now strongly considering
> teaching Ada in these classes.  I would like to solicit recommendations for
> compilers: we use a large VAX/VMS for instruction, but will also ultimately
> need compilers for our own department's machines (mostly VAX/ULTRIX and Suns).
> I am looking for a system with short compile times and good error diagnostics;
> fast run times are not as important.  We typically have 20-40 students logged
> on at once.  Also, I am interested in other language related tools, such as
> language sensitive editors, debuggers, and profilers. I hope to direct the
> Computer Center while it examines a few compilers early in the summer, and
> then choose one for use this Fall.  I'd appreciate any relevant comments.

  I have used DEC Ada, TeleSoft Ada, VERDIX Ada, and the ALS/N CAB all under
VAX/VMS.

  If you have the funds, DEC Ada gives by far the most detailed diagnostic
messages and has the best librarian.  Furthurmore, its documentation is superb,
if expensive (LRM @ $50, Developing programs guide @ $25, and Runtime guide @
$25).  Finally it is fully integrated with both the DEC Debugger and Performance
Coverage Analyzer.   I have found that class room demonstrations using the
debugger have been most effective both in showing execution and showing the
effects of optimization.  It would be my system of choice. 

   TeleSoft Ada did not do anything.  I ended up canceling the class 1/2 way
through the course because it was so poor.  The TeleSoft reps were not very
helpful either which bothered me because were were a cash customer -- paying
$15K as I recall.   I recommended that we attempt to get a refund, but the
powers that be chose not to. 

   Verdix was so vanilla that it left no real impression.  We tested a VADS
for several weeks, and got programs running but we did not pursue the system
furthur.  As best I remember the documentation was not the best and it took
quite a few false starts to get the programs running.  Since we were running
test programs which had been developed under other systems, we did not have
many diagnostics.

   The ALS/N CAB is the system we are using, for funding reasons.  (Its hard to
beat $75). My biggest criticism is the quality of the diagnosic messages and
the interpretation of how TEXT_IO GETs and PUTs are interlaced.  (They are
interlaced at the line level, rather than at the character level). This latter
problem we are resolving by writing an IMMEDIATE_IO package which does what its
name implies by calls to QIO.  The July release is advertised to include an
interactive debugger. 

-------------------------------------------------------------------------------
Edward E Cragg                Bitnet:   ECRAGG@GMUVAX
                              Internet: ECRAGG@GMUVAX.GMU.EDU

wes@obie.UUCP (Barnacle Wes) (05/15/88)

First, let me explain that my only experience with Ada in a production
environment was with VAX Ada in 1985-1986.  It was used on an 11/785
with 9 meg of ram, during minimal-load time (0100-0600).

In article <8805121644.AA02786@june.cs.washington.edu>, pattis@JUNE.CS.WASHINGTON.EDU (Richard Pattis) writes:
[...]
> I am now strongly considering teaching Ada in these classes.  I would
> like to solicit recommendations for compilers: we use a large VAX/VMS
> for instruction, but will also ultimately need compilers for our own
> department's machines (mostly VAX/ULTRIX and Suns).  I am looking for
> a system with short compile times and good error diagnostics; fast run
> times are not as important.

VAX Ada wins on good diagnostics and good (reasonably good) run-times.
Compile times on the 785 mentioned above were abysmal; 20-30 lines per
minute were about the average.

> We typically have 20-40 students logged on at once.

If you're going to have all 20-40 of them using VAX Ada, you'd better
have an 8700, with lotsa memory.

> Also, I am interested in other language related tools, such as
> language sensitive editors, debuggers, and profilers.

DEC has a software development environment of some sort; it includes
LSE (Language Sensitive Editor - cute, eh?) that is very good.  There
is a key sequence which will read the word the cursor is in and then
see if it can find a 'standard library' routine with that name.  If it
does, it will insert a prototype call to the routine into the source
for you.  It works really nice with C, I haven't tried it on Ada.  Of
course the VAX/VMS debugger works with VAX Ada.  I don't know about an
Ada (or VMS) profiling tool.

IVANOVIC%VAXR@CIRCUS.LLNL.GOV ("Vladimir Ivanovic, x3-7786") (05/17/88)

pattis@june.cs.washington.edu (Richard Pattis) asks for comments on Ada
compilers. 

I am using DEC's Ada compiler running under VAX/VMS , its librarian (ACS), the
Source Code Analyzer (SCA), the Language Senstitive Editor (LSE), and the
symbolic debugger (DEBUG). 

The error messages from the compiler are excellent, the best I have ever seen.
From within LSE, the compiler will very often attempt a correction of some
simple syntactic error, like adding a semi-colon, adding a terminating END IF,
or a missing BEGIN.  Surprisingly, it is seldom wrong.  

Errors due to mismatched argument types are also quite good.  The compiler tells
you which procedures it has checked with which arguments of what type and why it
has rejected those attempts at overload resolution.

In every case, references to the paragraphs in the LRM which are relevant
to the error message are given.

LSE knows Ada syntax and will generate stubs for every construct.  What it
generates is actually user-modifiable, so it's possible to add local coding
conventions.

Compiler generated machine language code is available, tied to the original
source lines.  This is a feature I feel is mandatory for any compiler to be
called of professional quality.  It allows one to distinguish between very
subtle bugs in your code, or genuine compiler bugs.

The Source Code Analyzer allows almost instant access to every occurrence of an
identifier, sorted by whether it is a declaration, a read reference or a write
reference.  Call trees and inverted call trees can be generated. The full power
of SCA is available from within LSE. 

The debugger is actually language independent.  It behaves the same way when you
are debugging a routine written in any DEC-supported language.  DEC uses the
fact that their compilers generate code that follows the VAX/VMS Calling
Standard as well as a symbol table convention to permit languages to call
routines written in other languages transparently.  The debugger does know about
features that are particular to Ada, like multi-tasking.  It is possible to set
break points on task events like TERMINATED or RUN or RENDEZVOUS_EXCEPTION.
Naturally, the debugger is a source line, symbolic debugger.  You can execute
debugger commands on every break, whenever a variable is modified, whenever a
particular address is accessed or whenever a particular class of intstruction is
used. Effectively you have debugger-aware language.

With a little work, it is possible to create an environment where the edit,
compile, link and debug cycle is quite fast.  I keep one process around for
the edit/compile portion and another for the link/debug.  One keystroke allows
me to switch between them.  It's not as integrated as say the Lightspeed
Pascal environment is on the Macintosh, but I find it quite good.  I'd be
hard pressed to suggest improvements, except for the obvious lack of cut
and paste between processes/windows.  (I have a VaxStation 2000.)

I actually cross-compile my programs to a VAXELN machine.  (VAXELN is a
distributed, real-time operating system toolbox for VAXs that DEC sells and
supports.)  So I compile, link and use the debugger from one node and run the
program on another.  A few switches and the operations I do are essentially
identical to the single node, vanilla VMS version.

I have no hesitation in recommending DEC's Ada system.  However, understand
that quality is expensive, though DEC does have an educational discount. 


-- Vladimir

dd@sei.cmu.edu (Dennis Doubleday) (05/20/88)

In article <233@obie.UUCP> wes@obie.UUCP (Barnacle Wes) writes:
>First, let me explain that my only experience with Ada in a production
>environment was with VAX Ada in 1985-1986.  It was used on an 11/785
>with 9 meg of ram, during minimal-load time (0100-0600).
>VAX Ada wins on good diagnostics and good (reasonably good) run-times.
>Compile times on the 785 mentioned above were abysmal; 20-30 lines per
>minute were about the average.

This was not at all my experience with DEC Ada on a VAX 11/785.  Typical
compilation times were in the range 600-1500 lpm depending on the complexity
and size of the code being compiled.  Perhaps somebody at your site didn't
set system parameters correctly and you ended up doing a lot of paging?
I love the DEC ACS environment; too bad it's not available under Ultrix.








--
Dennis Doubleday                       dd@sei.cmu.edu
Software Engineering Institute         (412)268-5873
Carnegie Mellon University
Pittsburgh, PA 15213

gail@telesoft.UUCP (Gail Potts @spot) (05/20/88)

In response to a recent note posted by Ed Cragg, TeleSoft would like
to clarify what Ed's experiences were. Ed stated that "TeleSoft Ada did
not do anything."  After checking our files, it was determined that
Ed was using TeleSoft Ada from four years ago. Since that time, TeleSoft
has released our second generation technology, TeleGen2.  TeleGen2 is
a completely different product line than the product that Ed based his
comments upon.

Ed further commented that "The TeleSoft reps were not very helpful 
either".  I cannot speak to Ed's personal experiences of four years 
ago, but I would like to state that today, TeleSoft has a dedicated Customer 
Support department which has helped customers write and debug applications
encompassing millions of lines of code. 

Thank you for allowing me to indulge in this clarification.

Gail Potts
TeleSoft Customer Support
(619) 457-2700