Component Based languages

Hi Paul,

you may be interested in having a look on my Xtend extension library which implements a component wiring approach.

This follows my article about flow design. It describes a new software design approach with a strict component principle in its heart. We call it the “principle of mutual oblivion”.
In flow design you are wiring components together which are strictly not knowing each other (by not calling each other, because the method call is the main reason for violating this principle).

You can also understand it as another programming paradigm, complementary to the object oriented one and the functional one (it does not replace them!).
It can be applied in every programming language. But of course, as for the functional and for the object oriented paradigms, special language constructs would make the paradigm better readable and recognizable in source code. In my second article I give an outlook how this language constructs could look like (after showing, how it could be applied in Java).

Currently, I’m designing a language (with Xtext) which tries to implement these language constructs in a new language similar to Xtend or Kotlin (as multi-paradigm languages; based in XBase). … But this currently goes forward quite slowly because of other side project like the Gamma compiler generator. :slight_smile:

Disclaimer: Flow Design is not my idea. The idea is from Ralf Westphal. I found his articles about that fascinating and as eye opener for a better SW design.

One last note: Unfortunately, there is an issue in Xtend’s active annotation implementation which prevents my Xtend library from being used with Xtend types defined in the same project. Beside the fact, that using Xtend’s active annotation feature in that way is quite cumbersome from language design point of view… It was more a proof of concept.