Computers And Society
David D. Thornburg, Associate Editor
That's Not A Program, That's A Language
In the wild and woolly early days of personal computing (the late 1970s, to be exact), one of my favorite sayings was "That's not a game, that's a simulation!" Implicit in this saying was the idea that games were somehow not worth spending time on, but that the same piece of software took on extra value when viewed as a simulation.
A program to emulate a lemonade stand (in which the player experimented with advertising, pricing, inventory, etc.) could be viewed as a game (see how much money you can make in the shortest time) as well as a simulation (examine the effect of advertising on sales). But as time passed, the game/simulation controversy seemed to die away.
I have seen some recent developments that point the way to new types of software. I am speaking of application programs that are actually computer languages. This "language aspect" is sometimes so carefully hidden that it is likely the programmers themselves may not realize all the implications of their efforts.
This and next month's columns are devoted to a description of a few such "languages." Those of you who think computer languages are limited to BASIC, PROLOG, Pascal, PILOT, Logo, and the like are in for a surprise. I am presenting only a very small sampling of these languages, and by the time we are done you will be able to identify many others.
Before giving examples, it might be a good idea to list the essential elements of a language. A computer language must allow the user to create computer-based activities that are custom-tailored to the user's needs. The language must have a vocabulary and a grammar. The user should be able to edit his or her program and to "run" it. All the languages I will describe interpret the user's programs and are highly interactive both in their programming style and in the types of programs that are created.
VisiCalc As A Language
VisiCalc (a product of VisiCorp) is an example of what is called an "electronic spread sheet." This program allows the user to create tables of data and relationships between certain pieces of data. As the data is entered into the spread sheet, calculations are made automatically to fill in the areas of the sheet containing the "results." The ability to play "What if?" games by quickly seeing the effect of changes in the data has made VisiCalc and its kin invaluable tools for today's computerusing executive.
Electronic spread sheet programs are computer languages.
If you find this surprising, look at how they are used. The user creates a "mask" for the spread sheet (the program). This mask contains the labels for the rows and columns of the matrix, the relationships between data in the various entry cells, and any fixed data that the program might need. This mask can then be saved for later use, or for use by someone other than the programmer. A VisiCalc mask for tax forms, for example, can be used by millions of taxpayers, each of whom would enter his or her own data and let the spread sheet calculate the results.
Interestingly, "programming in VisiCalc" doesn't require a knowledge of anything like a "normal" computer language. It doesn't matter if you program the labels first, or if you create some of the row and column relationships (e.g., making the contents of each entry in column C the product of the contents of each entry in column A and column B) and then fill in some data. The programmer has access to the whole program at once and can try out bits and pieces as he or she moves along. If writing programs in BASIC can be considered a "serial" process, programming in VisiCalc is a "parallel" process.
It is this radical departure from traditional programming styles that makes VisiCalc interesting to me as a language. Philosophers have long maintained that what we think is influenced by the choice of language in which we express our thoughts. That many hundreds of thousands of business people seem to be better "thinkers" with the aid of programs like VisiCalc is testimony to the power of this language.
Rocky's Boots As A Language
The Learning Company is well known for its high-quality educational software and for its special emphasis on the development of logical thinking skills. Hidden among its application software packages is a computer language called Rocky's Boots. This language assumes the guise of a program designed to let the user solve logic problems by building "logic machines." These logic machines are, in fact, schematic diagrams constructed from AND, OR, and NOT gates, flip-flops, wires, input sensors, and output devices. Through a series of carefully staged exercises, the user is taught how to use the program (or, as I claim, how to write programs in the Rocky's Boots language).
Figure 1: OR Gate Connected To Clapper Figure 2: Knife Cuts Clapper From OR Gate Figure 3: Clapper Replaced By OFF/ON Box Figure 4: AND Gate Connected To Machine Shown In Figure 3 Figure 5: Completed Machine In Use Figure 6: The Machine Used To Identify Blue Triangles (Solving A Problem In Logic)Interestingly, the construction of logic machines (this is the programming task) can be done without access to the keyboard by using a joystick to pick up objects (program subroutines) and interconnect them into a complete machine (program). Incorrect connections can be "cut" with a special knife (the editor). The only frustration I have encountered with this language is that no provision was made for the saving of finished "machines."
The figures show how a program can be edited in Rocky's Boots (remember that a machine is in reality the computer program you have created). Figure 1 shows a machine consisting of an OR gate connected to a clapper. One of the OR gate inputs is a blue sensor, and the other is a green sensor. The remaining items in the picture are "spare parts" (i.e., subroutines available for use). Suppose you want to change this machine into a new one that will turn the word OFF to ON if the green sensor is activated OR if both the blue sensor is activated AND the cursor is touching an input.
To modify the machine, the cursor (shown as the large solid rectangle) is used to pick up the knife shown at the bottom-left side of Figure 1. In Figure 2 the blue sensor has been cut, and the knife is shown cutting the clapper from the OR gate. In Figure 3 the clapper has been replaced by the OFF/ON box, and in Figure 4 the AND gate and some wires have been connected to complete the new machine. Figure 5 shows what happens when the machine is used and the proper conditions are satisfied (in this case, both the blue sensor and the remaining input of the AND gate are activated).
Rocky's Boots is similar in many ways to VisiCalc. The user has access to the whole program at once (it is a parallel environment), and the program (the machine) can be tested as it is being built. Of course, the application areas for these programs are quite different from each other.
The machines created by Rocky's Boots are designed to be used to solve logic problems. Figure 6 shows one such problem in which a machine has been built to identify blue triangles.
One can argue that Rocky's Boots is a game, a simulation, and a language.
No matter what it is called, it is a very powerful piece of software.
Next month we will conclude this series with the description of yet another powerful program/language, Dancing Bear from Koala Technologies. We will also discuss the potential impact of these types of languages.