(Anmerkungen zur) Geschichte der Programmiersprachen

Size: px
Start display at page:

Download "(Anmerkungen zur) Geschichte der Programmiersprachen"

Transcription

1 (Anmerkungen zur) Geschichte der Programmiersprachen Prof. Dr. Hans J. Schneider Department Informatik (Informatik 2) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2012/13 I. Die frühe Geschichte der Programmiersprachen 1. Einleitung 2. Einige der ersten Sprachen 3. Strukturierung von Daten und Kontrollfluss 4. Bemühungen um Einheitlichkeit 5. Funktionale Programmierung II. Grundsätzliche Untersuchungen III. Beherrschung großer Systeme IV. Ergänzungen c Hans J. Schneider 2012

2 Lisp Prehistory John McCarthy: My desire for an algebraic list processing language for artificial intelligence work on the IBM 704 computer arose in the summer of 1956 during the Dartmouth Summer Research Project on Artificial Intelligence. 1 At that meeting, Newell, Shaw, and Simon presented IPL-2, a list processing language for the Johnniac computer (Rand Corp.). IPL (Information Processing Language) 2 Ed Feigenbaum reports: 3 In January 1956 Herb [Simon] walked into our seminar... : Over Christmas Allen Newell and I invented a thinking machine. They put together a paper program that got implemented in the language called IPL-I. It was the first list processing language, but it ran in their heads. A.C. Newell ( ) 1 J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp A. Newell/J.C. Shaw: Programming the logic theory machine, Proc. Western Joint Comp. Conf. 1957, pp L. Shusteck: An interview with Ed Feigenbaum, Comm. Assoc. Comp. Mach. 53, 6 (2010), pp Geschichte der Programmiersprachen 5.1

3 Lisp: Motivation Motivations for developing a language for the IBM 704: 1 IBM was undertaking to develop a program for proving theorems in plane geometry. The computer was available at Dartmouth. It was not then clear whether IBM s Fortran project would lead to a language within which list processing could be conveniently be carried out. McCarthy proceeded along the lines that led to the Advice Taker proposal in 1958: ( ) J. McCarthy representing information about the world by sentences in a suitable formal language, and a reasoning program that would decide what to do by drawing logical consequences. 1 The basic program will draw immediate conclusions from a list of premises. These conclusions will be either declarative or imperative sentences. When an imperative sentence is deduced the program takes a corresponding action. 2 1 J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp J. McCarthy: Programs with common sense, Symp. Mech. of Thought Processes, Nat. Phys. Lab., Teddington, 1958 Geschichte der Programmiersprachen 5.2

4 Prefix Notation Representing sentences by list structure seemed appropriate and a list processing language also seemed appropriate for programming the operations involved in deduction. This internal representation of symbolic information gives up the infix notation in favor of a notation that simplifies the task of programming the substantive computations, e.g., logical deduction, algebraic simplification, differentiation, integration. Thus most Lisp programs use a prefix notation for algebraic expressions, because they usually must determine the main connective before deciding what to do next. Comit, Formac, and Formula Algol all express the computations as operations on some approximation to the customary printed forms of symbolic expressions. Snobol operates on character strings but is neutral on how character strings are used to represent symbolic information. 1 J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp Geschichte der Programmiersprachen 5.3

5 Lists on the IBM 704 The first problem was how to do list structure in the IBM This computer had a 36 bit word, and two 15 bit parts, called the address and the decrement, were distinguished by special instructions for moving their contents to and from the 15 bit index registers. The address of the machine was 15 bits, so it was clear that list structure should use 15 bit pointers. Therefore, the compounds car, standing for Contents of the address part of register number, and its analog cdr were defined. The IBM 704 had instructions that made these operations easy to implement. Gelernter and Gerberich implemented the Fortran List Processing Language in connection with IBM s geometry project. 2 cons was made a function, not just a subroutine, permitting new expressions to be constructed out of subexpressions. No recursion, no conditional expressions. 1 J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp H. Gelernter/J.R. Hansen/C.L. Gerberich: A Fortran compiled list processing language, J. Assoc. Comput. Mach. 7, 2 (1960), pp Geschichte der Programmiersprachen 5.4

6 The Language Concept McCarthy introduced conditional expressions in connection with a set of chess legal move routines ( ) and proposed their use in Algol. 1 The program was written in Fortran for the IBM 704 at MIT. The IF statement provided in Fortran I and Fortran II was very awkward to use. This led to the invention of the true conditional expression. Differentiating algebraic expressions was chosen as a sample problem and led to the decisive innovations: 2 Writing recursive function definitions using conditional expressions. The maplist function. To use functions as argument, one needs a notation for functions: It seemed natural to use Church s λ-notation. ( I didn t understand the rest of his book, so I wasn t tempted to try to implement his more general mechanism. ) 1 J. McCarthy: Letter to the editor, Communicat. Associat. Comput. Mach. 2, 8 (1959) 2 J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp Geschichte der Programmiersprachen 5.5

7 LISP 1 The implementation of Lisp began in fall The original idea was to produce a compiler. In order to get good conventions for subroutine linking, stack handling, and erasure, the group started by hand-compiling various functions into assembly language. The programs were written in an informal notation called M- expressions intended to resemble Fortran as much as possible. The notation allowed conditional expressions, recursive functions, and the basic functions of Lisp. The M-notation was never fully defined, because representing Lisp functions by Lisp lists became the dominant feature when the interpreter later became available. I can t now remember whether the decision to use parenthesized list notation as the external form of Lisp data was made then or whether it had already been used in discussing the paper differentiation program. 1 J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp Geschichte der Programmiersprachen 5.6

8 LISP and Recursive Function Theory A milestone (1960): McCarthy s paper describing Lisp both as a programming language and as a formalism for doing recursive function theory. 1 Lisp s way of describing computable functions is much neater than the Turing machines or the general recursive definitions used in recursive function theory. 2 But recursive function theorists almost never have any reason to write particular recursive definitions. They are usually interested in the existence of functions with specific properties. One mathematical consideration was to express programs as applicative expressions built up from variables and constants using functions ( Pure Lisp ) allowing proofs of properties of programs using ordinary mathematical methods. 3 1 J. McCarthy: Recursive functions of symbolic expressions and their computation by machine, Part I, Communicat. Associat. Comput. Mach. 3, 4 (1960), pp Zur Entwicklung des Berechenbarkeitsbegriffs vergleiche man: U. Schöning/W. Thomas: Turings Arbeiten über Berechenbarkeit eine Einführung und Lesehilfe, Informatik Spektrum, 35, 4 (2012), pp Fans of other languages are challenged to write a program to concatenate lists and prove that the operation is associative. Geschichte der Programmiersprachen 5.7

9 Eval Another way to show that Lisp was neater than Turing machines was to write a universal Lisp function and show that it is briefer and more comprehensible than the description of a universal Turing machine: eval. Writing eval required inventing a notation representing Lisp functions as Lisp data, and such a notation was devised for the purposes of the paper with no thought that it would be used to express Lisp programs in practice. S.R. Russel noticed that eval could serve as an interpreter for Lisp, promptly hand coded it, and we now had a programming language with an interpreter. The unexpected appearance of an interpreter tended to freeze the form of the language, and some of the decisions made rather for the paper later proved unfortunate, e.g., cond leading to an unnecessary depth of parentheses. 1 J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp Geschichte der Programmiersprachen 5.8

10 From LISP 1 to LISP 1.5 Property lists The idea of providing each atom with a list of properties was one of the theoretical ideas of the Advice Taker. Insertion of elements in lists and their deletion Lisp contains them in the form of rplaca and rplacd pseudo-functions. Unfortunately, this facility coexists uneasily with shared list structure. Programs that use them cannot be conveniently represented in logic. Numbers treated by themselves to do efficient numerical computations. FUNARG The construct originated from an example where in modern terminology lexical scoping was wanted, and dynamic scoping was obtained. The FUNARG device that took the lexical environment along with the functional argument. Geschichte der Programmiersprachen 5.9

11 From LISP 1 to LISP 1.5 (II) PROG feature Lisp allows sequential programs written with assignments and gotos. The idea antedates that of having recursive function definition. The notation was definitively an afterthought and is far from optimal. FEXPRS / FSUBRS eval made possible functions that are not given their actual arguments but are given the expressions that evaluate to the arguments. Application: Functions that don t always evaluate all of their arguments. This facility resembles Algol s call-by-name, but is more flexible, because eval is explicitly available. Functions with variable number of arguments List of arguments instead of separate arguments. None of these features has been given mathematical semantics. 1 McCarthy, loc.cit. Geschichte der Programmiersprachen 5.10

12 Basic Program Structure 419 A Lisp main program has the relatively trivial form of a sequence of function subprogram definitions. Lisp functions are defined entirely as expressions. Each operator is a function which returns a value. There is no block structure or other complex syntactic organization. Lisp referencing is primarily based on the most recent association rule for nonlocal referencing, implemented using a simple linked list of current associations, the A-list, which is searched for the current association each time an identifier is referenced. Run-time program translation and execution are provided as primitives, and programs may be created and executed dynamically. 1 T.W. Pratt: Programming Languages - Design and Implementation, Prentice-Hall, Englewodd Cliffs, N.J., 1975, pp Geschichte der Programmiersprachen 5.11

13 Basic Program Structure (II) Data in Lisp are rather restricted. Atoms (symbols) and numbers are the basic elementary types. Linked lists and property lists (represented as a special case of linked lists) form the basic data structures. Example: Expanding a list of lists: 1 (DEFINE 2 ((LISTATOMS 3 (LAMBDA (X) 4 (COND ((NULL X) NIL) 5 ((ATOM (CAR X)) 6 (CONS (CAR X) (LISTATOMS (CDR X)))) 7 (T (APPEND (LISTATOMS (CAR X)) 8 (LISTATOMS (CDR X)))) 9 ))) ) ) 1 T.W. Pratt, loc.cit. Geschichte der Programmiersprachen 5.12

14 Property Lists Property lists are of the form: (p1 v1 p2 v2 p3 v3... pn vn) where the p s are atoms denoting properties, and the v s are values associated with those properties. Example: (AUTHOR TUCKER ISBN 007Y TITLE PROG_LANGUAGES) The quotation mark, the letter q in setq, and the function quote are used to distinguish explicitly between evaluated and unevaluated expressions. (quote is the opposite of eval.) Operations defined on property lists: (GET listname property) (PUT listname property value) (REMPROP listname property) 1 A.B. Tucker: Programming Languages, McGraw-Hill, New York, 1985 Geschichte der Programmiersprachen 5.13

15 Control Structure Lisp control structures are relatively simple. 1 The expressions used to construct programs are written in prefix form and may include conditional branching. The prog feature provides a simple structure for writing expressions in a sequence with provision for labels and gotos. Generator primitives are also provided for generating elements of lists in sequence. A macro allows a function to be automatically reinstantiated (or generated) in-line within the text of a program wherever it is needed. 2 (DEFUN name MACRO (parameter) e1 e2... en) The macro facility can be used to define control structures. (See: Definition of while in the examples.) 1 T.W. Pratt, loc.cit. 2 A.B. Tucker, loc.cit. Geschichte der Programmiersprachen 5.14

16 Beyond LISP 1.5 Limitations of Lisp most evident in the early 1960s: ultra-slow numerical computation inability to represent objects by blocks of registers lack of a good system for input-output of symbolic expressions These limitations were to be fixed in Lisp 2: Initially planned for the Q32 computer, built by IBM for military purposes, but never equipped with more than 48K words of memory. Alternatives: Development for IBM 360/67 and PDP-6 But: more expensive than expected, and so Lisp 2 was dropped. From a 1970s point of view, this was regrettable, because much more money has since been spent to develop Lisps with fewer features. Existence of an interpreter makes it particularly natural to use Lisp 1.5 in a time-sharing environment: A demonstration was made in 1960 (or 1961) on the IBM 704. Deutsch implemented the first interactive Lisp on the PDP-1 in J. McCarthy: History of Lisp, ACM SIGPLAN Not. 13, 8 (1978), pp Geschichte der Programmiersprachen 5.15

17 The Evolution of LISP: From Lisp 1.5 to PDP-6 Lisp During this period, Lisp spread rapidly to a variety of computers, either by bootstrapping from an existing Lisp or by a new implementation. Almost all of these implementations had a small hand-coded (assembly) core and a compiler; the rest of Lisp was written in Lisp and compiled. The PDP-6 and PDP-10 computers were, by design, especially suited for Lisp, with 36-bit words and 18-bit addresses. This allowed a cons cell - a pair of pointers or addresses - to be stored efficiently in a single word. There were half-word instructions that made manipulating the car and cdr of cons cells very fast. In 1965, virtually all of the Lisps in existence were identical or differed only in trivial ways. 1 G.L. Steele Jr./R.P. Gabriel: The evolution of Lisp, ACM SIGPLAN Not. 28, 3 (1993), pp Geschichte der Programmiersprachen 5.16

18 MacLisp MacLisp was the primary Lisp dialect at the MIT AI Lab from the late 1960 s until the early 1980 s. MacLisp introduced the LEXPR, which is a type of function that takes any number of arguments and puts them on the stack; the single parameter of the function is bound to the number of arguments passed. The next phase of MacLisp development began when the developers of MacLisp started to see a large and influential user group emerge - Project MAC and the Mathlab/Macsyma group. The emphasis turned to satisfying the needs of their user community rather than doing language design and implementation as such. Fast compiler techniques were incorporated, and the resulting compiler became a standard against which all other Lisp compilers were measured in terms of the speed of running code. Arbitrary precision arithmetic was added to meet the needs of Macsyma users. 1 G.L. Steele/R.P. Gabriel, loc.cit. Geschichte der Programmiersprachen 5.17

19 Interlisp Interlisp introduced many radical ideas into Lisp programming style and methodology. The most visible of these ideas are embodied in programming tools: 2 The spelling corrector was invoked when a symbol had no value. DWIM ( Do What I Mean ) was invoked whenever an error of any sort was detected, e.g., parenthesis errors. The source code was presented by a structure editor. CLISP (Conversational Lisp) was a mixed Algol-like and English-like syntax embedded within normal Interlisp syntax. Masterscope was a facility for finding out information about the functions in a large system. 1 G.L. Steele/R.P. Gabriel, loc.cit. 2 W. Teitelman, PILOT - A step toward man-computer symbiosis, Ph.D. Thesis, MIT, 1966 Geschichte der Programmiersprachen 5.18

20 Interlisp: Parameter Passing Like MacLisp, Interlisp extended the function calling mechanisms in Lisp 1.5 with respect to how arguments can be passed to a function. Interlisp function definitions specified arguments as the cross product of two attributes: LAMBDA versus NLAMBDA, and spread versus nospread. LAMBDA functions evaluate each of their arguments; NLAMBDA functions evaluate none of their arguments. Spread functions require a fixed number of arguments; nospread functions accept a variable number. These two attributes were not quite orthogonal, because the parameter of a nospread NLAMBDA was bound to a list of the unevaluated argument forms, whereas the parameter of a nospread LAMBDA was bound to the number of arguments passed and the ARG function was used to retrieve actual argument values. 1 G.L. Steele/R.P. Gabriel, loc.cit. Geschichte der Programmiersprachen 5.19

21 LISP Machines Though ideas for a Lisp machine had been informally discussed before, L. Peter Deutsch (*1946) seems to have published the first concrete proposal. 1,2 Single-user minicomputer-class machine that would be microcoded to run Lisp and support a Lisp development environment. Duality of load and store access: There should be two internal functions associated with every accessor function, and that the store version should be called when the function is mentioned in a particular set of special forms, e.g., (DEFINE RPLACA (LAMBDA (X Y) (SETFQ (CAR X) Y))) 1 G.L. Steele/R.P. Gabriel, loc.cit. 2 P.L. Deutsch: A Lisp machine with very compact programs, Proc. Third Int. Joint Conf. Artificial Intelligence, Stanford, CA, 1973, pp Geschichte der Programmiersprachen 5.20

22 LISP Machines (II) MIT Lisp machines ( ) 1 The CONS machine was designed to have good performance while supporting a version of Lisp upwards-compatible with MacLisp. 2 An improved version, the CADR machine, became the computational mainstay within the MIT AI Lab. Language extensions included a more convenient macro facility, multiple values to be passed as the result from a function invocation, record structures, closures over special variables, flavors (an objectoriented programming system). Xerox Lisp machines ( ) 1 The Alto was a microcodable machine (1973) using Interlisp. 3 The Dorado (prototype in 1978) was specifically designed to interpret byte codes produced by compilers. Further development: Dolphin, Dandelion. All the Xerox Lisp machines used a reference-count garbage collector. 1 G.L. Steele/R.P. Gabriel, loc.cit. 2 R. Greenblatt: The LISP Machine, Working Paper 79, MIT Artificial Intelligence Lab., Cambridge, Mass., Nov See also: L. Hoffmann: From single core to multicore An interview with Charles P. Thacker, Communicat. Associat. Comput. Mach. 53, 7 (2010), pp Geschichte der Programmiersprachen 5.21

23 Scheme The dialect of Lisp known as Scheme was originally an attempt by Sussman and Steele (MIT) during Autumn 1975 to explicate for themselves some aspects of Hewitt s theory of actors as a model of computation. 1 Sussman and Steele had some trouble understanding some of the consequences of the model, so they decided to construct a toy implementation of an actor language in order to experiment with it. In the tradition of Planner and Conniver, they named the implementation Schemer, but the operating system had a 6-character limitation. 3 G.J. Sussman (*1947) G.L. Steele (*1954) 1 G.L. Steele/R.P. Gabriel, loc.cit. 2 C. Hewitt: Viewing control structures as patterns of passing messages, Journ. of Artif. Intell. 8 (1977), pp G.J. Sussman/G.L. Steele Jr.: SCHEME - An interpreter for extended lambda calculus, AI Memo 349, Cambridge, Mass.: MIT Artificial Intelligence Laboratory, Dec Geschichte der Programmiersprachen 5.22

24 Some Characteristics of Scheme Hewitt s model was object-oriented (and influenced by Smalltalk). Using MacLisp as a working environment, they wrote a tiny Lisp interpreter and then added the necessary mechanisms for creating actors and sending messages. Because Sussman had just studied Algol, he suggested starting with a lexically scoped dialect of Lisp. Evaluating a form beginning with lambda creates a closure (and returns a value). Evaluating a form beginning with alpha creates an actor (and invokes a continuation, i.e., will never return). The difference between an actor and a function would be detected in the part of the interpreter known as apply. Geschichte der Programmiersprachen 5.23

25 Common Lisp In Spring 1981, ARPA was no longer interested in funding a variety of needlessly competing and gratuitously different Lisp projects and called a meeting, in which the implementation groups got together to discuss the future of Lisp. 1 It was agreed that it was worth defining a family of languages in such a way that any program written in the language defined would run in any language in the family. Virtually all technical decisions were completed by early 1983, but it was almost a year before the book Common Lisp - The Language was available. 2 Role of Common Lisp: While the differences among the several implementations will continue to force some incompatibilities, Common Lisp should serve as a common dialect for these implementations. 1 G.L. Steele/R.P. Gabriel, loc.cit. 2 G.L. Steele: Common Lisp: The Language, Digital Press, Burlington, Ma., 1984 Geschichte der Programmiersprachen 5.24

26 Goals of Common Lisp Portability: Common Lisp should exclude features that cannot be easily implemented on a broad class of computers, e.g., features requiring microcode. Consistency: The interpreter and compiler should exhibit the same semantics. Compatibility: Common Lisp should strive to be compatible with Zetalisp, MacLisp, and Interlisp, in that order. Efficiency: It should be possible to write an optimizing compiler for Common Lisp. Power: Common Lisp should be a good system-building language, suitable for writing Interlisp-like user-level packages, but it will not provide these packages. Stability: Common Lisp should evolve slowly and with deliberation. 1 G.L. Steele/R.P. Gabriel, loc.cit. Geschichte der Programmiersprachen 5.25

(Anmerkungen zur) Geschichte der Programmiersprachen

(Anmerkungen zur) Geschichte der Programmiersprachen (Anmerkungen zur) Geschichte der Programmiersprachen Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester

More information

Functional Programming. Functional Programming Languages. Chapter 14. Introduction

Functional Programming. Functional Programming Languages. Chapter 14. Introduction Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The

More information

Parameter passing in LISP

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

More information

Programming Languages in Artificial Intelligence

Programming Languages in Artificial Intelligence Programming Languages in Artificial Intelligence Günter Neumann, German Research Center for Artificial Intelligence (LT Lab, DFKI) I. AI programming languages II. Functional programming III. Functional

More information

Lecture 1: Introduction

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

More information

Basic Lisp Operations

Basic Lisp Operations Basic Lisp Operations BLO-1 Function invocation It is an S-expression just another list! ( function arg1 arg2... argn) First list item is the function prefix notation The other list items are the arguments

More information

Chapter 15 Functional Programming Languages

Chapter 15 Functional Programming Languages Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

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

More information

A MODEL OF HUMAN COGNITIVE BEHAVIOR IN WRITING CODE FOR COMPUTER PROGRAMS

A MODEL OF HUMAN COGNITIVE BEHAVIOR IN WRITING CODE FOR COMPUTER PROGRAMS A MODEL OF HUMAN COGNITIVE BEHAVIOR IN WRITING CODE FOR COMPUTER PROGRAMS Ruven Brooke Department of Information and Computer Science University of California - Irvine Irvine, CA 92664 U.S.A. Section 12:

More information

Principles of Programming Languages Topic: Introduction Professor Louis Steinberg

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

More information

The First Report on Scheme Revisited

The First Report on Scheme Revisited Higher-Order and Symbolic Computation, 11, 399 404 (1998) c 1998 Kluwer Academic Publishers, Boston. Manufactured in The Netherlands. The First Report on Scheme Revisited GERALD JAY SUSSMAN Massachusetts

More information

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu 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: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming

More information

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

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

More information

CSC 272 - Software II: Principles of Programming Languages

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

More information

Programming Languages

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:

More information

2) Write in detail the issues in the design of code generator.

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

More information

Hello World: An Instance Rhetoric in Computer Science

Hello World: An Instance Rhetoric in Computer Science Hello World: An Instance Rhetoric in Computer Science John Mount: jmount@mzlabs.com February 19, 2008 Computer scientists have usually dodged questions of intent, purpose or meaning. While there are theories

More information

Regular Languages and Finite Automata

Regular Languages and Finite Automata Regular Languages and Finite Automata 1 Introduction Hing Leung Department of Computer Science New Mexico State University Sep 16, 2010 In 1943, McCulloch and Pitts [4] published a pioneering work on a

More information

Tail Recursion Without Space Leaks

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)

More information

Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I

Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I John McCarthy, Massachusetts Institute of Technology, Cambridge, Mass. April 1960 1 Introduction A programming system

More information

How To Program In Scheme (Prolog)

How To Program In Scheme (Prolog) The current topic: Scheme! Introduction! Object-oriented programming: Python Functional programming: Scheme! Introduction Next up: Numeric operators, REPL, quotes, functions, conditionals Types and values

More information

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio. Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used

More information

Semester Review. CSC 301, Fall 2015

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!

More information

1/20/2016 INTRODUCTION

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

More information

Semantic Analysis: Types and Type Checking

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

More information

1.1 WHAT IS A PROGRAMMING LANGUAGE?

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

More information

COMPUTER SCIENCE TRIPOS

COMPUTER SCIENCE TRIPOS CST.98.5.1 COMPUTER SCIENCE TRIPOS Part IB Wednesday 3 June 1998 1.30 to 4.30 Paper 5 Answer five questions. No more than two questions from any one section are to be answered. Submit the answers in five

More information

Moving from CS 61A Scheme to CS 61B Java

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

More information

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16

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 Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64

More information

Form & Function in Software. Richard P. Gabriel phd mfa

Form & Function in Software. Richard P. Gabriel phd mfa Form & Function in Software Richard P. Gabriel phd mfa Confusionists and superficial intellectuals... ...move ahead... ...while the deep thinkers descend into the darker regions of the status quo...

More information

1 Idioms, Patterns, and Programming

1 Idioms, Patterns, and Programming 1 Idioms, Patterns, and Programming Chapter Objectives Chapter Contents This chapter introduces the ideas that we use to organize our thinking about languages and how they shape the design and implementation

More information

Computer Science/Software Engineering

Computer Science/Software Engineering 292 School of Science and Engineering Computer Science/Software Engineering Everald E. Mills, PhD, Chair Objectives The computer science program seeks to prepare students for careers that require sophisticated

More information

Overview. Essential Questions. Precalculus, Quarter 4, Unit 4.5 Build Arithmetic and Geometric Sequences and Series

Overview. Essential Questions. Precalculus, Quarter 4, Unit 4.5 Build Arithmetic and Geometric Sequences and Series Sequences and Series Overview Number of instruction days: 4 6 (1 day = 53 minutes) Content to Be Learned Write arithmetic and geometric sequences both recursively and with an explicit formula, use them

More information

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson list functions TDDC65 Artificial intelligence and Lisp Lecture 2 in Lisp Recursion, symbols and lists (chapter 4, 5, 6 Haraldssons book) local variables and local functions recursion over sequences * patterns

More information

C H A P T E R Regular Expressions regular expression

C H A P T E R Regular Expressions regular expression 7 CHAPTER Regular Expressions Most programmers and other power-users of computer systems have used tools that match text patterns. You may have used a Web search engine with a pattern like travel cancun

More information

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code

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

More information

DATA STRUCTURES USING C

DATA STRUCTURES USING C DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give

More information

[Refer Slide Time: 05:10]

[Refer Slide Time: 05:10] Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture

More information

Object-Oriented Software Specification in Programming Language Design and Implementation

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

More information

How To Understand The Theory Of Computer Science

How To Understand The Theory Of Computer Science Theory of Computation Lecture Notes Abhijat Vichare August 2005 Contents 1 Introduction 2 What is Computation? 3 The λ Calculus 3.1 Conversions: 3.2 The calculus in use 3.3 Few Important Theorems 3.4 Worked

More information

Stack Allocation. Run-Time Data Structures. Static Structures

Stack Allocation. Run-Time Data Structures. Static Structures Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,

More information

ML for the Working Programmer

ML for the Working Programmer ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming

More information

CSE 307: Principles of Programming Languages

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

More information

Storage Allocation in Typed Languages

Storage Allocation in Typed Languages Storage Allocation in Typed Languages Butler W. Lampson Xerox Corporation Palo Alto Research Center Appeared in Proc. 5th Ann. III Conf: Implementation and Design of Algorithmic Languages, Guidel, France,

More information

CSCI 3136 Principles of Programming Languages

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

More information

A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts

A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts [Mechanical Translation, vol.5, no.1, July 1958; pp. 25-41] A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts A notational

More information

Departamento de Investigación. LaST: Language Study Tool. Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich

Departamento de Investigación. LaST: Language Study Tool. Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich Departamento de Investigación LaST: Language Study Tool Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich Noviembre 2005 Para citar este documento: Lindner, Edgard; Enrique Molinari,

More information

A Framework for the Semantics of Behavioral Contracts

A Framework for the Semantics of Behavioral Contracts A Framework for the Semantics of Behavioral Contracts Ashley McNeile Metamaxim Ltd, 48 Brunswick Gardens, London W8 4AN, UK ashley.mcneile@metamaxim.com Abstract. Contracts have proved a powerful concept

More information

10CS35: Data Structures Using C

10CS35: Data Structures Using C CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a

More information

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. 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

More information

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored? Inside the CPU how does the CPU work? what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored? some short, boring programs to illustrate the

More information

C++ Programming Language

C++ Programming Language C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract

More information

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT, 15.1200.40

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT, 15.1200.40 SOFTWARE DEVELOPMENT, 15.1200.40 1.0 APPLY PROBLEM-SOLVING AND CRITICAL THINKING SKILLS TO INFORMATION TECHNOLOGY 1.1 Describe methods and considerations for prioritizing and scheduling software development

More information

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,

More information

Functional Programming

Functional Programming FP 2005 1.1 3 Functional Programming WOLFRAM KAHL kahl@mcmaster.ca Department of Computing and Software McMaster University FP 2005 1.2 4 What Kinds of Programming Languages are There? Imperative telling

More information

Programming Languages. Session 5 Main Theme Functional Programming. Dr. Jean-Claude Franchitti

Programming Languages. Session 5 Main Theme Functional Programming. Dr. Jean-Claude Franchitti Programming Languages Session 5 Main Theme Functional Programming Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences Adapted from course

More information

Computation Beyond Turing Machines

Computation Beyond Turing Machines Computation Beyond Turing Machines Peter Wegner, Brown University Dina Goldin, U. of Connecticut 1. Turing s legacy Alan Turing was a brilliant mathematician who showed that computers could not completely

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

More information

What is a programming language?

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

More information

DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING

DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING Fall 2000 The instructions contained in this packet are to be used as a guide in preparing the Departmental Computer Science Degree Plan Form for the Bachelor's

More information

Symbol Tables. Introduction

Symbol Tables. Introduction Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The

More information

COMPUTER SCIENCE, BACHELOR OF SCIENCE (B.S.)

COMPUTER SCIENCE, BACHELOR OF SCIENCE (B.S.) VCU 1 COMPUTER SCIENCE, BACHELOR OF SCIENCE (B.S.) The Bachelor of Science in Computer Science is built on a rigorous, highly concentrated, accredited curriculum of computer science courses. The program

More information

2110711 THEORY of COMPUTATION

2110711 THEORY of COMPUTATION 2110711 THEORY of COMPUTATION ATHASIT SURARERKS ELITE Athasit Surarerks ELITE Engineering Laboratory in Theoretical Enumerable System Computer Engineering, Faculty of Engineering Chulalongkorn University

More information

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and

More information

On strong fairness in UNITY

On strong fairness in UNITY On strong fairness in UNITY H.P.Gumm, D.Zhukov Fachbereich Mathematik und Informatik Philipps Universität Marburg {gumm,shukov}@mathematik.uni-marburg.de Abstract. In [6] Tsay and Bagrodia present a correct

More information

Programming Languages in a Liberal Arts Education

Programming Languages in a Liberal Arts Education Programming Languages in a Liberal Arts Education Kim Bruce Computer Science Department Pomona College Claremont, CA 91711 Stephen N. Freund Computer Science Department Williams College Williamstown, MA

More information

QUERYING THE COMPONENT DATA OF A GRAPHICAL CADASTRAL DATABASE USING VISUAL LISP PROGRAM

QUERYING THE COMPONENT DATA OF A GRAPHICAL CADASTRAL DATABASE USING VISUAL LISP PROGRAM University 1 Decembrie 1918 of Alba Iulia RevCAD 16/2014 QUERYING THE COMPONENT DATA OF A GRAPHICAL CADASTRAL DATABASE USING VISUAL LISP PROGRAM Caius DIDULESCU, Associate Professor PhD eng. - Faculty

More information

Robert Filman RIACS NASA Ames Moffett Field, CA

Robert Filman RIACS NASA Ames Moffett Field, CA Poetry in programs: A brief examination of software aesthetics, including observations on the history of programming styles and speculations on post-object programming Robert Filman RIACS NASA Ames Moffett

More information

COURSE TITLE COURSE DESCRIPTION

COURSE TITLE COURSE DESCRIPTION COURSE TITLE COURSE DESCRIPTION CS-00X COMPUTING EXIT INTERVIEW All graduating students are required to meet with their department chairperson/program director to finalize requirements for degree completion.

More information

Programming Languages

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

More information

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T) Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating

More information

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection

More information

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT, 15.1200.40

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT, 15.1200.40 SOFTWARE DEVELOPMENT, 15.1200.40 STANDARD 1.0 APPLY PROBLEM-SOLVING AND CRITICAL THINKING SKILLS TO INFORMATION 1.1 Describe methods of establishing priorities 1.2 Prepare a plan of work and schedule information

More information

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program. Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to

More information

Lab Experience 17. Programming Language Translation

Lab Experience 17. Programming Language Translation Lab Experience 17 Programming Language Translation Objectives Gain insight into the translation process for converting one virtual machine to another See the process by which an assembler translates assembly

More information

The following themes form the major topics of this chapter: The terms and concepts related to trees (Section 5.2).

The following themes form the major topics of this chapter: The terms and concepts related to trees (Section 5.2). CHAPTER 5 The Tree Data Model There are many situations in which information has a hierarchical or nested structure like that found in family trees or organization charts. The abstraction that models hierarchical

More information

Likewise, we have contradictions: formulas that can only be false, e.g. (p p).

Likewise, we have contradictions: formulas that can only be false, e.g. (p p). CHAPTER 4. STATEMENT LOGIC 59 The rightmost column of this truth table contains instances of T and instances of F. Notice that there are no degrees of contingency. If both values are possible, the formula

More information

Instruction Set Architecture (ISA)

Instruction Set Architecture (ISA) Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine

More information

ALLEN WIRFS-BROCK. Research Fellow

ALLEN WIRFS-BROCK. Research Fellow ALLEN WIRFS-BROCK Summary As a software architect and entrepreneur Allen Wirfs-Brock has made numerous contributions to the industrialization and commercialization of object-oriented technology. He is

More information

Introduction to Data Structures

Introduction to Data Structures Introduction to Data Structures Albert Gural October 28, 2011 1 Introduction When trying to convert from an algorithm to the actual code, one important aspect to consider is how to store and manipulate

More information

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper

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

More information

Introduction. What is an Operating System?

Introduction. What is an Operating System? Introduction What is an Operating System? 1 What is an Operating System? 2 Why is an Operating System Needed? 3 How Did They Develop? Historical Approach Affect of Architecture 4 Efficient Utilization

More information

Formal Languages and Automata Theory - Regular Expressions and Finite Automata -

Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich March

More information

Continued Fractions and the Euclidean Algorithm

Continued Fractions and the Euclidean Algorithm Continued Fractions and the Euclidean Algorithm Lecture notes prepared for MATH 326, Spring 997 Department of Mathematics and Statistics University at Albany William F Hammond Table of Contents Introduction

More information

Data Abstraction and Hierarchy

Data Abstraction and Hierarchy Data Abstraction and Hierarchy * This research was supported by the NEC Professorship of Software Science and Engineering. Barbara Liskov Affiliation: MIT Laboratory for Computer Science Cambridge, MA,

More information

Algorithms and Data Structures

Algorithms and Data Structures Algorithms and Data Structures Part 2: Data Structures PD Dr. rer. nat. habil. Ralf-Peter Mundani Computation in Engineering (CiE) Summer Term 2016 Overview general linked lists stacks queues trees 2 2

More information

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

KITES TECHNOLOGY COURSE MODULE (C, C++, DS) KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL

More information

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1 The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions

More information

ASSEMBLY LANGUAGE PROGRAMMING (6800) (R. Horvath, Introduction to Microprocessors, Chapter 6)

ASSEMBLY LANGUAGE PROGRAMMING (6800) (R. Horvath, Introduction to Microprocessors, Chapter 6) ASSEMBLY LANGUAGE PROGRAMMING (6800) (R. Horvath, Introduction to Microprocessors, Chapter 6) 1 COMPUTER LANGUAGES In order for a computer to be able to execute a program, the program must first be present

More information

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 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

More information

Can interpreting be as fast as byte compiling? + Other developments in pqr

Can interpreting be as fast as byte compiling? + Other developments in pqr Can interpreting be as fast as byte compiling? + Other developments in pqr Radford M. Neal, University of Toronto Dept. of Statistical Sciences and Dept. of Computer Science http://www.cs.utoronto.ca/

More information

Passing Arguments. A comparison among programming languages. Curtis Bright. April 20, 2011

Passing Arguments. A comparison among programming languages. Curtis Bright. April 20, 2011 Passing Arguments A comparison among programming languages Curtis Bright April 20, 2011 Abstract This report describes and compares the argument passing styles used in contemporary programming languages,

More information

Regular Expressions with Nested Levels of Back Referencing Form a Hierarchy

Regular Expressions with Nested Levels of Back Referencing Form a Hierarchy Regular Expressions with Nested Levels of Back Referencing Form a Hierarchy Kim S. Larsen Odense University Abstract For many years, regular expressions with back referencing have been used in a variety

More information

Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.

Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam. Compilers Spring term Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.es Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer

More information

The BBP Algorithm for Pi

The BBP Algorithm for Pi The BBP Algorithm for Pi David H. Bailey September 17, 2006 1. Introduction The Bailey-Borwein-Plouffe (BBP) algorithm for π is based on the BBP formula for π, which was discovered in 1995 and published

More information

CS103B Handout 17 Winter 2007 February 26, 2007 Languages and Regular Expressions

CS103B Handout 17 Winter 2007 February 26, 2007 Languages and Regular Expressions CS103B Handout 17 Winter 2007 February 26, 2007 Languages and Regular Expressions Theory of Formal Languages In the English language, we distinguish between three different identities: letter, word, sentence.

More information

Integrating Formal Models into the Programming Languages Course

Integrating Formal Models into the Programming Languages Course Integrating Formal Models into the Programming Languages Course Allen B. Tucker Robert E. Noonan Computer Science Department Computer Science Department Bowdoin College College of William and Mary Brunswick,

More information

Lecture 9. Semantic Analysis Scoping and Symbol Table

Lecture 9. Semantic Analysis Scoping and Symbol Table Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax

More information