CS430 Fall 2006
Chapter Outline of Concepts of Programming
Languages by Robert Sebesta
·
o
Concepts of
programming languages (reasons for studying) 2-4
o
Programming
domains (5-8)
o
Language
evaluation criteria (7-20)
o
architecture
effects language design – von Neumann architecture in which programs and data
are stored in same memory - CPU which
executes the memory is separate and instructions and data need to be moved from
memory and results back to memory
o
Language categories
(paradigms) (23-32) – example languages for each
o
definitions
and differences between interpretation and compilation
o
Von Neumann bottleneck –
instructions can be executed faster than they can be moved to the CPU for
execution.
·
o
FORTRAN
§
arithmetic
if
§
do loop
§
format
statements
§
computed
goto
§
error
handling
§
goal of
language design
§
Be able to read , determine output (trace),
write FORTRAN code
o
Functional
programming
§
intended
for symbolic computation
§
useful
in AI
§
LISP
atoms and lists
§
LISP
read eval print loop
§
Be able to read , determine output (trace),
write LISP code
o
Design
goals of BASIC
o
Snobol
§
design
goals
§
parameter
passing mode
§
Be able to read , determine output (trace),
write Pascal code
o
Pascal
§
design
goal and use
§
parameter
passing modes
§
block
structure inherited from Algol
§
Be able to read , determine output (trace),
write Pascal code
o
Prolog
§
design
goal and use
§
facts
and rules
§
Be able to read , determine output (trace),
write Prolog code
o
§
design
goals
§
parameter
passing modes
o
Java
·
o
Describing syntax
§
strings
of a language are sentences or statements
§
syntax
rules specify which strings are legal
o
BNF
§
whole
programming languages can be described by context-free grammars
§
natural
notation for describing syntax
§
metalanguage
is a language that is used to describe another language
§
BNF is
a metalanguage for programming languages
§
be able
to generate valid strings, given a grammar
§
be able
to draw a parse tree and a left-most derivation showing the generation of valid
strings, given a grammar
§
be able
to determine whether a string is valid, given a grammar
§
know
what makes a grammar ambiguous and be able to determine if a grammar is
ambiguous
§
given a
grammar, be able to describe accurately and completely in simple English what
the sentences of the grammar consist of
§
know
what EBNF added to BNF
o
Dr. Adams’ note:
Know 4 elements of a grammar
§
(1. terminals, 2.
nonterminals, 3. productions, 4. goals)
·
·
o
Names
§
difference
between keywords and reserved words
§
know
which languages we have looked at have reserved words and which do not
§
know
what pre-defined terms are
o
Binding
§
four
types of bindings
·
name,
value, type, location
§
when does
each type of binding occur?
·
run time,
load time, compile time, language design time, etc.
§
implicit
versus explicit
§
static
versus dynamic
§
lifetime
of a variable – allocation / deallocation
·
stack-dynamic
·
explicit
heap-dynamic
·
implicit
heap-dynamic
o
Type checking
§
type
compatibility
§
strong
typing
o
Scope
§
static
§
dynamic
§
block
scope
§
referencing
environment
§
o
Initialization
·
o
Primitive data
types
o
String types
§
design choices
o
Ordinal types
o
User-defined
types
o
Arrays
§
address
computation for single-dimensional arrays
§
address
computation for two-dimensional arrays stored in row-major order
§
address
computation for two-dimensional arrays stored in column-major order
o
Records
§
difference
between arrays and records
§
how
record fields are referred to
o
Pointers
§
anonymous
variables
§
dynamic
variables
§
dereferencing
§
problems
·
dangling
pointers
·
garbage
·
o
Arithmetic
expressions
§
what do
you need to know to evaluate arithmetic expressions
o
Overloaded
operators
o
Type conversion
§
implicit
§
explicit
§
what
languages allow/prohibit them
§
which
languages allow mixed mode expressions
o
Relational &
Boolean expressions
§
use of boolean variables in conditional expressions
§
short
circuit evaluation
o
Assignment
statements
·
o
Selection statements
§
definition
§
forms
§
required
elements
o
Iterative
statements
§
definition
§
different
types
·
pre-test/post-test
·
counter
controlled / logic controlled
§
forms
§
getting
out
o
Unconditional
branching
·
o
Subprograms
o
Procedures &
functions
§
similarities
and differences
§
which
languages use which
o
Design issues
o
Parameter passing
§
pass by
value
§
pass by
reference
§
pass by
result
§
pass by
value-result
§
pass by
name
§
type
checking of parameters
§
which
languages use which method
§
parameter
mode indicators in languages studied
o
Overloaded
subprograms
o
Generic
subprograms
§
definition
o
Design issues
·
o
except for activation records
§
static
links
§
dynamic
links
§
return
address
§
stack
·
o
definition of an abstract data type
o
Data abstraction
o
Design issues
o
Language examples
§
·
specifications
– public interface
·
bodies
– provide implementation – may be public or private
o
Dr. Adams’ note:
encapsulation
§
the
implementation can be hidden for simplification purposes
·
o
except
as it’s used in
·
o
except
as it’s used in
·
o
only basic
concepts of exception handling and exception
handling design issues
§
Java exception
handling
§
FORTRAN
“exception handling”
·
·
o
Mathematical
functions
o
LISP
o
Be able to read , determine output (trace),
write LISP code
o
Dr. Adams’ note:
functional language applications
§
Know that best
use is for AI applications; models the real world differently than other
language paradigms (recursion and math are more natural in functional
languages)
·
o
Logic programming
(624-625)
o
Prolog history
(625-626)
o
Prolog basics
(626-640)
o
Be able to read , determine output (trace),
write Prolog code
o
Prolog
deficiencies
o
Prolog
applications