Dijkstra the Linguist?

Is it correct to say that Dijkstra reasoned linguistically during the late 1950s and early 1960s? A reviewer of the research paper `Dijkstra's Rallying Cry ...' expressed his reservations about this matter.

In the reviewer's own words:

 It is correct that the Dijkstra project was conducted with no peculiar hardware in mind. I agree with the view that "Dijkstra did not want to distinguish between theory and practice"; his work was not guided by theoretical purposes (as rightly stated in Section 5). But I have some difficulties with the idea that insistence to include recursive procedures was based "on reasoning linguistically". It is possible that the idea of "making programming an activity with a firm and respectable mathematical basis" plays an important role in the implementation of recursion; (for instance, see page xvi et xvii of the preface of A Discipline of Programming).

The reviewer refers to Dijkstra's 1976 book, A Discipline of Programming, while my paper studies the Dijkstra of the late 1950s and early 1960s. It is correct that during the 1970s Dijkstra and others tried hard to make programming an activity with a firm respectable basis. But my paper is about the early Dijkstra.

Continuing, the reviewer writes:

In the years 1960, recursion was considered respectable mathematics; the assignment statement was not; functional languages were considered more mathematical than the imperative ones.

Though recursion indeed became respectable during the 1970s, it was not considered respectable by a very large group of ALGOL60 actors. This is a central theme in my paper. McCarthy with his LISP was exceptional in this respect in that he needed recursion in his programming. Furthermore, though not covered in my paper, functional languages were not even appreciated by Dijkstra, Wirth and others for quite a long time. In short, I do understand where the reviewer's comments are coming from, but he is thinking about the period after 1963 and especially the period of the late 1960s and the 1970s. By that time, Dijkstra's ideas had evolved and changed quite a lot compared to his early years as a researcher.

The reviewer continues:

It is possible that Van Wijngaarden was "linguistically-minded". But Dijkstra was more guided by programming methodology considerations; he had in mind the needs of the programmer developing an algorithm; the numerical mathematicians saw the programmer as coding their instructions on a machine.

Again, Dijkstra's work on programming methodology mainly developed after 1963.

The reviewer continues:

It should be mentioned that Van Wijngaarden led the ALGOL project into the ill-fated ALGOL68 version which may be viewed as essentially linguistically-minded. At that time, Dijkstra and others left the ALGOL project in reaction to the ALGOL68 orientation.

It is correct that Dijkstra and Van Wijngaarden parted ways after the ALGOL60 effort. Van Wijngaarden continued to work "linguistically", resulting in his ALGOL68 language. Dijkstra, by contrast, became more involved in what would later be called programming methodology. Nevertheless, the sources clearly show that Dijkstra and Van Wijngaarden were in technical agreement during the late 1950s and early 1960s.

Perhaps the following quote of Perlis will show that the word "linguistic" does not solely refer to Van Wijngaarden:

Linguistic growth -- unlike FORTRAN, which was designed for a specific machine, and for which the issues were coding efficiency and properly so, ALGOL was designed for arbitrary, unknown machines. Consequently, the design of ALGOL focused on linguistic structure. They were the first languages, both ALGOL58 and ALGOL60, in which linguistic issues forged to the front. [Perlis, p.146]

The reviewer continues:

It should be noted that Dijkstra later advocated many restrictions on programming language constructs, but always with the problems of program correctness in mind, of showing the correctness of a program. In 1976, in A Discipline of Programming, he dropped even the recursive procedure altogether: "... I regard general recursion as an order of magnitude more complicated than just repetition..." (Preface, page xvii). But it is for correctness reasons.

Indeed, but again, this is about the later Dijkstra of the 1970s, not the younger Dijkstra covered in my paper.

[Perlis]   A.J. Perlis, `The American side of the last phase of the development of ALGOL', in History of Programming Languages, R.L. Wexelblad (ed), New York: Academic Press, 75-91, 139-147, 1981.

Tags: