Some Tools for Automating the Production Of

Total Page:16

File Type:pdf, Size:1020Kb

Some Tools for Automating the Production Of SOME TOOLS FOR AUTOMATING THE PRODUCTION OF COMPILERS AND OTHER TRANSLATORS by Christopher Lester, B.Sc., M.Sc. April 1982 A thesis submitted for the degree of Doctor of Philosophy of the University of London and for the Diploma of Membership of the Imperial College. Department of Computing and Control, Imperial College, London S.W.7. 3 ABSTRACT This thesis explores possible tools to cheapen the creation of compilers of sufficient quality for studies in programming language design. A literature study showed only (many) incomplete leads towards the: goal: this prompted an analysis of what properties such tools must have and might have, notably the forms of the inputs. The key conclusion is that it is desirable to describe the source language and (separately) the machine instructions, rather than a translation between them. A design according to this conclusion is proposed, and implementations of the crucial parts of the design are presented. The description of the language is given in four parts. The first two describe the lexis and syntax: the third gives transformations from the syntactic constructs to intermediate language (IL). An implemented tool considers inter-relationships between the transform cases, and from these inter-relationships fabricates the required case-analysis code to select which transforms to apply for instances of the syntax. A parser consistent with the case analysis is also f abricated. The fourth part of the language description describes the IL in terms of machine description language (MDL), which is also used to describe the instructions of the target machine. Another tool is parameterised by these descriptions: it then inputs an IL sequence, analyses it for its data-flow tree, converts that into a tree rep- resenting the corresponding MDL sequence, and finally chooses an optimised machine instruction sequence equivalent to the original IL sequence. Another study suggested that the choosing is more easily optimal if it includes the allocation of temporaries needed for the chosen instructions: a technique for this is suggested. Also, a method is given to reduce searching for optimal choices and avoid building the MDL tree. Other possible applications of the tools are discussed. 4 Acknowledgements. This project would not have been possible without the help of the following people. My most sincere thanks go to them all. My supervisors at Imperial College: Ian Livingstone and John Darlington, for all their varied assistance, particularly for helping to reduce the problems arising from my part-time status, and also for the many (often unknowing) technical insights they gave me. At City of London Polytechnic: the Assistant Directors, Ronald Sturt and Michael Brandon-Bravo, for their moral support, and for arranging day-release and financial support; the Head of the Computer Service, Pat Johnson, and all his staff, for their tolerApce of what must often have been their most difficult user. Special mention must go to Pam Roberts for her amazingly accurate key-punching, and the operators for their many kind- nesses beyond the call of duty. My present employer, ALSYS S.A., for reproduction facilities. Finally, and most of all, to my wife, for AVZ years of irregular hours and lost weekends without complaint but with encouragement. 5 CONTENTS Section Title Page. Abstract 3 Contents 5 List of figures 9 Preface 11 1 ORIGINS AND OBJECTIVES 13 2 FUNDAMENTAL CONCEPTS 2.1 INTRODUCTION... 19 2.2 MODELS OF COMPILATION 21 2.2.1 Non-optimising 21 2.2.2 Optimising model 24 2.2.2.1 Examples of optimisations for different phases of compilation 25 2.2.2.2 Optimisation-order problems 27 2.2.2.3 Review and terminology 29 2.2.2.4 Correspondences 29 2.2.3 Limitations of the models 30 2.3 CHEAPER METHODS OF CREATING COMPILERS 30 2.3.1 The UNCOL problem 30 2.3.2 "Portable" compilers 32 2.3.3 High-level machine codes 35 2.3.4 System implementation languages 36 2.3.5 Compilers based on macro-processing and pattern matching 38 2.3.6 Compiler-compilers: main concept and brief history 41 <4 CLARIFICATION OF TERMINOLOGY 47 ".4.1 Definitions 47 2.4.2 Summary of definitions 51 2.5 COMPILER-COMPILERS AND COMPILER-GENERATORS..52 2.5.1 Required inputs versus inbuilt information..53 2.5.2 Choice of languages for inputs and outputs..55 3 OVER VIE!1/ OF A COMPILER FACTORY 3.1 INTRODUCTION 59 3.2 THE STRATEGY UNDERLYING THIS RESEARCH 60 3.2.1 Design strategy of CF1 63 3.2.2 Design strategy of CF2 68 4 FABRICATING A PRIMARY CODE GENERATOR 4 • 1 INTRODUCTION 73 4.2 THE LEXIC DIVISION 75 4.3 THE SYNTACTIC DIVISION 83 4.4 THE TRANSFORM DIVISION 91 4.4.1 The notation of transforms 93 4.4.2 Overlapping cases 98 4.4.3 The "more specific than" relation 101 4.4.4 Commonalities in matching patterns 102 4.4.5 The influence of syntax on the allowable patterns 103 4.4.6 Calling the transforms 104 4.4.7 Editing the tree 105 4.4.8 Cases not expressible as simple patterns...108 4.4.9 Syntactic and lexic rules applicable only to patterns 109 4.4.10 Theories of transforms Ill e 4.5 EXAMPLE SETS OF TRANSFORMS 114 4.6 REVIEW OF THE PROPOSED TECHNIQUES 120 5 A PILOT PRIMARY CODE-GENERATOR FABRICATOR 5.1 INTRODUCTION 123 5.2 OVERVIEW OF THE CF2 SUITE OF PROGRAMS 123 5.2.1 Bootstrap use of the parser generator, and bootchecking 130 5.2.2 The source processor, and the source library 134 5.3 THE LEXICAL ANALYSER FABRICATOR AND • SYNTACTIC ANALYSER FABRICATOR 139 5.3.1 The Lexical-analyser fabricator 141 5.3.2 The Syntactic-analyser fabricator 144 5.4 THE INTERPRETIVE PARSER 146 5.5 THE TRANSFORM FABRICATOR 152 5.6 REVIEW OF THE PRIMARY CODE-GENERATOR FABRICATOR 158 6 FABRICATING A SECONDARY CODE-C-ENERATOR 6.1 INTRODUCTION 161 6.2 THE EXAMPLE 162 6.2.1 The example instruction and its IL memory architecture 163 6.2.2 The example ILs 165 6.2.2.1 A temporary-stack IL 165 6.2.2.2 An infinitely-registered IL 167 6.2.2.3 The PDP-8 170 6.3 MACHINE DESCRIPTION LANGUAGE (MDL) 172 6.3.1 MDL summary of the addresses in the I:=J+K instruction 174 6.3.2 MDL definition of the temporary-stack IL 174 6.3.3 MDL definition of the register-IL 175 6..4 INSTRUCTIONS AND INSTRUCTION-SEQUENCES AS TREES 178 6.4.1 The gross tree for an IL sequence 181 6.4.2 The trees for temporary-stack IL instructions.185 6.4.3 The trees for register-IL instructions 186 6.4.4 The fine tree for an IL sequence 188 6.4.5 The trees for the PDP-8 instructions 193 6.4.6 The trees of PDP-8 instruction sequences 196 6.5 RELATIONSHIP TO SYMBOLIC EXECUTION 198 6.5.1 Two demonstrations 199 6.6 RELATIVE MERITS OF THE STYLES OF IL 203 6.6.1 Organisation of registers in a register-IL.....203k. 6.6.2 Data-flow analyses 205 6.6.2.1 Data-flow analysis for a stack IL 205 6.6.2.2 Data-flow analysis for register-IL 208 6.6.3 Register-IL vs. Stack-IL 213 6.7 AN INSTRUCTION CHOICE METHOD 215 6.7.1 Transforming an MDL fine tree to a machine code gross tree 216 6.7.1.1 a demonstration of the method 217 6.7.1.2 Summary of the method 226 6.7.1.3 Another demonstration of the method 237 6.7.2 Register allocation on the gross tree 242 6.7.3 Choice of alternative machine code gross 0„D trees 248 7 6.7.4 Optimisation of the method of instruction choice 250 6.8 INSTRUCTION ORDERING FROM THE TARGET-MACHINE GROSS TREE 260 6.8.1 Assembly cases of instruction ordering 260 6.8.2 The "Linear section" case of instruction ordering 263 6.8.3 The "Fork point" case of instruction ordering 266 6.9 REMAINING TOPICS IN SECONDARY CODE GENERATION 271 6.10 REVIEW OF THE PROPOSED TECHNIQUES 274 7 A PILOT SECONDARY-CODE-GENERATOR SYSTEM 7.1 INTRODUCTION 275 7.2 THE SYSTEM 275 7.3 A STRUCTURED NOTATION FOR TREES WHICH CONTAIN ALTERNATIVES 283 7.4 A SIMPLE EXAMPLE CODE GENERATION 284 7.5 EXAMPLES INVOLVING TRANSFER SQUENCES 286 7.6 RETARGETING 287 7.7 TWO REALISTIC EXAMPLES 293 8 OTHER USES OF THE TOOLS 8.1 INTRODUCTION 295 8.2 SOURCE PROGRAM TRANSFORMATION 296 8.2.1 Program transformation for simplification,.297 8.2.2 Program transformation for optimisation...298 8.2.3 Program transformation for language extension 298 8.3 MISCELLANEOUS PROGRAMMERS AIDS 299 8.3.1 Prettyprinting 300 8.3.2 Program profiling 301 8.3.3 Language specific editing 301 8.3.4 Flowcharting 301 8.3.5 Cross-referencing 301 8.3.6 Portability aids 302 8.4 OTHER APPLICATIONS OF CF2 302 8.4.1 Verifications of programs and translations.302 8.4.2 Assembler-level bridgeware 303 8.4.3 Verification of architecture descriptions..304 8.5 DE-COMPILATION 304 8.6 LANGUAGE DEFINITION 305 8.7 OTHER POSSIBLE CF TOOLS 305 8.8 OTHER APPLICATION DOMAINS 307 9 SUMMARY 9.1 INTRODUCTION AND OBJECTIVES 309 9.2 THE ANALYSIS 310 9.3 THE DRAFT SOLUTION 311 9.4 BEYOND THE OBJECTIVES 312 9.5 FUTURE WORK 313 9.6 CONCLUSION 313 A ALLIED WORK 315 A. 1 PQCC AND 'WASI LEW 316 A.1.1 Expert systems 316 A.1.2 Overview of PQCC 317 A.1.3 Instruction Choice and Register Allocation 319 A.1.3.1 Register allocation 320 A.1.3.2 Instruction choice 322 A.
Recommended publications
  • Compiler Construction
    Compiler construction PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information. PDF generated at: Sat, 10 Dec 2011 02:23:02 UTC Contents Articles Introduction 1 Compiler construction 1 Compiler 2 Interpreter 10 History of compiler writing 14 Lexical analysis 22 Lexical analysis 22 Regular expression 26 Regular expression examples 37 Finite-state machine 41 Preprocessor 51 Syntactic analysis 54 Parsing 54 Lookahead 58 Symbol table 61 Abstract syntax 63 Abstract syntax tree 64 Context-free grammar 65 Terminal and nonterminal symbols 77 Left recursion 79 Backus–Naur Form 83 Extended Backus–Naur Form 86 TBNF 91 Top-down parsing 91 Recursive descent parser 93 Tail recursive parser 98 Parsing expression grammar 100 LL parser 106 LR parser 114 Parsing table 123 Simple LR parser 125 Canonical LR parser 127 GLR parser 129 LALR parser 130 Recursive ascent parser 133 Parser combinator 140 Bottom-up parsing 143 Chomsky normal form 148 CYK algorithm 150 Simple precedence grammar 153 Simple precedence parser 154 Operator-precedence grammar 156 Operator-precedence parser 159 Shunting-yard algorithm 163 Chart parser 173 Earley parser 174 The lexer hack 178 Scannerless parsing 180 Semantic analysis 182 Attribute grammar 182 L-attributed grammar 184 LR-attributed grammar 185 S-attributed grammar 185 ECLR-attributed grammar 186 Intermediate language 186 Control flow graph 188 Basic block 190 Call graph 192 Data-flow analysis 195 Use-define chain 201 Live variable analysis 204 Reaching definition 206 Three address
    [Show full text]
  • Mathematical Software 5
    Copyright © 1977, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. BIBLIOGRAPHY ON NUMERICAL SOFTWARE by Bo Einarsson Permanent affilation: FORSVARETS FORSKNINGSANSTALT (FOA) National Defence Research Institute Department 2/Proving Grounds Box 98, S-147 00 Tumba, Sweden Memorandum No. UCB/ERL M77/19 25 March 1977 » e - % ELECTRONICS RESEARCH LABORATORY College of Engineering University of California, Berkeley 94720 BIBLIOGRAPHY ON NUMERICAL SOFTWARE by Bo Einarsson Permanent affilation: FORSVARETS FORSKNINGSANSTALT (FOA) National Defence Research Institute Department 2/Proving Grounds Box 98, S-147 00 Tumba, Sweden Memorandum No. UCB/ERL M77/19 25 March 1977 BIBLIOGRAPHY ON NUMERICAL SOFTWARE by Bo Einarsson Permanent affilation: FO*RSVARETS FORSKNINGSANSTALT (FOA) National Defence Research Institute Department 2/Proving Grounds Box 98, S-147 00 Tumba, Sweden Memorandum No. UCB/ERL M77/19 25 March 1977 Abstract; This bibliography has been written at the request of the IFIP Working Group on Numerical Software (IFIP WG .2.5), and is intended to serve both members of the working group and others intent on improving numerical software. It has been divided into twenty-one different areas. Within each area the references are given in alphabetical order by the first author.
    [Show full text]
  • 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.
    [Show full text]
  • 845 1 4 MIT/CC Computation Center Memos
    Box/File Item # Date Publisher Doc ID Title Author(s) Notes Pages 1 1-3 690615 MIT/CC CTSS+ CTSS Manual (including the following) 845 1 1-3 1 690615 MIT/CC CTSS+ CTSS Manual Second Edition 766 1 1-3 2 680925 BC.2.01 Character Set F.J. Corbato, R. 5 Morris, J.H. Saltzer 1 1-3 3 680206 BC.2.04 Character Escape Conventions F.J. Corbato, R. 4 Morris, J.H. Saltzer 1 1-3 4 650910 CC-256 Changes to Teletype Terminals R.G. Mills light ditto 4 1 1-3 5 680410 CC-230-13 Telephone Extensions for Dataphones, Teletypes, 1050's, and M.V. Solomita 12 2741's 1 1-3 6 670700 CC-274 CTSS Library Subprograms Not Included in the CTSS Programming Staff light ditto 54 Programmer's Guide 1 4 MIT/CC Computation Center Memos (CC-167 - CC-213) 173 1 4 1 630300 MIT/CC CC-167-6 Description of a Port-Mortem Subprogram (F2PM) for Use with the L. Korn, J.F. Corbato ditto copy 6 Fortran-Fap Monitor System Version II 1 4 2 620500 MIT/CC CC-168 Modification to IBM Fortran Monitor Version 2 709/7090 L. Korn ditto copy 5 1 4 3 610100 MIT/CC CC-170 The FORTRAN-FAP Monitor System F.J. Corbato 12 1 4 4 620700 MIT/CC CC-176-1 Octal Conversion Cards Within the FMS System R.C. Daley ditto copy 3 1 4 5 641100 MIT/CC CC-180-18 Computation Center Version of Fortran-Fap Monitor System J.
    [Show full text]
  • Oral History of Bjarne Stroustrup
    ........ Computer • History Museum Oral History of Bjarne Stroustrup Interviewed by: Paul McJones Recorded: February 5, 2015 New York, New York CHM Reference number: X7399.2015 © 2015 Computer History Museum Oral History of Bjarne Stroustrup Paul McJones: Today is February 5, 2015. I’m Paul McJones in California. Bjarne Stroustrup: I’m Bjarne Stroustrup in New York City. McJones: And behind the camera is Jon Plutte. How are you Bjarne? Stroustrup: I’m fine, thanks. Thanks for taking the effort. It’s amazing we can sit chatting like this1. McJones: Yes, several thousand miles apart. And we’re probably using some C++ technology behind the scenes. Stroustrup: Definitely. I was thinking that when I started on C++ we couldn’t have done this. McJones: Right. I thought it would be good to start at the beginning, if you could tell us a little bit about your parents and where you grew up. Stroustrup: I was born in Aarhus in Denmark and I lived there for the first 23 years of my life. I lived in an apartment in a working class district. My father was somebody who laid down floors and late in life he was a hospital porter. My mother was a secretary. She had a middle school education which was the most anybody in the family had had by then. I went to the local school, which wasn’t a great school. Actually, I’ve seen the statistics; it was the worst school in town but somehow I managed to get into high school and from there to the local university which happens to be a good one.
    [Show full text]
  • The Language List - Version 2.4, January 23, 1995
    The Language List - Version 2.4, January 23, 1995 Collected information on about 2350 computer languages, past and present. Available online as: http://cui_www.unige.ch/langlist ftp://wuarchive.wustl.edu/doc/misc/lang-list.txt Maintained by: Bill Kinnersley Computer Science Department University of Kansas Lawrence, KS 66045 [email protected] Started Mar 7, 1991 by Tom Rombouts <[email protected]> This document is intended to become one of the longest lists of computer programming languages ever assembled (or compiled). Its purpose is not to be a definitive scholarly work, but rather to collect and provide the best information that we can in a timely fashion. Its accuracy and completeness depends on the readers of Usenet, so if you know about something that should be added, please help us out. Hundreds of netters have already contributed to this effort. We hope that this list will continue to evolve as a useful resource available to everyone on the net with an interest in programming languages. "YOU LEFT OUT LANGUAGE ___!" If you have information about a language that is not on this list, please e-mail the relevant details to the current maintainer, as shown above. If you can cite a published reference to the language, that will help in determining authenticity. What Languages Should Be Included The "Published" Rule - A language should be "published" to be included in this list. There is no precise criterion here, but for example a language devised solely for the compiler course you're taking doesn't count. Even a language that is the topic of a PhD thesis might not necessarily be included.
    [Show full text]
  • Panos Technical a C O R N S C I E N T I F I C
    Panos Technical A C O R N S C I E N T I F I C TECHNICAL REFERENCE MANUAL FOR PANOS PROVISIONAL ISSUE (EXTRACTS) Inter-language Calling Standard Object File Format Calling Panos Standard Procedures from C Pandora Definition Issue B Issue B 11 June 1986 Acorn Computers Limited, Scientific Division Page 1 Panos Technical Scanned, OCRed, proofread, corrected and reformatted 12-Oct-2007 J.G.Harston Acorn 32000 Products Inter-Language Calling Standard Issue D Provisional Page 2 Panos Technical User Document (c) Copyright Acorn Computers Limited 1985 10-Sep-85 Page 3 Panos Technical Inter-Language Calling Standard Contents Introduction 1 Parameters 2 Integers 2 Floating point numbers 3 Strings 3 Vectors & Arrays 3 Results 5 Scalar 5 Non-scalar 5 Strings 5 Recor s and fixed-sized arrays 6 Multiple results 6 Scalars, records and fixed-sized arrays 6 Strings 6 Result or er 7 Call instruction 8 Page 4 Panos Technical Return instruction 9 Register use 10 Examples 11 Issue D Provisional Page i Change record 26-Apr-84 : First Roff version. 21-May-84 : Amendments made according to MT's comments. 09-Oct-84 : Revised by MT (changes to string result mechanism). 22-Oct-84 : Becomes Issue B. 24-Jul-85 : Slight mods by MT, becomes Issue C 10-Sep-85 : Further slight mods by MT, becomes issue D Page 5 Panos Technical Page ii Issue D Provisional Introduction A number of compiled languages have been or are being implemented on Acorn products based on the National Semiconductor 32000-series microprocessors. These include Algol 68, BCPL, C, FORTRAN-77, IMP, Modula-2 and Pascal.
    [Show full text]
  • Cambridge Computing
    CAMBRIDGE COMPUTING The First 75 Years Haroon Ahmed Computer Laboratory CAMBRIDGE COMPUTING Th e First 75 Years CAMBRIDGE COMPUTING Th e First 75 Years Haroon Ahmed © 2013 Cambridge Computer Laboratory and Third Millennium Publishing Ltd First published in 2013 by Third Millennium Publishing Limited, a subsidiary of Third Millennium Information Limited 2–5 Benjamin Street London UK EC1M 5QL www.tmiltd.com ISBN 978 1 906507 83 1 All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or any storage or retrieval system, without permission in writing from the publisher. British Library Cataloguing in Publication Data: A CIP catalogue record for this book is available from the British Library. Written by Haroon Ahmed Photography by Alan Davidson Managing Editor, Susan Millership Editorial assistance by Neil Burkey Designed by Matthew Wilson Production by Bonnie Murray Reprographics by Studio Fasoli, Italy Printed by Gorenjski Tisk, Slovenia Contents Preface 6 Foreword 8 1 Babbage’s ‘Magical Machines’ 10 2 The Genesis of the Computer Laboratory 20 3 Maurice Wilkes: Computer Pioneer 34 4 Maurice Wilkes and the EDSACs 44 5 Maurice Wilkes: New Directions of Research and the End of an Era 66 6 Computing for All: Networking the University from 84 EDSAC Users to Desktops and Laptops – David Hartley 7 Spreading the Word: Teaching Computer Science 94 and Technology – Peter Robinson 8 The Computer Laboratory, 1980–2012: 104 The ‘Needham Years’ and the Modern Era 9 Entrepreneurs, Spinning Out, Making Money and 122 Linking with Industry 10 The Computer Laboratory on its 75th Birthday: 142 A Centre of Research Excellence Bibliography 162 List of Subscribers 166 Index 170 Acknowledgements and Picture Credits 176 Preface ambridge Computing is an illustrated history celebrating the 75th anniversary of the foundation of Cthe Computer Laboratory on 14 May 1937 and marks the 100th anniversary of the birth of Professor Sir Maurice Wilkes on 26 June 1913.
    [Show full text]
  • TOWARDS a MACHINE-INDEPENDENT TRANSPUT SECTION J.C. Van Vliet, Mathematisch Centrum, Amsterdam Abstract If the Transput Section
    TOWARDS A MACHINE-INDEPENDENT TRANSPUT SECTION J.C. van Vliet, Mathematisch Centrum, Amsterdam Abstract If the transput section of an ALGOL-68 compiler is to be portable, it must be described in such a way that it is clear which aspects are machine-dependent, and which are not. There should be a clear set of primitives underlying the transput. In this report, a description is proposed which can really be used as an implementation model: the transput is described in pseudo-ALGOL 68, except for the underlying primitives, whose semantics are given in some kind of formalized English. The state of this model is by no means definitive, but may serve as a start for further discussion. I. Introduction In the Revised Report on the Algorithmic Language ALGOL 68 [1] (hence- forward referred to as the Report), Chapter 10 deals with the standard en- vironment. This standard environment is described in pseudo-ALGOL 68 and comprises two main components: a collection of (mainly mathematical) func- tions and operations, and the transput (i.e., input and output). The stan- dard environment is part of the run-time system of an ALGOL-68 compiler. One of the main objectives of the ALGOL-68 compiler that is being developed at the Mathematical Centre is portability. Several aspects can be distinguished: - for a compiler to be portable, the language in which the compiler is written must be portable; - there shouldbe aclear interface with the machine on which the lan- guage is implemented; this interface should be independent of that specific machine; - the run-time system should be easy transportable.
    [Show full text]
  • C Session Chair: Brent Hailpern
    XlV C Session Chair: Brent Hailpern THE DEVELOPMENT OF THE C PROGRAMMING LANGUAGE Dennis M. Ritchie AT&T Bell Laboratories Murray Hill, NJ 07974 USA ABSTRACT The C programming language was devised in the early 1970s as a system implementation language for the nascent Unix operating system. Derived from the typeless language BCPL, it evolved a type structure; created on a tiny machine as a tool to improve a meager programming environment, it has become one of the dominant languages of today. This paper studies its evolution. CONTENTS 14.1 Introduction 14.2 History: The Setting 14.3 Origins: The Languages 14.4 More History 14.5 TbeProblems of B 14.6 Embryonic C 14.7 Neonatal C 14.8 Portability 14.9 Growth in Usage 14.10 Standardization 14.11 Successors 14.12 Critique 14.13 Whence Success7 Acknowledgments References 14.1 INTRODUCTION This paper is about the development of the C programming language, the influences on it, and the conditions under which it was created. For the sake of brevity, I omit full descriptions of C itself, its parent B [Johnson 1973], and its grandparent BCPL [Richards 1979], and instead concentrate on characteristic elements of each language and how they evolved. 671 DENNIS M. RITCHIE C came into being in the years 1969-1973, in parallel with the early development of the Unix operating system; the most creative period occurred during 1972. Another spate of changes peaked between 1977 and 1979, when portability of the Unix system was being demonstrated. In the middle of this second period, the first widely available description of the language appeared: The C Programming Language, often called the "white book" or "K&R" [Kernighan 1978], Finally, in the middle 1980s, the language was officially standardized by the ANSI X3J11 committee, which made further changes.
    [Show full text]
  • Maurice Vincent Wilkes
    Maurice Vincent Wilkes Born June 26, 1913, Dudley, Worcestshire, England, director of the Cambridge Computer Laboratory throughout the whole development of stored program computers starting with EDSAC; inventor of labels, macros, and microprogramming; with David Wheeler and Stanley Gill, the inventor of a programming system based on subroutines. Education: St. John's College, Cambridge, 1931-1934; PhD, Cambridge University, 1936. Professional Experience: Cambridge University: university demonstrator, Mathematical Laboratory, 1937, member of staff, Mathematical Laboratory (later the Computer Laboratory), 1937-1939, head, Mathematical Laboratory, 1945-1980, fellow, St. John's College, 1950-present, professor of computer technology, 1965-1980, emeritus professor, 1980-1989; senior consulting engineer, Digital Equipment Corp., Maynard, Mass., 1980-1986; adjunct professor, electrical engineering and computer science, MIT, 1981-1985; Olivetti Research Board: member for research strategy, 1986-1989, adviser on research strategy, 1989-present. Honors and Awards: fellow, Royal Society, 1956; first president, British Computer Society, 1957-1960; ACM Turing Award, 1967; Harry Goode Memorial Award, AFIPS, 1968; distinguished fellow, British Computer Society, 1973; member, Fellowship of Engineering, London, 1976; foreign associate, US National Academy of Engineering, 1977; foreign corresponding member, Royal Spanish Academy of Sciences, 1979; foreign associate, US National Academy of Sciences, 1980; ACM/IEEE Eckert- Mauchly Award, 1980; IEEE Computer Society Pioneer Award, 1980; McDowell Award, IEEE Computer Society, 1981; Faraday Medal, IEE, London, 1981; Pender Award, University of Pennsylvania, 1982; C&C Prize, Tokyo, 1988; ITALGAS Prize for Research and Innovation,1 1991; Kyoto Prize, 1992; Honorary Degrees: Universities of Newcastle, Hull, Kent, London, Amsterdam, Munich, Bath, Linköping, and Cambridge; fellow, ACM, 1994.
    [Show full text]
  • DISCLAIMER the Contents of This Document Are Intended for Leaning Purposes at the Undergraduate Level
    CSC 311 SURVEY OF PROGRAMMING LANGUAGES DISCLAIMER The contents of this document are intended for leaning purposes at the undergraduate level. The materials are from different sources including the internet and the contributors do not in any way claim authorship or ownership of them. TOPIC: MODULES IN PROGRAMMING LANGUAGES LECTURE TWELVE Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality. A module interface expresses the elements that are provided and required by the module. The elements defined in the interface are detectable by other modules. The implementation contains the working code that corresponds to the elements declared in the interface. Modular programming is closely related to structured programming and object-oriented programming, all having the same goal of facilitating construction of large software programs and systems by decomposition into smaller pieces, and all originating around the 1960s. While historically usage of these terms has been inconsistent, today "modular programming" refers to high-level decomposition of the code of an entire program into pieces: structured programming to the low-level code use of structured control flow, and object-oriented programming to the data use of objects, a kind of data structure. In object-oriented programming, the use of interfaces as an architectural pattern to construct modules is known as interface-based programming. Contents 1 Terminology 2 Language support 3 Key aspects 4 History 7 References Terminology The term assembly (as in .NET languages like C#, F# or Visual Basic .NET) or package (as in Dart, Go or Java) is sometimes used instead of module.
    [Show full text]