Markus Strasser

Powered by 🌱Roam Garden

On LISP and programming design www.paulgraham.com/progbot

"41. Some programming languages manage to absorb change, but withstand progress."

In Lisp, you don't just write your program down toward the language, you also build the language up toward your program.

As you're writing a program you may think "I wish Lisp had such-and-such an operator." So you go and write it.

Afterward you realize that using the new operator would simplify the design of another part of the program, and so on

Like the border between two warring states, the boundary between language and program is drawn and redrawn, until eventually it comes to rest along the mountains and rivers, the natural frontiers of your problem.

In the end your program will look as if the language had been designed for it.

Bottom-up design makes programs easier to read. 

An instance of this type of abstraction asks the reader to understand a general-purpose operator; an instance of functional abstraction asks the reader to understand a special-purpose subroutine.

October 24th, 2020