Script Editor (wcześniej AppleScript Editor wcześniejszy niż Yosemite 10.10) zapisuje .scpt
pliki jako pliki binarne, a nie zwykłe pliki tekstowe.
To sprawia, że praca z nimi w systemach kontroli kodu źródłowego jest nieco kłopotliwa.
Czy ktoś wie, dlaczego tak jest? Czy istnieje długa historia, która wymagała, aby ten format pliku był czymś innym niż zwykły plik tekstowy?
applescript
Ian C.
źródło
źródło
Odpowiedzi:
Artykuł Williama R. Cooka zawiera doskonałą historię i wgląd od osób związanych z AppleScript w 1989 roku.
To, co następuje, jest zabawne i spekulacyjne.
Oszczędzanie przestrzeni i przetwarzanie
AppleScript został napisany w czasie, gdy każdy bajt i bit był cenny. Leniwe kodowanie OS X jako formatów list nieruchomości byłoby marnotrawstwem w oczach tych wczesnych programistów.
Format binarny zapewnił wstępnie przeanalizowaną formę, która pozwoliła uniknąć powielania złożonego, podatnego na błędy i czasochłonnego procesu analizowania przy każdym ładowaniu z dysku. Lepiej załadować bezpośrednio do pamięci i uruchomić.
Adaptacyjny
Zapisanie w formacie binarnym pozwoliło na powiązanie skryptów AppleScript z leżącymi u ich podstaw kodami AppleEvent, a nie ze słownikiem terminologii o długiej formie.
Umożliwiłoby to skryptowi AppleScript napisanemu i zapisanemu w jednej wersji aplikacji automatyczne aktualizowanie zmian terminologicznych między wersjami docelowych aplikacji.
Obiekt całkowity może być nazwany w skrypcie liczbą całkowitą, ale zapisany jako czteroznakowy kod
int
w reprezentacji binarnej. Czteroznakowy kod pochodzący ze słownika AppleScript dostarczonego przez system operacyjny.Jeśli przyszła terminologia AppleScript zdecyduje się zmienić słowo całkowite dla użytkownika, reprezentacja binarna może zostać odwzorowana na nowszą nazwę.
Odwrotną stronę tego można dziś zobaczyć. Napisz kod AppleScript w słowniku aplikacji. Następnie usuń aplikację całkowicie z komputera Mac. Co widzisz w Script Editor po otwarciu skryptu?
Przynajmniej w najnowszych wersjach edytor AppleScript pokazywał szewrony otaczające czteroznakowy kod . Kod został zapamiętany i wyróżniony. Nie terminologia związana z użytkownikiem.
Prawdopodobnie nie jest to podstawowa korzyść, ale możliwa korzyść.
Współczesne nastawienie
Warto docenić nasze nowoczesne podejście do dokumentów tekstowych. Doświadczenie nauczyło wielu z nas, że przechowywanie cennych treści w formacie binarnym niesie ze sobą ryzyko. Formaty binarne są często słabo udokumentowane, nieprzejrzyste dla użytkownika końcowego i trudne do otwarcia, gdy oprogramowanie nie jest utrzymywane.
Kiedy AppleScript i jego format binarny zostały utworzone, to uprzedzenie nie zostało jeszcze utworzone. Limity pamięci i obliczeń były bardzo realne, a każdy zaoszczędzony kilobajt lub tysiące cykli był opłacalny.
Historia i pochodzenie
Historie o pochodzeniu AppleScript są obecnie wspaniałe, ale trudne do wyśledzenia. AppleScript starał się być przyjaznym językiem angielskim i zapierał dech w piersiach; rzeczywiste wdrożenie było trudniejsze do poprawnego działania!
źródło
Krótko mówiąc,
.scpt
umożliwia kompatybilność wsteczną. Dodatkowo, applecript / javascript (itp.) Można zapisać z tym samym rozszerzeniem, ponieważScript Editor
obsługuje teraz javascript.Aby dekompilować
.scpt
w powłoce:https://github.com/rupa/applescript/blob/master/decompile.sh
Najważniejsza część:
Textmate to zewnętrzny edytor, który potrafi czytać
.scpt
:https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm
Najważniejsza część:
Ta funkcja pochodzi
OSAScript.h
oprócz OS X SDK. WOSAScript.h
tym jest długi komentarz:Zasadniczo, gdy zapisane
.scpt
,OSALanguageInstance
deskryptor jest również zapisywane w pliku.Jeśli plik zostanie zapisany jako
.applescript
/ text, system skompiluje go z najnowszą wersją języka AppleScript. Na przykład skrypt napisany dla starszej wersji OS X może nie działać w nowej wersji, ponieważ niektóre funkcje stały się przestarzałe. Dzięki.scpt
systemowi / aplikacji wybraliśmy, dla jakiej wersji applecipt jest przeznaczony.Od 10.10 javascript można zapisywać
.scpt
i wykonywać poprawnie.źródło
asprint
dostępny na < hasseg.org/asprint >, który pozwoli ci „ładnie drukować” pliki .scpt. Jedyną wadą jest to, że nie działa na plikach .scpt JavaScript, tylko na AppleScript.Po obejrzeniu polecenia dekompilacji udostępnionego przez Fartheraway odkryłem rozwiązanie. Jeśli chcesz, aby plik applecript (.scpt) nie był binarny.
@fartheraway również wspomina o tym w dolnej części swojej odpowiedzi.
po prostu zrób cały program z rozszerzeniem .applescript.
Edytor skryptów będzie mógł uruchomić kod i nie zapisze go w skompilowanym formacie.
źródło