Monday 27 December 2010

Genesis, the Matrix and C++

In brief. The first two chapters of the Bible repeat themselves, one option is that God's code did not compile right the first time.

It is a commonly known fact that the Bible contains repetitions, utterly obscure and, according to critics, contradictory parts, two examples of the latter are the fact that God made the world piece-by-piece in 6 days and not all at once despite being omnipotent and despite being pleased with his divine handiwork (e.i. perfect) and having foreknowledge of how it will pan out has had to intervene more than once to set things straight. I am aware that topic has been extensively covered by saint Augustine and in the second Vatican council, namely it is a metaphor and I do not want to discuss it anyway as the title gives away.
Ignoring the omnipotence/perfection problem, there is an interesting parallel with this, computer programming and Matrix movies.
There is an interesting philosophy behind Matrix trilogy, partially inspired by Christian beliefs and partially from cyberspace, here are some points I'd like to mention in a quite lengthy digression written as bullet points to avoid excessive bad grammar due mismatched prepositions—:

  • the world is run by machines, which were originally created by humans
  • these machines, contrary to the laws of thermodynamics, use humans as batteries
  • these humans live their lives in a virtual world, called "the matrix" unaware of it being so
  • this virtual world was created by the Architect (a demiurge without omnipotence/omniscience)
  • the matrix is run by several programs (bots), one of which becomes viral
  • some humans are aware of it and want to "liberate" everyone else (despite the clearly worse living conditions), those who are aware have supernatural powers thanks to their will power
  • to counter some bugs in previous versions of the matrix, free will was factored in the current version, (which results in Neo persisting despite the futility of the fight and winning, somehow) so the previous version was a deterministic system whereas this one is a stochastic system if one were to borrow terminology from Mathematical biology
  • the machines are lead by the deus ex machina, as it is quite ironically called when you watch the movie with subtitles —having lost the remote to the player—, ironic as it does not mean god of the machines, but it is a name for a far-fetched plot-twist (such as this)
Computer programs are written, compiled and run. If there is a syntax mistake in the code it will not compile, whereas if there is a methodological error the output will differ from expected and it will take forever to pin point the bug.
In the Book of Genesis God makes heaven and earth in 7 days, but there is not written if it was his first go nor if he made previous versions which did not compile or where excessively buggy. If the scripture is taken ad litteram as a temporal order, creation was not written in a programming language but was assembled on the fly in some fancy version of CAD or similar, whereas if the Augustinian version (accepted version) is taken, in which creation was instantaneous (atemporal) and the days are metaphors of the atemporal priority of the creation of the parts it fits the model of computer programming, namely God wrote first the library light, then the library firmaments etc, then compiled and run (instantaneous creation of the world). In the latter scenario, God could have multiple universes running at the same time.
The creation of the world appears twice in the book of Genesis, proof that the world was written in C++ or similar language, except that in the first account it failed to compile properly. Additionally some bugs are still present but luckly the simulation/creation allows a debug mode. 
It should be noted that the book of Revelations, describe the end of the world but not the end of all creation (heaven inclusive) so it is not the narrative of the program crashing, although that situation may also appear (cf. Dogma by Kevin Smith).
Additionally, it is not C++, as God does not say "int main() {light()}", but it is definitely a script as God makes stuff by saying incantations.

In conclusion, the world is written in some kind of scripting language and it took (at least) two goes to get it to compile, but there are one or two bugs still and the world may not end as foretold in the book of Revelations but may suddenly crash due to an unexpected error.