As it stands, The Third Manifesto satisfies an academic need. It sets out in great detail a proposed foundation for database programming, along with a language and type system, with the clear intention of replacing and surpassing SQL.
But the question is: what purpose does it serve in the wider IT community? Who has a problem that it will solve? Who needs products built to TTM guidelines?
I think the ‘smoking gun’ of current business application development is the ‘object relational impedance mismatch’. The plethora of ‘object relational mappers’ or ORMs out there provide evidence for that view. The story is something like this.
- The ‘object relational impedance mismatch’ is a real impediment to productive application development. The ORM layer consumes large amounts of programmer time and energy to develop and maintain, it’s a major source of bugs and a major source of performance issues. The ORM is a solution to a problem that should not exist. It’s time for it to go.
- Attempts to resolve this on the database side (by creating ‘object databases’) have been a dismal failure, at least for general purpose application development. The ‘NoSQL’ databases have done better, at least for a certain range of applications, but there is no sign that either is capable of taking over as the next generation.
- Relational theory is a proven foundation for building robust databases over a wide range of size and function. Relational databases are here for the long haul.
- Therefore the ORM problem must be resolved on the language side (by creating ‘relational languages’). The essential business logic of any application has to be expressed in a language that has native access to relational data, without the need to translate the data into objects and back again.
- The first attempt at such a language was SQL, and it has failed to deliver.
- SQL at the 1992 level is widely used as a data sublanguage in conjunction with an ORM. It cannot be used to develop business logic.
- SQL since 1996 has included SQL/PSM, which can be used to develop business logic (often referred to as stored procedures). However actual implementations of SQL/PSM very widely in compliance and capabilities; there are multiple partial and incompatible implementations, and in many environments there is none (eg Sqlite on Android).
- SQL is a very old language (since the 1970s) and has many technical deficiencies including an awkward syntax, difficulties in fully expressing the Relational Algebra and limited capabilities for extension and defining types.
- SQL does not provide or is incompatible with modern language development systems: IDE, debugger, version control, build systems, etc.
- So the need is for a modern language that
- Can be used instead of, as well as or alongside SQL
- Can be used to code the essential business logic of applications
- Has native access to relational data and data types
- Has a sophisticated extensible type system
- Plays well with other languages and technologies
- Has no ‘object relational impedance mismatch’ (by design)
- Is competitive with other modern languages in its use of and compatibility with modern language development systems
- Is available as the same language on all possible platforms.
That’s what The Third Manifesto describes and that’s what Andl aspires to be.