Es passiert nicht mehr alle Tage, dass ich eine neue Programmiersprache lerne.
AppleScript ist so was wie VBA für Mac OS. Es ist eine recht einfach gehaltene Sprache, die selbst nicht viel kann, aber auf die Funktionen und Daten vieler Mac-Programme zurückgreifen kann.
Ein typisches Beispiel: Im Adressbuch von Mac OS X kann man Geburtstage eintragen, aber diese werden im Kalender von Mac OS X nicht angezeigt. Das ist eine Parade-Anwendung für AppleScript. Wahrscheinlich wurde die Funktion extra weg gelassen, damit die Leute einen Grund haben, AppleScript zu lernen. Mein erstes Programm löst genau dieses Problem und ist hier zu finden: Applescript: Kopiere Geburtstage vom Adressbuch nach iCal
Lernen war einfach. Ich habe mir Matt Neuburg’s AppleScript: The Definitive Guide gekauft, was wahrscheinlich Overkill ist. Ich habe die ersten 40 Seiten gelesen (sehr nützlich, sie geben einen groben Überblick zu Anwendungsmöglichkeiten, Tools, usw.), und 4-5 Mal zu bestimmten Themen nachgeschlagen. Mehr war nicht nötig, um den Einstieg zu schaffen. Bis das Script fertig war, vergingen etwa drei Stunden. Nicht schlecht.
(Zugegeben, zwei Dutzend Geburtstage von Hand zu kopieren, hätte zehn Minuten gedauert.)
AppleScript ist offensichtlich auf leichte Erlernbarkeit angelegt. Programmzeilen lesen sich halbwegs wie englische Sätze (was ja keine gute Idee sein muss, siehe COBOL). Beispiel: make new event at end of events of theCalendar with properties eventProps. Dabei sind theCalendar und eventProps Variablen, deren Wert ich vorher gesetzt habe. Mir gefällt das ganz gut. Ist zwar viel Tipperei und nervt wahrscheinlich auf Dauer, aber merkt sich extrem gut.
Was fiel mir bei der Lernerfahrung negativ auf?
- Kein automatisches Anzeigen von Fehlern während des Tippens, wie z.B. bei Eclipse.
- Schlechte Fehlermeldungen. NSScriptFooBarError, und die verursachende Zeile wird markiert. Ursache war dann vielleicht, dass ich auf ein nicht existierendes Array-Element zugreifen wollte.
- Es ist schwer nachzuvollziehen, was für Ergebnisse die einzelnen Befehle geben. Mein Wunsch: Nach der Ausführung des Scripts mit der Maus über den Code fahren und in Tooltips die letzten Werte aller Rückgaben sehen, inkl. Elemente eines Arrays, Eigenschaften eines Objekts usw.
- Als Ersatz diente mir die display dialog-Funktion. Sie akzeptiert aber nur Zeichenketten und keine komplexeren Strukturen wie Arrays.
- Der Rückgabewert des letzten Befehls wird in einem extra Bereich angezeigt, auch inklusive Array-Elementen und Objekteigenschaften. Manchmal steht da aber nur “event 12 of calendar 3 of iCal”, was überhaupt nicht hilfreich ist.
- Zum Lernen wären ein paar Beispielscripte hilfreich gewesen, an denen man sich die Grobstruktur eines Scripts und nützliche Idiome abschauen könnte.
Mit einer besseren IDE als dem doch recht bescheidenen Script Editor von Apple wäre es ein superleichter Start geworden. Das gibt mir Hoffnung, dass Programmieren mit der richtigen Sprache und den richtigen Werkzeugen doch eines Tages zu einer Grundfertigkeit wie Lesen, Schreiben und Rechnen werden kann.
hmm, hab ich was verpasst? ich fand die applescript-referenz von o’reilly eher minder hilfreich. unter ‘ner referenz versteh ich aber scheinbar was anderes. ich suche die auflistung alles funktionen und parameter – zumindest für apples programme; speziell iCal.
Habe auch lang gebraucht, bis ich im Skripteditor darauf gekommen bin, im Menü Fenster die Bibliothek zu öffnen. Dort befindet sich nämlich das, was ich unter einer Referenz bzw. API Dokumentation verstehe.
Beispiele liefert Apple doch ganz gut mit – oder war das früher anders?
Btw. inzwischen kann iCal die Geburtstage automatisch anzeigen (Einstellungen: Geburtstagskalendar einblenden).