I would like to share with you one of my deepest insights in regard to software deveolopment and programming languages. This is an idea that I have been searching for in over six years, working proffessionally with related issues, and spending endless of hours thinking about how to solve a particular problem. Finally, one nice summer day 2008 I was lying on the grass this idea suddenly hit me like lightning! What I came up with could result in a new programming language paradigm, and possibly change the way we write interactive software. Here is the story.
So, what is the problem I tried to solve? Well, how about if you want to create a really advanced interactive user interface. I am not talking about some simple modal user interface with a couple of modal dialog boxes. I am talking about the kind of user interface that continously give advanced feedback to the user, such as a word processor that continously updates a WYSIWYG layout, or checks your spelling. Or for example advanced IDE:s that compile and verify your programs at the same time as you write them. Just to give some examples.
What is characteristic for this kind of software is their predominant non-modality. When the user interacts with the user interface, he is continously presented with various consequences of his interaction, giving an interactive experience. I have been professionally involved in developing this kind of software, first working briefly for Intentional Software and then later Configura.
Undoubley, there are a number of such user interfaces around, created using contemporary programming methodology, such as ordinary OOP. The methodology to provide interactivity is to use listners/observers to propagate change through the data strucutres of the program. This is often referred to as the observer pattern, closley related to the model view controller design pattern (MVC pattern). Sometimes change propagation comes in the form of more simple ”hooks” or ”callbacks”. (more…)