Eddon is a strange hybrid programming language which I’ve been toying with since 2000. Before you turn away from Yet Another Language, I’d like to invite you to stay with me for just a bit. This introduction will have a couple examples
EDDON stands for Event Driven Dynamix Object Networks. Its design attempts to address some of the major problems with existing languages. Many of the complexities of our current systems stem from an inability to share how data is organized. Compilers represent data structures and call stacks as static entities, and so adding a field to a function or a structure means replacing all the code that depends on the data. This has led to an extreme amount of abstractions and dependencies that are trying to add capabilities and dynamic properties to a static system.
It’s my belief that by “unoptimizing” the basic method call we can add in the flexibility and dynamic behavior we need, remove dozens of layers of abstraction, and actually have a faster system than the “optimized” one. We look at systems at the macro level, rather than optimizing things at the micro level.
* Event Driven – Eddon is parallel and event driven. Code is written in a simple non-linear style. The run-time takes care of how to schedule it on your processing cores automatically.
* Dynamic – The system can change and reconfigure itself while it runs because everything is dynamically typed. All control structures are first class objects!
* Named Arguments – Some systems claim to support this concept, but it’s really just syntax sugar. Eddon actually passes all arguments in a fast associative array. This means that you don’t get arguments in the wrong order, all arguments are optional, and your code is more compatible with future and previous versions. Combined with the dynamic typing and reflection capabilities this makes for a powerful and clean API.
* Modern – Some things will remind you of SmallTalk, but I’ve replaced the smalltalk “world” with a class library with version control and features like C integration, persistence, and asynchronous method calls.
Stay tuned for a number of short lessons that detail these features (and more) in the coming installments.