08 February, 2007

In Lisp, everything is made of what?

Did you ever hear that in Lisp, everything is a list? This is the first phrase that I've heard describing this language. This simplistic explanation, as it is often repeated in isolation and without a single further comment, has got in the way of my learning this greatest language. I thought then, what a retarded language - only lists and nothing else? How primitive! How on Earth can you represent anything with a shopping list? Okay, you can probably program a shopping routine and emulate queues of buyers in the mall, but you certainly cannot do graphics or something more complex than that. Too specialized language, I thought, not worth my attention, and learned C++ ...

After reading Paul Graham, I went - hey, I may be really missing something here. What is this thing 'Lisp macros', anyway? How can they be that powerful? I've got to look into it. And so I started to study Lisp...

After first few pages of Lisp manual, the ultimate revelation downed upon me: it's not just lists, it's lists within lists within lists within lists! We get trees of lists. In Lisp everything is a tree! Lists have one dimension, trees have as many as you want! They can grow to infinity and fill all space around you. They can take the form of any object in the physical universe. With trees you can connect any concept with any other. Everything is made of trees, how wonderful! Basically, any structure of data can be represented with Lisp's TREES. Lists, linked lists, double linked lists, matrices, b-trees, red-black trees, classes, collections, database entries, xml schemas, et cetera, et cetera, et cetera - any data structure you have in any application can be quite easily and simply represented with some tree. This was already the turning point, and I didn't get to the macros yet.

So, in telling others about Lisp's wonders, don't tell them that in Lisp, everything is made of lists. This is misleading. Instead, tell them that everything is made of trees - lists of lists of lists, and with that, anything a programmer wants, can be made.

18 July, 2006

AI will never happen.

I have nailed it down, period. There may be some approximations - like various tricks making machine 'look' intelligent. Turing tests, that is. It may become more and more elaborate with time. But machines will never think. And here is why.

Computers cannot have a wide look at something. This has occured to me recently. They have too narrow viewpoint - microscopic, if you please.

But what does it mean, computers have too narrow viewpoint?

We humans can think of several things at once, we can imagine - create in our mind vast spaces filled with objects, things.

Human beings, you and me, can mentally overview large spaces - that's right - three dimensional space. Just recall what was the weather like yesterday? You immediately get a full 3D picture, full of color, motion, sound, etc... Computers cannot have this space - the CPU at any given time contains only a tiny fraction of data - several registers. And the main 'thinking' unit of CPU 'sees' even less - just a couple of machine words. One machine word can roughly contain one letter. Imagine how constrained you would be if you could look at the world only through a tiny little hole - so little in fact, that you can hardly recognize anything. You would not be able to do much wouldn't you?

Of course, machines have something to mitigate the problem - their speed and mathematical accuracy. That looking hole can move very fast. But unlike humans, machines cannot get the impression of a whole picture by looking at a fast moving hole. Because it is not only vision that is impaired so. It is also imagination. If you were a machine, you would not be able to imagine big pictures, with space, depth, colors, movement, feelings, all at the same time. The imagination of a machine also happens through this same tiny little hole, bit by bit.

In order to more closely imitate what happens, you can wrap a black sheet of paper around your head with one hole pierced with a very thin needle in front of one eye. Then you have to imagine that you do not imagine, however ridiculous it sounds, do not have memory as well, and move through the room (let's say, you are for the first time in this room) by looking at the hole, and making records of your progress in a notebook (memory), looking at it through the same hole. It is still not imitative enough, but you get the idea.

Space imagination, space perception and space memory is one remarkable ability of man, that will never be duplicated by the machine. It can be modeled, for sure. But it will remain to be what it is - just imitation of a real process.

And so, the way computers solve problems is completely different from our ways. Sure they can now recognize faces and sounds. Awkwardly but still. However this is done with the help of enormously complex algorithms, storing large amounts of data during the process. The approach is totally, qualitatively different from human approach and is not AI.

I do not believe that attempts at imitating human brain operation will succeed either. Nobody knows how human brain operates. Many grand theories, but when put to practice all what is left is... theories.

I just do not believe that our essence, what we are, what we feel, imagine, create and experience, that all this can be boiled down to some sequence of chemical reactions in the brain and can be modeled with some electronic signals going back and forth, however fast they are. Doesn't cut it. This is philosophical, or even religious, question, of course. But at least I have solved that one for me: it's safe to assume that AI, at least in the form academics conceive it - machine 'thinking' and solving problems the way humans do, will never happen.