I can give some quick answers from my own experience. Let me begin with a similar question: Why should I learn about Multics as and Operating System? The answer I give is: Becuase I knew about a dozen operating systems before I learned Multics, and when I learned about Multics I realized that I knew very little about Operating Systems. Almost all of the concepts one needs to know to understand an operating system are emboddied in Multics. They exist almost no place else. And where they do, they are in bits and pieces, not a coherent whole. So, to the question: Why should any one learn Ada as their first language? The answer I give is: Because the concepts in programming languages one needs to understand to do good software engineering exist in Ada, and nowhere else generally available as a coherent whole. And I follow that with: We know that if one does not have requirements, one generally gets a bad result. There is only *one* set of requirments for programming languages generally created; that was the Steelman (I offer them a set). Ask yourself what you need to do, and how to do it. In general, the answers are available only in Ada. ----- If we look at other engineering disciplines, the foundation is the "strength of materials" course. This is where the discipline looks at the properties of materials used in the discipline, and how and where they can be applied. In software, the closest we come to a strngth-of-materials is a programming languages couse. I have been thinking for awhile about creating a strength-of-materials course. There would be a set of problems, a need to implement, and test the "breaking point". For example, take the simplest concept: "Discrete Enumeration". Require the student to do a type for "days of the week" in a variety of languages. Then have them test: Can they separate the physical from the logical? Can they reach the physical representation, and write code that takes advantage of it. When one changes the definition, does the code break? What is the cost (say in bytes) to store an object of that type? What is the cost (say in fractions of a second) to set, retrieve, change an object of the type? What is the cost to build an IO package for that type? And how efficient is that package? How early in the develoment cyle does an attempt to set a "bad object" fail? (Or not fail at all?P. ------ John McCormick has pointed out several times that his Ada students, who do not know C++, rapidly become the architects of software projects, because they can see the styles and tradeoffs. And the C++ students take much longer, because they can't see the concpts easily. ---- So, my 1st answer is: Because if you understand Ada, you will probably understand Software Engineering Principles and Tradeoffs. Because if you do not understand the Ada priciples (and it is very hard to gain an understanding of the priciples other than by learning Ada), it is very unlikely that you ever understand Software Engineering Principles and Tradeoffs. ------ And my second answer is: Because, as Nickolus Wirth pointed out, Programs are "Algorithms + Data". Since you are unable to define the basics of Data in most other programming languages, you are forced instead to write compilcated programs. In Ada, one writes datatype definitions that look complicated (but readable and understanable) type Day_of_Week is new Natural range 1..7; while the others are simple (but void of information and have little understanding) typedef int Day_of_Week; Then in Ada, writing correct programs is simple, Day1 = Day_of_Week(I); while the other languages require complex programs if ( I >= 1 & I <= 7) then Day1 = (Day_of_week) I; else /* what to do on an error */ which are wrong (if one uses & where one means && ). Program compiles, runs, gives wrong answers. ...Paul S. [I have some examples on the tcsigada.org web-site, which is unfortunately down at the moment. I'm working with the ISP to get it back up, however since it is a "donated" site, the priority is low.] ----- Original Message ----- From: "David Botton" <[log in to unmask]> To: <[log in to unmask]> Sent: Monday, November 29, 2004 9:00 AM Subject: The question at hand: > I am surprised there have been no takers yet (ok, I know, turkey > weekend, but still). I am hoping to use responses to build a better > FAQ, articles, etc. The question was: > > Why should any one learn Ada as their first language? > > If we can't give a compelling answer to a question like that, we are in > big trouble.... > > David Botton