| 12345678910111213141516171819202122232425262728293031 | 
							- August 2021When people say that in their experience all programming languages
 
- are basically equivalent, they're making a statement not about
 
- languages but about the kind of programming they've done.99.5% of programming consists of gluing together calls to library
 
- functions. All popular languages are equally good at this. So one
 
- can easily spend one's whole career operating in the intersection
 
- of popular programming languages.But the other .5% of programming is disproportionately interesting.
 
- If you want to learn what it consists of, the weirdness of weird
 
- languages is a good clue to follow.Weird languages aren't weird by accident. Not the good ones, at
 
- least. The weirdness of the good ones usually implies the existence
 
- of some form of programming that's not just the usual gluing together
 
- of library calls.A concrete example: Lisp macros. Lisp macros seem weird even to
 
- many Lisp programmers. They're not only not in the intersection of
 
- popular languages, but by their nature would be hard to implement
 
- properly in a language without turning it into a dialect of
 
- Lisp. And macros are definitely evidence of techniques that go
 
- beyond glue programming. For example, solving problems by first
 
- writing a language for problems of that type, and then writing
 
- your specific application in it. Nor is this all you can do with
 
- macros; it's just one region in a space of program-manipulating
 
- techniques that even now is far from fully explored.So if you want to expand your concept of what programming can be,
 
- one way to do it is by learning weird languages. Pick a language
 
- that most programmers consider weird but whose median user is smart,
 
- and then focus on the differences between this language and the
 
- intersection of popular languages. What can you say in this language
 
- that would be impossibly inconvenient to say in others? In the
 
- process of learning how to say things you couldn't previously say,
 
- you'll probably be learning how to think things you couldn't
 
- previously think.
 
- Thanks to Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad
 
- Masad, and Robert Morris for reading drafts of this.
 
 
  |