Eindhoven University of Technology MASTER the History of the ALGOL
Total Page:16
File Type:pdf, Size:1020Kb
Eindhoven University of Technology MASTER The history of the ALGOL effort de Beer, H.T. Award date: 2006 Link to publication Disclaimer This document contains a student thesis (bachelor's or master's), as authored by a student at Eindhoven University of Technology. Student theses are made available in the TU/e repository upon obtaining the required degree. The grade received is not published on the document as presented in the repository. The required complexity or quality of research of student theses may vary by program, and the required minimum study period may vary in duration. General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain Technische Universiteit Eindhoven Department of Mathematics and Computer Science The History of the ALGOL Effort by HT de Beer supervisors: C. Hemerik L.M.M. Royakkers Eindhoven, August 2006 Abstract This report studies the importancy of the ALGOL effort for computer science. Therefore the history of the ALGOL effort is told, starting with the compu- tational context of the 1950s when the ALGOL effort was initiated. Second, the development from IAL to ALGOL 60 and the role the BNF played in this development are discussed. Third, the translation of ALGOL 60 and the establishment of the scientific field of translator writing are treated. Finally, the period of ALGOL 60 maintenance and the subsequent period of creating a successor to ALGOL 60 are described. ii Preface This history on the ALGOL effort was written as a Master thesis in Com- puter Science and Engineering (Technische Informatica) at the Eindhoven University of Technology, the Netherlands. iii Contents Abstract ii Preface iii Contents iv 0 Introduction 1 0.0 On the sources used ........................ 2 0.1 My own perspective ........................ 3 0.2 The ALGOL effort: a definition .................. 4 0.3 Notes ................................ 4 1 Creation 5 1.0 The start of the ALGOL effort ................... 5 1.1 The need for a universal algorithmic language ........... 7 1.1.0 The American field of computing ............. 7 1.1.1 The European field of computing ............. 9 1.1.2 The difference between Europe and the USA and the need for universalism ...................... 11 1.2 Why was IAL chosen over other algorithmic languages? ..... 11 1.2.0 IT ............................. 12 1.2.1 MATH-MATIC ....................... 14 1.2.2 FORTRAN ......................... 15 1.2.3 IAL ............................. 16 1.2.4 Why did IAL have to be the international algebraic lan- guage? ........................... 16 1.3 Conclusion ............................. 18 1.4 Notes ................................ 19 2 Notation 22 2.0 Why notation matters? ...................... 22 2.1 Notations used to describe early programming languages ..... 23 2.1.0 The notation of IAL and FORTRAN compared ...... 23 2.1.1 The quality of IAL’s notation ............... 26 2.2 Backus’s notation ......................... 29 2.3 Developing ALGOL 60 ....................... 31 iv Contents 2.4 Conclusion ............................. 36 2.5 Notes ................................ 37 3 Translation 39 3.0 From craftsmanship to science ................... 39 3.1 Sequential formula translation ................... 41 3.1.0 The development of the sequential formula translation technique .......................... 43 3.1.1 Sequental formula translation explained .......... 46 3.2 Implementing procedures and recursion .............. 49 3.2.0 “Solving” by ignoring ................... 49 3.2.1 Dijkstra’s Recursive Programming ............. 50 3.2.2 The solution of Irons and Feurzeig ............ 51 3.3 The influence of ALGOL’s structure ................ 54 3.3.0 Grau’s recursive translation technique ........... 54 3.3.1 Irons’s syntax directed compiler .............. 55 3.3.2 Lucas’s structure of formula translators .......... 56 3.3.3 Connecting ALGOL-like languages with context-free lan- guage theory ........................ 58 3.4 Conclusion ............................. 59 3.5 Notes ................................ 60 4 Succession 63 4.0 Use and maintenance of ALGOL 60 ................ 63 4.1 The move of responsibility for ALGOL to WG 2.1 ......... 65 4.2 On ALGOL X and Y ........................ 67 4.3 The end of the ALGOL effort: the creation of ALGOL 68 .... 72 4.3.0 Orthogonality versus pragmatism ............. 72 4.3.1 A contribution to the development of ALGOL ...... 73 4.3.2 The end and the ALGOL 68 report ............ 75 4.4 Conclusion ............................. 76 4.5 Notes ................................ 77 5 Conclusion 80 5.0 Summary .............................. 80 5.0.0 The start of the ALGOL effort ............... 80 5.0.1 From IAL to ALGOL 60: notation and language ..... 82 5.0.2 From craftsmanship to science: translating ALGOL 60 .. 83 5.0.3 In search of a worthy successor to ALGOL 60 ....... 84 5.1 Conclusions: The important contributions by the ALGOL effort . 85 5.1.0 The Backus Naur Form .................. 85 v Contents 5.1.1 Programming language concepts ............. 86 5.1.2 Syntax directed translation and dynamic memory mana- gement ........................... 87 5.1.3 The contribution of the field of translator writing ..... 88 5.2 Success and failure ......................... 88 5.3 Notes ................................ 89 Bibliography 90 vi Introduction 0 On Sources, Perspective and the ALGOL Effort What was the importance of the ALGOL effort for computer science? • On the sources used to answer this question • My own perspective on ALGOL and the ALGOL effort • And the meaning of the term “ALGOL effort” On May 20th, 2006, Peter Naur received the 2005 ACM Turing Award. This award is often regarded as the “Nobel Prize” in Computer Science. Naur was rewarded for his ‘pioneering work on defining the Algol 60 programming language. (...) [He] was editor in 1960 of the hugely influential ”Report on the Algorithmic Language Algol 60.” He is recognised for the report’s elegance, uniformity and coherence, and credited as an important contributor to the language’s power and simplicity.’0 Forty-five years after the publication of the ALGOL 60 report, it is still regarded as one of the most influential papers in computer science. Pe- ter Naur was not the only Turing Award winner related to the ALGOL effort: A.J. Perlis, J. McCarthy, E.W. Dijkstra, J. Backus, R.W. Floyd, C.A.R. Hoare, and N. Wirth were all awarded before him.1 It may be not for their work in the ALGOL effort per s´e,but they were all part of the effort, either as a member of the committee defining ALGOL 58 or ALGOL 60, as an implementor of ALGOL 60, as a contributor to the theory of formal lan- guages stimulated by ALGOL 60, or as a member of the committee working on a new ALGOL in the 1960s. The awarding of these computer scientists indicates that the ALGOL ef- fort was an important part of the development of computer science itself. This importance is often stated without elaborating exactly why it was so important. ALGOL 60 was not the first programming language and it cer- tainly was not the most used one. So, the question arises: What was the importance of the ALGOL effort for computer science? To answer this question, the history of the ALGOL effort is told. First, in Chapter 1, the start of the effort is discussed and the central question in that chapter is: Why was there a need for an effort like the ALGOL effort? 1 0 Introduction This question will be answered by treating the computational context in which this effort was initiated; the algebraic programming languages from the 1950s are compared including the first language created by the ALGOL effort, ALGOL 58. Was this International Algebraic Language really better than these other algebraic languages? Then, in Chapter 2, the development from ALGOL 58 leading to the publication of the Report on the algorithmic language ALGOL 60 2 in May 1960 is treated. In this period, the notation used to describe and define programming languages changed fundamentally. The resulting ALGOL 60 report would become the standard for defining programming languages. Both the interesting new features in the programming language ALGOL 60 and the reasons why this new notation was developed during the ALGOL effort, are discussed. ALGOL 60 is often related to the development of formal language theory in computer science. This development was a result of the common effort to create translators for ALGOL 60. How did this development take shape, and, more importantly, what was the importance of this development for computer science? These questions are answered in Chapter 3. After the publication of the ALGOL effort, a period of maintenance of the ALGOL 60 language was started. During this period, the responsibility for ALGOL was transferred to an international body: the famous Working Group 2.1 of IFIP. Later, this working group developed a new ALGOL re- sulting in dismay and the end of the ALGOL effort. This end of the ALGOL effort did not set a good example for computer science, and the question arises: what was the importance, if any, of the effort to create a new AL- GOL? (See Chapter 4) Finally, in Chapter 5, the conclusion of this research on the ALGOL effort is drawn by answering the main question: What was the the importance of the ALGOL effort for computer science? Before the history of the ALGOL effort is told some remarks on the sources used, on my perspective, and on the term “ALGOL effort” are made. 0.0 On the sources used For this research both primary and secondary sources are used.