Programmers responding to a recent survey by the Boston Computing Society revealed an intriguing preference in languages—80 percent of them are programming in BASIC. One of the oldest computer languages, BASIC has been widely distributed. It comes either built into the computer's ROM chips (most eight-bit machines), or loaded from disk.
Next in popularity, used by 60 percent of the respondents, is Fortran, long favored by the scientific community. (The percentages add up to more than 100, since many programmers use more than one language.) Machine language, C, and Pascal were tied at 30 percent. LISP, a "list processing" language used in artificial intelligence work, received a 10-percent vote. Clustered at 5 percent each were Forth, Prolog, and COBOL. All other languages were at the low end of the spectrum, sharing 2 percent.
What's most intriguing about this survey is the overwhelming popularity of BASIC, a language rarely touted in the computer press. BASIC, it seems, has far more advocates than is generally assumed. Schools teach Pascal almost exclusively; it has many rules, so programs written in Pascal tend to converge into one correct version. If nothing else, this makes it easy to grade. Lately, professional programming teams are said to favor C. With its modular "black box" structure, with C it is relatively easy to divide a project into subtasks and then expect that they'll all work harmoniously when each programmer finishes his or her part of the larger program.
Prolog and LISP are often called "next generation" languages, ways to make computers understand context and infer relationships, ways to enrich the computer's thought processes.
Machine language is to programming what lasers are to communication. Machine language programs are the most focused and most efficient, and they operate at the ultimate speed—the speed of light.
But exciting and valuable as many of these languages are, good old reliable, understandable BASIC still gets used for most programming by most programmers. And the reason is simple: BASIC is the most natural language. It's not as easy as English, but it's essentially intuitive. It's also very forgiving (loose and messy, its critics say). Unlike Pascal or C, you can create new variables of any kind, anywhere you want, in a BASIC program. Unlike Forth, you can do math as you've always done it: 1 + 1 = (versus Forth's 1 1 + =). Unlike many of the more "advanced" languages, everything is available, so you don't need to invoke outside libraries of routines or spend time deciding what should be added to the core language. And, unlike machine language, you use words like RETURN and STOP, the meanings of which you have known since you were a child.
Ultimately, though, the easiest thing for all of us would be natural language programming. That would mean we could talk to the computer and create a program in the same way that we would describe any job to another human being. For example, we could say:
"After next week, I want to see all my electronic mail organized by date, newest message first. If any duplicate messages arrive, delete all but one. When I answer a letter, file the letter and my answer in a new database called "Email," and organize them by recipient. Also, show me how many downloads I've done, where they're from, and graph them by cost, time, and distance."
To us, these instructions are quite easy to understand; to computers they're filled with ambiguity. Nobody knows how long it will be before machines develop the capacity to understand human speech. A while back, it was thought that while computers would learn languages fairly easily, games like chess would be extremely difficult for computers to play. It turned out to be just the opposite.
It's hard to teach English to a machine because of the complex way we humans communicate—much is left unsaid, or is implied by context, or is just inherently vague. Feed the instructions above to a present-day computer, and you'll run into several serious problems. 1. The word see is used in an odd way. 2. I don't really want to read all the Email I've ever received, just the new, unread letters (but this is only implied, never stated directly). 3. Does organize them refer to the senders, my databases, the letters, answers, what? And who is the recipient? 4. Done is used in an odd way. 5. Where they're from is ambiguous. 6. If I'm speaking these instructions into a microphone, how will the computer know I'm not saying therefrom? 7. Do I want one graph or three?
Daunting as the difficulties are, there has been some progress in natural language communication. But until computers get significantly more clever, it looks as if BASIC—the closest thing we've got to a plain English computer language—will remain the most popular way to talk to machines.