Eight Fallacies of Declarative Computing
Erik Meijer listed eight fallacies of declarative programming in his keynote address at YOW in Melbourne this morning:
- Exceptions do not exist.
- Statistics are precise.
- Memory is infinite.
- There are no side-effects.
- Schema doesn’t change.
- There is one developer.
- Compilation time is free.
- The language is homogeneous.
To put these in some context, Erik made several points about declarative programming in his talk. First, “declarative” is relative. For example, if you’re an assembly programmer, C looks declarative, but if you program in some higher level language, C looks procedural. Then he argued that SQL is not as declarative as people say and that in some ways SQL is quite procedural. Finally, the fallacies listed above correspond to things that can cause a declarative abstraction to leak.
(The videos of the YOW presentations should be available in January. I haven’t heard anyone say, but I imagine the slides from the presentations will be available sooner, maybe in a few days.)