How to Troubleshoot Apps for the Modern Connected Worker
1 preliminaries
1. ICS 313 - Fundamentals of Programming Languages 1
ICS 313
Fundamentals of Programming Languages
Dr. Abdallah Al-Sukairi
Second Semester 2002 - 2003 (022)
King Fahd University of Petroleum & Minerals
Information & Computer Science Department
Course Outline
1. Preliminaries
2. Evolution of the Major Programming languages
3. Describing Syntax and Semantics
4. Lexical and Syntax Analysis
5. Names, Bindings, Type Checking and Scopes
6. Data Types
7. Expressions and the Assignment Statements
8. Statement-Level Control Structure
9. Subprograms
10. Abstract Data Types
11. Object-Oriented Programming
12. Concurrency
13. Exception Handling
14. Functional Programming
15. Logical Programming
2. ICS 313 - Fundamentals of Programming Languages 2
1. Preliminaries
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
3. ICS 313 - Fundamentals of Programming Languages 3
Programming Domains
Scientific applications
Business applications
Artificial intelligence
Systems programming
Scripting languages
Special purpose languages
Language Evaluation Criteria
Readability
The most important criteria
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
Writability
Factors
Simplicity and orthogonality
Support for abstraction
Expressivity
4. ICS 313 - Fundamentals of Programming Languages 4
Language Evaluation Criteria (cont.)
Reliability
Factors
Type checking
Exception handling
Aliasing
Readability and writability
Cost
Categories
Programmer training
Software creation
Compilation
Execution
Compiler cost
Poor reliability
Maintenance
Others: portability, generality, well-definedness
Influences on language design
Computer architecture
We use imperative languages, at least in part, because we use
von Neumann machines
5. ICS 313 - Fundamentals of Programming Languages 5
Influences on language design (cont.)
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
Language Categories
Imperative
Functional
Logic
Object-oriented (closely related to imperative)
6. ICS 313 - Fundamentals of Programming Languages 6
Language Design Trade-offs
Reliability versus cost of execution
Writability versus readability
Flexibility versus safety
Implementation Methods
Compilation
Translate high-level
program to machine
code
Slow translation
Fast execution
7. ICS 313 - Fundamentals of Programming Languages 7
Implementation Methods (cont.)
The compilation process
Implementation Methods (cont.)
Pure interpretation
No translation
Slow execution
Becoming rare
8. ICS 313 - Fundamentals of Programming Languages 8
Implementation Methods (cont.)
Hybrid implementation systems
Small translation cost
Medium execution speed
Programming Environments
The collection of tools used in software development
UNIX
An old operating system and tool collection
Borland JBuilder
A PC environment for Java
Smalltalk
A language processor/environment
Microsoft Visual C++
A large, complex visual environment