Is the brain a computer?

I was listening to Donald Knuth give an Author’s Talk over at Google and he did it in soft of a Q&A setup. One of the questions was, I think, particularly evocative: “is the brain really a computer and if so, what are the theological implications?” When I heard that, I put the video on hold to get my thoughts down. Here is the answer, as I would have given it (and I’ll listen to Knuth’s answer in a second):

“If you want to think of the human brain as a computer, I suppose it is as good an analogy as any. If it is, it would be a biological computer unlike any in existence. But I do not see this posing any problems, theologically. One of the most important ideas in Christianity is that a human being has both a body and a soul. It is interesting. C.S. Lewis once said that you do not have a soul. You are a soul. You have a body. This seems particularly pertinent, because if you want to say that the human body is equipped with a massively powerful computer, fine. It is still under the control of the soul which truly is the essence of the human being. Finally, Faith is interested in the soul. The fact that your soul is operating a computer does not change its overall status and does not pose any difficulties to the Christian faith–it does not even change anything, any more than determining the composition of the rest of the body has.”

That’s pretty close to my knee jerk reaction. Naturally, I have had a few (five or so) minutes to refine it so it probably would not have come out so well had I said it, but the content would have been more or less the same.

Literate Programming for NAnt

I just pushed some code up to Gitorious:

Sticking with my recent interest in literate programming, the project is a simple dll (nant.lp.dll) that implements notangle and noweave tasks for NAnt.

The DLL itself is available from the link (no need to compile!) if you prefer. I will attempt to keep this up to date as I tweak the plugin.

A full example can be seen in the .build file at the source. However, to get the general sense across, I’ll quote the documentation section of the woven source:


So far, we have concerned ourselves entirely with building these tasks and have not given any examples of their use. A complete example is the file used to build this project. However, we will provide a brief overview of both tasks.


This tag:

<notangle literatefile="nant-lp.nw" outputfile="Noweave.cs" chunk="Noweave.cs" />

runs the equivalent of this command:

notangle -RNoweave.cs nant-lp.nw | cpif Noweave.cs


Similarly to the previous section:

<noweave literatefile="nant-lp.nw" outputfile="nant-lp.txt" index="true" backend="asciidoc" />

runs the equivalent of this command:

noweave nant-lp.nw -index -asciidoc > nant-lp.txt

No real surprises here.
If anyone has any questions or comments, feel free to post them here.