Terms Flashcards
Concise definition of programming language simplicity
Simplicity in a language, therefore, is at least in part the result of a combination
of a relatively small number of primitive constructs and a limited use
of the concept of orthogonality.
orthogonality
abstraction
ability to define and then use complicated
structures or operations in ways that allow many of the details to be ignored.
two forms of abstraction
process (subroutines)
data (objects that are more intuitive to understand)
expressivity
a language has
relatively convenient, rather than cumbersome, ways of specifying computations.
aliasing
having two or more distinct names that can be
used to access the same memory cell.
It is now widely accepted that aliasing
is a dangerous feature in a programming language.
cost of a language
- cost of training programmers to use the language
- cost of writing programs in the language
- cost of compiling programs in the language
- cost of executing programs written in a language is greatly
influenced by that language’s design. A language that requires many run-time
type checks will prohibit fast code execution, regardless of the quality of the
compiler. Although execution efficiency was the foremost concern in the design
of early languages, it is now considered to be less important.
- cost of the language implementation
system. (eg Java can be implemented anywhere) - cost of poor reliability
- cost of maintaining programs
Of all the contributors to language costs, three are most important: program
development, maintenance, and reliability. Because these are functions of writability
and readability, these two evaluation criteria are, in turn, the most important.
major disadvantage of functional programming languages
not optimized for von neumann architecture the way imperative languages are
SIMULA 67
first language
to provide even limited support for data abstraction
Smalltalk
first object-oriented language, 1989
example of tradeoff between reliability and cost of execution
java checks that arrays are in range, adds execution cost for the sake of reliability
load module,
or executable image
The user and system code together
von Neumann bottleneck
The speed of the connection between a computer’s memory and its processor
usually determines the speed of the computer, because instructions often
can be executed faster than they can be moved to the processor for execution.
disadvantages of pure interpreted languages
regardless of how many times a statement is executed, it must be
decoded every time. Therefore, statement decoding, rather than the connection
between the processor and memory, is the bottleneck of a pure interpreter.
requires more
space.
execution is 10 to 100 times slower than in compiled systems.
Hybrid Implementation Systems
mix of pure interpreted and compiled languages
only compile each statement once
eg Perl, Java w JVM