Structure and Interpretation of Computer Programs: JavaScript EditionA new version of the classic and widely used text adapted for the JavaScript programming language. Since the publication of its first edition in 1984 and its second edition in 1996, Structure and Interpretation of Computer Programs (SICP) has influenced computer science curricula around the world. Widely adopted as a textbook, the book has its origins in a popular entry-level computer science course taught by Harold Abelson and Gerald Jay Sussman at MIT. SICP introduces the reader to central ideas of computation by establishing a series of mental models for computation. Earlier editions used the programming language Scheme in their program examples. This new version of the second edition has been adapted for JavaScript. The first three chapters of SICP cover programming concepts that are common to all modern high-level programming languages. Chapters four and five, which used Scheme to formulate language processors for Scheme, required significant revision. Chapter four offers new material, in particular an introduction to the notion of program parsing. The evaluator and compiler in chapter five introduce a subtle stack discipline to support return statements (a prominent feature of statement-oriented languages) without sacrificing tail recursion. The JavaScript programs included in the book run in any implementation of the language that complies with the ECMAScript 2020 specification, using the JavaScript package sicp provided by the MIT Press website. |
Contents
Building Abstractions with Functions | 1 |
2 | 22 |
Formulating Abstractions with HigherOrder Functions | 48 |
2 | 67 |
3 | 179 |
Modularity Objects and State | 189 |
Metalinguistic Abstraction | 317 |
Computing with Register Machines | 449 |
References | 565 |
607 | |
Other editions - View all
Common terms and phrases
algorithm Alyssa apply argument expressions assign("val assignment balance Ben Bitdiddle binding Bitdiddle branch combination compiler complex numbers component compound connector const constant construct constructor data objects data structure defined ECMAScript elements environment evaluator example execution function Exercise factorial Fibonacci Figure frame function application go_to guess head tail higher-order functions implement input integers interpreter is_good_enough iterative JavaScript label lambda expression lazy evaluation linkage list("a list("computer loop memoization metacircular modify mutex Newton's method null number of steps operations painter parameters parse pattern pattern variables perform polynomial predicate primitive function produce programming language query queue rational numbers recursive reg("env reg("fun reg("val register machine represent representation restore result return head return is_null return pair return statement rule selectors simulator specified square stack stream string symbol syntax tail recursion test list tree undefined variable vector