Ideas I've Learned From Programming Languages

I’ve used a myriad of different programming languages. In this post, I’ll briefly discuss some of the ideas I’ve gleaned from some of them, in no particular order.


Code can be data, and data can be code. The homoiconic syntax coupled with macros make for an extremely customizable language.


Every resource (memory, file handles, network requests, etc.) has a lifetime associated with it. Keeping track of those lifetimes and avoiding lifetime-related errors is extremely important, and a source of many bugs.


Type / category theory is an interesting way to think about the relationships between types. Likewise, pure functions tend to be easier to reason about than functions with tons of side effects (though full language level immutability can be a bridge too far).


Compile-time code execution is an extremely powerful idea that can be used to implement a surprising number of features (including generics and static guarantees). Also, consistent, orthogonal language design is very difficult, but important.


Giving user code the ability to integrate deeply with and extend language features can result in very powerful and ergonomic library code (see for example the pattern matching and “is” and “as” proposals as explained in this video).


At the end of the day, everything is just memory.

Published on 2022-01-02