GBBOpen is an interactive OOP tool for Common Lisp based on the blackboard metaphor of specialists collaboratively solving problems. It originated from 1970s speech recognition and sonar data projects. GBBOpen provides CLOS tools and libraries for dates, math, threads, and more. Its core functionality includes bidirectional links between objects, event handling, hierarchical spaces to store objects, and instance retrieval. It implements journaling and could support other persistence backends.
2. BlackBoard Metaphor
A group of specialists sitting a room with a
large blackboard.
Work as a team to brainstorm a solution to
a problem.
Everyone contributes to the blackboard,
when the information on the blackboard
allows to apply their knowledge
3. A bit of History
From 1970s:
Hearsay II speech recognition
Interpretation of sonar data for ocean
surveillance projects
More recent:
Collaborative Network for Atmospheric Sensing
LiftOff! (Earth observation satellite RADARSAT-1)
DARPA Urban Challenge (C++ KOGMO RTDB)
4. Alternatives?
Just use a database to store the current
state with a schema (or, some
schemaless mess) and queries?
Tight coupling between app code and BB
Often inefficiency
Use an custom in-memory representation
developed specifically for the task
There's a Flexibility vs. Efficiency tradeoff
5. Blackboard Subsystems
Blackboard
Storage of objects in hierarchical spaces
Dimensional retrieval
Knowledge Sources (KS)
Control Shell
6. GBBOpen Tools
Useful CLOS tools
define-class macro
MOP tools
Various libs that should belong elsewhere
Declared Numerics
Pseudo Probabilities
Date/Time
Datastructures
7. GBBOpen Tools
Portable Threads
Scheduled / Periodic Functions
Sockets
Double Metaphone
Etc etc etc.
Even Modules (like ASDF, why?)