机械工业出版社,2002 程序设计语言

程序设计语言原理
谭文安
南京航空航天大学
信息科学与技术学院
[email protected]
ISBN 0-321-19362-8
主要参考书
• Concepts of Programming Languages ( Sixth Edition )
Robert W. Sebesta,机械工业出版社,2002
• 程序设计语言:设计与实现
Terrence W.Pratt, Matvin V.Zelkowitz
傅育熙,黄林鹏等译,电子工业出版社,2002
• 程序设计语言概念和结构
Ravi Sethi 著, 裘宗燕等译,机械工业出版社,2002
• 程序设计语言原理
钱树人, 高等教育出版社,2001
1-2
教学环节和成绩评定
教学环节:课堂讲授
课外阅读
成绩评定:期末考试 + 偶尔点名
1-3
Chapter 1 Topics
•
•
•
•
•
•
•
•
Motivation
Programming Domains
Language Evaluation Criteria
Influences on Language Design
Language Categories
Language Design Trade-Offs
Implementation Methods
Programming Environments
1-4
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
1-5
Programming Domains
• Scientific applications
– Large number of floating point computations
– Fortran90 Algol60 …
• Business applications
– Produce reports, use decimal numbers and characters
– COBOL Language …
• Artificial intelligence
– Symbols rather than numbers manipulated
– LISP(函数式的), Prolog语言,逻辑程序设计
• Systems programming
– Need efficiency because of continuous use
– Unix OS, C语言函数
• Scripting languages
– Put a list of commands in a file to be executed
– Shell命令文件,…,JavaScript语言(Netscape)
• Special-purpose languages
1-6
Language Evaluation Criteria
• Readability
– The most important criteria
– Factors:
• Overall simplicity
– Too many features is bad; count++; ++count, 运算符重载
• 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
– Lack of orthogonality leads to exceptions to rules
1-7
Language Evaluation Criteria
– Readability factors (continued)
• Control statements
– Goto语句
• Defining data types and structures
– Boolean变量定义 True/False 1/0
– 数组定义,下标变量
• Syntax considerations
– Identifier forms
Fortran77标示符长度<=6
– Special words
Pascal的 begin – end
Ada的 end if , end loop
Fortran 90中, DO和END是合法的变量名
1-8
Language Evaluation Criteria
• Writability—可写性
– Factors:
• Simplicity and orthogonality
• Support for abstraction( including data & procedure )
• Expressivity表达性
• Reliability—可靠性
– Factors:
•
•
•
•
Type checking 函数调用参数传递
Exception handling 异常处理能力
Aliasing 别名使用是一个危险的特性
Readability and Writability
1-9
Language Evaluation Criteria
• Cost
– Categories
•
•
•
•
•
•
•
Training programmers to use language
Writing programs
Compiling programs
Executing programs
Language implementation system
Reliability
Maintaining programs
1-10
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
1-11
Von Neumann Architecture
1-12
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
1-13
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
1-14
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
1-15
Language Design Trade-Offs
• Reliability vs. cost of execution ( Eg. Ada )
• Readability vs. writability
• Flexibility vs. safety
1-16
Layered
View of
Computer
1-17
Implementation Methods
• Compilation
– Translate high-level program to machine code
– Slow translation
– Fast execution
1-18
Compilation
Process
1-19
Implementation Methods
• Pure interpretation
– No translation
– Slow execution
– Becoming rare
1-20
Pure Interpretation
1-21
Implementation Methods
• Hybrid implementation systems
– Small translation cost
– Medium execution speed
1-22
Hybrid
Implementation
System
1-23
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++
1-24