High-Level Language Constructs 105
In theory, a compiled language can be implemented in an interpreted man-
ner, as the interpreter itself is simply an abstraction of the underlying comput-
ing hardware. What distinguishes interpreted languages from their compiled
cousins is that they are typically designed specifically to take advantage of
flexibility afforded to them by the interpreter. This flexibility is often used
to provide dynamic capabilities within the language that would be difficult to
implement in compiled code. Some of these dynamic capabilities include:
• Dynamic typing: Resolution of the types of objects at runtime based on
the runtime behavior of the program.
• Runtime code specification: Introducing new code into the executable
at runtime. ...