A Short History of PL's (MacLennan 1999) “Zeroth Generation” (1940's-50's): machine language / assembly: if/then, read/write, store, goto 1107461112 1061.

Slides:



Advertisements
Similar presentations
1 Scheme and Functional Programming Aaron Bloomfield CS 415 Fall 2005.
Advertisements

Adapted from Scott, Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Programming Paradigms Introduction. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1:
Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
CS 415: Programming Languages Algol Aaron Bloomfield Fall 2005.
Chapter 3 Functional Programming. Outline Introduction to functional programming Scheme: an untyped functional programming language.
you admittance to the “show”.
High-Level Programming Languages
Introduction to Object-Oriented Programming (OOP)
CS 101 Course Summary December 5, Big Ideas Abstraction Problem solving Fundamentals of programming.
The Evolution of Programming Languages
A Quick Overview of Languages. FORTRAN Designed in 1955 First release of the compiler in 1957 Algebraic in nature Scientific (numeric not string oriented)
Comp 205: Comparative Programming Languages Imperative Programming Languages Functional Programming Languages Semantics Other Paradigms Lecture notes,
Presented by Neng-Fa Zhou1 Evolution of programming languages –Machine language –Assembly language –Sub-routines and loop (Fortran) –Procedures and recursion.
1 Programming Languages Marjan Sirjani 2 1- The Study of Programming Languages The purpose of language is simply that it must convey meaning. (Confucius)
CSE 425: Intro to Programming Languages and their Design A Few Key Ideas No particular language is a prerequisite for this course –However you should be.
Chapter 8 High-Level Programming Languages (modified by Erin Chambers)
High-Level Programming Languages: C++
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
Programming languages1 Programming paradigms Families of programming languages.
Programming Paradigms
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
Chapter 1 - Introduction
CSC3315 (Spring 2009)1 CSC 3315 Programming Paradigms Scheme Language Hamid Harroud School of Science and Engineering, Akhawayn University
By Neng-Fa Zhou1 Evolution of programming languages –Machine language –Assembly language –Sub-routines and loop (Fortran) –Procedures and recursion (Algol,
CS 152: Programming Language Paradigms February 10 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak.
The Evolution of Programming Languages Day 2 Lecturer: Xiao Jia The Evolution of PLs1.
1 Programming Languages Marjan Sirjani Course web site:
1 Programming Language History and Evolution In Text: Chapter 2.
Chapter 6 Programming Languages (1) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
sequence of execution of high-level statements
Programming Languages Meeting 14 December 9/10, 2014.
Ch. 5 Ch. 51 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (more notes) Dr. Carter Tiernan.
Software Development Programming Languages and Data Organization.
Principles of Programming Languages Lecture 1 Slides by Yaron Gonen, based on slides by Daniel Deutch and lecture notes by Prof. Mira Balaban.
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
Ch. 5 Ch. 51 jcmt Summer 2003Programming Languages CSE3302 Programming Languages (more notes) Summer 2003 Dr. Carter Tiernan.
Programming Languages
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
CS 152: Programming Language Paradigms March 12 Class Meeting Department of Computer Science San Jose State University Spring 2014 Instructor: Ron Mak.
int k = Integer.MAX_VALUE; k++; int k = Integer.MAX_VALUE; k++; What happens when the following code executes? byte b = someFile.readByte(); b = (byte)(b.
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
UNIVERSITY OF SOUTH CAROLINA Department of Computer Science and Engineering CSCE 190 Programming Language Paradigms Fall 2014
Programming Language Design Issues Programming Languages – Principles and Practice by Kenneth C Louden.
Ada, Scheme, R Emory Wingard. Ada History Department of Defense in search of high level language around Requirements drafted for the language.
서울대한양대 ( 안 산 ) 충남대 1년1년 컴퓨터기초 (C) 컴퓨터프로그래밍 (C, Java) 컴퓨터프로그래밍 (C) 2. 봄 프로그래밍 원리 (Scheme, ML) Structure & Interpretation of Computer Programs 프로그래밍 방법론.
Programming Language Paradigms ITSK2314 Lecture 3.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
CPS120 Introduction to Computer Science High Level Language: Paradigms.
CS451 Programming Languages. Why study languages? Description- how to best document languages? Evaluation - which is the best language to use? Learning.
Programming Language History and Evolution
Programming Languages 2nd edition Tucker and Noonan
Functional Programming
Introduction to programming languages, Algorithms & flowcharts
Introduction to programming languages, Algorithms & flowcharts
Comp 205: Comparative Programming Languages
Closures and Streams cs784(Prasad) L11Clos
Programming Language History and Evolution
Evolution of programming languages
Introduction to programming languages, Algorithms & flowcharts
Chap. 6 :: Control Flow Michael L. Scott.
Midterm Review In Text: Chapters 1, 2, 3, 11, 14, 15.
Programming Language Design
Chap. 6 :: Control Flow Michael L. Scott.
Programming Languages and Paradigms
Overview of Programming Paradigms
Programming Languages and Paradigms
Presentation transcript:

A Short History of PL's (MacLennan 1999) “Zeroth Generation” (1940's-50's): machine language / assembly: if/then, read/write, store, goto GETADATAITMP

First Generation (1957): FORTRAN: named variables, “natural” syntax, (explicit) loops and conditionals, efficient compilation DIMENSION DTA(900) SUM = 0.0 READ 10,N 10 FORMAT(I3) DO 20 I=1,N READ 30,DTA(I) 30FORMAT(F10.6) IF (DTA(I)) 25,20,20 25DTA(I) = -DTA(I) 20CONTINUE DO 40 I = 1,N SUM = SUM + DTA(I) CONTINUE AVG = SUM/FLOAT(N) PRINT 50,AVG FORMAT(1H, F10.6) STOP

Second Generation (1960): ALGOL: type declarations, hierarchical structure, procedures begin integer N ReadInt(N); begin real array Data[1:N]; real sum, avg; integer i; sum := 0; for i := 1 step 1 until N do begin real val; ReadReal(val); Data[i] := if val<0 then -val else val end;

Fourth Generation (1979): Ada: object- oriented, secure (DOD), modular Third Generation (1970): Pascal: “return to simplicity” for teaching; efficiency, reliability

Fifth Generation (1980s-present): programming paradigms Functional (LISP/Scheme, ML, Haskell) Object-oriented (Smalltalk, C++, Java) Logical (Prolog)

Lambda Calculus: The Essence of PL Variables: x, y, z Constants: 1, 2, 3 Functions: +, * Abstraction: x. (* x x) Application: (( x. (* x x)) 3) = 9 (+ 3 4) = 7

Scheme: A Practical  Calculus Use lambda instead of : lambda(x)(* x x) Create named variables, functions w/ define: (define square (lambda(x)(* x x))) (define pi ) Support control via if: (define negative? (lambda (x) (if (< x 0) ; if 1 ; then 0))) ; else

Scheme: Lists + Recursion List (intuitively): An ordered set of objects: '(abc ) (list 'abc ) List (formally):  '() is a list.  If l is a list and a is any object, then (cons a l ) is a list: recursive definition Anything that is not a list (or function) is an atom.

Scheme: car, cdr, cons car : the head (first element) of the list (car '(1 2 3)) = 1 cdr : the tail (rest) of the list (cdr '(1 2 3)) = '(2 3) cons : list builder (cons 1 '(2 3)) = '(1 2 3) = (list 1 2 3) = (cons 1 (cons 2 (cons 3 '()))