I’ve come upon a couple of research languages (that run on a JVM) that attempt to address various issues of loosely coupled architectures.
- HydroJ – An extension of Java where programmers define services that use pattern matching to describe the handling of semi-structure messages. Pattern matching focuses on the essential parts of a message as opposed to the inessential parts. This is inline with my thoughts of using pattern matching for schemas and my thoughts on event driven APIs.
- IConJ – Explores the concept of “Implicit Context”, IConJ is a language and preprocessor for the application of implicit context transformations to Java source code. The idea is that reuse and evolution could be made simpler if the constraints on conforming to a global world are relaxed. Extremely intriguing ideas worth more indepth study.
- Scala – A programming language designed to address web services. Scala is an object-oriented and functional language. Every value is an object, every function is a value, support general purpose pattern matching and the semantics can be forumlated as a “Functional Nets”. Functional Nets combine key ideas of functional programming and Petri nets to yield a simple and general programming notation. They have their theoretical foundation in Join calculus.
- JPiccola – Piccola is a small language that provides only compositional constructs, computation is performed by the host language. The semantics of Piccola is defined in terms of a process calculus, based on Milner’s pi calculus. Communincation is via forms, rather than tuples. A “form” is an extensible nested record which also serves as a namespace in which expressions may be evaluated. It would be interesting to understand how pi calculus based systems support a more loosely coupled paradigm.
I’m curious how these ideas can form the foundation that addresses the inherent complexities that emerges out of a loosely coupled architecture.
It’s also interesting to note the academic community’s penchant for creating new languages rather than building frameworks. Presenting a paper about a new library may not be as impressive as presenting about a new language, however in the real world it’s definitely more pragmatic. Learning a new language and integrating it is clearly more difficult that understanding a new api and using a library.
Now, it’s well known that academic papers are also about showing off one’s intellectual prowess. What better way to doing that than writing a spanking new compiler? Academicians however earn their keep by publishing papers, so it’s unfair to criticize them for being pragmatic themselves!