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

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.