Lambda the Ultimate

inactiveTopic Dijkstra and the Ada language
started 8/8/2002; 5:06:23 AM - last post 8/12/2002; 3:13:33 AM
Ehud Lamm - Dijkstra and the Ada language  blueArrow
8/8/2002; 5:06:23 AM (reads: 2028, responses: 3)
Dijkstra and the Ada language
To honor the life of a great scholar, I decided to go back and read Dijkstra's analysis of the various documents leading to the Ada language.

Ada had a long and mostly public design process, and thus provides an interesting case study. Notable scholars commented on the langugae design (before and after the language design was completed). I'll concentrate on several documents available from the Dijkstra manuscript archive.

The design of a language for the DoD mimicked the design of a software system: a list of requirements was agreed on (more on that later), and then several candidates were evaluated.

Dijsktra reviewed the Strawman and Woodman requirement documents - and he wasn't thrilled. Aside from giving some interesting comments about the process of language design and various language features, Dijsktra commented on the use of English in the requirement documents: For anything non-trivial careful use of language is not a luxury, but a must. The same is, of course, true as regards the use of a programming language when building a software system.

It is beyond my scope to review the detailed comments Dijsktra gave about the green, red, blue and yellow language proposals (the green one was eventually chosen), so I will only give a few comments.

Dijkstra agrees with Niklaus Wirth that a language definition should be complete without a reference to a compiler or computer (i.e., implementation details). He goes beyond that and argues for a language definition independent of any underlying computational model. I hope I understand this correctly when I conclude that a programming language should provide its own computational model, and thus serve as an abstraction mechanism.

This goes hand in hand with Dijsktra's emphasis on the need to recognize the inherent difficulty in programming.

The notion of strong typing is carefully analyzed. When disucssing the theory of type systems it is common to forget just how closely tied typing is to the language definition. What exactly determines the type of an expression? What is a subtype, and how is it different than a new type? Should the language allow anonymous types, and if so how are they to be handled?

Dijkstra writes with ruthless wit and intensity. He keeps on reminding us the "convenient" and "conventional" are not synonyms - something present day language designers should keep in mind.

I found the amount of thought given to each language to be quite remarkable. Dijsktra carefully examined minute language features, and tried to write meaningful programs in each language.

Even though these are not research papers, they show scholarship of the highest caliber, giving attention to detail while not losing sight of the big picture.

Posted to history by Ehud Lamm on 8/8/02; 7:19:25 AM

Ehud Lamm - Re: Dijkstra and the Ada language  blueArrow
8/8/2002; 10:31:20 AM (reads: 951, responses: 0)
For the record, I peronsally like Ada and find it on the whole to be well designed.

Frank Atanassow - Re: Dijkstra and the Ada language  blueArrow
8/11/2002; 9:19:43 AM (reads: 813, responses: 1)
What shocking revelation, Ehud! ;)

BTW, I have been sifting through the EWD archive myself and found lots of interesting stuff. Though Dijkstra is often characterized as a caustic and aloof eccentric, his unpopular beliefs regarding rigor, the role of academia and the nature of computer science are supported by well-reasoned, convincing and often-illuminating arguments.

For example, he argues that collaboration between industry and universities is mostly doomed to failure because they have different "Buxten" indices. The Buxten index of an entity or organization is how far into the future it plans. A grocery market might plan for about half a year in advance; a low-level corporate manager will plan up until his next quarterly report; a large company will plan about 4 years in advance. But a university must plan fifty or more years in advance, because it is obligated to teach its students skills that they will carry for the rest of their lives. Therefore, collaborative efforts between industry and academia are bound to be plagued by value differences.

Another observation he makes is that good programmers ("professionals") derive intellectual excitement from bridling complexity, so that they understand the whole of a program at each stage during its construction, whereas poor programmers derive that excitement from "not quite knowing what they are doing" while coding, and then revelling in the debugging phase. To him, this is a form of narcissism, since it amounts to admiring the ingenuity of one's own mind rather than seeking the best (and most easily explained) solution. Interestingly, he accuses most mathematicians ("the Mathematical Guild", as he calls it) of the same sort of egoism.

Ehud Lamm - Re: Dijkstra and the Ada language  blueArrow
8/12/2002; 3:13:33 AM (reads: 863, responses: 0)
good programmers ("professionals") derive intellectual excitement from bridling complexity

Right. The thing to remember is that doing so is based on creating abstractions - which amounts to hiding details.

Another form of programmer narcissism is thinking that they understand all the details (they don't) and thus don't need to break a system down to modules, don't need to define interfaces etc.