Go to the first, previous, next, last section, table of contents.

Blackboard Computing

Since the function call is the fundamental abstraction mechanism of modern computing, many computing advances are expressed as changes to the way we do function calls.

One idea that keeps drifting in and out of fashion is that of implicit invocation of functions: Execution of a given function is triggered not by an explicit call to it in the flow of computation, but rather by the appearance of some pattern in the data.

A simple example of pattern-directed invocation is tinyfugue's triggers, which are executed when a given regular expression is matched in the current input line.

Modern blackboard systems represent a more sophisticated example, in which some or all of the state of the program is kept in a shared datastructure known as a blackboard, which in effect is inspected by many automated experts, each of which performs the tasks it is specialized for as the occasion arises, taking the information it needs from the blackboard and putting the results back in the blackboard, where they may in turn trigger yet more computation. The blackboard becomes a wide, sophisticated communication channel for a very decentralized (and potentially distributed) computation.

It would be interesting to consider using some or all of a Muq db as a blackboard, and to see what we could learn from blackboard system research: What server support would be appropriate, and what would the resulting coding style look like?

This is potentially a very powerful model of computation, and one very well suited to the Internet in general and Muq in particular.

I am interested in providing generic Muq support for all the computational styles identified in Design Patterns (a superb book) and as part of that am contemplating generic Watcher support: This is likely to be of great help in implementing blackboard-style computations in Muq. Is that necessary and sufficient? Are there other server mechanisms critically needed?

This is a research level project.

Go to the first, previous, next, last section, table of contents.