Computers And Society
David D. Thornburg, Associate Editor
Language And Languages
Next to the question "Which computer should I buy?", I am most often asked "Which language should I learn?" This question is often asked by teachers, but is of relevance to so many people that I want to devote some space to it this month.
To start with, those of you who read these columns regularly may expect my answer to be Logo.
The reason for this has nothing to do with Logo's power – I use Logo more than any other language in my own work. The point is that no computer language is appropriate for all applications.
In 1978, when Radio Shack, Apple, and Commodore owned the personal computer market, the only high level language in common use was BASIC. Because BASIC was built into the hardware, it was easy to see the reason for its rapid adoption. Just as with the arrangement of keys on the keyboard, the user didn't have a choice – BASIC was just there.
As a language that launched an industry, BASIC was a pretty good choice. It was compact, and didn't need much of the computer's memory (remember that the first PETs came with only 8K bytes of RAM, and that the TRS-80 originally had only 4K bytes of RAM). Furthermore, BASIC was "good at math."
Since many of the 75,000 customers for personal computers in 1978 were tinkerers with a technical bent, BASIC gave them a high-level tinkering tool.
But then a funny thing started to happen. As more and more people started learning BASIC, there was a growing belief that BASIC was the best computer language, simply because everyone was using it. By that same argument, one would argue that Combat is the best video game cartridge, simply because it is packed with the Atari video game console.
So what is wrong with BASIC?
There are two main problems with this language. First, because BASIC is very good at arithmetic calculations, it tends to be of great use to those who are also math-oriented. In fact, BASIC uses numbers everywhere – even in front of each program line.
Why is this a problem?
Well, believe it or not, a great many people don't consider themselves "good at math," and have avoided using computers for just this reason. Limiting the computer to use by those who are math whizzes is unfair to both the prospective users and to the utility of the computer itself. The computer is not a math tool – it is more than that: it is a symbol manipulation tool. It is therefore essential that people have a choice in languages tailored to specific types of applications – but more on that topic later.
I said there was a second problem with using BASIC as a universal computer language. This problem is that BASIC is not extensible; the user cannot define new words in BASIC'S vocabulary. Imagine how limiting English would be if we hadn't invented any new words since the time of Shakespeare. What would we call televisions, or telephones, or computers?
Are you willing to trust a language designer to anticipate all the words you might need to create your application program?
The main reason I'm so fond of Logo is that it lets me create my own words that extend the language in any direction I want. Non-extensible languages are like fine-cut crystal – very pretty to look at, but not very flexible. Languages such as Logo are more like lumps of clay that can be molded to fit your own applications. I find that moldability to be essential in most of my applications.
Is Logo a universal applications language?
No, it is not. In fact, there is no computer language that is appropriate for all applications, nor should we want there to be.
The reason for this is pretty simple to grasp. Let's say you are interested in writing a word processor program and that you decide to implement the program in BASIC. Many BASICs have some ability to manipulate strings of characters, so this may not seem to be a bad choice. But look at what else BASIC can do. BASIC contains many math-related functions such as SQRT, SIN, ATAN, SGN, etc.
What happens to your program when the language is cluttered with extraneous commands? First, the memory requirement for your application program plus language is larger than it needs to be. Second, your program will not run as fast as it should.
No single language can (or should) serve all needs. Computer users who write programs in many application areas should be versed in several computer languages. The more languages you have available, the more versatile you will become, and the better your programs will be.
How hard is it to gain access to other computer languages?
Fortunately, computers such as the Atari 400 and 800 are completely flexible as far as language is concerned. To go from BASIC to PILOT, one merely switches cartridges. Many other popular computer systems (e.g., the Apple II, TI 99/4A, VIC-20, Commodore 64, Max, and Radio Shack Color Computer) also allow languages other than BASIC to be loaded, either from disk or, in many cases, from a plug-in cartridge.
So the question "Which language should I learn?" becomes "Which languages should I learn and what can I use them for?"
While any attempt to answer this question will be incomplete and will display some personal bias, the following table lists a few languages that are available on personal computers and some of their attributes and relevant application areas:
|Language||Major Features||Appropriate Applications|
|BASIC||arithmetic calculations||computation intensive programs such as budget calculations|
|PILOT||word manipulation||text processing, computer-aided instruction using text|
|Logo||general symbol manipulation||mathematics (as opposed to arithmetic), logic, adaptive programs|
|FORTH||speed||realtime graphics, high speed programs such as games|
Note especially that the applications are just typical areas where a given language might be of benefit. As we all know, video games can be written in BASIC, and one can do arithmetic in most versions of PILOT. The point is that other languages are better suited to these tasks.
What I hope is that an increasing number of personal computer users will unleash themselves from the restrictions of a single language and start to reap the benefits of becoming multilingual.