Wed Apr 8 15:52:17 CEST 2009
Before restating the new goals, I'm going to list the things that are
no longer part of Staapl objective:
- DSP / dataflow code (moved to the IP project).
The reason for this is quite straightforward: dataflow
representation exposes parallelism and implementation is mostly
about the interaction between memoization and code/block
sequencing: how to keep track of intermediate results given a
certain memory hierarchy.
Concatenative code is inherently _serial_ in nature, and execution
context is easily swapped, which makes it more suited for a
concurrency oriented programming model.
It might make sense to use concatentative code as a
_specification_ language for DSP operations by translating it into
dataflow representation, but that is not the goal of Staapl as of
So, what are the goals:
+ Understand modules in a language without local names. This has
been the most important problem in using Staapl's Forth to write
applications. Almost all generic code will have macro form and
directives about instantiation.
+ Investigate bottom-up (safe) language design and verification
rooted in concrete machine semantics and compile-time checks for
language abstraction (typed macros).
+ Find a meet-in-the-middle (MIM) model for small microcontrollers
based on concrete semantics.
+ Find the border between a) static semantic relations relating
concrete machine, through MIM model to higher order static
functions and b) dynamic behaviour which is interaction with
memory and communication with external events/devices/machines.
+ Optimize the MIM model for FPGA implementation.
Some of these terms are a bit vague, but I hope the general idea will
become more clear later on.