El Editor de secuencias de comandos (anteriormente Editor de AppleScript anterior a Yosemite 10.10) guarda los .scpt
archivos como archivos binarios, no como archivos de texto sin formato.
Hace que trabajar con ellos en sistemas de control de código fuente sea algo engorroso.
¿Alguien sabe por qué este es el caso? ¿Existe alguna historia de larga data que requirió que este formato de archivo fuera algo más que archivos de texto sin formato?
applescript
Ian C.
fuente
fuente
Respuestas:
El artículo de William R. Cook contiene una excelente historia y conocimiento de aquellos involucrados con AppleScript en 1989.
Lo que sigue es divertido y especulativo.
Conservación del espacio y procesamiento
AppleScript se escribió en un momento en que cada byte y bit era valioso. La codificación diferida de OS X como formatos de lista de propiedades sería un desperdicio a los ojos de los primeros desarrolladores.
El formato binario proporcionaba una forma analizada previamente que evitaba duplicar el proceso de análisis complejo, propenso a errores y que consume mucho tiempo con cada carga desde el disco. Es mejor cargar directamente en la memoria y ejecutar.
Adaptado
Guardar en un formato binario permitió que AppleScripts estuviera vinculado a los códigos subyacentes de AppleEvent en lugar de a su diccionario de terminología de forma larga.
Esto permitiría que un AppleScript escrito y guardado en una versión de una aplicación se actualice automáticamente a los cambios de terminología entre las versiones de las aplicaciones de destino.
Un objeto entero podría llamarse 'entero' en el script pero guardarse como el código de cuatro caracteres '
int
' en la representación binaria. El código de cuatro caracteres que proviene del diccionario AppleScript proporcionado por el sistema operativo.Si una futura terminología de AppleScript decidiera alterar la palabra de usuario para entero, la representación binaria podría correlacionarse con el nombre más nuevo.
Un lado negativo de esto es posible ver hoy. Escriba un AppleScript contra el diccionario de una aplicación. Luego, elimine la aplicación por completo de su Mac. ¿Qué ves en Script Editor al abrir el script?
Al menos en versiones recientes, el Editor AppleScript mostró los galones que rodean el código de cuatro caracteres . El código ha sido recordado y resaltado. No el usuario enfrenta terminología.
Probablemente este no sea el beneficio principal, sino un posible beneficio.
Sesgo moderno
Vale la pena reconocer nuestro sesgo moderno para los documentos de texto. La experiencia nos ha enseñado a muchos que almacenar contenido valioso en formato binario conlleva riesgos. Los formatos binarios a menudo están poco documentados, son opacos para el usuario final y difíciles de abrir cuando no se mantiene el software propietario.
Cuando se creó AppleScript y su formato binario, este sesgo aún no se había formado. Los límites de almacenamiento y de cálculo eran muy reales y valía la pena cada kilobyte o miles de ciclos guardados.
Historia y origenes
Las historias del origen de AppleScript son maravillosas pero difíciles de rastrear en estos días. AppleScript trató de ser un lenguaje amigable, similar al inglés, y fue impresionante en su visión; ¡la implementación real fue más difícil de acertar!
fuente
En resumen,
.scpt
permite la compatibilidad con versiones anteriores. Además, AppleScript / JavaScript (etc.) se puede guardar con la misma extensión, dado queScript Editor
ahora es compatible con JavaScript.Para descompilar
.scpt
en shell:https://github.com/rupa/applescript/blob/master/decompile.sh
La parte más relevante:
Textmate es un editor externo que puede leer
.scpt
:https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm
La parte más relevante:
Esta función proviene
OSAScript.h
, además de OS X SDK. EnOSAScript.h
, hay este largo comentario:Básicamente, cuando se guarda
.scpt
,OSALanguageInstance
también se guarda un descriptor en el archivo.Si un archivo se guarda como
.applescript
/ texto, el sistema lo compilará con la última versión del lenguaje AppleScript. Un script, por ejemplo, escrito para una versión anterior de OS X puede no funcionar en una nueva versión porque algunas funciones se han vuelto obsoletas. Con.scpt
, el sistema / aplicación ha elegido para qué versión de applecipt está destinado.Desde 10.10, javascript se puede guardar
.scpt
y ejecutar correctamente.fuente
asprint
disponible en < hasseg.org/asprint > que le permitirá 'imprimir bastante' archivos .scpt. El único inconveniente es que no funciona en archivos .scpt de JavaScript, solo en AppleScript.Después de ver el comando de descompilación compartido por Fartheraway descubrí la solución. Si desea que el archivo AppleScript (.scpt) no sea binario.
@fartheraway también lo menciona al final de su respuesta.
simplemente haga todo el desarrollo con la extensión .applescript.
El Editor de secuencias de comandos podrá ejecutar el código y no lo guardará en un formato compilado.
fuente