... that brings us to the end of the book, for the 2nd time!
I'm signing off, a full list of tweets can be found at mdjnewman.me/SICPQuotes/, along with a link to an edition of SICP that's published on Github. Go forth and seek perfection of part and adequacy of collection!
SICP Quotes retweeted
Their programs lead fast and dangerous lives. For example, the notorious "worm" that paralyzed the Internet in 1988 exploited the UNIX TM operating system's failure to check whether the input buffer has overflowed in the finger daemon.
SICP Quotes retweeted
Compilers for popular languages, such as C and C++, put hardly any error-checking operations into running code, so as to make things run as fast as possible. As a result, it falls to programmers to explicitly provide error checking. Unfortunately, people often neglect to do this.
SICP Quotes retweeted
Compiled code can execute faster, because the steps of program execution are organized in terms of the machine language, and the compiler is free to make optimizations that cut across the higher-level abstractions.
SICP Quotes retweeted
Interpreters are good for interactive program development and debugging because the steps of program execution are organized in terms of these abstractions, and are therefore more intelligible to the programmer.
SICP Quotes retweeted
An interpreter raises the machine to the level of the user program; a compiler lowers the user program to the level of the machine language. We can regard the Scheme language (or any programming language) as a coherent family of abstractions erected on the machine language.
SICP Quotes retweeted
A compiler, on the other hand, can exploit the structure of the particular expression it is processing to generate code that avoids unnecessary stack operations.
SICP Quotes retweeted
When the interpreter evaluates an expression, it must be prepared for any contingency. Before evaluating a subexpression, the interpreter saves all registers that will be needed later, because the subexpression might require an arbitrary evaluation.
SICP Quotes retweeted
There are further opportunities to gain efficiency in compiled code. As the interpreter runs, it follows a process that must be applicable to any expression in the language. In contrast, a given segment of compiled code is meant to execute some particular expression.
SICP Quotes retweeted
When the interpreter evaluates an expression it performs the work of classifying the expression (e.g. as a procedure application) & testing for the end of the operand list. With a compiler, the expression is analyzed only once, when the instructions are generated at compile time
SICP Quotes retweeted
Compared with interpretation, compilation can provide an increase in the efficiency of program execution. On the other hand, an interpreter provides a powerful environment for interactive development, because the program being executed can be examined & modified at run time
SICP Quotes retweeted
In this section, we explore the alternative strategy of compilation. A compiler for a given source language and machine translates a source program into an equivalent program (called the object program) written in the machine's native language.
SICP Quotes retweeted
A program to be interpreted (the source program) is represented as a data structure. The interpreter traverses this data structure, analyzing the source program. As it does so, it simulates the intended behavior of the source program by calling appropriate primitive subroutines.
SICP Quotes retweeted
An interpreter written in the native language of a machine configures the machine to execute programs written in a language (called the source language) that may differ from the native language of the machine performing the evaluation.
SICP Quotes retweeted
There are two common strategies for bridging the gap between higher-level languages and register-machine languages. The explicit-control evaluator illustrates the strategy of interpretation.
SICP Quotes retweeted
The controller for a general-purpose machine is an interpreter for a register-machine language like the one we have been using. This language is called the native language of the machine, or simply machine language.
SICP Quotes retweeted
Commercial general-purpose computers are register machines organized around a collection of registers and operations that constitute an efficient and convenient universal set of data paths.
SICP Quotes retweeted
With the implementation of the explicit-control evaluator we come to the end of a development, begun in chapter 1, in which we have explored successively more precise models of the evaluation process.
