TABULA: A new
programming tool, a new design approach
The field we are in, and our area
of expertise, is digital machine controls. These controls invariable require two main
Time and time again we see people
grappling with how to describe (specify)what such a multi-tasking,
context-dependent control program should do. The problem is
that normal "linear" English is not suited to describing
context and concurrency. Trying to describe a complicate machine
control in plain English is virtually impossible. You just wind
up with to many ifs, buts, whens, howevers and exceptions, and the
description turns into a linguistic bowl of spaghetti.
We have recently developed a
tool that addresses at least part of this problem. It is called
Tabula, and provides a simple, intuitive table
based method for describing the relationships between events,
actions and context (current system state). Beyond being a tool for
working out and specifying the logic, Tabula also simulates the
logic and generates SPLat code. Naturally Tabula also supports our
MultiTrack multitasking system.
Tabula is completely free. It is
fantastic for generating SPLat programs, and is also very useful for
specifying and/or designing programs in other languages. Tabula has
its own webpage here.
You can watch a brief video
introduction to Tabula's use as a design/specification tool
here. Tabula is solidly
grounded in the theory of Finite State Machines, but this video
adopts a different terminology to make it easier to understand for
people who find the term "Finite State Machine" a bit too eye
You can find the first of an
more comprehensive video series here. This does use the
Finite State Machine terminology.