Download Why study programming languages?

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Smalltalk wikipedia , lookup

Compiler wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Logic programming wikipedia , lookup

Assembly language wikipedia , lookup

History of compiler construction wikipedia , lookup

Parsing wikipedia , lookup

Control flow wikipedia , lookup

Go (programming language) wikipedia , lookup

Reactive programming wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Functional programming wikipedia , lookup

Programming language wikipedia , lookup

Object-oriented programming wikipedia , lookup

Structured programming wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Transcript
Introduction
Programming Language Design and Implementation (4th Edition)
by T. Pratt and M. Zelkowitz
Prentice Hall, 2001
Sections 1-1.3.2
1
Organization of Programming Languages
• Understand how languages are designed and implemented
• Syntax -- What a program looks like
• Semantics -- What a program means
• Implementation -- How a program executes
• Understand most appropriate language for solving
specific problems, For example:
• Pascal, C -- procedural, statement oriented
• C++, Java, Smalltalk -- Object oriented
• ML, Lisp -- Functional
• Prolog -- Rule-based
2
Language Goals
• During 1950s--1960s - Compile programs to execute
efficiently.
• There is a direct connection between language
features and hardware - integers, reals, goto
statements
• Programmers cheap; Machines expensive; Keep the
machine busy
•
•
•
•
But today
Compile programs that are built efficiently
CPU power and memory very cheap
Direct connection between language features and
design concepts - encapsulation, records, inheritance,
functionality, assertions
3
Era
Application
Major
languages
Other
languages
1960s
Business
Scientific
COBOL
FORTRAN
System
Artificial
intelligence
Business
Assembler
LISP
Assembler
Algol,
BASIC,
APL
JOVIAL, Forth
SNOBOL
Today
Scientific
System
Artificial
intelligence
Publishing
Process
New paradigms
COBOL,
C++, C, PL/I, 4GLs
Java, spreadsheet
FORTRAN,
C, BASIC
C++, Java
C, C++, Java
Ada,
BASIC,
Modula
LISP, Prolog
TeX,
Postscript,
word processing
UNIX shell, TCL, AWK,
Perl, Javascript
SED
ML, Smalltalk
Eiffel
Marvel,
4
Why study programming languages? (1)
• To improve your ability to develop effective
algorithms
Improper use of recursion
Object-oriented programming, logic programming,
concurrent programming
• To improve your use of your existing programming
language
Data structures for arrays, strings, lists, records
Malloc()  garbage collection
Implementation details of recursion, object classes,
subroutine calls, …
5
Why study programming languages? (2)
• To increase your vocabulary of useful programming
constructs
Increase programming vocabulary and its
implementation tech.
Coroutine
• To allow a better choice of programming language
Numeric computation : C, FORTRAN, Ada
AI : LISP, Prolog
Internet applications : Perl, Java
6
Why study programming languages? (3)
• To make it easier to learn a new language
• To make it easier to design a new language
User interface design
•
*** C, COBOL, SMALLTALK의 덧셈의 속도차이
7
Evolution of software architecture
•
1950s - Large expensive mainframe computers ran single
programs (Batch processing)
•
1960s - Interactive programming (time-sharing) on
mainframes
•
1970s - Development of Minicomputers and first
microcomputers. Apple II. Early work on windows, icons, and
PCs at XEROX PARC
•
1980s - Personal computer - Microprocessor, IBM PC and
Apple Macintosh. Use of windows, icons and mouse
•
1990s - Client-server computing - Networking, The Internet,
the World Wide Web
•
2000s - ??? P2P
8
Attributes of a good language (1)
• Clarity, simplicity, and unity - provides both a
framework for thinking about algorithms and a means
of expressing those algorithms
Conceptual integrity
APL
SNOBOL4
• Orthogonality -every combination of features is
meaningful
Fewer exceptions
Logical errors and inefficiency
9
10
11
Attributes of a good language(2)
• Naturalness for the application - program structure
reflects the logical structure of algorithm
Sequential algorithm, concurrent algorithm, logic
algorithm, non-deterministic algorithm
Appropriate data structures, operations, control
structures, natural syntax
• Support for abstraction - program data reflects
problem being solved
Data abstraction <D,O,C>
Encapsulation
12
Attributes of a good language (3)
• Ease of program verification - verifying that program
correctly performs its required function
Verification/validation
Comments, assert()
Design specification
• Programming environment - external support for the
language
Debugger, syntax-directed editor
Supporting function, platforms
Smalltalk
Supporting all the software lifecycle phases
13
Attributes of a good language (continued)
• Portability of programs - transportability} of the
resulting programs from the computer on which they
are developed to other computer systems
Transportability
C, C++, Pascal  Java
ML : single source implementation
• Cost of use - program execution, program translation,
program creation, and program maintenance
Code optimization, (Smalltalk, Perl), lifecycle costs
14
Language paradigms
• Imperative languages
• Goal is to understand a machine state (set of memory
locations, each containing a value)
• Statement oriented languages that change machine
state (C, Pascal, FORTRAN, COBOL)
• Syntax: S1, S2, S3, ...
• Applicative (functional) languages
• Goal is to understand the function that produces the
answer
• Function composition is major operation (ML, LISP)
• Syntax: P1(P2(P3(X)))
• Programming consists of building the function that
computes the answer
15
16
17
18
Language paradigms (continued)
• Rule-based languages
• Specify rule that specifies problem solution (Prolog,
BNF Parsing)
• Other examples: Decision procedures, Grammar rules
(BNF)
• Syntax: Answer  specification rule
• Programming consists of specifying the attributes of
the answer
• Object-oriented languages
• Imperative languages that merge applicative design
with imperative statements (Java, C++, Smalltalk)
• Syntax: Set of objects (classes) containing data
(imperative concepts) and methods (applicative
concepts)
19
20