Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming Language History and Evolution

Similar presentations


Presentation on theme: "Programming Language History and Evolution"— Presentation transcript:

1 Programming Language History and Evolution
In Text: Chapter 2

2 An Overview of PL History
1950 1960 1970 1980 1990 2000 1950’s: Discovery and description 1960’s: Elaboration and analysis 1970’s: Technology 1980’s: New paradigms 1990’s: Internet influences  Chapter 2: History and Evolution of Programming Languages 

3 1950’s: Discovery and Description
FORTRAN LISP 1950 1960 1970 1980 1990 2000 FORTRAN (54-57, and on and on): First widely used compiled language Relatively efficient LISP (56-62): First functional language, first support for recursion, activation records, run-time stack First garbage collector, implicit dynamic memory mgmt. Interpreter-based  Chapter 2: History and Evolution of Programming Languages 

4 1960’s: Elaboration and Analysis
ALGOL COBOL SNOBOL APL BASIC PL/I 1950 1960 1970 1980 1990 2000 ALGOL 58, 60: first universal language. NEW: BNF, block structure, call-by-value, stack-based evaluation, stack-based arrays APL: applicative, no precedence, interpreted COBOL:English-style syntax, records in files BASIC: interactive time-sharing terminals SNOBOL: pattern matching PL/I: the kitchen sink  Chapter 2: History and Evolution of Programming Languages 

5  Chapter 2: History and Evolution of Programming Languages 
1970’s: Technology Pascal Modula-2 Smalltalk SIMULA 67 C Prolog 1950 1960 1970 1980 1990 2000 SIMULA 67: classes, inheritance, data abstraction Pascal: small, elegant, structured programming, teaching C: systems programming, efficiency Modula-2: Pascal + modules, better for systems programming Prolog: first logic language, AI-oriented Smalltalk: pure OO, interpreted, entire system  Chapter 2: History and Evolution of Programming Languages 

6  Chapter 2: History and Evolution of Programming Languages 
1980’s: New Paradigms Ada SML C++ 1950 1960 1970 1980 1990 2000 Ada: DoD, long committee-based development, large & complex, packages, tasks, generics, exceptions, from real-time to payroll apps. C++: OOP in a popular, widespread language, often seen as a “hybrid” Standard ML, Hope, Miranda, Haskell: functional languages  Chapter 2: History and Evolution of Programming Languages 

7 1990’s: Internet Influences
Perl Java 1950 1960 1970 1980 1990 2000 Scripting: Perl, TCL, Visual Basic, JavaScript, Python, … Java: designed for portable binaries and internet use, “clean” OO compared to C++, garbage collection, compiled/interpreted hybrid  Chapter 2: History and Evolution of Programming Languages 

8  Chapter 2: History and Evolution of Programming Languages 
Recap of Paradigms Procedural/Imperative Functional/Applicative Logic Object-oriented (closely related to imperative) Problem-oriented/application-specific  Chapter 2: History and Evolution of Programming Languages 

9 Overview: Procedural/Imperative
Describes how the computer should achieve solution Key features: Stored memory Mutable variables Sequencing, selection, iteration Pointers?  Chapter 2: History and Evolution of Programming Languages 

10 Overview: Functional/Applicative
Based on mathematics of recursive functions Key features: No mutable variables Everything is an expression Everything is a function No iteration (loops) Recursion, recursion, recursion!  Chapter 2: History and Evolution of Programming Languages 

11  Chapter 2: History and Evolution of Programming Languages 
Factorial in Scheme ; A factorial function in Scheme (define (factorial N) (if (<= N 1) 1 (* N (factorial (- N 1))) )  Chapter 2: History and Evolution of Programming Languages 

12  Chapter 2: History and Evolution of Programming Languages 
Overview: OOP Based on procedural/imperative style, with added data+code abstraction & encapsulation Key features: Encapsulation Inheritance Polymorphism/dynamic binding  Chapter 2: History and Evolution of Programming Languages 

13  Chapter 2: History and Evolution of Programming Languages 
Overview: Logic Based on predicate logic Declarative: describes what problem is to be solved, but not how Key features: No mutable variables Statements: implications or assertions Every statement succeeds or fails Few explicit control constructs Recursion, recursion, recursion! Must understand implementation model to use  Chapter 2: History and Evolution of Programming Languages 

14  Chapter 2: History and Evolution of Programming Languages 
Factorial in Prolog /* A factorial predicate in Prolog */ factorial( N, 1 ) :- N <= 1. factorial( N, F ) :- N2 is N – 1, factorial( N2, F2 ), F is F2 * N.  Chapter 2: History and Evolution of Programming Languages 

15  Chapter 2: History and Evolution of Programming Languages 
Factorial in Prolog /* A factorial predicate in Prolog. * factorial( X, Y ) is true if * Y == X! */ factorial( N, 1 ) :- N <= 1. factorial( N, F ) :- N2 is N – 1, factorial( N2, F2 ), F is F2 * N.  Chapter 2: History and Evolution of Programming Languages 

16  Chapter 2: History and Evolution of Programming Languages 
Factorial in Prolog /* A different factorial predicate */ factorial( 0, 1 ). factorial( N, F ) :- N > 0, N2 is N – 1, factorial( N2, F2 ), F is F2 * N.  Chapter 2: History and Evolution of Programming Languages 

17  Chapter 2: History and Evolution of Programming Languages 
Factorial in Scheme ; A factorial function in Scheme (define (factorial N) (cond ((= N 0) 1) ((> N 0) (* N (factorial (- N 1)))) )  Chapter 2: History and Evolution of Programming Languages 

18 Tail Recursion in Scheme
(define (factorial-helper N total) (if (= N 0) total (factorial-helper (- N 1) (* N total)) ) (define (factorial N) (factorial-helper N 1)  Chapter 2: History and Evolution of Programming Languages 


Download ppt "Programming Language History and Evolution"

Similar presentations


Ads by Google