11 May 2006

Philosophies of Programming

In this excellent article, Dave Thomas, of Bedarra Research Labs, discusses the use of different philosophies of programming: JOT: Journal of Object Technology - The Impedance Imperative Tuples Objects Infosets = Too Much Stuff!.
The metaphor is that squares (relational tuples), circles (objects) and triangles (XML info sets) provide different ways of thinking about programming solutions, and the underlying point is that few programming development environments allow for these different views to be integrated.
Dave Thomas exhorts us:
SURELY WE CAN DO BETTER!
The impedance of incompatible type systems imposes a constant runtime overhead in addition to the syntactic burden. We need to move beyond the three solitudes and go beyond the gratuitous complexity that exists today. There is no reason we can't develop languages that are as productive and easy to use as 4GLs and which have underlying execution semantics based on integrated type system where tuples, objects and infosets are all first class. Microsoft .NET has already demonstrated that it is possible to have an OO language that can contain tuples and records as native types.
There are some early exemplars that show lots of promise. Xduce [6] provides an interesting semantics for Infosets and related research. Xtatic investigates XML as a native type in an OO language like C#. The recent research paper on the unification of tables, objects and documents [7] provides an interesting example of how an existing OO language such as C# or Java can be semantically and syntactically enhanced to address the problem.
We need to step back and consider the accidental complexity that arises when all of the various technical components are presented to a business developer. In isolation each of these technologies has clear merits but even a simple business application is far too complex when we compose the parts. We need to apply our considerable efforts to developing languages/tools as simple and useful for business users as 4GLs have been and continue to be. We need a computationally complete end user programming language, which will allows a mere mortal to create and deploy applications across a federated collection of semi-structured information.

In a more recent article (this previous one dates back to September 2003) he adds Dave Thomas on The (Re) Emergence of Agile languages and Domain-Oriented Programming:
Many at the PDC and JAOO were in shock as Erik Meijer http://research.microsoft.com/~emeijer/) and the VB team showed off VB 9 features that combine clever type inference and structural sub-typing to simply and elegantly manipulate squares (relational tuples), circles (objects) and triangles (XML info sets) as simple polymorphic collections.

By the way, it is good to see dynamic languages included in the debate about new paradigms of computing, and to see discussion of how to target the JVM and th CLR from such langauges.
The JAOO conference in Aarhus, Denmark has become one of the most enjoyable and informative developer conferences in the land of OO. Originally a Java conference, it has expanded to cover a wide variety of topics from MS.NET and Java technology to best practices in software engineering. This year's conference followed on the heels of the Microsoft PDC earlier in the month. Both conferences featured tracks and sessions on scripting, dynamic languages and domain specific languages. There was also a Dynamic Languages Symposium (http://decomp.ulb.ac.be:8082/events/dls05/program/) and Ruby conference at OOPSLA. These efforts are all aimed at lowering the barrier to developing applications. Hurrah!

References
Dave Thomas: "The Impedance Imperative - Tuples+Objects+Infosets=Too Much Stuff!", in Journal of Object Technology, vol. 2, no. 5, September-October 2003, pp. 7-12. http://www.jot.fm/issues/issue_2003_09/column1
Dave Thomas: "The (Re) Emergence of Agile Languages and Domain-Oriented Programming", in Journal of Object Technology, vol. 4, no. 9, November-December 2005, pp. 7-10 http://www.jot.fm/issues/issue_2005_11/column1 Posted by mofoghlu at May 11, 2006 2:36 PM
Comments
Post a comment