Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008.

Similar documents
Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)

Chapter 2. Evolution of the Major Programming Languages

Chapter 2. Pseudocodes: Speedcoding. 2.2 Minimal Hardware Programming: Pseudocodes. Evolution of the Major Programming Languages

8/23/18. Programming Language Genealogy The Evolution of Programming Languages. Zuse s Plankalkül. Plankalkül Syntax. Machine Code

Programming Languages CMSC 4023 Chapter 2

Chapter 2. Evolution of the Major Programming Languages ISBN

Chapter 2. Evolution of the Major Programming Languages

Evolution of the Major Programming Languages

Introduction. A. Bellaachia Page: 1

Chapter 2 Evolution of the Major Programming Languages Chapter 2 Topics

Software II: Principles of Programming Languages

CSCI.4430/6969 Programming Languages Lecture Notes

Chapter 2. Evolution of the Major Programming Languages ISBN

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

Chapter 2. 5 * B => A V 6 7 (subscripts) S 1.n 1.n (data types)

Program Abstractions, Language Paradigms. CS152. Chris Pollett. Aug. 27, 2008.

1/14/2014. Introduction to CSE 1325 Object Oriented Programming (Using Java) Introduction (Cont.) Introduction

2. Evolution of the Major Programming languages

Design & Implementation Overview

Comp 333: Concepts of Programming Languages Fall 2016

Programming Languages (CSCI 4430/6430) History, Syntax, Semantics, Essentials, Paradigms

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

CS 430 Spring History of Programming Languages. Mike Lam, Professor. John McCarthy ( ) Inventor of LISP

PLAGIARISM. Administrivia. Course home page: Introduction to Programming Languages and Compilers

Introduction to Programming Languages and Compilers. CS164 11:00-12:00 MWF 306 Soda

Concepts of Programming Languages

Lecture 1: Course Introduction

Principles of Programming Languages. Lecture Outline

Continuations provide a novel way to suspend and reexecute

Programming Languages, Summary CSC419; Odelia Schwartz

Lecture 1: Course Introduction

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

Programming Languages 1. Introduction. Oscar Nierstrasz

Introduction to Programming

Chapter 2 Preview. Preview. History of Programming Languages. History of Programming Languages. History of Programming Languages

Programmiersprachen (Programming Languages)

Chapter 1. Preliminaries

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo

CSCI 3136 Principles of Programming Languages

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.

COSC 2P90 Programming Languages & Object-Orientation

Chapter 1. Preview. Reason for Studying OPL. Language Evaluation Criteria. Programming Domains

Programming Language Concepts 1982, 1987, Outline. Period

CS 415 Midterm Exam Spring 2002

Early computers (1940s) cost millions of dollars and were programmed in machine language. less error-prone method needed

Objective: To learn meaning and concepts of programming. Outcome: By the end of this students should be able to describe the meaning of programming

CS508-Modern Programming Solved MCQ(S) From Midterm Papers (1 TO 22 Lectures) BY Arslan

Lecture 2. A Historical View

Why are there so many programming languages?

Computer Fundamentals: Pradeep K. Sinha & Priti Sinha

Concepts in Programming Languages

Programming Languages 2nd edition Tucker and Noonan"

Outline. Programming Languages 1/16/18 PROGRAMMING LANGUAGE FOUNDATIONS AND HISTORY. Current

Compilation I. Hwansoo Han

Chapter 2. Chapter 2

CS2110 CONCLUSION Spring 2018

History 5/8/18 CONCLUSION. Punch cards

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN

Chapter 1. Preliminaries

Compilers. Prerequisites

CS152 Programming Language Paradigms Prof. Tom Austin, Fall Syntax & Semantics, and Language Design Criteria

Programming Languages A few bits of history

History of Programming Languages

Chapter 1: Introduction

CISC 860 September 14, Milestones in the History of PLs

CST-402(T): Language Processors

Theoretical Part. Chapter one:- - What are the Phases of compiler? Answer:

Com S 541. Programming Languages I

1 A question of semantics

Chapter 1 Preliminaries

Evolution of PL s. EECS 476, Prog. Lang. Design/ page 1

Page # CSCI: 4500/6500 Programming Languages. Programming Paradigm: Imperative. Programming Paradigm: Declarative. First General Purpose Machine

What is a programming language?

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

CS383 PROGRAMMING LANGUAGES. Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher

CS101 Introduction to Programming Languages and Compilers

Informatica 3 Syntax and Semantics

MIDTERM EXAMINATION - CS130 - Spring 2005

CGT 456 Lecture 1. Introduction to Computers & Programming

Question No: 1 ( Marks: 1 ) - Please choose one One difference LISP and PROLOG is. AI Puzzle Game All f the given

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented

Low-Level Languages. Computer Programs and Programming Languages

CS 113: Introduction to

CS2303 C14 Systems Programming Concepts. Bob Kinicki

Compiling and Interpreting Programming. Overview of Compilers and Interpreters

LECTURE 1. Overview and History

Informal Semantics of Data. semantic specification names (identifiers) attributes binding declarations scope rules visibility

Programming Languages

Seminar in Programming Languages

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG)

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory

CSc 372 Comparative Programming Languages

Final-Term Papers Solved MCQS with Reference

COP 3402 Systems Software. Lecture 4: Compilers. Interpreters

COMPILER DESIGN LECTURE NOTES

Working of the Compilers

Discovering Computers Chapter 13 Programming Languages and Program Development

Transcription:

Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008.

Outline. Language Definition, Translation. History of Programming Languages.

Language Definition. There are several different ways one can define a programming language. One way is to write a compiler and say that the language is specified by how the compiler outputs your code. This is called creating a reference implementation. Some languages like PHP, Perl only do this. Another way to create a standard specification for the language is some English (or other human language) reference manual. To do this one needs to specify two things: Language Syntax: this describes what strings constitute programs in the given languages. A spec for the syntax might be to give a context free grammar. Such a grammar might have rules like: <if-statement> ::== if(<expression>) <statement> [else <statement>]. String like if and else in the above are called tokens. Their description form the lexical structure of the language. Language Semantics: a specification of this must describe how a given syntactic structure should be implemented on the computer. This can be English, or using one of a few common formal semantics such as: operational semantics, denotational semantics, or axiomatic semantics.

Language Translation. To be useful a programming language needs to have a translator. This is a program which either translates instances of the language into machine code, which can then be executes (compiler); or which takes instances of the languages and executes them as it read them (interpreter). You can also compile to an intermediate representation (for instance, a byte code compiler) and then have an interpreter for this representation (pseudointerpreters). Pascal, Java, Perl, PHP, Prolog, etc do this. A language is typically defined differently from the results of a particular translator. For instance, gcc does not completely implement the C99 spec.

More on Translation. Translation is typically done by using a lexical analyzer which then sends tokens to a syntax analyzer (parser). One might also have a preprocessor that does an initial pass over the file to get it into a form suitable for the translator. A runtime environment for program data must also be generated (compiler) /maintained (interpreter). One might have several passes (I.e., readings of the file to compile) over the program to perform an entire compilation. You might also select for certain optimizations to be carried out during a given pass. Translation usually supports an error reporting/ debugging mechanism. The translator might also make use of pragmas in the code to control compiler options as compilation is done.

History of Programming Languages. My intention is to give a flavor of when various language constructs appeared rather than be complete. Pre-history. Many ancient cultures used natural languages to specify algorithms for computing things like volumes, areas, etc. Once committed to paper such an algorithm could be read and executed on another human. Hero of Alexander (1st century AD) created automata for theaters. The controls for these automata could be programmed by winding ropes around their drive mechanisms in different ways. In the 1800s, Joseph Marie Jacquard used punch cards to program how looms would weave things like carpets and tapestries. This influenced Charles Babbage who also in the 1800s worked on very early mechanical computers such as the Analytical Engine which were never fully completed.

First Real Programming Languages. FORTRAN - short for Formula Translation. Developed at IBM by John Backus 1954-1957. It was a procedural language. It introduced variables, arrays, loops, if statements. The goal was to produce code that was very close to human coded machine code in speed. Compilers for it are still among the fastest. Fortran 77 did not have a runtime stack (Fortran 90 did). So when you called a function or a subroutine, the values of the call parameters and local variables were what they were from the previous call.

Other Procedural languages of the Late 1950 s. Other procedural languages which came out a few years later were: COBOL (1959-1960) -- designed for businesses. So code used lots of English tokens (an idea pioneered by Grace Hopper, US Navy) to try to make it readable by non-programmers. Language was first to have a way for programmers to define new data types via records. It also had a way (pictures) of creating sophisticated formatted output. Similar, formatted output can be seen in Perl. Algol (1958-1960) -- first language to have its syntax specified using Backus-Naur form (BNF). It also allowed free format for the code rather than a fixed format based on columns on a punch card like Fortran and Cobol. It had a runtime stack supported recursion, introduced begin-end blocks, etc. It influenced many later languages like Pascal, C, Ada.

LISP. Specified in a paper by John McCarthy in 1958. An interpreter appeared shortly thereafter. The first compiler appeared in 1962. It was the first functional programming language. It was untyped and based on a generalized notion of list. It supported recursion. It was the first language to have garbage collection. One of the most popular languages in AI research.

Languages of 1960s. PL/I (1963-1964) Developed at IBM for the IBM 360. It supported concurrency and exception handling. SNOBOL (1962-1967) R. Griswald, Bells Labs. First language to support a wide set of string manipulation features. Ideas later incorporated in languages like sed, awk, Perl. Simula 67 (1965-1967) Developed by Nyqaard and Dahl at the Norwegian Computing Center. Introduced the notion of a class. First object-oriented language. BASIC (1964). Kenemy and Kurtz, Dartmouth College. Perhaps, the first language geared toward teaching programming.

Languages of the 1970s. Pascal - (1971). Developed as an educational language by N. Wirth in reaction to how complicated Algol68 was. It was used to program the OS of early Mac computers. C - (1972). Developed by Denis Ritchie Bell Labs. Used to write the Unix OS. Tried to be convenient for programmers to write (avoiding unnecessary syntax) and to be close to the underlying machine. (midlevel language) CLU - (1974-1977). OO language developed by Barbara Liskov, MIT. Introduced the notion of iterator to OO languages. Also, had very good exception handling. Prolog - (1972). developed in Marseille, France by A. Colmerauer. Most popular logic programming language. Used in AI, web intelligence, etc. Influenced Datalog and Query By Example database access.

Languages of the 1980s. Ada - developed by the Department of Defence. Introduced the notions of packages for ADTs and tasks for concurrency. My uncle (Whittaker) involved in its design. Smalltalk - (1980). OO language developed at Xerox Parc. Used in first GUI OS. Many OO design patterns were first described for this langauge. Scheme - (1975-1978). simplified version of LISP developed at MIT for initially educational purposes. It became with the publication of Abelson Sussman 1985. ML - (1978- ). Milnor, at Edinburgh. Typed functional programming language initially used for theorem proving (HOL). C++ - (1983). OO language developed by Bjarne Stroustrup, AT&T. First widely popular OO language Perl - general purpose, scripting, string manipulation language developed by Larry Wall. One of the First, language used for CGI programming.

Languages of the 1990s to Present. Java - (1994-1995).developed by Gosling at Sun. Simplified (compared to C++) C-like OO language with a large initial library of classes. Popularized byte-code compilers. Used both client-side and server-side for web development. Initially, designed for embedded devices. Javascript - (1994-1995). developed by Eich at Netscape. Object-based. Introduced concept of Document Object Model. PHP - server-side templating language. Developed by Rasmus Lerdoff. One of the most popular web programming languages. Many other recent web languages Python, Ruby, etc. Also lots of document languages based on XML.