weird.txt 2.1 KB

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