Why "Structure and Interpretation of Computer Programs" matters (2011)

A classic MIT textbook, *Structure and Interpretation of Computer Programs* (SICP), is praised for radically sharpening how programmers think about computation, abstraction, and language design, even for those with years of experience. Commenters debate whether Scheme/Lisp’s minimalist, uniform syntax is a powerful teaching tool or an unnecessary barrier compared to more familiar C‑style or Python syntax, tying this to broader questions about what feels “natural” to beginners versus what builds deep understanding. Others question SICP’s real‑world relevance and pedagogical fit as a first course—especially now that many universities favor Python—arguing over whether it cultivates durable conceptual foundations or promotes over‑abstraction detached from practical software work.

Perceived purpose and value of SICP

  • Many see SICP as a foundational text on how computation and abstractions work (procedures, data, interpreters, evaluators, types as tags), not an algorithms reference.
  • Readers report long‑term changes in how they think about language constructs, problem decomposition, and DSLs.
  • Some argue the main gains are conceptual (e.g., understanding interpreters, OO from first principles), which later transfer well to other languages.
  • Others think its influence has encouraged over‑abstraction and inefficient software.

Suitability for beginners vs experienced programmers

  • Several commenters read it after years of professional work and found it eye‑opening, especially if their background was mainly in mainstream imperative/OOP languages.
  • Others found it redundant with a solid CS education or prior experience with interpreters/FP.
  • Some say it’s a poor first book: too mathy, abstract, or “quixotic,” and better as a second‑pass or capstone text.
  • A few report bouncing off early chapters and never returning; a minority say it nearly put them off programming entirely.

Scheme/Lisp vs mainstream languages (esp. JavaScript)

  • There’s extensive counterfactual debate about “what if the web had chosen Scheme instead of JavaScript.”
    • Pro‑Scheme side: simpler core, proper tail calls, call/cc, macros, clearer semantics.
    • Skeptical side: browser language success depends on syntax familiarity, ecosystem, and corporate needs; Lisp syntax would likely have limited adoption and not fixed JS’s design‑in‑a‑rush problems.
  • Discussion of Erlang vs Elixir is used as an example: same VM, but more familiar syntax and tooling helped Elixir spread.

Syntax, cognition, and structural editing

  • Long argument over whether curly‑brace / Algol‑style syntax is “innate” or just historical accident.
  • Some stress redundancy and varied delimiters as helpful for human error correction; others value Lisp’s uniformity and ease of macro‑based extension.
  • Parentheses complaints are challenged with structural editors (paredit, smartparens, parinfer) and IDE support, but critics still find S‑expressions visually noisy or cognitively heavy.

Lisp in practice: power vs maintainability

  • Praised features: REPL‑driven development, macros, interactive introspection, DSLs, stable standards, named arguments and documentation in Common Lisp.
  • Criticisms: fragmentation, small ecosystems, “everyone invents their own abstractions,” divergent styles, making large projects hard to maintain and onboard to.
  • Some argue other languages have absorbed many Lisp innovations (GC, higher‑order functions) except S‑expression syntax, which remains niche.

Pedagogy and course design

  • Conflicting TA reports:
    • One camp says Scheme’s small, uniform core lets courses spend minimal time on syntax and focus on ideas; students handle it well.
    • Another camp says “everything looks the same” causes persistent confusion; abstractions are taught before students have concrete needs for them.
  • Debate over whether intro courses should prioritize conceptual depth (SICP, Scheme) or more “extroverted” projects tied to real systems (Python, robots, web).

Related works and resources

  • Comparisons to “Paradigms of Artificial Intelligence Programming” (PAIP): SICP is more academic and language‑agnostic; PAIP is more Common Lisp‑ and GOFAI‑focused, with more practical software design.
  • Multiple links mentioned: new official SICP HTML site, third‑party EPUB, JS and Python adaptations, and classic lecture videos.