Download Chapter 1

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

Go (programming language) wikipedia , lookup

Structured programming wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Reactive programming wikipedia , lookup

Programming language wikipedia , lookup

Functional programming wikipedia , lookup

Object-oriented programming wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Reserved word wikipedia , lookup

Transcript
Chapter 1
Preliminaries
ISBN 0-321-19362-8
Chapter 1 Topics
•
•
•
•
•
•
•
•
Motivation
Programming Domains
Language Evaluation Criteria
Influences on Language Design
Language Categories
Language Design Trade-Offs
Implementation Methods
Programming Environments
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-2
Motivation: Why Study Programming
Languages?
• Increased ability to express ideas
• Improved background for choosing appropriate
languages
• Greater ability to learn new languages
• Understand significance of implementation
• Ability to design new languages
• Overall advancement of computing
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-3
What makes programming languages an interesting
subject?
The amazing variety
There are very many, very different languages
A list that used to be posted occasionally on
comp.lang.misc
had over 2800 published languages in 1999.
Often grouped into four families:
{ Imperative
{ Object-oriented
{ Functional
{ Logic
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-4
Imperative Languages
Example: Factorial function in C
int fact(int n) {
int sofar = 1;
while (n>0) sofar *= n--;
return sofar;
}
Hallmarks of imperative languages:
{ Assignment
{ Iteration
{ Order of execution is critical
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-5
Functional Languages
Example: Factorial function in
Haskell
fac 0 = 1
fac n = n * fac (n-1)
Hallmarks of functional
languages:
{ Single-valued variables
{ closely tied to the mathematical
concept of \function"
{ Heavy use of recursion
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-6
Logic Languages
Example: Factorial function in Prolog
fact(X,1) :X =:= 1.
fact(X,Fact) :X > 1,
NewX is X - 1,
fact(NewX,NF),
Fact is X * NF.
Hallmark of logic languages
{ Program expressed as rules in formal
logic
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-7
Object-Oriented Languages
Example: a Java denition for a kind of
object that can store an integer
and compute its factorial
public class MyInt {
private int value;
public MyInt(int value) {
this.value = value;
}
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-8
public int getValue() {
return value;
}
public MyInt getFact() {
return new MyInt(fact(value));
}
private int fact(int n) {
int sofar = 1;
while (n > 1) sofar *= n--;
return sofar;
}}
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-9
Hallmarks of object-oriented
languages:
{ Usually imperative, plus . . .
{ Constructs to help programmers
use "objects\-little bundles of
data that know how to do things to
themselves.
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-10
Widely Used and Not Widely Used
Widely Used
{ Java: Quick rise to popularity since
1995 release
{ Java uses many ideas from C++,
plus some from Mesa, Modula, and
other languages
{ C++ uses most of C and extends it
with ideas from Simula 67, Ada,
Clu, ML and Algol 68
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-11
{ C was derived from B, which was derived from
BCPL, which was
derived from CPL, which was derived from Algol 60
Not Widely Used: Algol
{ One of the earliest languages: Algol 58, Algol 60,
Algol 68
{ Never widely used
{ Introduced many ideas that were used in later
languages, including
Block structure and scope
Recursive functions
Parameter passing by value
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-12
Programming Paradigms
A programming language is a problem-solving tool.
Imperative style:
program = algorithms + data
good for decomposition
Functional style:
program = functions o functions
good for reasoning
Logic programming style:
Object-oriented style:
program = facts + rules
good for searching
program = objects + messages
good for modeling(!)
1.13
Programming Domains
• Scientific applications
– Large number of floating point computations
• Business applications
– Produce reports, use decimal numbers and characters
• Artificial intelligence
– Symbols rather than numbers manipulated
• Systems programming
– Need efficiency because of continuous use
• Scripting languages
– Put a list of commands in a file to be executed
• Special-purpose languages
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-14
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-15
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-16
Language Evaluation Criteria
• Readability
– The most important criterion
– Factors:
• Overall simplicity
– Too many features is bad
– Multiplicity of features is bad
• Orthogonality
– Makes the language easy to learn and read
– Meaning is context independent
– A relatively small set of primitive constructs can be combined in
a relatively small number of ways
– Every possible combination is legal
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-17
Language Evaluation Criteria
– Readability factors (continued)
• Control statements
• Defining data types and structures
• Syntax considerations
– Identifier forms
– Special words
– Form and meaning
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-18
Language Evaluation Criteria
• Writability
– Factors:
• Simplicity and orthogonality
• Support for abstraction
• Expressivity
• Reliability
– Factors:
•
•
•
•
Type checking
Exception handling
Aliasing
Readability and writability
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-19
Language Evaluation Criteria
• Cost
– Categories
•
•
•
•
•
•
•
Training programmers to use language
Writing programs
Compiling programs
Executing programs
Language implementation system
Reliability
Maintaining programs
• Others: portability, generality, well-definedness
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-20
Influences on Language Design
• Computer architecture: Von Neumann
• We use imperative languages, at least in part,
because we use von Neumann machines
– Data and programs stored in same memory
– Memory is separate from CPU
– Instructions and data are piped from memory to
CPU
– Basis for imperative languages
• Variables model memory cells
• Assignment statements model piping
• Iteration is efficient
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-21
Von Neumann Architecture
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-22
Influences on Language Design
• Programming methodologies
– 1950s and early 1960s: Simple applications; worry about
machine efficiency
– Late 1960s: People efficiency became important; readability,
better control structures
• Structured programming
• Top-down design and step-wise refinement
– Late 1970s: Process-oriented to data-oriented
• data abstraction
– Middle 1980s: Object-oriented programming
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-23
Language Categories
• Imperative
– Central features are variables, assignment
statements, and iteration
– C, Pascal
• Functional
– Main means of making computations is by
applying functions to given parameters
– LISP, Scheme
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-24
Language Categories
• Logic
– Rule-based
– Rules are specified in no special order
– Prolog
• Object-oriented
–
–
–
–
Encapsulate data objects with processing
Inheritance and dynamic type binding
Grew out of imperative languages
C++, Java
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-25
Language Design Trade-Offs
• Reliability vs. cost of execution
• Readability vs. writability
• Flexibility vs. safety
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-26
Layered View of Computer
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-27
Levels of Language in Computing
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-28
Implementation Methods
• Compilation
– Translate high-level program to machine code
– Slow translation
– Fast execution
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-29
Compilation
Process
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-30
Implementation Methods
• Pure interpretation
– No translation
– Slow execution
– Becoming rare
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-31
Pure Interpretation
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-32
Implementation Methods
• Hybrid implementation systems
– Small translation cost
– Medium execution speed
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-33
Hybrid
Implementation
System
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-34
Programming Environments
• The collection of tools used in software
development
• UNIX
– An older operating system and tool collection
• Borland JBuilder
– An integrated development environment for Java
• Microsoft Visual Studio.NET
– A large, complex visual environment
– Used to program in C#, Visual BASIC.NET,
Jscript, J#, or C++
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
1-35