comp.lang.ada
 help / color / mirror / Atom feed
From: mfeldman@seas.gwu.edu (Michael Feldman)
Subject: Re: Ada as a First Language
Date: 1997/07/03
Date: 1997-07-03T00:00:00+00:00	[thread overview]
Message-ID: <5pgml0$35o@felix.seas.gwu.edu> (raw)
In-Reply-To: kMVngCANO5uzYwoa@clanchy.demon.co.uk


In article <kMVngCANO5uzYwoa@clanchy.demon.co.uk>,
RC  <rc1@clanchy.demon.co.uk> wrote:
>
>Does any one have any opinions on whether Ada should be introduced as a
>first programming language?
>
>If not, what would be the best introductory language be as a pre-cursor
>to Ada.
>
We (The George Washington University) are one of about 115
colleges and universities using Ada as a first language. 

I have taught Ada in the _second_ course since 1982, and in the 
_first_ course since 1991. I write from personal experience, not from 
theory or speculation. Thousands of students have passed through these
courses. Others' mileage may, of course, vary.:-)

Before jumping into details, a few URLs for you:

http://www.seas.gwu.edu/faculty/mfeldman/CS1-2.html
  (a list of the colleges and universities using "Ada first")

http://www.seas.gwu.edu/classes/cs1
http://www.seas.gwu.edu/classes/cs2
  (exhaustive detail on our first and second courses, with full
   texts of assignments, lots of program files, exams, etc.)

http://www.seas.gwu.edu/ada
  (some of our Ada-related research, and other links)

http://www.acm.org/sigada/education
  (Ada Resources for Educators and Students)

http://academic.uofs.edu/faculty/beidler/levy
  (a nice article on teacher satisfaction with their foundation
   languages - Ada and Scheme rank high, C and C++ rank low)

Now on to the details.

I cannot speak for others, but my choice is based on Ada's being the
_optimal_ one for this audience. 

Note: _optimal_. Nothing is perfect in this world; choice of a
foundation language, like so many other things, is an optimization
problem filled with tradeoffs. In my view, Ada comes out ahead of the
others, as a first language, because (in no particular order)

- it retains everything we've _liked_ about Pascal, including:

  - compile-time checking where possible, run-time checking where necessary
    (students at this level rarely need to use a debugger - many common
    bugs are detected by the compiler, and runtime checks pick up many
    others)
  - clear and reasonably obvious syntax, with few possibilities for
    single-keystroke errors that result in a compilable program that
    has bizarre runtime behavior
  - subrange types allowing one to specify a meaningful _range_ of
    values (e.g. a variable cannot meaningfully go negative)

- nice inner-syntactic improvements to Pascal, including:

  - full bracketing (if/end if, etc.) which minimizes "semicolon
    problems", dangling else's, etc.
  - named parameter association in subprogram calls - I have found
    this VERY helpful in teaching procedures, because the formal and
    actual parameters appear side-by-side in the call
  
- "system structure" extensions to Pascal, including:

  - packages (modules, units) with a clear division of interface
    and implementation into separate files
  - well-defined exception definition and handling, in which system
    and user-defined exceptions are treated similarly
  - private types 
  - procedure, function, and operator name overloading
  - well-defined generic template capability
  - type extension and polymorphism 
  - language-defined concurrency primitives
  (the last 3 are really 2nd-course matters, but they "trickle down"
   a bit into first courses with good students)

- a well-constructed and stable standard, with validation testing and
  therefore an especially high degree of commonality in the language
  supported by different compilers for different platforms. This is
  especially important in education, because students can move their
  code from (say) a home PC to (say) a university Unix box with no
  worry about whether it'll compile and run.

- platform-dependent features like graphics are implemented using
  packages, not new syntax. There are no syntactic dialects.

  Obviously, programs that use PC-specific graphics (say) will not
  work on Unix boxes, but this is, itself, a good lesson about
  machine independence vs. machine dependence. In general, Ada helps
  us with this because the platform-specific packages are pretty
  obvious, so students desiring to move code around can simply
  avoid them.

- several families of Ada 95 compilers available at no cost (GNAT) 
  or moderate cost (ObjectAda) for nearly all popular platforms

Whew! I'll stop here, but you get the idea. I'll be glad to participate
in a continuing thread on this, as long as it does not degenerate into
a language war.

Feel free to make contact by e-mail if you wish.

Michael Feldman
------------------------------------------------------------------------
Michael B. Feldman -  chair, SIGAda Education Working Group
Professor, Dept. of Electrical Engineering and Computer Science
The George Washington University -  Washington, DC 20052 USA
202-994-5919 (voice) - 202-994-0227 (fax) 
http://www.seas.gwu.edu/faculty/mfeldman
------------------------------------------------------------------------
"Cooperate with those who have both know-how and integrity."      
   Fortune cookie, Wu Dynasty, Bethesda, MD, Spring 1996.
------------------------------------------------------------------------
Ada on WWW: http://www.acm.org/sigada/education or http://www.adahome.com 
------------------------------------------------------------------------




  reply	other threads:[~1997-07-03  0:00 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-07-03  0:00 Ada as a First Language RC
1997-07-03  0:00 ` Michael Feldman [this message]
1997-07-06  0:00 ` Alan Brain
1997-07-06  0:00   ` Robert Dewar
1997-07-16  0:00   ` Eric James DeArment
1997-07-07  0:00 ` Shmuel (Seymour J.) Metz
  -- strict thread matches above, loose matches on Subject: below --
2009-03-22  2:26 Ada as a first language Chris
2009-03-22 10:36 ` mockturtle
2009-03-22 14:44 ` Brian Drummond
2009-03-23 11:03   ` Peter C. Chapin
2009-03-23 13:29     ` Brian Drummond
2009-03-25 10:51       ` Peter C. Chapin
2009-03-23 16:59   ` rolf.ebert_nospam_
2009-03-24 19:22   ` Tim Rowe
2009-04-04  1:42     ` Brian Gaffney
2009-04-07  9:50       ` Alex R. Mosteo
2009-03-22 15:21 ` Gary Scott
2009-03-23  8:28 ` Brian
2009-03-23  9:05   ` Jacob Sparre Andersen
2009-03-23 22:02     ` Brian
2009-03-24  1:41       ` Gautier
2009-03-24  5:56       ` Jacob Sparre Andersen
2009-03-24 22:30         ` Brian
2009-03-25  9:41           ` rmoldskr+usenet
2009-03-25 22:27             ` Brian
2009-03-25 17:58       ` John McCormick
2009-03-25 23:20         ` Brian
2009-03-23 12:08 ` Chris
2009-03-25 21:10   ` John McCormick
2009-04-11 16:40   ` Mike Silva
2009-03-23 23:05 ` jpwoodruff
2009-03-25  0:16 ` Martin
2009-03-25 15:54 ` John McCormick
1992-12-29 15:40 Ada as a First Language agate!dog.ee.lbl.gov!hellgate.utah.edu!fcom.cc.utah.edu!vx9000.weber.edu!
replies disabled

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