meta-linguistic abstraction
ways to build a big system
- break it into smaller pieces
- invent a new language
why invent a new language?
- new way to think about the system
- tailored to the problem at hand
- code can be much more succinct
examples
- the Unix shell
- Mathematica
- Excel spreadsheet macros