The new revenge of the nerds
It’s been a while since Paul Graham wrote his revenge of the nerds an essay exploring the differences between lisps and other languages, in it he explores 9 ideas that were originated in lisps and were gradually copied to other languages (or maybe reinvented) in the last 40 years.
The last 2 ideas are still unique to Lisp:
- A notation for code using trees of symbols and constants. (Code is data)
- The whole language there all the time.
What Paul meant by the whole language being there the whole time, is that even when reading or compiling your program you can execute your own code, this idea combined with the idea that your code is data gives you the ability to change code as it is read or compiled this is what gives us Lisp’s macros!
The interesting bit is that language designers want to be able to modify their own code at compile time more and more, and at last there are...
Continue reading →