Title: Concepts of Programming Languages Introduction
1Concepts of ProgrammingLanguagesIntroduction
- Högskola I Gävle
- Brahim Hnich
- http//www.csd.uu.se/brahim
- brahim_at_csd.uu.se
2Overview
- Introduction to the course
- goals
- organization
- outline
- Introduction to Concepts of Programming Languages
3Goals
- Increased capacity to express programming
concepts. - Improved background for choosing appropriate
languages. - Increased ability to learn new languages.
- Understanding the significance of implementation.
- Overall advancement of computing.
- Increased ability to design new language.
4Organization
- Course Homepagehttp//www.csd.uu.se/brahim/cpl.
html - Schedule
- Lecture slides
- Html version
- postscript version
- Announcements
- Other resources online
- TextbookSebesta, Robert W. "Concepts of
Programming Languages", Benjamin/Cummings,
senaste uppl
5Outline
- Introduction
- Functional/Logic Programming Languages
- Describing Syntax and Semantics
- Names, Bindings, Type Checking, and scopes
- Data Types
- Expressions and the assignment Statement
- Statement-Level Control Structures
- Subprograms
- Implementing Subprograms
- Abstract Data Types
- Support for OOP
- Concurrency
- Exception Handling
6Programming Domains I
- Scientific applications
- simple data structures (arrays, matrices)
- control structures (loops and selection)
- large numbers of floating-point arithmetic
- Business applications
- producing elaborate reports
- precise ways of describing and storing decimal
numbers and character data - the ability to specify decimal arithmetic
operations
7Programming Domains II
- Artificial intelligence
- use of symbolic rather than numeric computations
(linked lists) - requires more flexibility
- Systems programming
- systems software
- execution time is crucial
- Scripting languages
- putting a list of commands in a file to be
executed - Special purpose languages
8Evaluation Criteria I
- Readability the ease with which programs can be
read and understood the most important criterion - Overall simplicity
- Too many components is bad
- Multiplicity of features is bad
- operator overloading is sometimes bad
- Orthogonality
- relatively small number of primitive constructs
can be combined in a relatively small number of
ways to build the control and data structures of
the language - Makes the language easy to learn and read
- Meaning is context independent
- Control statements
- Data types and structures
- Syntax considerations
9Evaluation Criteria II
- Writability is a measure of how easily a
language can be used to create programs for a
chosen problem domain. - Simplicity and orthogonality
- Support for abstraction the ability to define
and then use complicated structures or operations
in ways that allow many of the details to be
ignored. - Expressivity very powerful operators that allow
a great deal of computation to be accomplished
with a very small program. - Reliability a program is reliable if it performs
to its specifications under all conditions - Type checking
- Exception handling
- Aliasing having two or more distinct referencing
methods, or names for the same memory cell
(dangerous) - Readability and writability
10Evaluation criteria III
- Cost
- Programmer training
- Software creation
- Compilation
- Execution
- Compiler cost
- Poor reliability
- Maintenance
- Others
- portability
- generality
- well-definedness
11Primary influences on language design
- Computer architecture
- We use imperative languages, at least in part,
because we use von Neumann machines - 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
12Language Categories
Imperative C Pascal Functional Lisp (to
be used in labs) Logic Prolog (to be used in
labs) Object-oriented C Java Object-Pascal
(Delphi)
13Language Design Trade-offs
- Reliability versus cost of execution
- Writability versus readability
- Flexibility versus safety
14Implementation Methods
- Compilation
- Translate high-level program to machine code
- Slow translation
- Fast execution
- Pure interpretation
- No translation
- Slow execution
- Becoming rare
- Hybrid implementation systems
- Small translation cost
- Medium execution speed
15Programming Environments
The collection of tools used in software
development UNIX An old operating system and
tool collection Borland C A PC environment for
C and C Smalltalk A language
processor/environment Microsoft Visual C A
large, complex visual environment