Der Skript-Editor (früher AppleScript Editor vor Yosemite 10.10) speichert .scpt
Dateien als Binärdateien und nicht als reine Textdateien.
Es macht die Arbeit mit ihnen in Quellcode-Kontrollsystemen etwas umständlich.
Weiß jemand, warum das so ist? Gibt es eine langjährige Geschichte, die es erforderlich machte, dass dieses Dateiformat etwas anderes als reine Textdateien ist?
applescript
Ian C.
quelle
quelle
Antworten:
Die Arbeit von William R. Cook enthält eine hervorragende Geschichte und Einblicke von denjenigen, die 1989 mit AppleScript zu tun hatten.
Was folgt, ist lustig und spekulativ.
Platzersparnis und Verarbeitung
AppleScript wurde zu einer Zeit geschrieben, als jedes Byte und Bit wertvoll war. Die verzögerte Codierung von OS X als Eigenschaftenlistenformate wäre für diese frühen Entwickler eine Verschwendung.
Das Binärformat lieferte ein vorgefertigtes Formular, mit dem das Duplizieren des komplexen, fehleranfälligen und zeitaufwendigen Analyseprozesses bei jedem Laden von der Festplatte vermieden wurde. Besser direkt in den Speicher laden und ausführen.
Adaptiv
Durch das Speichern in einem Binärformat konnten AppleScripts an die zugrunde liegenden AppleEvent-Codes und nicht an das Wörterbuch mit der Langform-Terminologie gebunden werden.
Auf diese Weise kann ein AppleScript, das für eine Version einer Anwendung geschrieben und gespeichert wurde, automatisch auf Terminologieänderungen zwischen Versionen der Zielanwendungen aktualisiert werden.
Ein Integer-Objekt kann im Skript als "Integer" bezeichnet
int
, in der Binärdarstellung jedoch als vierstelliger Code " " gespeichert werden . Der vierstellige Code aus dem vom Betriebssystem bereitgestellten AppleScript-Wörterbuch.Wenn eine zukünftige AppleScript-Terminologie beschließt, das dem Benutzer zugewandte Wort für Ganzzahl zu ändern, kann die Binärdarstellung dem neueren Namen zugeordnet werden.
Eine Kehrseite dazu ist heute zu sehen. Schreiben Sie ein AppleScript gegen das Wörterbuch einer Anwendung. Entfernen Sie dann die Anwendung vollständig von Ihrem Mac. Was sehen Sie im Skript-Editor beim Öffnen des Skripts?
Zumindest in neueren Versionen zeigte der AppleScript-Editor den vierstelligen Code mit Pfeilen . Der Code wurde gespeichert und hervorgehoben. Nicht die Terminologie des Benutzers.
Dies ist wahrscheinlich nicht der Hauptnutzen, sondern ein möglicher Nutzen.
Moderner Bias
Es lohnt sich, unsere moderne Ausrichtung auf Textdokumente zu würdigen. Die Erfahrung hat viele von uns gelehrt, dass das Speichern wertvoller Inhalte in einem Binärformat ein Risiko birgt. Binärformate sind häufig schlecht dokumentiert, für den Endbenutzer undurchsichtig und können nur schwer geöffnet werden, wenn die zugehörige Software nicht gewartet wird.
Bei der Erstellung von AppleScript und seines Binärformats wurde diese Verzerrung noch nicht gebildet. Speicher- und Rechenbeschränkungen waren sehr real und jedes Kilobyte oder Tausende von Zyklen, die eingespart wurden, waren lohnenswert.
Geschichte und Herkunft
Die Geschichten über die Entstehung von AppleScript sind wundervoll, aber heutzutage schwer aufzuspüren. AppleScript versuchte, eine freundliche, englische Sprache zu sein, und war atemberaubend in seiner Vision. Die eigentliche Implementierung war schwieriger zu erreichen!
quelle
Kurz gesagt,
.scpt
ermöglicht die Abwärtskompatibilität. Außerdem kann AppleScript / Javascript (usw.) mit der gleichen Erweiterung gespeichert werden, vorausgesetzt, es wirdScript Editor
jetzt Javascript unterstützt.So dekompilieren Sie
.scpt
in der Shell:https://github.com/rupa/applescript/blob/master/decompile.sh
Der relevanteste Teil:
Textmate ist ein Drittanbieter-Editor, der Folgendes lesen kann
.scpt
:https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm
Der relevanteste Teil:
Diese Funktion kommt
OSAScript.h
, abgesehen von OS X SDK. InOSAScript.h
gibt es diesen langen Kommentar:Grundsätzlich wird beim Speichern
.scpt
auch einOSALanguageInstance
Deskriptor in der Datei gespeichert.Wenn eine Datei als
.applescript
/ text gespeichert ist , kompiliert das System sie mit der neuesten Version der Applescript-Sprache. Ein Skript, das beispielsweise für eine ältere Version von OS X geschrieben wurde, funktioniert möglicherweise nicht mehr mit einer neuen Version, da einige Funktionen veraltet sind. Mit.scpt
kann das System / die App herausfinden, für welche Version von Applescipt es bestimmt ist.Ab 10.10 kann Javascript gespeichert
.scpt
und korrekt ausgeführt werden.quelle
asprint
< hasseg.org/asprint >, mit dem Sie .scpt-Dateien "schön drucken" können. Der einzige Nachteil ist, dass es nicht für JavaScript-SCPT-Dateien funktioniert, sondern nur für AppleScript-Dateien.Nachdem ich den Dekompilierungsbefehl von Fartheraway gesehen hatte, entdeckte ich die Lösung. Wenn Sie möchten, dass die Applescript-Datei (.scpt) nicht binär ist.
@fartheraway erwähnt es auch im unteren Teil seiner Antwort.
machen Sie einfach die gesamte Entwicklung mit der Erweiterung .applescript.
Der Skript-Editor kann den Code ausführen und nicht in einem kompilierten Format speichern.
quelle