Wednesday, February 13, 2008

The Word

One aspect of Creation that has been made more poignant to me over my years of computer programming is the fact that it was done by the Word.

"In the beginning was the Word, and the Word was with God, and the Word was God. The same was in the beginning with God. All things were made by him; and without him was not any thing made that was made." [John 1:1-3]

Aside from the theological concerns of the passage, I have found it interesting to consider why the Lord has been revealed to us as "The Word" in creation (and not, say, the King, or the Lamb, or any of the many other titles and names given to Him in the scripture).

Of course, if we go back to the Genesis 1 account, we find "And God said...", so there's an immediate answer there. "God said" yields "God's Word" in action.

Beyond that, however, consider what the spoken (or written) word means to us. It is the avenue by which we exchange ideas, communicate needs and wants, and record history. In the imperative form, it is how we express things in order to get them done.

Not to belittle the act of creation in the slightest, nor to exalt mankind beyond his station, but from one point of view, one can see a similarity in issuing commands to a computer, and God the Word directing creation by the power of His command.

We, of course, lack the power to do the thing expressed merely by the virtue of us expressing it. I cannot say "remote, come here." and expect that remote on the top shelf to fly across the room into my hand. Unless we perform the action ourselves, we rely on the power of others to whom we express a command. Therefore, "Hey, son, please bring that remote to me" has more likelihood of becoming reality.

When expressing a desire to another acting agent (i.e. person), we typically rely on a certain amount of understanding and intellect in the other to carry out the expression. The amount of detail which we need to put into the expression is inversely proportional to the degree of trust in which we can place in the agent carrying out the command. That is to say, the less you trust an agent to carry out your wishes without help, the more detail you need to provide.

If I ask my son to retrieve a remote control for me, it requires very little detail (usually). If, however, I were to program even a moderately complex robot to do the same, the amount of detail that I would need to provide in the instructions would be enormous in comparison ("the shelf is 4 feet high; the remote is black and 2.5 inches wide, and is sitting one foot from the left end; etc.")

Part of computer programming is learning that you must rely on the computer, but you cannot trust the computer. Not to say that it's plotting your eventual demise, but rather, it only "knows" what you or someone else has told it. Nothing should be assumed, and every detail will need to be thought out eventually. This leads to another post topic, that of planning and preparation. But for this topic, in order to tell the computer what to do and when, we require some form of language.

True, we can use the language of the computer itself, but that also requires the most detail in communicating what to do. Most modern programming languages have come about in order to interject a lot of assumptions into the programming language, so that more there is more in there to "trust" and less detail to have to handle on our own. Nowadays, a language is more than the syntax and commands put together for making a program, it is also the body of the APIs that are available to the developer for use. These APIs are the bulk of the "trust" that we put into the computer based on what we can assume the computer will "understand" when we issue a command or provide some data.

To bring this home, it's good to remember that, in the Babel world of computer languages and programming, choosing the best language or environment to write a piece of software should involve some considered thought on what level of detail you will need to provide to get done what you need to get done, and what assumptions can be made based on what is provided for you in the language and APIs.

By the way, in creation, the One issuing the commands was also the agent in executing the commands. Full trust, the least amount of details provided. "And God said, Let there be light: and there was light." [Genesis 1:3]

- ckb

No comments: