Редактор скриптов (ранее AppleScript Editor до Yosemite 10.10) сохраняет .scpt
файлы в виде двоичных файлов, а не текстовых файлов.
Это делает работу с ними в системах управления исходным кодом несколько громоздкой.
Кто-нибудь знает, почему это так? Есть ли давняя история, которая требовала, чтобы этот формат файла был чем-то иным, чем обычными текстовыми файлами?
applescript
Ян С.
источник
источник
Ответы:
Работа Уильяма Р. Кука содержит отличную историю и понимание тех, кто был связан с AppleScript в 1989 году.
То, что следует, весело и умозрительно.
Сохранение пространства и обработки
AppleScript был написан в то время, когда каждый байт и бит были ценными. Ленивое кодирование OS X в качестве форматов списков свойств было бы расточительным в глазах тех первых разработчиков.
Бинарный формат предоставил предварительно проанализированную форму, позволяющую избежать дублирования сложного, подверженного ошибкам и трудоемкого процесса синтаксического анализа при каждой загрузке с диска. Лучше загрузить прямо в память и запустить.
адаптивный
Сохранение в двоичном формате позволило привязывать AppleScripts к базовым кодам AppleEvent, а не к словарю терминологии длинных форм.
Это позволило бы AppleScript, написанный и сохраненный для одной версии приложения, автоматически обновлять терминологические изменения между версиями целевых приложений.
Целочисленный объект может быть назван «целым числом» в сценарии, но сохранен как четырехзначный код
int
»в двоичном представлении. Четырехсимвольный код из словаря AppleScript, предоставляемого операционной системой.Если будущая терминология AppleScript решит изменить пользовательское слово на целое, двоичное представление может отобразиться на более новое имя.
С другой стороны это можно увидеть сегодня. Напишите AppleScript против словаря приложения. Затем полностью удалите приложение с вашего Mac. Что вы видите в редакторе скриптов при открытии скрипта?
По крайней мере, в последних версиях AppleScript Editor отображал шевроны, окружающие четырехсимвольный код . Код был запомнен и выделен. Не пользователь сталкивается с терминологией.
Вероятно, это не основная выгода, а возможная выгода.
Современный уклон
Стоит признать наш современный уклон для текстовых документов. Опыт научил многих из нас, что хранение ценного контента в двоичном формате сопряжено с риском. Двоичные форматы часто плохо документированы, непрозрачны для конечного пользователя и их трудно открыть, если не поддерживается программное обеспечение, владеющее ими.
Когда AppleScript и его двоичный формат были созданы, это смещение еще не сформировалось. Пределы хранения и вычислений были очень реальны, и каждый килобайт или тысячи сохраненных циклов стоили того.
История и происхождение
Истории происхождения AppleScript замечательны, но их трудно отследить в наши дни. AppleScript старался быть дружественным языком, похожим на английский, и у него захватывало дух; Реальная реализация была труднее получить право!
источник
Короче говоря,
.scpt
допускает обратную совместимость. Кроме того, яблочный скрипт / javascript (и т. Д.) Можно сохранять с тем же расширением, учитывая, чтоScript Editor
теперь он поддерживает javascript.Чтобы декомпилировать
.scpt
в оболочку:https://github.com/rupa/applescript/blob/master/decompile.sh
Наиболее актуальная часть:
Textmate - сторонний редактор, который может читать
.scpt
:https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm
Наиболее актуальная часть:
Эта функция взята
OSAScript.h
, кроме OS X SDK. ВOSAScript.h
, есть этот длинный комментарий:В принципе, при сохранении
.scpt
,OSALanguageInstance
дескриптор также сохраняется в файле.Если файл сохранен как
.applescript
/ text, система скомпилирует его с последней версией языка applecript. Например, сценарий, написанный для более старой версии OS X, может не работать в новой версии, поскольку некоторые функции устарели. С.scpt
помощью системы / приложения можно определить, для какой версии applecipt она предназначена.С 10.10 javascript может быть сохранен
.scpt
и выполнен правильно.источник
asprint
доступный от < hasseg.org/asprint >, который позволит вам «красиво печатать» файлы .scpt. Единственным недостатком является то, что он не работает с файлами .scpt JavaScript, только с файлами AppleScript.После просмотра команды декомпиляции, которой поделился Fartheraway, я обнаружил решение. Если вы хотите, чтобы файл applecript (.scpt) не был двоичным.
@fartheraway также упоминает об этом в нижней части своего ответа.
просто сделайте всю разработку с расширением .applescript.
Редактор сценариев сможет запускать код и не будет сохранять его в скомпилированном формате.
источник