Logo (Programmiersprache)
aus Wikipedia, der freien Enzyklopädie
Die Programmiersprache Logo ist eine von Seymour Papert entwickelte Sprache aus den 60er Jahren. Als Interpretersprache galt Logo als leicht zu erlernen, hatte aber eine für die Zeit der Heimcomputer, als diese Sprache die größte Verbreitung fand, sehr hohe Leistungsfähigkeit, dank der dynamischen Listen aus Lisp, frei definierbaren und rekursiv aufrufbaren Funktionen und einiger anderer Elemente. Trotzdem konnte die Programmiersprache sich nicht gegenüber anderen ersten "Anfängerprogrammiersprachen" wie z. B. BASIC durchsetzen, was auch daran lag, dass sie kindgerecht entwickelt und daher von vielen unterschätzt wurde.
Für die damalige Zeit sehr fortschrittliche Elemente wie z. B. eine dynamische Datentyperkennung sorgten auch für Geschwindigkeitsnachteile. Außerdem widersprach die Philosophie der Programmiersprache den damals aufkommenden Gedanken der strukturierten Programmierung: Schleifen sind normalerweise nur über Rekursion oder in Listen eingebettete Programmteile realisierbar. Rekursion galt oftmals 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.
In modernen Programmiersprachen wie Logowriter oder Lingo beispielsweise finden sich die Möglichkeiten dieser Programmiersprache allerdings wieder – teilweise in Form von Objekten.
Inhaltsverzeichnis |
[Bearbeiten] Turtlegraphics-Befehlssatz
Ihre bekannteste Besonderheit ist Turtlegraphics, bei der sich eine oder mehrere virtuelle Schildkröten über den Bildschirm bewegen lassen, die bei Bedarf eine farbige Linie hinter sich herziehen. Mit diesen Linien kann dann eine Zeichnung erstellt werden.
Die wichtigsten Turtlegraphics-Befehle in LOGO | ||
---|---|---|
Befehl | Kurzform | Beschreibung |
textscreen | ts | Text-Modus |
fullscreen | fs | Graphik-Modus |
home | Die Schildkröte bewegt sich zur Mitte des Bildschirms mit Ausrichtung nach oben (0°) | |
clean | Der Bildschirm wird gelöscht, die Position der Schildkröte ändert sich nicht | |
cleanscreen | cs | home und clean zusammen |
hideturtle | ht | Die Schildkröte wird unsichtbar |
showturtle | st | Die Schildkröte wird sichtbar |
setpencolor farbewert | setpc farbwert | Der Schildkröte wird eine Zeichenfarbe zugewiesen |
penup | pu | Der Stift wird von der Zeichenfläche genommen |
pendown | pd | Der Stift wird auf die Zeichenfläche gesetzt |
right winkel | rt winkel | Die Schildkröte dreht sich um einen bestimmten Winkel nach Rechts |
left winkel | lt winkel | Die Schildkröte dreht sich um einen bestimmten Winkel nach Links |
forward länge | fd länge | Die Schildkröte bewegt sich um eine bestimmte Anzahl von Einheiten nach vorne |
back länge | bk länge | Die Schildkröte bewegt sich um eine bestimmte Anzahl von Einheiten zurück |
Turtlegraphics ist prädestiniert für zweidimensionale geometrische Zeichnungen und fraktale Kurven von der Art der Drachenkurve oder der Hilbertkurve.
[Bearbeiten] Beispielprogramme in Logo
Ein einfaches Beispiel eines Programms, das eindrucksvolle Objekte erstellen kann:
to n_eck :ne :sz repeat :ne [rt 360 / :ne fd :sz] end to mn_eck :ne :sz repeat :ne [rt 360 / :ne n_eck :ne :sz] end
Aufrufen kann man das Programm zum Beispiel mit:
mn_eck 36 20
to strahlenbüschel :anzahl :länge repeat :anzahl [fd :länge back :länge rt 360 / :anzahl] end to strichmännchen :länge fd :länge lt 45 fd :länge rt 90 fd :länge rt 90 fd :länge rt 90 fd :länge lt 45 fd :länge lt 135 fd :länge back :länge lt 90 fd :länge back :länge lt 135 fd :länge rt 45 fd :länge back :länge lt 90 fd :länge end to vierquadrate :länge fd :länge back :länge *2 lt 90 fd :länge*2 rt 90 fd :länge*2 rt 90 fd :länge*4 rt 90 fd :länge*2 rt 90 fd :länge*3 lt 90 fd :länge *2 lt 90 fd :länge *2 lt 90 fd :länge *2 rt 90 fd :länge lt 90 fd :länge *2 lt 90 fd :länge rt 90 fd :länge *2 lt 90 fd :länge*2 lt 90 fd :länge*2 end
Logo-Programme zur Erzeugung der Koch-Kurve und der Koch'schen Schneeflocke sind unter Koch-Kurve zu finden.
[Bearbeiten] Erweiterter Befehlssatz im MSWLOGO
Zusätzlich zum Standard-Befehlssatz bieten neuere MSWLOGO-Versionen einen erweiterten Befehlssatz zur Erzeugung von dreidimensionalen Darstellungen.
Erweiterte Befehle des MSWLOGO | ||
---|---|---|
Befehl | Kurzform | Beschreibung |
setpencolor [r g b] | setpc [r g b] | Dem Stift wird die Farbe in den RGB-Anteilen (0-255) zugeteilt. |
[Bearbeiten] Vergleich Lisp - Logo
In LISP sieht ein Programm zur Berechnung der Fakultät beispielsweise so aus:
(defun ! (n)
(cond ((zerop n) 1)
((>= n 1) (* n (! (1- n))))))
Aufruf:
(! 6)
In UCBLogo sieht das gleiche Programm nun so aus:
to ! :n
output ifelse :n=0 [1][:n*! :n-1]
end
Aufruf:
! 6
In aUCBLogo kann man die Doppelpunkte weglassen:
to ! n
output ifelse n==0 [1][n*! n-1]
end
Aufruf:
! 6
Alternativ kann man es auch so schreiben (für UCBLogo):
to fakultaet :n
if :n = 0 [make "n 1]
if :n > 1 [make "n :n * fakultaet :n - 1]
output :n
end
Aufruf:
print fakultaet 6
[Bearbeiten] Weblinks
- UCB Logo-Interpreter von Brian Harvey dem Vater von UCB-Logo
- Eine um multimediale Funktionen erweiterte Variante von UCB Logo
- MSWLogo: MSWLogo ist ein populärer Logo-Interpreter für Windows. (Scheint nicht mehr weiterentwickelt zu werden. Letzte Version (6.5) ist auf Dezember 2002 datiert.)
- Deutsches MswLogo: Die aktuelle Version (6.5) eignet sich u.a. auch für Steuerungen (Lauflichter, Schrittmotoren) über den parallelen Druckerport für Win9x/2K/ME/XP.
- FMSLogo: FMSLogo ist ein Nachfolger von MSWLogo und hat eine Projektseite auf Sourceforge.net. FMSLogo ist ein regelmäßig aktualisierter Logo-Interpreter für Windows.
- KTurtle ist kein echter Logo-Interpreter- es gibt nur Turtlegraphics. KTurtle ist Teil des KDE Edutainment Projekts.
- Logo-Interpreter als Java-Applet
- Ada-Logo-Interpreter
- Turtle Art für den OLPC mit graphischer Programmierung
- DLogo Eine kostenlose Version für Windows mit roboterhaften und musikalischen Möglichkeiten.