Chapter 1 CSC54-473
Reasons to study concepts of PLs
-
Increased capacity to express programming concepts
-
Improved background for choosing appropriate languages
-
Increased ability to learn new languages
-
Understanding the significance of implementation
-
Increased ability to design new languages
-
Overall advancement of computing
Programming Domains
-
Scientific applications
-
Business applications
-
Artificial intelligence
-
Systems programming
-
Scripting languages
-
Special purpose languages
Language Evaluation Criteria
1. 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
- Control statements
- Data type and structures
- Syntax considerations
2. Writability
Factors:
- Simplicity and orthogonality
- Support for abstraction
- Expressivity
3. Reliability
Factors:
-Type checking
-Exception handling
-Aliasing
-Readability and writability
4. Cost
Categories
- Programmer training
- Software creation
- Compilation
- Execution
- Compiler cost
- Poor reliability
- Maintenance
5. Others: portability, generality, how well-defined
Primary influences on language design
1. Computer architecture
- We use imperative languages, at least in part, because we use von
Neumann machines
2. Programming methodologies
- 1950s and early 1960s: Simple applications; worry about machine
efficiency
- Late 1960s: People efficiency became important; readability,
better control structures
- Late 1970s: Data abstraction
- Middle 1980s: Object-oriented programming
-90's and 2000: Process oriented programming and concurrency
Language Categories (Paradigms)
-
Imperative
-
Functional
-
Logic
-
Object-oriented (closely related to imperative)
-
Not markup languages : describe appearance of document
Language Design Trade-offs
1. Reliability versus cost of execution
2. Writability versus readability
3. Flexibility versus safety
Implementation Methods
0. Layers: layered virtual machines
1. Compilation
- Translate high-level program to machine code
- Slow translation
- Fast execution
2. Pure interpretation
- No translation
- Slow execution
- Becoming rare
3. Hybrid implementation systems
- Small translation cost
- Medium execution speed
Programming Environments -The collection of tools used in software
development
1. UNIX - An old operating system and tool collection
2. Borland C++ - A PC environment for C and C++
3. Smalltalk - A language processor/environment
4. Microsoft Visual C++ - A large, complex visual environment