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
Modularity Objects and State | 189 |
Metalinguistic Abstraction | 317 |
Computing with Register Machines | 449 |
References | 565 |
607 | |
Other editions - View all
Common terms and phrases
abstraction addition amount apply argument assign balance base binding block body branch called chapter combination compiler complex component compound conditional consider const constant construct contains continue controller create data structure defined described elements environment evaluator example execution Exercise expression extended factorial Figure frame function give given guess head idea implement input instruction integers interpreter JavaScript label language linkage loop machine match means memory method modify null object operations original pair parameters pattern perform pointer polynomial predicate primitive problem produce query recursive represent representation restore result rule sequence shows simple specified square stack statement steps stream string structure symbol tail takes tree true variable write