Very few people learn tasking in their introductory courses so I would not
include that as a selling point for a first language. Strengths for Ada in
CS1 and CS2 that I would include (in order by time of thought) are
1. Accurate scalar modeling (over 80% of major bugs in C/C++ programs are
a result of poorly modeled scalars - from '97 article in CACM)
1a. Enumeration types that work. (are not just named int constants, have I/O)
1b. Subtypes and Types
1c. Scalar type attributes
2. Control structures have end statements
3. Parameter passing based on data flow rather than underlying mechanism
(pass by value vrs pass by reference)
4. Syntax error messages that can be believed.
5. Few single keystroke errors (e.g. the = vrs == and & vrs &&)
6. "Compilable" specifications (i.e. package specs vrs header files)
7. Arrays that more accurately model reality
7a. Arrays whose index does not start at zero
7b. Arrays that can be indexed by any discrete type
8. Deterministic for loops (i.e. no infinite for loop is possible)
9. Ease of building pre-test, mid-test, and post-test loops
10. Binary (direct and sequential) I/O that are easy to use
11. Generics with a "contract"
My #1 reason is accurate scalar modeling. A good place to introduce OO
thinking is in modeling simple scalars. Then move onto more complex classes.
At 11:43 AM 11/29/2004 -0500, David Botton wrote:
>On Nov 29, 2004, at 11:37 AM, Stephen Leake wrote:
>>I don't see the "big trouble".
>The big trouble is our ability as a community to answer.
>Some other things that come to my mind as answers:
>The ability to teach modern software concepts such as tasks using
>Flexibility of the languages object model to allow for teach multiple
>different approaches to Object Oriented development and design.
John W. McCormick [log in to unmask]
Computer Science Department
University of Northern Iowa voice (319) 273-6056
Cedar Falls, IA 50614-0507 fax (319) 273-7123