The name of the programming language Logo comes from the Greek for "word." The first version of Logo, a dialect of LISP, was developed in 1966 by several researchers and scholars including Wallace Feurzeig, a researcher at Bolt Beranek and Newman, a Cambridge research firm actively engaged in the study of artificial intelligence (AI) , and Seymour Papert, a mathematics and education professor from the Massachusetts Institute of Technology.
Although it was designed originally for MIT's mainframes and minicomputers, within less than a decade, Logo had found a place in elementary school education curricula across the United States. Logo's reach into thousands of elementary school classrooms was made feasible by two technological advances of the 1970s: the creation of computer time-sharing and the development of the first high-level conversational programming language. In 1970 Papert founded the Logo Laboratory at MIT. Logo-based turtles were introduced around 1971, and the use of microcomputers allowed Logo to be used by elementary school students.
The idea of creating a programming language for children grew out of the realization that most existing computer languages were designed to do computation and lacked the ability to handle non-numeric symbols. In addition most languages had complex syntax rules and very little support for debugging and editing. The Logo creators felt that this new language had to satisfy these requirements:
- Elementary grade students should be able to use it for simple tasks with very little preparation.
- Its structure should exemplify mathematically-important concepts with minimal intrusion from programming conventions.
- It should support the expression of mathematically rich numerical and non-numerical algorithms such as changing English into pig Latin, making and breaking secret codes, or determining if words are palindromes.
The plan was to introduce mathematical ideas through experience with familiar problems. The goal was to provide an environment that would encourage mathematical thinking through the completion of concrete projects. Papert and his colleagues felt that this would give students a sense of connectivity between abstract mathematical concepts and everyday practical experiences. For example, when giving directions to someone, a person would likely say: "Go straight for two blocks then turn right," rather than using the words "latitude" and "longitude." In the same way, the commands used in "turtle graphics" are based on right turns and left turns, rather than on absolute coordinates, making them easy to understand.
The "turtle" is a triangular object that appears on the computer screen and moves in response to commands typed on the keyboard. If the pen is activated, the turtle will leave tracks on the screen; if the pen is up, it will not. Papert refers to the turtle as "an object to think with." Users learn to create programs that draw simple geometric figures, such as squares or triangles, which can be combined into bigger programs that draw more complex figures, such as houses. The metaphor of "teaching the computer" new things based on what it already knows is the basis of Logo programming.
In an ideal Logo environment, much of the programming is learned through a series of activities. Students can choose many of their own problems and decide how to solve them based on their experience in generating and solving other problems. They teach the computer how to perform a specific action and get immediate feedback. In this environment students learn art, geometry, and computer programming.
Logo makes it possible for beginners to learn to program fairly quickly because it starts out with a set of words called primitives that are easy to understand and can be used to experiment. For example, FORWARD or FD would make the turtle go forward, and RIGHT or RT would make it turn to the right, while HIDETURTLE or HT would hide it from view.
Using those primitives, a user can write a set of instructions, known as a procedure, name it, and use it to build other procedures. A procedure is executed by typing its name. Large problems can be broken down into small chunks that are easy to manage. An example of a procedure that draws a square is shown in Figure 1(a) and 1(b), while one to draw a triangle is shown in Figure 1(c).
These procedures use a constant of 30 for the sides of the square and the triangle, which means that if we wanted to draw squares and triangles of different sizes we would have to modify the procedures. Logo uses variables in the title line of a procedure to allow the use of different values every time the procedure is executed, as shown in Figure 2. The variable name is separated from the procedure name by a space and a colon (:). To execute procedures using variables, the name of the procedure must be followed by a space and a numerical value. For example, the command SQUARE 60 would draw a square of 60 units.
A procedure can call other procedures, as shown in Figure 3(a), and can also call itself, as shown in Figure 3(b), making Logo a recursive language.
The example in Figure 3(b) shows the occurrence of an infinite loop because the procedure continues to call itself forever; it has no way of knowing when to stop. All recursive procedures need to have a condition that will be used to stop the loop after a certain number of calls have been made, as shown in Figure 4.
LEGO-Logo is a unique member of the Logo family because it allows students to use computers to control the manipulation of special LEGO blocks. Students build LEGO structures that use touch and light sensors, motors, and gears plugged into an interface box, and write Logo programs that give them motion. This expands the computer's reach into the three-dimensional world in a very dynamic way and provides students with the opportunity to learn the behavior of machines, electronics, and motion.
Students learn to break complex problems and machines into simple ones. For example, they can build and operate moving vehicles of different sizes to observe the relationships between speed and weight. While conducting the experiments, students learn about different types of measurement, standard units of measure, rate-distance-time relationships, and the processes of collecting, representing, and analyzing data. Because these experiments combine the manipulation of concrete materials with symbolic representations, such as the names and definitions of Logo procedures, students learn to connect the concrete with the abstract.
Music in Logo
Incorporating music into a program and exploring the development of music can be fun, and one does not need to know music or understand musical notation. In order to program a tune in Logo, one writes a procedure using the PLAY primitive, which requires two lists to designate a musical note. These two lists state its two components, its name, such as "A, B, C" and its duration, such as eighth, quarter, half. The musical program can be broken down into modules, which are then combined to play the tune.
Much of the development effort in Logo has gone into discovering new application areas, with new sets of primitive procedures and new peripheral hardware. For example, StarLogo explores massive parallelism with thousands of turtles performing their actions at the same time. This environment can be used to explore how large-scale phenomena emerge from simple small-scale behavior. StarLogo can be used to model a variety of systems, from the foraging behavior of ants in a colony to the formation of traffic jams in a highway, and the interaction between antibodies and antigens in an immune system.
Several versions of Logo have included some form of object-oriented programming, usually with a message-passing syntax in which the first argument is an object and the second is an instruction to be carried out by that object.
A Logo-based object-oriented language for World Wide Web applications, called Bongo, is a current research project designed to be like Java for kids.
see also Educational Software; Procedural Languages; Programming.
Ida M. Flynn
Flake, Janice L., C. Edwin McClintock, and Sandra Turner. Fundamentals of Computer Education. Belmont, CA: Wadsworth Publishing, 1990.
Maddux, Cleborne D., and D. LaMont Johnson, eds. Logo, a Retrospective. New York: Haworth Press, Inc, 1997.
Papert, Seymour. Mindstorms: Children, Computers and Powerful Ideas. New York: Basic Books, Inc, 1980.
lo·go / ˈlōgō/ • n. (pl. -gos) a symbol or other small design adopted by an organization to identify its products, uniform, vehicles, etc.: the Olympic logo was emblazoned across the tracksuits.
LOGO / ˈlōˌgō/ • n. Comput. a high-level programming language used to teach computer programming to children.