LANGUAGE, LOGIC, LEARNING ....LINKED
                                                       Lesson_13
Chapter 7 of the Machine Psychology text should be re-named "Artificial Intelligence/Natural Stupidity". We homo sapiens come by our stupidity quite naturally. As we begin to teach machines our language and logic, do we want them to learn the language and logic of stupidity, ambiguity, confusion, vagueness, silliness, nonsense, madness, confounding, obfuscation, incoherence, self-contradiction and error? Have I fogotten any synonyms?

Why not consider the NLP (Natural Language Programming) and Superhuman AI problems as an opportunity for US to learn a better way of talking and thinking by teaching it to the machine?

THE BEGINNING OF AI

McCarthy and Minsky at MIT are sometimes called the "fathers of modern AI" as Engelberger and Devol are called the fathers of modern robotics. But McCarthy himself credits Alan Turing with founding modern AI. In an article titled "What is Artificial Intelligence", published in KurzweilAI.net, Feb. 22/01, McCarthy replies to the question, "When did AI research start?" by saying, "An English mathematician, Alan Turing, may have been the first. He gave a lecture on it in 1947." Thus the modern computer and modern AI began at about the same time. Turing's manuscript titled "Computing Machinery and Intelligence" was published in the journal, "Mind" in 1950.

JOHN QUINCY ADDING MACHINE

The computer is "just" an adding machine. In the televised cartoon series, "Futurama", John Quincy Adding Machine is credited with being the first "Robot for President". We read in Runes' Dictionary of Philosophy under "Logical Machines" that logical machines were conceptualized and models were built in the 1800's and we are told that "...the inferential process is mechanical to a notable extent". However, Runes fails to mention the most widely known adding machine or logic machine of them all ... the abacus. Historians can deal with the issue of whether the first bead machine for doing arithmetic came from India or China. But the Chinese abacus as we see it today is clearly a digital device. A standard abacus like the one before me has 13 rods and 7 beads. Each bead is either in its initial position on the rod or not (ie it can be moved out of position). Thus the in position/out of position combinations give us a 13x7 or 91 binary digit adding machine. We could call "in position" a binary number 1 and "out of position" a binary number "0". The abacus can perform the various standard procedures of arithmetic from adding to square roots by having the user apply rules and reading the bead (bit) pattern before and after the rules are applied.

THE ELECTRIC ABACUS

Today with modern electronics we could easily develop a machine with electrical components to apply the rules for us and to read the bead/bit pattern automatically. If the people of China or India had done this, they might have developed an "electric abacus" long before the Americans built their computers in the 1940's.

FROM MACHINE LOGIC TO MACHINE LANGUAGE

One of the most active areas of computing science research has to do with NLP. How can we develop a machine which will speak a human language (eg English) as well as a human or better? The solution to that problem may not be as far away as we think. On June 4, 2000, The Sunday Times of London, UK, carried an article on "Brutus", a computer which writes short stories (in 15 seconds). The short stories are reported to pass the human equivalency test, ie this variation on the Turing Test. "An American computer is writing short stories about human betrayal that the readers and literary experts are unable to distinguish from the works of living writers." Professor Selmer Bringsjord of Rensellaer Institute in New York spent 7 years developing Brutus.

The point is that GENERAL human equivalency in machine language usage may not be that far away. General human equivalency is what NLP usually refers to. Particular examples of human equivalency are not that difficult to generate. For example, humans usually start to babble with a few words and sounds between ages 1 and 2 years. This limited verbal repertoire could easily be programmed into a machine. As another example, the kind of questions in Standard Everyday English (SEE) and answers in SEE which go with doing basic arithmetic (adding, subtracting etc.) are limited. We could program a machine to accept questions in SEE and give answers in SEE for the complete range of arithmetic problems. As another example, consider the limited language ability of many mentally handicapped humans. The verbal abilities of people with let us say IQs in the 55-70 range could be programmed into a machine. If we accept that the verbal skills of such people are a subset of SEE, then the machine can also be given a subset of SEE.
C and SEE

Here then is a problem for budding C programmers. How do you program/teach/instruct a machine (which we might call IC for fun) to speak Standard Everyday English? Let's narrow this down a little. How do you write a program which will accept SEE input and give SEE output FOR THE PURPOSE OF WRITING PROGRAMS IN C?

SUPERC

Let's call this program SUPERC. To start with, let's heed the advice of Stephen Prata who tells us in his self-instructional text, "C Primer Plus" to first define the program objectives and then to design the program (page 8). Both of these are plain language or SEE tasks. They require no C code writing ability in and of themselves.

The objective is as stated above. The design is, in summary, that the user will communicate with IC in SEE and tell IC to give the C code for this and the C code for that. "This and that" are all of the chapter headings under which C code is taught and generated in the C texts. Thus the task for IMP is to organize those chapter headings in a way which will be immediately understood by the layman and to do the same with the sub-headings which give more detail on what each chapter of code accomplishes. For example, if you need C code which which accept input in SEE from the user, here is the code you have to generate; if you need C code which will give output in SEE to the user, here is the code you have to generate ... and so on.

Once that is accomplished, the task of attaching the C code should not be so difficult. As Augie Hansen writes in "A Complete Guide to Mastering the C Language", "When a programmer says he or she is having trouble writing a program, you can safely bet that writing the code, once a programmer understands the language, is usually not a significant problem."
Hosted by www.Geocities.ws

1