Tue Aug 4 11:14:36 CEST 2009
A bit less cryptic
Practically, this project is about giving ideas implicit in Packet
Forth a new home.
For day-to-day problem solving in embedded software projects, C is not
going anywhere because next to a programming language, it is also an
interface standard, both for commodity machines and commodity
Instead of focussing on building new languages, I think it is
worthwhile to do some engineering on with subsets of C itself, by
providing an infrastructure that makes it easier to bootstrap
``functional, concurrency oriented C code''.
Hopefully this idea will become easier to articulate once the
implementation is done.
The goal is this:
* Write a re-usable collection of C primitives necessary to support
a dynamically typed scripting language, but do this in such a way
that it does _not_ depend on external memory or control models.
* To test the primitives and the programming method, write a couple
of dyntyped scripting languages (memory and control models) on
top of the primitives. I'm thinking about two: a PF-like
concatenative linear stack language and a Scheme-like
CONS/CONT/GC based language.
* Write a compiler for static memory allocation and scheduling to
optimize away the scripting layer.
* Use a data-flow architecture (inspired by Oz).
Static types? Given that the goal of the project is _prototyping_
which is mainly _evolving specification_ I think it's better to stick
to a simpler dynamically typed approach.