On Flexible Systems
Gerald Jay Sussman (video):
Most systems we build work well for the application that they were designed for, but they are brittle in that adapting to even small changes in the problem requires large changes in the code. Can we optimize for flexibility, trading off other virtues like proofs of correctness or efficient execution? I think this is often the right path.
[…]
I will show where it is to our advantage to make systems with extensible generic operations, and how to control such systems.
He talks about the virtues of late binding, “careful but dangerous” programming, and prioritizing code that is easy to modify and fast to debug.