Programming Languages-The First 25 Years
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Latest Results from the Procedure Calling Test, Ackermann's Function
Latest results from the procedure calling test, Ackermann’s function B A WICHMANN National Physical Laboratory, Teddington, Middlesex Division of Information Technology and Computing March 1982 Abstract Ackermann’s function has been used to measure the procedure calling over- head in languages which support recursion. Two papers have been written on this which are reproduced1 in this report. Results from further measurements are in- cluded in this report together with comments on the data obtained and codings of the test in Ada and Basic. 1 INTRODUCTION In spite of the two publications on the use of Ackermann’s Function [1, 2] as a mea- sure of the procedure-calling efficiency of programming languages, there is still some interest in the topic. It is an easy test to perform and the large number of results ob- tained means that an implementation can be compared with many other systems. The purpose of this report is to provide a listing of all the results obtained to date and to show their relationship. Few modern languages do not provide recursion and hence the test is appropriate for measuring the overheads of procedure calls in most cases. Ackermann’s function is a small recursive function listed on page 2 of [1] in Al- gol 60. Although of no particular interest in itself, the function does perform other operations common to much systems programming (testing for zero, incrementing and decrementing integers). The function has two parameters M and N, the test being for (3, N) with N in the range 1 to 6. Like all tests, the interpretation of the results is not without difficulty. -
The History of the ALGOL Effort
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 ............................ -
Docworks PDF 600
P!l)_n.ted a.t .the Mathematic.al Cen.tJie, 413 K/f./.JMlaan, Am6.te.Jtdam. The Mathematic.al Cen.tJie , 6011.nded .the 11-.th 06 Feb'1.U1V1.IJ 1946, ,u., a non p!W 6U w:Ut.u.:tio n aJm.ing a.t .the pJWmo:Uo n o 6 pwr.e ma.the.ma:Ue!i and ill., appUc.ationJ.,. 1.t ,u., -6poY11.>01Led by .the Ne.the.Jtland6 Gove.Jtnmen.t .th!Wu.gh .the Ne..the.Jtland6 O!Lganiza:Uon 6DIL .the Advanc.e.men.t 06 PUILe Re-6e.a!Lc.h {Z.W.0.). MATHEMATICAL CENTRE TRACTS 134 PROCEEDINGS INTERNATIONAL CONFERENCE ON ALGOL 68 J.C. van VLIET (ed.) H. WUPPER (ed.) RECHENZENTRUM DER RUHR-UNIVERSITAT BOCHUM, BRD, MARCH 30-31, 1981 MATHEMATISCH CENTRUM AMSTERDAM 1981 1980 Mathematics·subjectclassification: 68-06,68B10,68B20 Co~uting Reviews: 4.22,1.52,4.34,4.12,5.23 l. INTRODUCTION "What can we do with ALGOL 68?" is the question raised by the chairman of the Standing Subcommittee on ALGOL 68 Support in the first contribution to this conference. The three main topics of the conference suggest three possible answers to this question: one can teach the language, implement it, and apply it. The papers collected in these proceedings deal with various aspects of teaching, implementation, and applications. They do not attempt to fully answer the question of what can be done, but they hopefully will provide some useful pieces of information, both to those who want to learn more about the,language, and to those who are actually involved in problems in the areas addressed. -
Organization of Programming Languages
CMSC 330: Organization of Programming Languages A Brief History of Programming Languages CMSC330 Fall 2020 Babylon • Founded roughly 4000 years ago – Located near the Euphrates River, 56 miles south of Baghdad, Iraq • Historically influential in ancient western world • Cuneiform writing system, written on clay tablets – Some of those tablets survive to this day – Those from Hammurabi dynasty (1800-1600 BC) include mathematical calculations • (Also known for Code of Hammurabi, an early legal code) A Babylonian Algorithm A [rectangular] cistern. The height is 3, 20, and a volume of 27, 46, 40 has been excavated. The length exceeds the width by 50. You should take the reciprocal of the height, 3, 20, obtaining 18. Multiply this by the volume, 27, 46, 40, obtaining 8, 20. Take half of 50 and square it, obtaining 10, 25. Add 8, 20, and you get 8, 30, 25 The square root is 2, 55. Make two copies of this, adding [25] to the one and subtracting from the other. You find that 3, 20 [i.e., 3 1/3] is the length and 2, 30 [i.e., 2 1/2] is the width. This is the procedure. – Donald E. Knuth, Ancient Babylonian Algorithms, CACM July 1972 The number n, m represents n*(60k) + m*(60k-1) for some k More About Algorithms • Euclid’s Algorithm (Alexandria, Egypt, 300 BC) – Appeared in Elements • See http://aleph0.clarku.edu/~djoyce/elements/bookVII/propVII2.html – Computes gcd of two integers let rec gcd a b = if b = 0 then a else gcd b (a mod b) • Al-Khwarizmi (Baghdad, Iraq, 780-850 AD) – Al-Khwarizmi Concerning the Hindu Art of Reckoning – Translated into -
Facing up to Faults Brian Randell
ReminiscencesReminiscences ofof WhetstoneWhetstone ALGOLALGOL Brian Randell DIKU, 30 September 2010 1 In Summer 1957 I had a vacation job at IBMIBM’s’s offices at 101 Wigmore Street, London These offices housed (and proudly displayed) an IBM 650 – their only computer in the UK DIKU, 30 September 2010 2 IBM 650 – a very successful and easy to program drumdrum-based-based decimal computer DIKU, 30 September 2010 3 In Autumn 1957 Mike Kelly and I arrived (from Imperial College) at English Electric Atomic Power Division, Whetstone, Leicestershire DIKU, 30 September 2010 4 Frank Whittle, inventor of the jet engine – whose Power Jet Company’sCompany’s factory was at Whetstone in WW2 DIKU, 30 September 2010 5 By the 1960s Whetstone was the site of EEEE’s’s Atomic Power Division (APD) and their Mechanical Engineering Laboratory (MEL) DIKU, 30 September 2010 6 In APD analogue computing was (at this time) ““king”king” – and the 15001500-amplifier-amplifier SATURN was being developed DIKU, 30 September 2010 7 We were hired to program nuclear reactor codes for APDAPD’s’s and MEL’sMEL’s first digital computer, a DEUCE DIKU, 30 September 2010 8 DEUCE was based on Pilot ACE, so inherited Alan TuringTuring’s’s cleverclever “optimum”“optimum” programming scheme DIKU, 30 September 2010 9 EASICODEEASICODE • DEUCE was difficult to program (well), and even more difficult to compile for. • Numerous interpreters were produced – and we invented a compromise scheme of “automatic programming” – EASICODE. • We nearly got fired because of it, but its success led to my becoming head of an Automatic Programming Section, with authority to “do something” for the upcoming KDF9. -
Evolution of the Major Programming Languages Genealogy of Common Languages Zuse’S Plankalkül
CHAPTER 2 Evolution of the Major Programming Languages Genealogy of Common Languages Zuse’s Plankalkül • Designed in 1945, but not published until 1972 • Never implemented • Advanced data structures • floating point, arrays, records • Invariants Plankalkül Syntax • An assignment statement to assign the expression A[4] + 1 to A[5] | A + 1 => A V | 4 5 (subscripts) S | 1.n 1.n (data types) Minimal Hardware Programming: Pseudocodes • What was wrong with using machine code? • Poor readability • Poor modifiability • Expression coding was tedious • Machine deficiencies--no indexing or floating point Pseudocodes: Short Code • Short Code developed by Mauchly in 1949 for BINAC computers • Expressions were coded, left to right • Example of operations: 01 – 06 abs value 1n (n+2)nd power 02 ) 07 + 2n (n+2)nd root 03 = 08 pause 4n if <= n 04 / 09 ( 58 print and tab Pseudocodes: Speedcoding • Speedcoding developed by Backus in 1954 for IBM 701 • Pseudo ops for arithmetic and math functions • Conditional and unconditional branching • Auto-increment registers for array access • Slow! • Only 700 words left for user program Pseudocodes: Related Systems • The UNIVAC Compiling System • Developed by a team led by Grace Hopper • Pseudocode expanded into machine code • David J. Wheeler (Cambridge University) • developed a method of using blocks of re-locatable addresses to solve the problem of absolute addressing IBM 704 and Fortran • Fortran 0: 1954 - not implemented • Fortran I:1957 • Designed for the new IBM 704, which had index registers and floating point -
Programming Languages: History and Future
Programming Languages: History and Future Jean E. Sammet IBM Corporation This paper discusses both the history and future of 1. Introduction programming languages (= higher level languages). Some of the difficulties in writing such a 1.1 Definition of Programming Languages history are indicated. A key part of the paper is a tree It is well known by now that there is no general showing the chronological development of languages agreement on the meaning of the term "programming and their interrelationships. Reasons for the prolifera- languages." In this paper the term is used interchange- tion of languages are given. The major languages are ably with "higher level languages," but even that does listed with the reasons for their importance. A section not solve the definition problem. Hence it is necessary on chronology indicates the happenings of the significant to specify that a programming language is considered previous time periods and the major topics of 1972. Key to be a set of characters and rules for combining them concepts other than specific languages are discussed. which have the following characteristics: (l) machine Key Words and Phrases: programming languages, code knowledge is unnecessary; (2) there is good poten- higher level languages, languages, history, future tial for conversion to other computers; (3) there is an directions, language interrelationships, programming instruction explosion (from one to many); and (4) language tree, programming language history, there is a notation which is closer to the original prob- programming language future lem than assembly language would be. CR Categories: 1.2, 4.2 1.2 Purpose and Scope of Paper Programming languages are almost as old as ACM, since the latter started in 1947 while the former started in 1952 with Short Code for UNIVAC. -
Learning Algol 68 Genie
LEARNING ALGOL 68 GENIE Algol 68 Genie 2.0.0 (September 2010) Edited by Marcel van der Veer Learning Algol 68 Genie copyright c Marcel van der Veer, 2008-2010. Algol 68 Genie copyright c Marcel van der Veer, 2001-2010. Learning Algol 68 Genie is a compilation of separate and independent documents or works, consisting of the following parts: I. Informal introduction to Algol 68, II. Programming with Algol 68 Genie, III. Example a68g programs, IV. Algol 68 Revised Report, V. Appendices Part I, II, III and V are distributed under the conditions of the GNU Free Documenta- tion License: Permission is granted to copy, distribute and / or modify the text under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License. See http://www.gnu.org. Part IV is a translation of the Algol 68 Revised Report into LATEX and is therefore subject to IFIP’s condition contained in that Report: Reproduction of the Report, for any purpose, but only of the whole text, is explicitly permitted without formality. Chapter 20, "Specification of partial parametrization proposal", is not a part of the Algol 68 Revised Report, and is distributed with kind permission of the author of this proposal, C.H. Lindsey. IBM is a trademark of IBM corporation. Linux is a trademark registered to Linus Torvalds. Mac OS X is a trademark of Apple Computer. -
Principles of Programming Languages
Principles of Programming Languages Lecture 02 Criteria for Language Design C SC 520 Principles of Programming Languages ↓ cut ↓ ↓ cut ↓ hhhhhhh hhhhhhh 1/7/106 AT&T FOIL 1 | | + + Criteria for Language Design 1. Simplicity — mnemonic — clear easily mastered semantics — as few basic concepts as possible — feature/concepts limited enough to master entire language (discourages "dialecting") — effects of feature combinations easily predictable — simple rules of combination ex: (1) PL/I: default coercion rules among fixed bin, fixed dec, float bin, float dec, when modified by scale attributes, become very complex. Each rule is reasonable by itself—the combination yields strange results. + + | | hhhhhhh hhhhhhh 1/7/106 AT&T FOIL 2 | | + + dcl M fixed dec(10,5), N fixed bin(5,4); N=0; M=N+.1; expr attr. repn. val. .1 dec(1,1) 0.1 (dec) 1/10 N+.1 bin(5,4) 0.0001|100110011 .. 1/16 (binary conversion, then truncation) M dec(10,5) 00000.06250 (dec) 1/16 (2) ALGOL 60: — own static — array dynamic size (known at block entry) ex: own boolean array B[M:N]; — created on first entry to block — retained between entries to block (with values at block exit) — seemingly could vary in size — conflicts with stack implementation — meaning? + + | | hhhhhhh hhhhhhh 1/7/106 AT&T FOIL 3 | | + + (3) PASCAL: fairly simple (4) ADA: Entia non sint multiplicanda praeter necessitatem —William of Ockham — procedure calls: keyword or positional for actual/formal correspondence — but positional parameters must occur first, and once a keyword is used, rest of the call must use keyword parms REORDER_KEYS(NUM_OF_ITEMS, KEY_ARRAY :=: RESULT_TABLE); + + | | hhhhhhh hhhhhhh 1/7/106 AT&T FOIL 4 | | + + 2. -
Dijkstra's Crisis
Dijkstra’s Crisis: The End of Algol and Beginning of Software Engineering, 1968-72 Thomas Haigh, [email protected], www.tomandmaria.com/tom Draft for discussion in SOFT-EU Project Meeting, September 2010 “In SHOT meetings and in the journals, it is surprising how few and far between critical references to specific historical arguments are: there is hardly any debate or even serious substantive disagreement.” – David Edgerton, 2010. In 1968 a NATO Software Engineering Conference was held in Garmisch, Germany. Attendees represented a cross section of those involved in programming work and its management. Having never met before they were shocked to realize that identical troubles plagued many different kinds of software. Participants agreed that a “software crisis” was raging. Programming projects were chronically late and over budget, yet often failed to produce useful software. They endorsed a new discipline of software engineering, its contents yet to be defined, as the solution to this crisis. A follow up conference, held in Rome the next year, failed to reach consensus on what specific techniques might constitute the core of this new discipline. Yet software engineering soon became the dominant identity to describe the work and management of programmers. That, at least, is the composite account one would gain from the almost identical paragraphs repeated again and again in historical works both scholarly and popular. But this growing mass of consensus is, I believe, built on sand. The historical significance of the 1968 NATO Conference, the demographics of its participants, its connection to prior and subsequent events, and its relationship to the software crisis are at risk of being fundamentally misinterpreted. -
How to Call Procedures, Or Second Thoughts on Ackermann's Function
SOFTWARE-PRACTICE AND EXPERIENCE, VOL. 7, 317-329 (1977) How to Call Procedures, or Second Thoughts on Ackermann’s Function B. A. WICHMANN National Physical Laboratory, Teddington, Middlesex TlVI I OL W,England SUMMARY Various problems have been encountered in using Ackermann’s function to measure the efficiency of procedure calls in System Implementation Languages. Although measurements have been made of some 60 systems, the ones presented here are included only when com- parisons are possible. For conventional machine design, it is possible to draw some con- clusioiis on desirable instruction set features. A surprising result from the analysis is that implementation quality is far more important than the overheads implied by language design. KEY WORDS Procedure call Recursion Efficiency System Implementation Languages INTRODUCTION In the design of System Impletnentation Languages, efficiency is a prime consideration because otherwise programmers will be forccd to use conventional assembly languages. It is well known that procedure calling in conventional high-level languages is relatively expensive, and hence this aspect of System Implementation 1,anguages (SILs) is \rorth special attention. Measurcrnents using Ackermann’s function have been made with this in mind.‘ In this paper comparisons are made between the implementations on the same machine architecture by examination of the machine code produced. Several machine architectures are also compared for their suitability as target machines for recursive languages. The architectures chosen for this study are the IBM 360/370, ICL 1900, DEC PDP11, DECIO, Burroughs stack machines and the CDC Cyber Series. Although other results have been obtained, further analysis is not, in general, worthwhile due to the lack of comparative data on the same architecture. -
Revised Report on the Algorithmic Language ALGOL 68 Edited By: A
Revised Report on the Algorithmic Language ALGOL 68 Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, C.H. Lindsey, L.G.T. Meertens and R.G. Fisker. This Report has been accepted by Working Group 2.1, reviewed by Technical Committee 2 on Programming and approved for publication by the General Assembly of The International Federation for Information Processing. Re- production of the Report, for any purpose, but only of the whole text, is explicitly permitted without formality. The translation 1.1.5 of the Report to TEX source language was created by: f W.g B. Kloke, mailto:[email protected] . Remarks on this edition are collected into a separated document, http://vestein.arb-phys.uni-dortmund.de/~ wb/RR/vorwort.tex. Further versions will be found also in http://vestein.arb-phys.uni- dortmund.de/~ wb/RR/. The table of contents had to be removed, because page numbers are not a valid concept in TEX source language. Known errata, as published in Algol Bulletin No. 41 and ::: , are cor- rected. Syntactic errors in the standard-prelude, as mentioned in Commen- tary AB 43 p.7f, are corrected also. The Partial Parametrization Proposal (AB39.3.1) has been appended to the text. Layout of examples may still be improved. 1 Section ALGOL 68 Revised Report Acknowledgements Habent sua fata libelli. f De litteris Terentianus Maurus g Working Group 2.1 on ALGOL of the International Federation for Infor- mation Processing has discussed the development of \ALGOL X", a succes- sor to ALGOL 60 [3] since 1963.