Three Levels of a New Programming System
April 6, 2022

This note describes a three-layer programming-system sketch: hardware substrate, self-reprogramming object model, and high-level language syntax.

The useful artifact path is concrete: an FPGA-array idea, PCB attempts around small Lattice parts, and emulators in Logisim and ShaderToy that exposed why a fine-grained cell needed controller structure around it.

Programming-system noteOriginally posted 2022-04-06; expanded here around the three-layer architecture.

Article focus: FPGA arrays, emulation, hardware substrate, self-reprogramming object model, reactive dataflow, and language syntax.

The Three Layers

The sketch separates the system into three layers. The low layer is the hardware substrate. The middle layer is a self-reprogramming object model that owns local structure. The top layer is the language surface: syntax and semantics for writing programs against that model.

That separation is useful because it prevents the language from pretending the substrate is generic. Placement, ownership, state, and reconfiguration have to remain visible enough for the program to behave predictably.

The Emulator Result

The original work passed through small FPGA-array hardware plans and then emulators in Logisim and ShaderToy. The emulators exposed a practical constraint: a very fine-grained FPGA-like cell is not enough if each compute region also needs local control, framing, and reconfiguration behavior.

That pushed the design toward a cell or region that contains more than one logic element and can act as a controlled local object instead of a bare gate.

The Programming Target

The target language was distributed, reactive, object-oriented, dynamically typed, and capable of describing self-modifying structure. Those words only matter if the middle layer gives them concrete meaning: what owns state, what can change, how messages or dependencies move, and how local reconfiguration is bounded.

The claim to preserve is the architecture, not the slogan: hardware substrate, reconfigurable object model, and language syntax have to be designed together.