What Made Lisp Different
Paul Graham’s essay What Made Lisp Different identifies nine revolutionary concepts McCarthy introduced with Lisp in the late 1950s.
The Nine Ideas
1. Conditionals: McCarthy invented the if-then-else construct, which later became standard.
2. First-Class Functions: “Functions are first class objects—they’re a data type just like integers, strings, etc.”
3. Recursion: Lisp became the first programming language to support recursion.
4. Pointer-Based Variables: Variables act as pointers to values; values carry type information.
5. Garbage Collection: Automatic memory management built in from the start.
6. Expression-Based Programs: “Lisp programs are trees of expressions, each of which returns a value.”
7. Symbol Type: Symbols allow pointer-based equality testing.
8. Tree Notation: Code represented as symbolic trees enabled meta-programming.
9. Unified Execution Model: “There is no real distinction between read-time, compile-time, and runtime.”
Current State
Ideas 1-5 are now widespread. Concepts 8-9 remain largely unique to Lisp dialects.
My Takeaway
Understanding Lisp’s innovations helps you see what modern languages are still missing.
What do you think about Lisp’s ideas? I’d love to hear at persdre@gmail.com.