Content deleted Content added
Undid revision 781668625 by 74.105.240.28 (talk) don't need another format |
Altered journal. Add: authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this tool. Report bugs. | #UCB_Gadget |
||
(138 intermediate revisions by 64 users not shown) | |||
Line 1:
{{Short description|Computer science textbook}}
{{
{{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 = {{URL|mitpress.mit.edu/sicp}}
}}
'''''Structure and Interpretation of Computer Programs''''' ('''''SICP''''') is a [[computer science]] textbook by [[Massachusetts Institute of Technology]] professors [[Harold Abelson]] and [[Gerald Jay Sussman]] with Julie Sussman. It is known as the "Wizard Book" in [[hacker culture]].<ref>{{Cite book |last1=Raymond |first1=Eric S. |url=http://archive.org/details/newhackersdictio00raym |title=The New hacker's dictionary |last2=Steele |first2=Guy |date=1991 |___location=Cambridge, Massachusetts| publisher = MIT Press |others=Internet Archive |isbn=978-0-262-68069-1}}</ref> It teaches fundamental principles of [[computer programming]], including [[recursion]], [[Abstraction (computer science)|abstraction]], [[Modular programming|modularity]], and [[programming language]] [[Metalinguistic abstraction|design]] and [[Programming language implementation|implementation]].
[[MIT Press]] published the first edition in 1984, and the second edition in 1996. It was used as the textbook for MIT's introductory course in [[computer science]] from 1984 to 2007. SICP focuses on discovering general [[Pattern|patterns]] for solving specific problems, and building [[Software system|software systems]] that make use of those patterns.<ref>{{Citation |last=Harvey |first=B |year=2011 |contribution-url=http://www.eecs.berkeley.edu/~bh/sicp.html |contribution=Why SICP matters? |title=The 150th anniversary of MIT |publisher=[[Boston Globe]]}}.</ref>
==Content==▼
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>
▲== Content ==
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#Assembler|assembler]] to implement Lisp [[Interpreter (computing)|interpreters]] and [[compiler]]s.
Topics in the books are:
=== Chapter 1: Building [[Abstraction (computer science)|Abstractions]] with [[Function (computer programming)|Procedures]] ===
# The Elements of Programming
# Procedures and the [[Process (computing)|Processes]] They Generate
# Formulating Abstractions with Higher-Order Procedures
=== Chapter 2: Building Abstractions with [[Data]] ===
# 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 ==
* Ben Bitdiddle
* Louis Reasoner: the loose reasoner▼
* [[Evaluator|Eva Lu Ator]]
▲* Alyssa P. Hacker: a Lisp hacker
* Lem E. Tweakit
▲* Cy D. Fect: A "reformed C programmer."
== License ==
The book is licensed under a [[Creative Commons]] Attribution
▲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>
== 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
==
* ''[[Compilers: Principles, Techniques, and Tools]]''{{snd}} also known as ''The Dragon Book''
==
{{Reflist}}
== External links ==
* {{Official website|mitpress.mit.edu/sicp}}
* [https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video_galleries/video-lectures/ Video lectures]
* [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]]
|