Computing is still primitive and Fragile.
For example, Typography is an ancient profession.
CSS3 is just cute, compared to what Typographers can do.
It is haughty to think that computers can do everything, with fidelity.
Donald Knuth spent a disproportionate amount of time on typesetting,
and rightfully so.
To put Entity Systems in context, here is a list of programming
paradigms as used in the Software Industry.
Automata/ State Machines are at the heart of all Software.
Currently state machines can be implemented by the following
This is the OO way of doing it.
This uses function pointers.
I find it appalling that gotos are considered a joke.
Here is a Knuth’s defence of goto. The paper also has a hint of satire,
on how programming language designers are complicit in advocating Newspeak,
Just for a perspective, see the tcp/ipv4 code from FreeBSD.
This code is used by Sony and many embedded systems.
The Linux implementation is similiar.
The most critical piece of Internet Infrastructure is designed
as a state machine using goto’s.
Using goto’s is hardly different from Dispatch Tables.
RAM is a hardware implementation of a table.
Why is there, no joke on this page ?
Probably because it’s used in the Electronics Industry.
Blaming goto’s is like blaming a Scalpel.
This has the following styles,
See Program Development by Stepwise Refinement
Typically how you write C programs.
Encapsulation for me, is the most important idea here.
>>> import this
Namespaces are one honking great idea – let’s do more of those!
Functional programming structures code around transformations,
than state changes.
It’s tricky to do Games in Pure Functional Programming.
Impure Functional Programming as seen in Common Lisp, Clojure,
Perl, Python, Ruby, OCaml is more successful.
The following are some fine examples,
DSL’s and Scripting Components.
See Rake, Blender API
This includes Lispy Macros, yacc.
Computers react to events.
This is my favorite paradigm.
Impure Functional programming fits nicely here.
You just have to see it.
Most widely used Programming Language if you ask me.
A bit of a stretch, but anything from Photoshop layers to Circuit Design goes here.
Erlang is a great success story.
In a way Entity Systems, takes concepts from every one of the above.
I am not even sure it’s a new Paradigm.
But the reason I am excited about Entity Systems is, it puts us right back
into Batch Computing. Entities are stored centrally and Systems perform batch operations on them.
And best of all, it is battle tested by Game Developers.