Dmitry Petrov Back

Out of the Tar Pit

Article is rather abstract at start and begins with defining what the accidental and essential complexities are in terms of program systems. The aproach is rather radical, because the essential complexity is treated only as a complexity that directly derives from the user specifications, so all language and infrastructure complexity is accidental which is some sort of bitter true. The proposed approach is to eliminate all possible accidental complexity if possible and separate remaining from so called essential logic and state si that they should not ever know about it’s existance. The proposed way to define such a system is to use relational model which can help defining all the system essential requirements and constraints in a purely declarative manner and just provides endpoints to extend the system with accidental complexity parts if needed for performance or usability reasons.