A history of (Nordic) compilers and autocodes
|
|
|
- William Webster
- 10 years ago
- Views:
Transcription
1 A history of (Nordic) compilers and autocodes Peter Sestoft Copenhagen Tech Polyglot Meetup 1
2 The speaker MSc 1988 computer science and mathematics and PhD 1991, DIKU, Copenhagen University KU, DTU, KVL and ITU; and AT&T Bell Labs, Microsoft Research UK, Harvard University Programming languages, software development,... Open source software Moscow ML implementation, 1994 C5 Generic Collection Library, with Niels Kokholm, 2006 Funcalc spreadsheet implementation, , 2005, 2015? 2004 &
3 Current obsession: a new ITU course 3
4 The future is parallel and functional Classic imperative for-loop to count primes: int count = 0; for (int i=0; i<range; i++) if (isprime(i)) count++; Sequential functional Java 8 stream: IntStream.range(0, range).filter(i -> isprime(i)).count() Parallel functional stream: IntStream.range(0, range).parallel().filter(i -> isprime(i)).count() i7: 9.9 ms AMD: 40.5 ms i7: 9.9 ms AMD: 40.8 ms i7: 2.8 ms AMD: 1.7 ms i7: 3.6 x speedup AMD: 24.2 x speedup for free 4
5 Outline What is a compiler? Genealogies of languages and of early computers Knuth's survey of early autoprogramming systems Lexing and parsing Compilation of expressions FORTRAN I in the USA Algol 60 in Europe Early Nordic autocodes and compilers (Intermediate languages) (Optimization) (Flow analysis) (Type systems) (Compiler generators) The nuclear roots of object-oriented programming 5
6 What is a compiler? and autocode? for (int i=0; i<n; i++) sum += sqrt(arr[i]); C language source program clang LBB0_1: movl -28(%rbp), %eax // i movl -4(%rbp), %ecx // n cmpl %ecx, %eax jge LBB0_4 // if i >= n, return movslq -28(%rbp), %rax // i movq -16(%rbp), %rcx // address of arr[0] movsd (%rcx,%rax,8), %xmm0 // arr[i] callq _sqrt // sqrt movsd -24(%rbp), %xmm1 // sum addsd %xmm0, %xmm1 // sum +... movsd %xmm1, -24(%rbp) // sum =... movl -28(%rbp), %eax // i addl $1, %eax // i + 1 movl %eax, -28(%rbp) // i =... jmp LBB0_1 // loop again x86 machine code From Aho et al autocode (early compilers) 6
7 Conceptual phases of a compiler From Aho et al 7
8 Genealogy of programming languages LISP Dahl & Nygaard, NO PROLOG SMALLTALK SASL ML SCHEME HASKELL STANDARD ML CAML LIGHT OCAML ERLANG GJ BETA JAVA C# F# Scala C# 2 C# 4 Java 5 VB.NET 10 Java 8 Naur, DK SIMULA VISUAL BASIC ALGOL 68 C++ ALGOL CPL BCPL B C BASIC PASCAL ADA ADA95 ADA2005 COBOL FORTRAN90 FORTRAN2003 FORTRAN FORTRAN Backus, US 8
9 Genealogy of Nordic computers IBM 704 FERRANTI MERCURY MANCHESTER MARK I DASK BESM I SARA EDSAC IBM 701 FACIT IAS design IAS BESK SMIL EDVAC design EDVAC UNIVAC HARVARD MARK I ENIAC Stockholm Lund Oslo Stockholm Stockholm Copenhagen 9
10 Stored program computers Programs and data stored in the same way EDVAC and IAS designs ("von Neumann") 1945 So: program = data So a program can process another program This is what a compiler or assembler does Also, a program can modify itself at runtime Used for array indexing in IAS, EDSAC, BESK,... Used for subroutine return, EDSAC, the "Wheeler jump" Modern machines use index registers For both array indexing and return jumps Invented in Manchester Mark I, 1949 Adopted in the Copenhagen DASK
11 A history of the history of... Fritz Bauer, Munich: Historical remarks on compiler construction (1974) Many references to important early papers USSR addendum by Ershov in 2 nd printing (1976) Opening quote: Bauer:1974:HistoricalRemarks Ershov:1976:Addendum Bauer:1974:HistoricalRemarks 11
12 Some older histories of... Knuth:1962:AHistory Knuth: A history of writing compilers (1962) Few references, names and dates, mostly US: Jones: A survey of automatic coding techniques for digital computers, MIT 1954 Also lists people interested in automatic coding Only US and UK: Cambridge and Manchester Jones:1954:ASurvey 12
13 Knuth 1977: The early development... Knuth:1977:TheEarly Ignores the Nordic countries X=int, F=float, S=scaled A... F = much... little 13
14 Adding the Nordics and Algol, Simula 14
15 History: lexing and parsing Initially ad hoc Table-driven/automata methods Regular expressions, context-free grammars Finite state automata and pushdown automata Knuth LR parsing 1965 Gries operator grammars 1968 Lexer and parser generator tools Lex (Lesk 1975) and Yacc (Johnson 1975) Samelson:1960:SequentialFormula Irons:1961:ASyntax Naur:1963:TheDesign1 Knuth:1965:OnThe Gries:1968:UseOf LR dominated for a while LL back in fashion today: Antlr, Coco/R, parser combinators, packrat parsers 15
16 Lewis, Rosenkrantz, Stearns: Compiler design theory, pages about lexing and parsing 30 pages not about lexing and parsing Historically, too much emphasis on parsing? Because it was formalizable and respectable? But also beautiful relations to complexity and computability... 16
17 History: compilation of expressions Rutishauser 1952 (not impl.) Translating arithmetic expressions to 3-addr code Infix operators, precedence, parentheses Repeated scanning and simplification Boehm:1954:CalculatricesDigitales Böhm 1952 (not impl.) Knuth:1977:TheEarly Single scan expression compilation also at ETHZ Fortran I, 1957 Baroque but simple treatment of precedence (Böhm &) Complex, multiple scans Samelson and Bauer 1960 One scan, using a stack ("cellar") at compile-time Floyd 1961 Rutishauser:1952:AutomatischeRechenplanfertigung Sheridan:1959:TheArithmetic Samelson:1960:SequentialFormula Floyd:1961:AnAlgorithm One left scan, one right scan, optimized code 17
18 Rutishauser, ETH Zürich 1952 Rutishauser:1952:AutomatischeRechenplanfertigung Multi-pass gradual compilation of expression Seems used also by First BESM-I Programming Programme, Ershov
19 Corrado Böhm, ETH Zürich 1951 Boehm:1954:CalculatricesDigitales An abstract machine, a language, a compiler Three-address code with indirect addressing Machine is realizable in hardware but not built Only assignments ; goto C is: Compiler written in the compiled language Single-pass compilation of fully paren. expressions Expression compiler transition table Implementation of transitions, goto 19
20 Bauer and Samelson, Munich 1957: Sequential formula translation Using two stacks for single-pass translation Takes operator precedence into account so unlike Böhm does not need full parenthetization Bauer:1957:VerfahrenZur 20
21 Bauer and Samelson's patent Bauer:1957:VerfahrenZur 21
22 History: Compilation techniques Single-pass table-driven with stacks Bauer and Samelson for Alcor Dijkstra 1960, Algol for X-1 Randell 1962, Whetstone Algol Single-pass recursive descent Lucas 1961, using explicit stack Hoare 1962, one procedure per language construct Multi-pass ad hoc Fortran I, 6 passes Multi-pass table-driven with stacks Naur 1962 GIER Algol, 9 passes Hawkins 1962 Kidsgrove Algol General syntax-directed table-driven Irons 1961 Algol for CDC 1604 Dijkstra:1961:Algol60Translation Randell:1964:WhetstoneAlgol Lucas:1961:TheStructure Hoare:1962:ReportOn Backus:1957:TheFortran Naur:1963:TheDesign2 Irons:1961:ASyntax 22
23 History: Run-time organization Early papers focus on translation Runtime data management was trivial, eg. Fortran I Algol: runtime storage allocation is essential Dijkstra: Algol for X-1 (1960) Runtime stack of procedure activation records Display, to access variables in enclosing scopes Also focus of Naur's Gier Algol papers, and Ekman's thesis on SMIL Algol Dijkstra:1960:RecursiveProgramming Naur:1963:TheDesign1 Naur:1963:TheDesign2 Design a runtime state structure (invariant) Compiler should generate code that Can rely on the runtime state invariant Must preserve the runtime state invariant Ekman:1962:KonstructionOch 23
24 Fortran I, 1957 John Backus and others at IBM USA Infix arithmetics, mathematical formulas Structurally very primitive language Simple function definitions, no recursion No procedures No scopes, no block structure Extremely ambitious compiler optimizations common subexpression elimination constant folding fast index computations: reduction in strength clever allocation of index registers Monte Carlo simulation of execution frequencies (!) Large and slow compiler, 8 cards/minute 24
25 Algol 60, chiefly Europe Dijkstra NL, Bauer DE, Naur DK, Hoare UK, Randell UK,... but also US, Beatiful "modern" programming language Procedures, functions and recursion Procedures as parameters to procedures Block structure, nested scopes Compilers generated relatively slow code Few optimizations 25
26 Early Nordic hardware and autocodes BESK, Sweden 1953, government research By Stemme and others, based on IAS machine design 4 bit binary-only code (Dahlquist, Dahlstrand) FA-4 and FA-5 autocode, Hellström 1956, loader Alfakod, symbolic no infixes, Riesel et al 1958 Ferranti Mercury, Norway 1957, defense research Commercial, first machine delivered, 1m NOK MAC, Mercury Autocode by O-J Dahl, arrays, indexing, infix Not used elsewhere Independent of Brooker, Manchester Autocode, DASK, Denmark 1958, government research By Scharøe and others, based on BESK + index registers Naur EDSAC-inspired symbolic loader, 5 bit, 1957 No need for a more complex autocode Instead an Algol 60 compiler (though without recursion) 26
27 Example problem Compute the polynomial f(x) = a 0 x 8 + a 1 x a 7 x + a 8 using Horner's rule In Java or C or C++ or C# anno 2014: res := 0.0; for (i = 0; i <= 8; i++) res = a[i] + x * res; 27
28 BESK FA-5 and Alfakod, Stockholm Input on 4-bit paper tape (hexadecimal) only Hellström & Dahlquist, FA Riesel et al, Alfakod 1957 Dahlstrand:2009:Minnen BESK hex. code 1953 FA Dahlquist:1956:KodningFor Selfmodifying Selfmodifying Hellstroem:1958:KodningMed A A204 FFF B 2034E C Alfakod 1958 Riesel:1958:AlfakodningFor NOL AR FIX 0,I 1 MUL X ADD Y/I ADX 1,I VMX 1,I,8 AAAOO 28
29 Ferranti Mercury, NDRE Oslo Dahl, MAC=Mercury Autocode 1957 Note Infix arithmetic, logical expressions Symbolic labels such as Real and complex numbers, arrays (1D, 2D, 3D) Array index expressions Un1 with optimization 0 -> A 0 -> n1 Un1 + X A -> A (1 n > n1 n1 < 9? JUMP1 (1 Dahl:1957:AutocodingFor Dahl:1957:MultipleIndex 29
30 DASK loader, Copenhagen Naur, EDSAC-inspired external code, 1957 Naur was unimpressed with the BESK code: Naur:1957:DaskOrdrekode DASK code 1958 Andersen:1958:LaerebogI DASK Algol 1961 Naur:1964:RevisedReport A 35 ; IRB := A 44 ; MR := B 35 ; IRB := IRB A 0A ; AR := x * MR B 00 ; AR:=AR+[118+IRB] A 33 ; if IRB<>0 goto 202 res := 0; for i := 0 until 8 do res := a[i] + x * res; Index register, not self-modifying 30
31 Early Nordic (Algol) compilers Naur, Jensen, Mondrup, in Copenhagen DASK Algol 1961, no recursion GIER Algol 1962 Dahlstrand and Laryd, in Gothenburg (Facit) FACIT Algol 1961, no recursion, based on Naur... SAAB Algol 1963 Ekman, in Lund SMIL Algol 1962, no recursion Dahl and Nygaard, in Oslo Simula 1965, based on Univac 1107 Algol from US First object-oriented language Extremely influential: Smalltalk, C++, Java, C#... 31
32 The nuclear origins of OO Garwick, Nygaard, Dahl at NDRE, the Norwegian Deference Research Establishment Norway 6 th country to have a nuclear reactor in November 1951 six years before Risø in Denmark Garwick and Nygaard computed parts of the reactor design w Monte Carlo methods to simulate neutron flow chiefly hand calculators Ole-Johan Dahl hired 1952 Randers:1946:RapportTil Forlan:1987:PaaLeiting Forlan:1997:NorwaysNuclear Holmevik:1994:CompilingSimula Holmevik:2005:InsideInnovation Garwick:1947:Kritisk Garwick:1951:BeregningAv Nygaard:1952:OnThe developed "programs" for modified Bull mech. calc. from 1957 developed MAC autocode for Ferranti 32
33 Norway: Nuclear and computing Garwick:1947:Kritisk Holmevik:2005:InsideInnovation Forlan:1997:NorwaysNuclear Forlan:1987:PaaLeiting Randers:1946:RapportTil 33
34 Recommended reading Secondary sources Knuth:1977:TheEarly Bauer:1974:HistoricalRemarks Ershov:1976:Addendum Randell:1964:Algol60Implementation sec 1.2, 1.3 Primary sources Backus:1957:TheFortran Samelson:1960:SequentialFormula Dijkstra:1960:RecursiveProgramming Hoare:1962:ReportOn Naur:1963:TheDesign1 Naur:1965:CheckingOf Randell:1964:Algol60Implementation 34
35 Thanks to Christian Gram, Dansk Datahistorisk Forening Robert Glück, DIKU, Copenhagen University Birger Møller-Petersen, Oslo University Knut Hegna, Oslo University Library Bjørg Asphaug, NDRE Library, Oslo Ingemar Dahlstrand, Lund University Torgil Ekman, Lund University Mikhail Bulyonkov, Russian Ac. Sci. Novosibirsk Christine di Bella, IAS Archives, Princeton George Dyson, Bellingham WA, USA Peter du Rietz, Tekniska Museet, Stockholm Hans Riesel, Uppsala University Dag Belsnes, Oslo Peter Naur, Copenhagen University Norman Sanders, UK 35
A history of compilers
A history of compilers Peter Sestoft [email protected] Dansk Datahistorisk Forening 2014-01-23 v 1.0 1 The speaker MSc 1988 computer science and mathematics and PhD 1991, DIKU, Copenhagen University KU, DTU,
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
Principles of Programming Languages Topic: Introduction Professor Louis Steinberg
Principles of Programming Languages Topic: Introduction Professor Louis Steinberg CS 314, LS,LTM: L1: Introduction 1 Contacts Prof. Louis Steinberg lou @ cs.rutgers.edu x5-3581 401 Hill TA: to be announced
Functional Programming
FP 2005 1.1 3 Functional Programming WOLFRAM KAHL [email protected] Department of Computing and Software McMaster University FP 2005 1.2 4 What Kinds of Programming Languages are There? Imperative telling
Language Processing Systems
Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to [email protected] Course materials at www.u-aizu.ac.jp/~hamada/education.html
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)
High-Level Programming Languages Nell Dale & John Lewis (adaptation by Michael Goldwasser) Low-Level Languages What are disadvantages of low-level languages? (e.g., machine code or assembly code) Programming
Programming Language Concepts for Software Developers
Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark [email protected] Abstract This note describes and motivates our current plans for an undergraduate
CSC 272 - Software II: Principles of Programming Languages
CSC 272 - Software II: Principles of Programming Languages Lecture 1 - An Introduction What is a Programming Language? A programming language is a notational system for describing computation in machine-readable
How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer
How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language
CSE 307: Principles of Programming Languages
Course Organization Introduction CSE 307: Principles of Programming Languages Spring 2015 R. Sekar Course Organization Introduction 1 / 34 Topics 1. Course Organization Info and Support Course Description
1.1 WHAT IS A PROGRAMMING LANGUAGE?
1 INTRODUCTION 1.1 What is a Programming Language? 1.2 Abstractions in Programming Languages 1.3 Computational Paradigms 1.4 Language Definition 1.5 Language Translation 1.6 Language Design How we communicate
Programming Language Pragmatics
Programming Language Pragmatics THIRD EDITION Michael L. Scott Department of Computer Science University of Rochester ^ШШШШШ AMSTERDAM BOSTON HEIDELBERG LONDON, '-*i» ЩЛ< ^ ' m H NEW YORK «OXFORD «PARIS»SAN
Languages september 12, 2015 Éric Lévénez 1999-2015 <http://www.levenez.com/lang/> FORTRAN III end-1958 FORTRAN II 1957. FORTRAN I october 1956
1954 1957 FORTRAN november 1954 FORTRAN I october 1956 FORTRAN II 1957 FORTRAN III end-1958 B-O 1957 Flow-Matic 1958 COBOL 1959 JOVIAL 1959 IAL 1958 ALGOL 58 1958 Lisp 1958 Lisp 1 1959 Languages september
Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages
Announcements Programming Languages! Monday evening GBA section has been shut down " If you were assigned to this section, please find a different section " If you cannot attend a different section, please
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
What is a programming language?
Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? Artificial language" Computers" Programs" Syntax" Semantics" What is a programming language?...there
Evolution of the Major Programming Languages
2 Evolution of the Major Programming Languages 2.1 Zuse s Plankalkül 2.2 Minimal Hardware Programming: Pseudocodes 2.3 The IBM 704 and Fortran 2.4 Functional Programming: LISP 2.5 The First Step Toward
Semester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
Implementing Programming Languages. Aarne Ranta
Implementing Programming Languages Aarne Ranta February 6, 2012 2 Contents 1 What is a programming language implementation 11 1.1 From language to binary..................... 11 1.2 Levels of languages........................
The Evolution of Programming Languages
The Evolution of Programming Languages Course Notes for COMP 348 and COMP 6411 These notes may be copied for students who are taking either COMP 348 Principles of Programming Languages or COMP 6411 Comparative
CSE 130 Programming Language Principles & Paradigms
CSE 130 Programming Language Principles & Paradigms Thomas A. Powell [email protected] Housekeeping Syllabus review Direct class page link http://www.pint.com/classes/cse130 Updated syllabus, notes, homework
Course Goal CMSC 330: Organization of Programming Languages. Studying Programming Languages. All Languages Are (Kind of) Equivalent.
Course Goal CMSC 330: Organization of Programming Languages Introduction Instructors: Michael Hicks and Anwar Mamat Learn how programming languages work Broaden your language horizons Different programming
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation
Lecture Outline Programming Languages CSCI-4430 & CSCI-6430, Spring 2016 www.cs.rpi.edu/~milanova/csci4430/ Ana Milanova Lally Hall 314, 518 276-6887 [email protected] Office hours: Wednesdays Noon-2pm
Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages
Introduction Compiler esign CSE 504 1 Overview 2 3 Phases of Translation ast modifled: Mon Jan 28 2013 at 17:19:57 EST Version: 1.5 23:45:54 2013/01/28 Compiled at 11:48 on 2015/01/28 Compiler esign Introduction
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
Concepts and terminology in the Simula Programming Language
Concepts and terminology in the Simula Programming Language An introduction for new readers of Simula literature Stein Krogdahl Department of Informatics University of Oslo, Norway April 2010 Introduction
GREAT PAPERS IN COMPUTER SCIENCE: A RETROSPECTIVE
Journal of Scientific and Practical Computing Vol. 2, No. 1 (2008) 31 35 Noted Reviews GREAT PAPERS IN COMPUTER SCIENCE: A RETROSPECTIVE PHILLIP A. LAPLANTE, PE, PHD Professor of Software Engineering,
History of Programming Languages
History History of Programming Languages Early History : The first programmers The 1940s: Von Neumann and Zuse The 1950s: The First Programming Language The 1960s: An Explosion in Programming languages
Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com
CSCI-UA.0201-003 Computer Systems Organization Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com Some slides adapted (and slightly modified)
Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World
Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify
1 Introduction. 2 An Interpreter. 2.1 Handling Source Code
1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons
Compiler I: Syntax Analysis Human Thought
Course map Compiler I: Syntax Analysis Human Thought Abstract design Chapters 9, 12 H.L. Language & Operating Sys. Compiler Chapters 10-11 Virtual Machine Software hierarchy Translator Chapters 7-8 Assembly
Computer Science. Requirements for the Major (updated 11/13/03)
Computer Science Faculty: Knox Chair; Komagata,, Martinovic, Neff, Sampath, Wolz Faculty from mathematics with joint teaching appointments in computer science: Conjura, Greenbaun, Iannone The computer
Computer Science Theory. From the course description:
Computer Science Theory Goals of Course From the course description: Introduction to the theory of computation covering regular, context-free and computable (recursive) languages with finite state machines,
Programming Languages
Programming Languages In the beginning To use a computer, you needed to know how to program it. Today People no longer need to know how to program in order to use the computer. To see how this was accomplished,
Computer System: User s View. Computer System Components: High Level View. Input. Output. Computer. Computer System: Motherboard Level
System: User s View System Components: High Level View Input Output 1 System: Motherboard Level 2 Components: Interconnection I/O MEMORY 3 4 Organization Registers ALU CU 5 6 1 Input/Output I/O MEMORY
Ch. 10 Software Development. (Computer Programming)
Ch. 10 Software Development (Computer Programming) 1 Definitions Software or Program Instructions that tell the computer what to do Programmer Someone who writes computer programs 2 Instruction Set A vocabulary
A Programming Language Where the Syntax and Semantics Are Mutable at Runtime
DEPARTMENT OF COMPUTER SCIENCE A Programming Language Where the Syntax and Semantics Are Mutable at Runtime Christopher Graham Seaton A dissertation submitted to the University of Bristol in accordance
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
COURSE CODE: CSC 411 Organization of Programming Languages
COURSE CODE: CSC 411 COURSE TITLE: Organization of Programming Languages NUMBER OF Units: 3 Units Course Duration: Three hours per week COURSE DETAILS: Course Lecturer: Dr. O. Folorunso B.Sc(UNAAB)., M.Sc(UNILAG).,
Visiting Scholar at the Nordic Centre Fudan University. www.nordiccentre.net
Visiting Scholar at the Nordic Centre Fudan University www.nordiccentre.net The Nordic Centre in Fudan University is a collaboration between our 26 Nordic member universities, the Nordic Institute of Asian
Compiler Construction
Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation
Tail Recursion Without Space Leaks
Tail Recursion Without Space Leaks Richard Jones Computing Laboratory University of Kent at Canterbury Canterbury, Kent, CT2 7NF rejukc.ac.uk Abstract The G-machine (Johnsson, 1987; Peyton Jones, 1987)
Computer Architecture Lecture 2: Instruction Set Principles (Appendix A) Chih Wei Liu 劉 志 尉 National Chiao Tung University [email protected].
Computer Architecture Lecture 2: Instruction Set Principles (Appendix A) Chih Wei Liu 劉 志 尉 National Chiao Tung University [email protected] Review Computers in mid 50 s Hardware was expensive
1 Classical Universal Computer 3
Chapter 6: Machine Language and Assembler Christian Jacob 1 Classical Universal Computer 3 1.1 Von Neumann Architecture 3 1.2 CPU and RAM 5 1.3 Arithmetic Logical Unit (ALU) 6 1.4 Arithmetic Logical Unit
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
Parsing Expression Grammar as a Primitive Recursive-Descent Parser with Backtracking
Parsing Expression Grammar as a Primitive Recursive-Descent Parser with Backtracking Roman R. Redziejowski Abstract Two recent developments in the field of formal languages are Parsing Expression Grammar
Artificial Intelligence. Class: 3 rd
Artificial Intelligence Class: 3 rd Teaching scheme: 4 hours lecture credits: Course description: This subject covers the fundamentals of Artificial Intelligence including programming in logic, knowledge
Compiler and Language Processing Tools
Compiler and Language Processing Tools Summer Term 2011 Prof. Dr. Arnd Poetzsch-Heffter Software Technology Group TU Kaiserslautern Prof. Dr. Arnd Poetzsch-Heffter Compilers 1 Outline 1. Language Processing
Asogwa Tochukwu Chijindu Department of Computer Engineering, Enugu State University of Science and Technology(ESUT), Enugu, Nigeria.
Evolutionary Trend In The Development Of Computer Programming Languages And Concepts Dr.Onu Fergus.U. Department of Computer Science, Ebonyi State University, Abakaliki, Nigeria. Asogwa Tochukwu Chijindu
Instruction Set Architecture
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture Randal E. Bryant adapted by Jason Fritts http://csapp.cs.cmu.edu CS:APP2e Hardware Architecture - using Y86 ISA For learning aspects
McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0
1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level
Lexical Analysis and Scanning. Honors Compilers Feb 5 th 2001 Robert Dewar
Lexical Analysis and Scanning Honors Compilers Feb 5 th 2001 Robert Dewar The Input Read string input Might be sequence of characters (Unix) Might be sequence of lines (VMS) Character set ASCII ISO Latin-1
Programming language concepts
Programming language concepts Third edition Carlo Ghezzi, Politecnico di Milano Mehdi Jazayeri, Technische Universität Wien John Wiley & Sons New York Chichester Brisbane Toronto Singapore 2 Chap. Copyright
Objects for lexical analysis
Rochester Institute of Technology RIT Scholar Works Articles 2002 Objects for lexical analysis Bernd Kuhl Axel-Tobias Schreiner Follow this and additional works at: http://scholarworks.rit.edu/article
Lecture 27 C and Assembly
Ananda Gunawardena Lecture 27 C and Assembly This is a quick introduction to working with x86 assembly. Some of the instructions and register names must be check for latest commands and register names.
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Chapter 6: Programming Languages
Chapter 6: Programming Languages Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 6: Programming Languages 6.1 Historical Perspective
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
COMPUTER SCIENCE. 1. Computer Fundamentals and Applications
COMPUTER SCIENCE 1. Computer Fundamentals and Applications (i)generation of Computers, PC Family of Computers, Different I/O devices;introduction to Operating System, Overview of different Operating Systems,
02 B The Java Virtual Machine
02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual
Programming Languages
Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately
Early Developments: From Difference Engine to IBM 701
1 Early Developments: From Difference Engine to IBM 701 Computer Science & Artificial Intelligence Lab M.I.T. Based on the material prepared by and Krste Asanovic Charles Babbage 1791-1871 Lucasian Professor
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Object-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
Compilers I - Chapter 4: Generating Better Code
Compilers I - Chapter 4: Generating Better Code Lecturers: Paul Kelly ([email protected]) Office: room 304, William Penney Building Naranker Dulay ([email protected]) Materials: Office: room 562 Textbook
A Unified View of Virtual Machines
A Unified View of Virtual Machines First ACM/USENIX Conference on Virtual Execution Environments J. E. Smith June 2005 Introduction Why are virtual machines interesting? They allow transcending of interfaces
Computer Science/Mathematics Curriculum Pepperdine University
Computer Science/Mathematics Curriculum Pepperdine University Background Seaver College is the undergraduate liberal arts college of Pepperdine University. This document describes the curriculum for the
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
Syntaktická analýza. Ján Šturc. Zima 208
Syntaktická analýza Ján Šturc Zima 208 Position of a Parser in the Compiler Model 2 The parser The task of the parser is to check syntax The syntax-directed translation stage in the compiler s front-end
Parameter passing in LISP
Parameter passing in LISP The actual parameters in a function call are always expressions, represented as lists structures. LISP provides two main methods of parameter passing: Pass/Call-by-value. The
CSE 401 Compilers. Overview and Administrivia Hal Perkins Winter 2015. UW CSE 401 Winter 2015 A-1
CSE 401 Compilers Overview and Administrivia Hal Perkins Winter 2015 UW CSE 401 Winter 2015 A-1 Agenda IntroducCons Administrivia What s a compiler? Why you want to take this course Some other Cme: a bit
Parsing Technology and its role in Legacy Modernization. A Metaware White Paper
Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks
Assembly Language: Function Calls" Jennifer Rexford!
Assembly Language: Function Calls" Jennifer Rexford! 1 Goals of this Lecture" Function call problems:! Calling and returning! Passing parameters! Storing local variables! Handling registers without interference!
Datavetenskapligt Program (kandidat) Computer Science Programme (master)
Datavetenskapligt Program (kandidat) Computer Science Programme (master) Wolfgang Ahrendt Director Datavetenskap (BSc), Computer Science (MSc) D&IT Göteborg University, 30/01/2009 Part I D&IT: Computer
CSCA0201 FUNDAMENTALS OF COMPUTING. Chapter 1 History of Computers
CSCA0201 FUNDAMENTALS OF COMPUTING Chapter 1 History of Computers 1 Topics 1. Definition of computer 2. Earliest computer 3. Computer History 4. Computer Generations 2 Definition of Computer Computer is
COS 301 Programming Languages
Preliminaries COS 301 Programming Languages Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories
CURRICULUM VITAE Herbert L. Dershem
CURRICULUM VITAE Visiting Professor of Computer Science United States Air Force Academy USAF Academy, CO 80840 Phone: (719) 472-3590 Education: B.S. University of Dayton, 1965 M.S. (Computer Science) Purdue
Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students
Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent
Do general-purpose programming languages have a future?
Do general-purpose programming languages have a future? Bjarne Stroustrup Texas A&M University (and AT&T Research) http://www.research.att.com/~bs Abstract As the computing world matures, the roles of
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
Department of Computer Science
The University of Texas at San Antonio 1 Department of Computer Science The Department of Computer Science offers a Bachelor of Science degree in Computer Science and a Minor in Computer Science. Admission
Compiler Construction
Compiler Construction Niklaus Wirth This is a slightly revised version of the book published by Addison-Wesley in 1996 ISBN 0-201-40353-6 Zürich, February 2014 Preface This book has emerged from my lecture
Division of Mathematical Sciences
Division of Mathematical Sciences Chair: Mohammad Ladan, Ph.D. The Division of Mathematical Sciences at Haigazian University includes Computer Science and Mathematics. The Bachelor of Science (B.S.) degree
Intel Assembler. Project administration. Non-standard project. Project administration: Repository
Lecture 14 Project, Assembler and Exam Source code Compiler phases and program representations Frontend Lexical analysis (scanning) Backend Immediate code generation Today Project Emma Söderberg Revised
Understanding Programming Languages
Understanding Programming Languages M. Ben-Ari Weizmann Institute of Science Originally published by John Wiley & Sons, Chichester, 1996. Copyright c 2006 by M. Ben-Ari. You may download, display and print
