LOGO is a language, based on LISP, designed to be simple to learn and quick to use. It is essentially a procedural language though you are in an interactive environment which means that unless told to store statements, the are executed immediately. This has the benefit of giving users immediate feedback as to what's happening and why things are doing what they are doing, they can then easily correct and execute the statement again to see what changed in its execution. This direct interaction between statements and direct feedback to the user makes LOGO a great learning tool all the way through.

A Bit of History

LOGO is the next generation in what was called Turtle Graphics language. Turtle graphics was a set of instructions that moved a pointer on the screen around with commands to indicate whether to draw or not, to turn X number of degrees, to move forward or backward X number of pixels. As you would type these instructions in, the pointer would simply execute the commands one by one. It was (and still is) a great way to get immediate results to statements you enter hence making the learning burden of the language as light as possible.

Forward 50
Right   90
Forward 50
Right   90
Forward 50
Right   90
Forward 50

Would draw a square on the screen.

A little later on the time line, some commands to save time (and typing) were added. For example:

repeat 4 [forward 50 right 90]

Would draw the same square as the above example. Today, LOGO has evolved into a rather complete interpreted environment capable of much more than simple graphics like this example. Variable and logic constructs can now be used, standard iterative statements exist as well. You can even create procedures like most modular languages. There are even some extensions that give LOGO OOP capabilities.

LOGO Specifics

One of the things that make LOGO a great starter tool for learning to program is that, much like BASIC, you don't have to declare your variables before you use them. You also don't have to worry about the data type either, LOGO determines the data type based on the content of the variable.

LOGO has some standard constructs as one would expect from a programming language. It has a set of conditional statements to evaluate conditions and execute certain code based on the result of the condition. For example:

  • ifelse test [ do_if_true list ] [do_if_false list]

It also has some standard iteration constructs.

  • while condition [instruction list]
  • until condition [instruction list]
  • repeat number [instruction list]

In LOGO the [ and ], as you can see here, serve to denote the start and end of a set of instructions (statements).

It's important to note that recursion is the best paradigm to use when programming in logo. This is what LOGO is best at. So anything you can do using recursion you should do this way for LOGO.

LOGO Implementations

There are many wider spread LOGO Implementations of LOGO available. Here are the 3 more popular choices out there

There is '''Berkeley Logo (a.k.a. UCB Logo)''' which offers a good standard logo implementation for everyone. It is probably the most recommended as a first LOGO environment to begin your learning.

MSWLogo supports multiple turtles and 3D graphics. it would make a great next level LOGO to tackle after you get the basics down in UCBLogo. It also supports reading COM ports and LPT parallel ports (and other hardware ports). It has a windows interface so interaction (hence input) can be acquired through the interface which means that mouse and keyboard can trigger interrupts.

FMSLogo is a more recent implementation. It is an environment that is completely geared towards learning to program in logo. it boasts a rich set of features (see the relevant links below) that makes it capable of many different programming tasks all as much fun as the other.

Here are some relevant links

General LOGO websites

LOGO Implementations
