Programmieren fĂĽr jedermann
Ob grafische Bedienoberflächen, Desktop-Applikationen, Wartungs- und Administrationshelferlein oder Konvertierungsprogramme entwickeln – mit Skriptsprachen geht das in Windeseile. Sie sind vielseitig, flexibel und lassen sich leicht erlernen.
- Oliver Lau
Wer schon immer mal programmieren wollte, aber noch nie den rechten Dreh dazu gefunden hat, sollte sein Augenmerk auf Skriptsprachen lenken. Während man bei Compiler-Sprachen wie C aufwendig mit Präprozessoren, Compilern und Linkern hantieren muss, sind Skripte sofort lauffähig: Skriptumgebung aufrufen, Befehle eintippen, ausführen – läuft. Für wiederkehrende Aufgaben speichert man die Befehle einfach in einer gewöhnlichen Textdatei. Ein einfacher Text-Editor genügt zum Einstieg.
Grundlagen
In Skriptsprachen herrscht das Paradigma der imperativen Programmierung vor. Das heißt zunächst einmal nichts weiter, als dass ein Befehl nach dem anderen abgearbeitet wird. In Funktionen oder Prozeduren kann man mehrfach genutzte Befehlsabfolgen zusammenfassen (prozedurale Programmierung). Kontrollstrukturen wie Schleifen (etwas soundso viel Mal wiederholen) oder bedingte Sprünge (wenn A, dann B, sonst C) erhöhen die Lesbarkeit des Codes (strukturierte Programmierung).
Diese Konzepte greift zum Beispiel die Skriptsprache AutoIt auf. Damit kann man unter Windows Tastenanschläge und Mausklicks simulieren, Daten über die Zwischenablage austauschen, Dialogfenster gestalten, auf Ereignisse anderer Anwendungen reagieren, über das Netz kommunizieren, Windows-Funktionen aufrufen, kurzum: Windows und Windows-Programme steuern. Der Artikel ab Seite 152 in c't 10/08 stellt das Werkzeug am Beispiel einer Anwendung vor, die TV-Aufzeichnungen ins MPEG-Format konvertiert und Werbeeinblendungen mit Schnittmarken versieht.
Eine andere Sicht auf die Logik eines Programms bietet die Objektorientierung. Ihr liegt die Idee zugrunde, Daten (Eigenschaften) und Funktionen, die sich auf diese Daten anwenden lassen, in einem Objekt zusammenzufassen. Objektorientierte Programmierung beansprucht für sich, die menschliche Sichtweise realitätsgetreu in einer Software nachbilden zu können.
Die Struktur eines Objekts beschreibt eine sogenannte Klasse. So könnte es beispielsweise eine Klasse „Tür“ mit der Eigenschaft „Zustand“ geben, die die Funktion (Methode) „Handknauf drehen“ nach „auf“ versetzt und „Handknauf loslassen“ nach „zu“. Ein Haus mit zwei Türen hätte dann etwa zwei Objekte (Instanzen) dieser Klasse: „Vordertür“ und „Hintertür“. Eine Klasse „Person“ könnte etwa die Methode „Tür öffnen“ implementieren, die wiederum die Methode „Handknauf drehen“ eines Tür-Objekts aufruft. Ein OO-Programm setzt sich aus einer Menge interagierender Objekte zusammen. Gerade bei sehr umfangreichen Projekten kann dieses Vorgehen sinnvoll sein. Für kleinere Skripte ist das aber wie mit Kanonen auf Spatzen zu schießen.
Was AutoIt für den Fan grafischer Bedienoberflächen, ist die PowerShell von Microsoft (siehe S. 158 in c't 10/08) für den Freund textbasierter Konsolen. Ihre Skriptsprache muss sich nicht vor Shells wie bash & Co. verstecken. Im Gegenteil: Sie darf ruhig mit ihrer strikt objektbasierten Datenverarbeitung protzen, die im Vergleich zu anderen Skriptsprachen die mühsame Zerlegung von Strings obsolet macht. Sie bietet in Gestalt der sogenannten Cmdlets einen enormen Befehlsumfang, der sich mit einer beliebigen .NET-Programmiersprache um eigene Kommandos erweitern lässt. Sie eignet sich viel besser als die althergebrachte DOS-Box oder der Windows Script Host zur Automatisierung von Wartungs- und Administrationsaufgaben aller Art.
Gemeinsam stark
Moderne (Skript-)Sprachen vereinen die Paradigmen imperativer und objektorientierter Programmierung typischerweise, und zwar derart, dass man mit ihnen objektorientiert vorgehen kann, aber nicht muss. Groovy ist ein Vertreter dieser Gattung. Auch in anderer Hinsicht ist es ein Zwitter: Es ist nämlich Skript- und Compilersprache in einem. Mit Groovy, das man als „Best Of“ aus Java, Perl, Python, PHP und Ruby bezeichnen könnte (siehe S. 163 in c't 10/08), entstehen im Handumdrehen Desktop-Anwendungen, Administrationsskripte und Web-Applikationen. Wer Java kennt, wird sich mit Groovy sehr schnell anfreunden. Wer Java noch nicht kennt, wird es beim Umgang mit Groovy fast automatisch lernen. Groovy profitiert vom riesigen Funktionsumfang und der Performance von Java, Java von der Kompaktheit und besseren Lesbarkeit von Groovy.
Auch Gedanken darum, ob eine Variable nun Zeichenketten, Zahlen oder logische Werte enthalten soll, muss man sich beim Programmieren mit Groovy (und normalerweise auch anderen Skriptsprachen) nicht machen. Gedankt sei es der dynamischen Typisierung, bei der der Typ einer Variablen erst zur Laufzeit bestimmt wird, und nicht – wie in Compiler-Sprachen üblich – schon beim Übersetzen des Quelltextes in eine maschinenausführbare Form. Diese entspannte Haltung setzt sich in der Fähigkeit vieler Skriptsprachen fort, Befehle zur Laufzeit zu generieren und diese dann auszuführen. Das ist beispielsweise praktisch, wenn ein Programm beliebige Formeln als Kurven darstellen können soll, die der Benutzer vorgibt, während das Programm läuft. Wegen dieser Fähigkeiten bezeichnet man Skriptsprachen auch als dynamische Programmiersprachen.
Schöner skripten
Außer AutoIt, PowerShell und Groovy finden Sie auf der Heft-DVD auch noch Perl, Python und Tcl. Komfortabel wird das Skripten mit ihnen allerdings erst, wenn Scripting-Entwicklungsumgebungen ins Spiel kommen, die die Übersicht etwa durch Einfärben von Schlüsselwörtern (Syntaxhervorhebung) oder dem Ein- und Ausklappen von Code-Abschnitten verbessern, mit einem eingebauten Debugger das Auffinden und Beseitigen von Fehlern vereinfachen oder mehrere Skripte zu einem Projekt zusammenfassen können.
Gänzlich kostenlos ist das auf der Heft-DVD enthaltene Komodo Edit für HTML, JavaScript, Perl, PHP, Python, Tcl, XML und XSLT. In der Standardausgabe zwar nicht fürs Scripting gedacht, wohl aber mit Hilfe von Plug-ins für zahlreiche Skriptsprachen gut zu gebrauchen, ist das ebenfalls auf der DVD enthaltene Entwicklungs-Framework Eclipse. Eine Liste der zurzeit für 58 verschiedene Sprachen verfügbaren Plug-ins finden Sie unter www.eclipseplugincentral.com. Die Plug-ins sind nicht auf der DVD enthalten, weil man sie am besten direkt aus dem Netz über den Eclipse-eigenen Update-Manager einspielt [1, 2].
Literatur
[1] Plug-in-Puzzle, Erweiterungen fĂĽr Eclipse, c't 19/07, S. 138
[2] Oliver Lau, Perlator, Webseiten generieren Eclipse und Perl, c't 19/07, S. 140
| "Software-Kollektion" | |
| Artikel zum Thema "Software-Kollektion" finden Sie in der c't 10/2008: | |
| Serveranwendungen und Netzwerk-Tools | S. 120 |
| Programmieren fĂĽr alle | S. 150 |
| Windows-Oberflächen mit Autolt | S. 152 |
| Einstieg in die Windows Power-Shell | S. 158 |
| Das Beste aus Java, Perl und Python: Groovy | S. 163 |
(ola)