Programming languages презентация

Содержание


Programming Languages
 1. Introduction
 Prof. O. Nierstrasz
 Spring Semester 2010Programming LanguagesRoadmap
 Course Schedule
 Programming Paradigms
 A Quick Tour of Programming LanguageRoadmap
 Course Schedule
 Programming Paradigms
 A Quick Tour of Programming LanguageSources
 Text:
 Kenneth C. Louden, Programming Languages: Principles and Practice, PWSSchedule
 Introduction
 Stack-based programming
 Scheme (guest lecture)
 Functional programming
 Types andRoadmap
 Course Schedule
 Programming Paradigms
 A Quick Tour of Programming LanguageWhat is a Programming Language?
 A formal language for describing computation?
What is a Programming Language? (II)Themes Addressed in this CourseGenerations of Programming Languages
 1GL: 	machine codes
 2GL: 	symbolic assemblers
 3GL:How do Programming Languages Differ?
 Common Constructs:
 basic data types (numbers,Programming ParadigmsCompilers and Interpreters
 Compilers and interpreters have similar front-ends, but haveRoadmap
 Course Schedule
 Programming Paradigms
 A Quick Tour of Programming LanguageA Brief ChronologyFortran
 History
 John Backus (1953) sought to write programs in conventionalFortran …
 Innovations
 Symbolic notation for subroutines and functions
 Assignments to“Hello World” in FORTRAN
 All examples from the ACM "Hello World"ALGOL 60
 History
 Committee of PL experts formed in 1955 to“Hello World” in BEALGOLCOBOL
 History
 Designed by committee of US computer manufacturers
 Targeted business“Hello World” in COBOLPL/1
 History
 Designed by committee of IBM and users (early 1960s)
“Hello World” in PL/1Functional Languages
 ISWIM (If you See What I Mean)
 Peter Landin“Hello World” in Functional Languages
 SML
 HaskellProlog
 History
 Originated at U. Marseilles (early 1970s), and compilers developed“Hello World” in PrologObject-Oriented Languages
 History
 Simula was developed by Nygaard and Dahl (earlyObject-Oriented Languages
 Innovations
 Encapsulation of data and operations (contrast ADTs)
 InheritanceInteractive Languages
 Made possible by advent of time-sharing systems (early 1960sInteractive Languages ...
 APL
 Developed by Ken Iverson for concise descriptionSpecial-Purpose Languages
 SNOBOL
 First successful string manipulation language
 Influenced design ofSymbolic Languages ...
 Lisp
 Performs computations on symbolic expressions
 Symbolic expressions4GLs
 “Problem-oriented” languages
 PLs for “non-programmers”
 Very High Level (VHL) languages“Hello World” in RPG“Hello World” in SQLScripting Languages
 History
 Countless “shell languages” and “command languages” for operatingScripting Languages ...
 Innovations
 Pipes and filters (Unix shell)
 Generalized embedding/commandThe future?
 Dynamic languages
 very active
 Domain-specific languages
 very active
 VisualWhat you should know!
 What, exactly, is a programming language?
 HowCan you answer these questions?
 Why are there so many programmingLicense
 http://creativecommons.org/licenses/by-sa/3.0/



Слайды и текст этой презентации
Слайд 1
Описание слайда:
Programming Languages 1. Introduction Prof. O. Nierstrasz Spring Semester 2010


Слайд 2
Описание слайда:
Programming Languages

Слайд 3
Описание слайда:
Roadmap Course Schedule Programming Paradigms A Quick Tour of Programming Language History

Слайд 4
Описание слайда:
Roadmap Course Schedule Programming Paradigms A Quick Tour of Programming Language History

Слайд 5
Описание слайда:
Sources Text: Kenneth C. Louden, Programming Languages: Principles and Practice, PWS Publishing (Boston), 1993. Other Sources: Paul Hudak, “Conception, Evolution, and Application of Functional Programming Languages,” ACM Computing Surveys 21/3, 1989, pp 359-411. Clocksin and Mellish, Programming in Prolog, Springer Verlag, 1987.

Слайд 6
Описание слайда:
Schedule Introduction Stack-based programming Scheme (guest lecture) Functional programming Types and polymorphism Lambda calculus Fixed points Programming language semantics Objects and types Logic programming Applications of logic programming Visual programming Final exam

Слайд 7
Описание слайда:
Roadmap Course Schedule Programming Paradigms A Quick Tour of Programming Language History

Слайд 8
Описание слайда:
What is a Programming Language? A formal language for describing computation? A “user interface” to a computer? Syntax + semantics? Compiler, or interpreter, or translator? A tool to support a programming paradigm?

Слайд 9
Описание слайда:
What is a Programming Language? (II)

Слайд 10
Описание слайда:
Themes Addressed in this Course

Слайд 11
Описание слайда:
Generations of Programming Languages 1GL: machine codes 2GL: symbolic assemblers 3GL: (machine-independent) imperative languages (FORTRAN, Pascal, C ...) 4GL: domain specific application generators 5GL: AI languages … Each generation is at a higher level of abstraction

Слайд 12
Описание слайда:
How do Programming Languages Differ? Common Constructs: basic data types (numbers, etc.); variables; expressions; statements; keywords; control constructs; procedures; comments; errors ... Uncommon Constructs: type declarations; special types (strings, arrays, matrices, ...); sequential execution; concurrency constructs; packages/modules; objects; general functions; generics; modifiable state; ...

Слайд 13
Описание слайда:
Programming Paradigms

Слайд 14
Описание слайда:
Compilers and Interpreters Compilers and interpreters have similar front-ends, but have different back-ends.

Слайд 15
Описание слайда:
Roadmap Course Schedule Programming Paradigms A Quick Tour of Programming Language History

Слайд 16
Описание слайда:
A Brief Chronology

Слайд 17
Описание слайда:
Fortran History John Backus (1953) sought to write programs in conventional mathematical notation, and generate code comparable to good assembly programs. No language design effort (made it up as they went along) Most effort spent on code generation and optimization FORTRAN I released April 1957; working by April 1958 The current standard is FORTRAN 2003 (FORTRAN 2008 is work in progress)

Слайд 18
Описание слайда:
Fortran … Innovations Symbolic notation for subroutines and functions Assignments to variables of complex expressions DO loops Comments Input/output formats Machine-independence Successes Easy to learn; high level Promoted by IBM; addressed large user base (scientific computing)

Слайд 19
Описание слайда:
“Hello World” in FORTRAN All examples from the ACM "Hello World" project: www2.latech.edu/~acm/HelloWorld.shtml

Слайд 20
Описание слайда:
ALGOL 60 History Committee of PL experts formed in 1955 to design universal, machine-independent, algorithmic language First version (ALGOL 58) never implemented; criticisms led to ALGOL 60 Innovations BNF (Backus-Naur Form) introduced to define syntax (led to syntax-directed compilers) First block-structured language; variables with local scope Structured control statements Recursive procedures Variable size arrays Successes Highly influenced design of other PLs but never displaced FORTRAN

Слайд 21
Описание слайда:
“Hello World” in BEALGOL

Слайд 22
Описание слайда:
COBOL History Designed by committee of US computer manufacturers Targeted business applications Intended to be readable by managers (!) Innovations Separate descriptions of environment, data, and processes Successes Adopted as de facto standard by US DOD Stable standard for 25 years Still the most widely used PL for business applications (!)

Слайд 23
Описание слайда:
“Hello World” in COBOL

Слайд 24
Описание слайда:
PL/1 History Designed by committee of IBM and users (early 1960s) Intended as (large) general-purpose language for broad classes of applications Innovations Support for concurrency (but not synchronization) Exception-handling on conditions Successes Achieved both run-time efficiency and flexibility (at expense of complexity) First “complete” general purpose language

Слайд 25
Описание слайда:
“Hello World” in PL/1

Слайд 26
Описание слайда:
Functional Languages ISWIM (If you See What I Mean) Peter Landin (1966) — paper proposal FP John Backus (1978) — Turing award lecture ML Edinburgh initially designed as meta-language for theorem proving Hindley-Milner type inference “non-pure” functional language (with assignments/side effects) Miranda, Haskell “pure” functional languages with “lazy evaluation”

Слайд 27
Описание слайда:
“Hello World” in Functional Languages SML Haskell

Слайд 28
Описание слайда:
Prolog History Originated at U. Marseilles (early 1970s), and compilers developed at Marseilles and Edinburgh (mid to late 1970s) Innovations Theorem proving paradigm Programs as sets of clauses: facts, rules and questions Computation by “unification” Successes Prototypical logic programming language Used in Japanese Fifth Generation Initiative

Слайд 29
Описание слайда:
“Hello World” in Prolog

Слайд 30
Описание слайда:
Object-Oriented Languages History Simula was developed by Nygaard and Dahl (early 1960s) in Oslo as a language for simulation programming, by adding classes and inheritance to ALGOL 60 Smalltalk was developed by Xerox PARC (early 1970s) to drive graphic workstations

Слайд 31
Описание слайда:
Object-Oriented Languages Innovations Encapsulation of data and operations (contrast ADTs) Inheritance to share behaviour and interfaces Successes Smalltalk project pioneered OO user interfaces Large commercial impact since mid 1980s Countless new languages: C++, Objective C, Eiffel, Beta, Oberon, Self, Perl 5, Python, Java, Ada 95 ...

Слайд 32
Описание слайда:
Interactive Languages Made possible by advent of time-sharing systems (early 1960s through mid 1970s). BASIC Developed at Dartmouth College in mid 1960s Minimal; easy to learn Incorporated basic O/S commands (NEW, LIST, DELETE, RUN, SAVE) ...

Слайд 33
Описание слайда:
Interactive Languages ... APL Developed by Ken Iverson for concise description of numerical algorithms Large, non-standard alphabet (52 characters in addition to alphanumerics) Primitive objects are arrays (lists, tables or matrices) Operator-driven (power comes from composing array operators) No operator precedence (statements parsed right to left)

Слайд 34
Описание слайда:
Special-Purpose Languages SNOBOL First successful string manipulation language Influenced design of text editors more than other PLs String operations: pattern-matching and substitution Arrays and associative arrays (tables) Variable-length strings ...

Слайд 35
Описание слайда:
Symbolic Languages ... Lisp Performs computations on symbolic expressions Symbolic expressions are represented as lists Small set of constructor/selector operations to create and manipulate lists Recursive rather than iterative control No distinction between data and programs First PL to implement storage management by garbage collection Affinity with lambda calculus

Слайд 36
Описание слайда:
4GLs “Problem-oriented” languages PLs for “non-programmers” Very High Level (VHL) languages for specific problem domains Classes of 4GLs (no clear boundaries) Report Program Generator (RPG) Application generators Query languages Decision-support languages Successes Highly popular, but generally ad hoc

Слайд 37
Описание слайда:
“Hello World” in RPG

Слайд 38
Описание слайда:
“Hello World” in SQL

Слайд 39
Описание слайда:
Scripting Languages History Countless “shell languages” and “command languages” for operating systems and configurable applications

Слайд 40
Описание слайда:
Scripting Languages ... Innovations Pipes and filters (Unix shell) Generalized embedding/command languages (TCL) Successes Unix Shell, awk, emacs, HyperTalk, AppleTalk, TCL, Python, Perl, VisualBasic ...

Слайд 41
Описание слайда:
The future? Dynamic languages very active Domain-specific languages very active Visual languages many developments, but still immature Modeling languages emerging from UML and MDE …

Слайд 42
Описание слайда:
What you should know! What, exactly, is a programming language? How do compilers and interpreters differ? Why was FORTRAN developed? What were the main achievements of ALGOL 60? Why do we call C a “Third Generation Language”? What is a “Fourth Generation Language”?

Слайд 43
Описание слайда:
Can you answer these questions? Why are there so many programming languages? Why are FORTRAN and COBOL still important programming languages? Which language should you use to implement a spelling checker? A filter to translate upper-to-lower case? A theorem prover? An address database? An expert system? A game server for initiating chess games on the internet? A user interface for a network chess client?

Слайд 44
Описание слайда:
License http://creativecommons.org/licenses/by-sa/3.0/


Скачать презентацию на тему Programming languages можно ниже:

Похожие презентации