Content deleted Content added
Altered journal. Add: authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this tool. Report bugs. | #UCB_Gadget |
|||
(126 intermediate revisions by 59 users not shown) | |||
Line 1:
{{Short description|Computer science textbook}}
{{Redirect|SICP}}
{{Infobox book
| italic title = force
| name
| image
| caption
| author
| cover_artist
| country
| series
| subject
| genre
| publisher
| pub_date
| media_type
| pages
| isbn = 0-262-51087-1
| isbn_note = (2nd ed.)
| oclc
| dewey
| congress
| website
}}
'''''Structure and Interpretation of Computer Programs''''' ('''''SICP''''')
MIT Press published a [[JavaScript]] version of the book in 2022.<ref>{{Cite book |publisher=MIT Press |year=2022 |url=https://mitpress.mit.edu/books/structure-and-interpretation-computer-programs-1 |title=Structure and Interpretation of Computer Programs: JavaScript Edition |isbn=9780262543231}}</ref>
The book describes computer science concepts using [[Scheme (programming language)|Scheme]], a dialect of [[Lisp (programming language)|Lisp]]. It also uses a [[virtual machine|virtual]] [[register machine]] and [[Assembly language#Assember|assembler]] to implement Lisp interpreters and [[compiler]]s.▼
==
▲The book describes computer science concepts using [[Scheme (programming language)|Scheme]], a dialect of [[Lisp (programming language)|Lisp]]. It also uses a [[virtual machine|virtual]] [[register machine]] and [[Assembly language#
Several fictional characters appear in the book:▼
Topics in the books are:
* Alyssa P. Hacker, a Lisp hacker▼
* Ben Bitdiddle, a hardware expert▼
* Cy D. Fect, a "reformed C programmer"▼
* Lem E. Tweakit, an irate user▼
* Louis Reasoner, a loose reasoner▼
=== Chapter 1: Building [[Abstraction (computer science)|Abstractions]] with [[Function (computer programming)|Procedures]] ===
== License ==▼
# The Elements of Programming
# Procedures and the [[Process (computing)|Processes]] They Generate
# Formulating Abstractions with Higher-Order Procedures
=== Chapter 2: Building Abstractions with [[Data]] ===
The book is licensed under a [[Creative Commons]] Attribution ShareAlike 4.0 License.<ref>{{Citation | title = SICP | publisher = MIT press | url = http://mitpress.mit.edu/sicp/}}.</ref>▼
# Introduction to Data Abstraction
# Hierarchical Data and the [[Closure (mathematics)|Closure Property]]
# Symbolic Data
# Multiple Representations for Abstract Data
# Systems with Generic Operations
=== Chapter 3: Modularity, [[Object (computer science)|Objects]], and [[State (computer science)|State]] ===
# [[Assignment (computer science)|Assignment]] and [[Local variable|Local State]]
# The Environment Model of Evaluation
# Modeling with Mutable Data
# [[Concurrency (computer science)|Concurrency]]: Time Is of the Essence
# Streams
=== Chapter 4: [[Metalinguistics|Metalinguistic]] Abstraction ===
# The [[Meta-circular evaluator|Metacircular Evaluator]]
# Variations on a Scheme – [[Lazy evaluation|Lazy Evaluation]]
# Variations on a Scheme – [[Nondeterministic algorithm|Nondeterministic Computing]]
# [[Logic programming|Logic Programming]]
=== Chapter 5: Computing with [[Register machine|Register Machines]] ===
# Designing [[Register machine|Register Machines]]
# A Register-Machine Simulator
# [[Register allocation|Storage Allocation]] and [[Garbage collection (computer science)|Garbage Collection]]
# The Explicit-Control Evaluator
# Compilation
== Characters ==
▲Several humorously-named fictional characters appear in the book:
▲* Alyssa P. Hacker, a Lisp [[hacker]]
▲* [[Side effect (computer science)|Cy D. Fect]], a "reformed C programmer"
* [[Evaluator|Eva Lu Ator]]
▲* Louis Reasoner, a "loose reasoner"
▲== License ==
▲The book is licensed under a [[Creative Commons]] Attribution
== Coursework ==
The book was used as the textbook
== Reception ==
''[[Byte (magazine)|Byte]]'' recommended SICP in 1986 "for professional programmers who are really interested in their profession". The magazine
A review of SICP as an undergraduate textbook by [[Philip Wadler]] noted the weaknesses of the Scheme language as an introductory language for a computer science course.<ref>{{Cite journal |last=Wadler |first=P |date=1987-03-01 |title=A critique of Abelson and Sussman or why calculating is better than scheming |url=https://dl.acm.org/doi/10.1145/24697.24706 |journal= ACM SIGPLAN Notices|volume=22 |issue=3 |pages=83–94 |doi=10.1145/24697.24706 |issn=0362-1340}}</ref> Wadler criticized in particular the lack of [[pattern matching]], obscuring [[equational reasoning]] and making the teaching of proofs harder; the lack of [[Algebraic data type|algebraic data types]] in Scheme and the over-reliance on [[cons]] pairs for both code and data representation, which can confuse beginning students; and the choice of [[Strict evaluation|strict]] instead of [[lazy evaluation]] as the standard evaluation strategy.
== Influence ==
SICP has been influential in computer science education, and
* ''[[Structure and Interpretation of Classical Mechanics]] (SICM)'', another book that uses Scheme as an instructional element, by Gerald Jay Sussman
* ''[[Software Design for Flexibility]]'', by Chris Hanson and Gerald Jay Sussman
* ''[[How to Design Programs]] (HtDP)'', which intends to be a more accessible book for introductory Computer Science, and to address perceived * ''[[Essentials of Programming Languages]] (EoPL)'', a book for Programming Languages courses
== See also ==
* ''[[Compilers: Principles, Techniques, and Tools]]''{{snd}} also known as ''The Dragon Book''
== References ==
{{
== External links ==
*
* [
* [https://media.githubusercontent.com/media/sarabander/sicp-pdf/master/sicp.pdf Book compiled from TeX source]
* [https://xuanji.appspot.com/isicp/ Structure and Interpretation of Computer Programs. Interactive Version]
{{Lisp programming language}}
{{Authority control}}
[[Category:
[[Category:1996 non-fiction books]]
[[Category:Computer science books]]
[[Category:Computer programming books]]
[[Category:Creative Commons-licensed books]]
[[Category:Massachusetts Institute of Technology]]
|