Lecture 1
Lecture 1
Introduction
• Expressivity
– A set of relatively convenient ways of specifying operations
– Strength and number of operators and predefined functions
• Type checking
– Testing for type errors
• Exception handling
– Intercept run-time errors and take corrective measures
• Aliasing
– Presence of two or more distinct referencing methods for the
same memory location
• Readability and writability
– A language that does not support “natural” ways of expressing
an algorithm will require the use of “unnatural” approaches, and
hence reduced reliability
• Portability
– The ease with which programs can be moved
from one implementation to another
• Generality
– The applicability to a wide range of applications
• Well-definedness
– The completeness and precision of the
language’s official defining document
• Computer Architecture
– Languages are developed around the prevalent
computer architecture, known as the von
Neumann architecture
• Program Design Methodologies
– New software development methodologies (e.g.,
object-oriented software development) led to
new programming paradigms and by extension,
new programming languages
• Pure Interpretation
– Programs are interpreted by another program known as
an interpreter
– Use: Small programs or when efficiency is not an issue
• No translation
• Easier implementation of programs (run-time
errors can easily and immediately be displayed)
• Slower execution (10 to 100 times slower than
compiled programs)
• Often requires more space
• Now rare for traditional high-level languages
• Significant comeback with some Web scripting
languages (e.g., JavaScript, PHP)