I recently started taking the SICP course( SICP playlist on ytb by MITOCW ). I find data abstraction, wishful thinking and the build a language methodology with primitives and means of combination quite a bliss to think about and to use.
I noticed that Hal compared it with the top-down waterfall model, and that makes me wonder if parts of these methods have there associates in the software engineering landscape.
I’m mainly interested in how much people are using it in their daily development and if there are corresponding ideas/methodology in/besides stuff like agile
terminologies
- data abstraction - define a data type with primitive data and selector with axiom of behavior, regardless of implementation. Axiom such as pict(rect) should draw the picture that pict represents in the rectangle rect represents, in which primitives are pict and rect; rect can have selector to get its width and height
 - wishful thinking - to build a system with parts you wish you have without thinking about how they should be implemented.
 - build-a-language - to define a language made out of curated list of primitives and means of combination (procedures, operators) that solves a class of problem, such as a language for pattern matching.
 
SICP is not really about software methodology. It’s more fundamentals of programming and how to think clearly. It’s a bit old fashioned but definitely worth reading. If you want a critique, try https://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf . For a critique of the critique, https://www.wisdomandwonder.com/link/1055/why-calculating-is-better-than-scheming .
Yes because it describes universal concepts. Lisp is a simple way to explain those things but you can do that in every language.

