Compilers are hard | ShipReq Blog
Discovered on 20 January 11:00 PM CST.
- What that means from a coding point of view, is that we never know the automation rules at compile-time.
- It’s like having a ‘Name’ field of type String, and then a runtime rule dictating the required first letter of the name.
- The first-letter of a name restriction is a toy example but it demonstrates the fact that you have runtime configuration in one location, runtime data in the other, and no type-safety at compile-time to enforce that the right thing happens at runtime.
- That’s exactly what I did and I was able to have my cake and eat it: the code is super fast and the entire “compilation” step is atomic and pure, meaning I don’t sacrifice FP.
- With the possible exception of Haskell, writing a fast compiler means having lots of mutable state; and mutate state is exponentially harder to reason about and keep correct.
Read full article on
blog.shipreq.com.