Download Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying

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

Falcon (programming language) wikipedia , lookup

Compiler wikipedia , lookup

Assembly language wikipedia , lookup

Interpreter (computing) wikipedia , lookup

History of compiler construction wikipedia , lookup

Functional programming wikipedia , lookup

Reactive programming wikipedia , lookup

Go (programming language) wikipedia , lookup

Object-oriented programming wikipedia , lookup

Structured programming wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Programming language wikipedia , lookup

Domain-specific language wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Transcript
Chapter 1
Preliminaries
Chapter 1 Topics
• Reasons for Studying Concepts of
Programming Languages
• Programming Domains
• Language Evaluation Criteria
• Influences on Language Design
• Language Categories
• Language Design Trade-Offs
• Implementation Methods
• Programming Environments
Reasons for Studying Concepts
of Programming Languages
• Increased ability to express ideas
• Improved background for choosing
appropriate languages
• Increased ability to learn new languages
• Better understanding of significance of
implementation
• Better use of languages that are already
known
• Overall advancement of computing
Programming Domains
• Scientific applications
• Business applications
• Artificial intelligence
• Systems programming
• Web Software
Language Evaluation Criteria
Evaluation Criteria: Readability
• Overall Simplicity
• Orthogonality
• Data Types
• Syntax Design
Evaluation Criteria: Writability
• Simplicity and orthogonality
• Support for abstraction
• Expressivity
Evaluation Criteria: Reliability
• Type checking
• Exception handling
• Aliasing
• Readability and writability
Evaluation Criteria: Cost
• Training programmers to use language
• Writing programs
• Compiling programs
• Executing programs
• Language implementation system
• Reliability
• Maintaining programs
Evaluation Criteria: Others
• Portability
• Generality
• Well-definedness
Influences on Language Design
• Computer Architecture
• Programming Methodologies
Computer Architecture
Influence
• Well-known computer architecture
– Von Neumann
• Imperative languages
– most dominant
• because of von Neumann computers
Execution of Machine Code
Fetch-execute cycle
on a von Neumann architecture computer
initialize the program counter
repeat forever
fetch the instruction pointed by the counter
increment the counter
decode the instruction
execute the instruction
end repeat
Programming Methodologies
Influences
• 1950s and early 1960s
– machine efficiency
• Late 1960s
– people efficiency
• Late 1970s
– process-oriented to data-oriented
• Middle 1980s
– object-oriented programming
Language Categories
• Imperative
C, Pascal
• Functional
LISP, Scheme
• Declarative
Prolog
• Object-oriented
Java, C++
• Markup
XHTML, XML
Language Design Trade-Offs
• Reliability vs. cost of execution
• Readability vs. writability
• Writability (flexibility) vs. reliability
Implementation Methods
• Compilation
• Pure Interpretation
• Hybrid Implementation Systems
Compilation
• Translate source language into machine language
• Compilation process has several phases
–
–
–
–
lexical analysis
syntax analysis
semantics analysis
code generation
• Additional Compilation Terminologies
– Load module
– Linking and loading
Pure Interpretation
• No translation
• Easier implementation
• Slower execution
• Often requires more space
Hybrid Implementation Systems
• A compromise between compilers and pure
interpreters
• An intermediate language is used
• Faster than pure interpretation
Other Implementation
Methodolgies
• Preprocessors
• Just-in-Time Implementation Systems
Programming Environments
The collection of tools used in
software development
Examples:
• UNIX
• Borland JBuilder
• Microsoft Visual Studio.NET
Summary
• The study of programming
languages is valuable
• Important criteria for evaluating
programming languages
• Major influences on language
design
• Major methods of implementing
programming languages