# Logo (Programmiersprache)

Logo ist eine bildungsorientierte funktionale Programmiersprache, die 1967 von Daniel G. Bobrow, Wally Feurzeig, Seymour Papert und Cynthia Solomon entworfen wurde. Logo ist leicht zu erlernen und war vor allem in den 1980er Jahren verbreitet, also zur Zeit der Heimcomputer.
In modernen Programmiersprachen wie zum Beispiel in Lingo finden sich einige Möglichkeiten von Logo wieder – teilweise in Form von Objekten.

## Namensgebung

„Logo“ ist kein Akronym. Es wurde von Feurzeig von dem griechischen Wort logos abgeleitet, was hier Wort oder Gedanke bedeutet. Feurzeigs Konzept war es, Worte und Sätze zu manipulieren. Die Turtle-Grafik wurde erst später von Seymour Papert hinzugefügt, als dieser zu dem Projekt stieß.
Beispiel:
PRINT FIRST [Hallo Welt!]
Hallo

## Geschichte

Für die damalige Zeit hatte Logo eine sehr hohe Leistungsfähigkeit dank der dynamischen Listen aus Lisp, frei definierbarer und rekursiv aufrufbarer Funktionen und einiger anderer Elemente. Trotzdem konnte die Programmiersprache sich nicht gegenüber anderen „Anfängerprogrammiersprachen“ wie z. B. BASIC durchsetzen, was auch daran lag, dass sie kindgerecht entwickelt und daher von vielen unterschätzt wurde.
Damals ungewöhnliche Elemente wie z. B. eine dynamische Datentyperkennung sorgten auch für Geschwindigkeitsnachteile. Außerdem widersprach die Philosophie der Programmiersprache dem damals aufkommenden Gedanken der strukturierten Programmierung. Schleifen sind normalerweise nur über Rekursion oder in Listen eingebettete Programmteile realisierbar. Rekursion galt oft als schwer lesbar und beansprucht sehr viel Speicher und Rechenzeit. Ein in Daten eingebetteter und damit zur Laufzeit veränderlicher Code galt als Rezept für unvorhersagbare Programmeigenschaften und in Multiuser-Umgebungen (damit auch in Netzwerken) als Sicherheitsproblem.

## Turtle-Grafik

Die bekannteste Besonderheit von Logo ist Turtle-Grafik, bei der sich eine oder mehrere virtuelle Schildkröten über den Bildschirm bewegen lassen, die bei Bedarf eine farbige Linie hinter sich herziehen. Auf diese Art kann dann eine Zeichnung erstellt werden.
Die wichtigsten Turtle-Grafik-Befehle in LOGO :
| Befehl | Kurzform | Beschreibung | Auf Deutsch |
| FORWARD länge | FD länge | Die Schildkröte/ Igel bewegt sich um eine bestimmte Anzahl von Einheiten nach vorne | VORWÄRTS länge (VW) |
| BACK länge | BK länge | Die Schildkröte/ Igel bewegt sich um eine bestimmte Anzahl von Einheiten zurück | RÜCKWÄRTS länge (RW) |
| RIGHT winkel | RT winkel | Die Schildkröte/ Igel dreht sich um einen bestimmten Winkel nach rechts. | RECHTS winkel (RE) |
| LEFT winkel | LT winkel | Die Schildkröte/ Igel dreht sich um einen bestimmten Winkel nach links. | LINKS winkel (LK) |
| HOME | | Die Schildkröte/ Igel bewegt sich zur Mitte des Bildschirms mit Ausrichtung nach oben (0°) | MITTE |
| CLEAN | | Der Bildschirm wird gelöscht, die Position der Schildkröte/ Igel ändert sich nicht. | LÖSCHBILD (LBD) |
| CLEARSCREEN | CS | Löscht den Bildschirm und versetzt die Schildkröte/ Igel in die Ausgangsposition zurück | BILD |
| PENUP | PU | Der Stift wird von der Zeichenfläche genommen. | STIFTHOCH (SH) |
| PENDOWN | PD | Der Stift wird auf die Zeichenfläche gesetzt. | STIFTAB (SA) |
| HIDETURTLE | HT | Die Schildkröte/ Igel wird unsichtbar. | VERSTECKTIGEL (VI) |
| SHOWTURTLE | ST | Die Schildkröte/ Igel wird sichtbar. | ZEIGIGEL (ZI) |
| SETPENCOLOR [r g b] | SETPC [r g b] | Dem Stift wird die Farbe in den RGB-Anteilen (0-255) zugeteilt. | FARBEIGEL (FI) WEISS BLAU GELB SCHWARZ ROT GRüN LINDE WASSER FUCHSIA SARCELLE OLIVE BRAUN GRAU ORANGE ROSA VIOLETT oder eine Zahl, oder FARBEIGEL RGB [%rot %grün %blau]. |
Turtle-Grafik ist prädestiniert für zweidimensionale geometrische Zeichnungen und fraktale Kurven von der Art der Drachenkurve oder der Hilbert-Kurve.
* Ein Kreis aus kleineren Kreisen
* Die Koch’sche Schneeflocke
* Ein aufwändigeres Beispiel mit kreisförmig angeordneten Drachen
Das erste Bild wird beispielsweise – allerdings ohne die Farbe – von dem folgenden Programm erzeugt:
Durch den Aufruf von N_ECK mit einem großen Parameter :ne entsteht der Eindruck eines Kreises. MN_ECK dreht das Turtle oft ein wenig und malt dann einen Kreis, so dass der Eindruck eines großen Kreises entsteht, der wiederum kleine Kreise enthält.
Auf Deutsch (mit DLogo) ist der entsprechende Quellcode: