The following core principles animate and underly the entire platform. They provided not only the basis for its conception, but the litmus test for every design and architecture decision made along the way; today, they continue to guide the direction of the product.
Edit Let Laziness Prevail
Good software developers are characterized not by the ability to write code, but by the ability to recognize and implement abstractions. Indeed, we argue that ambitious laziness, the desire to do more with less, is the fundamental driving force behind all forward movement in the software industry; it has certainly been that for Dataphor.
Edit What Not How
As
C. J. Date amply demonstrates in the book What Not How, the declarative approach to application development is fundamentally about raising the level of abstraction at which we describe and interact with applications. The Dataphor platform is an attempt to achieve this new level of abstraction.
Edit Formalization Enables Automation
In order to automate something, it must be characterized in formal terms such that an algorithm can be developed to perform the task. Recognition and application of this principle forms the basis for the implementation of Dataphor.
Edit Conceptual Integrity is the Most Important Factor in System Design
This principle is taken straight from the pages of
The Mythical Man-Month and it is as true today as it was when it was first written over thirty years ago.
Edit Logical Differences are BIG Differences
As
C. J. Date and
Hugh Darwen often point out, logical differences quickly translate to difficulties when dealing with languages and systems.
Edit Orthogonality is Directly Proportional to Power
Different facets of the system should be as independent as possible, especially with respect to the language. Preserving this independence results in a system that is more intuitive, and more powerful.
Edit As Simple As Possible, But no Simpler
http://www.entish.org/wordpress/?p=638 Occam's Razor tells us that simplicity is also directly related to power, but tenuously so.
Edit Accidental Complexity Must Be Eliminated
In another reference to
http://en.wikipedia.org/wiki/Fred_Brooks Fred Brooks, complexity often arises from the approach taken to solve a problem. While we agree that there is
http://en.wikipedia.org/wiki/No_Silver_Bullet No Silver Bullet, we argue that the declarative approach is one of the best tools for eliminating accidental complexity.
Edit Generation Must Be Transparent
This principle follows directly from the idea that formalization enables automation. If something can be generated, it has obviously been described in enough detail to be formalized, and should therefore be automated, rather than generated. The subtle distinction is one of levels, if at the end of the day, we can still talk about the solution to the problem in high-level terms, then we are using automation. If we must subsequently deal with the solution at a lower level of abstraction than we expressed it, then we are using generation. In other words, generation is fine, so long as it is always transparent to the developer.
Edit The Long And Winding Road
These principles form the guidebook for architectural and development decisions made on the Dataphor project. We fully recognize that there are areas of the Dataphor platform that fail to live up to these ideals. At the same time, there are areas where these principles have resulted in a platform that provides unparalleled productivity and expressive power. We are constantly striving to improve all aspects of the Dataphor platform and use these principles as a guide to do that.