170 likes | 410 Views
The ALGOL Family. Mason Vines CPSC425. Overview. ALGOL 58 ALGOL 60 ALGOL 68 Success and Failure of ALGOL. ALGOL 58 The beginning . June 1957 – ACM requested a committee to look into a universal programming language
E N D
The ALGOL Family Mason Vines CPSC425
Overview • ALGOL 58 • ALGOL 60 • ALGOL 68 • Success and Failure of ALGOL
ALGOL 58The beginning • June 1957 – ACM requested a committee to look into a universal programming language • October 1957 – A letter from GAMM (Gasellshaft fur angewandte Mathematik und Mechanik) • No current language covers everything • Creating more non-ideal languages doesn’t help the situation • Each passing month more people start using other languages • How can the logical structure of existing languages be adjusted
ALGOL 58Zurich Meeting • May 27 – June 1, 1958 • Originally named IAL (International Algorithmic Language) • Objectives • Close to standard mathematical notation and readable with little further explanation • Possible to use it for the description of numerical processes in publications • Readily translatable into machine code by the machine itself • Three levels of languages • Reference • Publication • Hardware
ALGOL 58New Features • Types • Integer • Real • Boolean • Formal vs Actual parameters • Declaration • for statements • Switch • Compound statements • Begin end delimiters • Three level language description • Call by name
ALGOL 58Function vs Procedure • Nature of the body • Expression • Compound statement • Parameter evaluation mechanism • Value of any actual parameter • Text of any actual parameter • Identifier collision • Non-parameter identifiers are global to the definition • Communication only through parameters • Place of use • An operand in an expression • A statement or an operand in an expression
ALGOL 60 • February 1959 – Discussion about ALGOL 58 • March 1959 – Naur sends out the first ALGOL bulletin • June 1959 – John Backus presents at UNESCO • FORTRAN is still being used in the U.S. • ALGOL is used for publications
ALGOL 60Proposed Changes • The empty statement was adopted • Modifications to operation hierarchy • Unary operators having higher precedence than binary operators was adopted • Implied multiplication was rejected • Relation sequences were rejected • The else clause was adopted • Strings, lists, trees, matrices, and complex numbers were rejected as types • Multiple assignment statements were adopted • Created a new problem, A[i] := i := e • Recursion became possible in obvious ways • Constants were rejected
ALGOL 60What’s New • Block • Call by value/name • Typed procedures • Declaration scope • Dynamic arrays • Side effects • Global and local variables • Step, until, while, if then else • Thunks • Activation records • Recursive decent parsers • No I/O
ALGOL 68The Red-Headed Stepchild • The IFIP (International Federation for Information Processing) working group 2.1 began working on a successor to ALGOL 60 • There was a lot of debate over how much ALGOL 68 should deviate from ALGOL 60 • Many members of WG 2.1 left over the decision that was made • The language specified was never actually implemented
ALGOL 68What’s New • Many new types, called modes • Primatives • Bits • Bytes • String • Sema (a semaphore) • Complex • File • Pipe • Channel • format • Additional • Flex (Flexible array) • Heap (space on the heap) • Loc (local space on the stack) • Ref (pointer) • Long (bigger ints/reals) • Short (smaller ints/reals) • Coercion • Declaration of custom types/modes
ALGOLSuccesses and Failures • Programming computers – Partial Success • Core language is strong, no I/O is a serious shortcoming • Publication of algorithms – Very Successful • Stimulus to compiler design – Success with a seed of corruption • It only stimulated compiler design because it was difficult • Stimulated formal language research – Success • Not the goal of the ALGOL effort • Description of ALGOL 60 – Failure • Difficult to understand for the uninitiated reader • Needs an informal explanation
ALGOL 68Successes and Failures • Transition to WG 2.1 of IFIP – Failure • Extreme clumsiness since IFIP needed ALGOL more than ALGOL needed the IFIP • The vague concept of ALGOL in the name of WG 2.1. Should have used a new name • Instead of learning from ALGOL 60, they amplified the failures • The IFIP was authoritarian • No open debate for the selection of a chairmen • No provision for regular replacement of the chairmen • No provision for killing a technical committee or working group • The IFIP uses the name ALGOL to take credit for work they didn’t do
References • Lindsey, C.H., “A History of ALGOL 68.” History of Programming Languages, ACM Press. 1993. 97-132 • Naur, Peter, “Successes and failures of the ALGOL effort”, ALGOL Bulletin #28, Computer History Museum. 1986. 58-62 • Thomson, C.M., “Algol 68 as a Living Language”, ALGOL Bulletin #47, Computer History Museum. 1981. 21-24 • Perlis, Alan, “The American side of the development of Algol”, The first ACM SIGPLAN conference on History of programming languages, ACM Press. 1978. 3-14 • Naur, Peter. “The European side of the last phase of the development of ALGOL 60”, The first ACM SIGPLAN conference on History of programming languages, ACM Press. 1978. 15-44