## abelson, sussman, abelson ### mit press
first chapter, locke’s concerning human understanding, exposes that all human ideas are made of: - combination - comparison - abstraction
of the three, combination could be linked to aesthetics: the way one thing flows into another
abstraction, too, obviously, through symbols and depictions
and of comparison? perhaps the human part? the comparison with an ideal model? with a pre-conception? that’s more software architecture, though.
well designed computer programs are modular (constructed, replaced, debugged separately)
justifies LISP prefix syntax by the fact that “no ambiguity can arise” and is a straightforward way to “nest procedures”
says the humans are confused but the machine isn’t
pretty printing: operands are aligned vertically (what kind of reading pattern is this?)
displays the clear structure of the expression
footnote: Lisp obeys the convention that every expression has a value. This convention, together with the old reputation of Lisp as an inefficient language, is the source of the quip by Alan Perlis (paraphrasing Oscar Wilde) that “Lisp programmers know the value of everything but the cost of nothing.”
the value is the moment, the cost is the goal?
a program is the step by step increase in complexity
In comparison with most other programming languages, Lisp has a very simple syntax; that is, the evaluation rule for expressions can be described by a simple general rule together with specialized rules for a small number of special forms. > less is more, minimalism (as opposed to Pascal)
a function is declarative, describing the properties of things, while a procedure is imperative, it states how to do things.
a procedure definition should be able to suppress details: “One of the things we should demand from a powerful programming language is the ability to build abstractions by assigning names to common paerns and then to work in terms of the abstractions directly.”
to what extent should beauty be independent of data?