Eidola Examples
Examples
Comparisons and Metaphors
Growin' Code
Trial by Eidola
Tag Team Coding
Why Eidola Wants to Evolve
About Eidola
Project Status
FAQ
Contact
Eidola Home
 
  Why Eidola Wants to Evolve
Most modern programming languages suffer from monolithia. The pieces of the compiler are very tightly integrated, and the useful semantic information which a compiler possesses is not easily accessible to outside programmers. This problem is not absolute. Many compilers separate code generation from parsing and thus can compile for multiple chips. Most compilers have a neatly separated tokenization and parsing phase, and Lisp even makes this step a well-defined part of the language.

However, such coarse modularity is pathetic put next to UNIX's world of many small programs playing nicely together, or Java's world of well-encapsulated single-purpose APIs. Linux's astonishingly rapid development from being tinker-toy software to competing with Microsoft is due not only to its open source nature, but to its UNIX-style modularity. Creative developers have been able to write new device drivers, window managers, network utilities -- all the things that make an operating system robust -- working quite independently from one another. When somebody has a cool idea for Linux, they can implement it easily, in relative isolation, and toss it into the mix.

Eidola's design brings this much-needed modularity to programming languages. It's possible to invent a new notation, new code annotation system, new storage format, new code generator, or new runtime environment, each without breaking or even affecting the others. Although the kernel is a central piece, even it is open to creativity, since it can cooperate with existing kernels and notations though a common storage format or object model. The single common thread connecting all these pieces is the semantics, noble guardian of the possibility of all these crazy pieces working together.

Some creative users will want to stray from the semantics and break compatibility to build flavors of the language (like what the Pizza project did with Java). This road is not so thorny with Eidola, where it is completely ascertainable exactly where and how a new flavor departs from the standard version of the language. Eidola would be a wonderful starting point for research into wild new programming language constructs. Got a dream for a massively concurrent pure functional neural net dataflow language?

All these examples are limited by the imaginations of the few people who came up with them. It is my hope that Eidola will not remain so limited forever.

 
Copyright 2000-2001 Paul Cantrell