19 votes

Pourquoi les fichiers .scpt de l'éditeur script ne sont pas enregistrés en tant que fichiers de texte brut ?

L'éditeur script (anciennement AppleScript Editor avant Yosemite 10.10) enregistre .scpt en tant que fichiers binaires, et non en tant que fichiers de texte brut.

Cela rend le travail avec eux dans les systèmes de contrôle du code source quelque peu encombrant.

Quelqu'un sait-il pourquoi c'est le cas ? Y a-t-il une histoire ancienne qui a nécessité que ce format de fichier soit autre chose que du texte brut ?

22voto

Graham Miln Points 39606

William R. Cook's Le document contient un excellent historique et un aperçu de ceux qui ont été impliqués dans AppleScript en 1989.

Ce qui suit est amusant et spéculatif.

Conservation de l'espace et traitement

AppleScript a été écrit à une époque où chaque octet et chaque bit avait de la valeur. L'encodage paresseux d'OS X sous forme de listes de propriétés serait un gaspillage aux yeux de ces premiers développeurs.

Le format binaire fournissait une forme pré-paramétrée qui évitait de reproduire le processus d'analyse complexe, source d'erreurs et de perte de temps, à chaque chargement depuis le disque. Il est préférable de charger directement en mémoire et d'exécuter.

Adaptive

La sauvegarde dans un format binaire a permis aux AppleScripts d'être liés aux codes AppleEvent sous-jacents plutôt qu'à leur dictionnaire de terminologie longue.

Cela permettrait à un AppleScript écrit et enregistré pour une version d'une application d'être automatiquement mis à jour pour tenir compte des modifications terminologiques entre les versions des applications ciblées.

Un objet entier peut être appelé 'integer' dans le script mais enregistré sous la forme du code à quatre caractères '. int  ' dans la représentation binaire. Le code à quatre caractères provenant du dictionnaire AppleScript fourni par le système d'exploitation.

Si une future terminologie AppleScript décidait de modifier le mot de revêtement de l'utilisateur pour les entiers, la représentation binaire pourrait correspondre au nouveau nom.

Il est possible de voir le revers de la médaille aujourd'hui. Écrivez un AppleScript contre le dictionnaire d'une application. Puis supprimez entièrement l'application de votre Mac. Que voyez-vous dans l'éditeur script en ouvrant le script ?

Au moins dans les versions récentes, l'éditeur AppleScript affichait chevrons entourant le code à quatre caractères . Le code a été mémorisé et mis en évidence. Pas la terminologie destinée à l'utilisateur.

Ce n'est probablement pas le principal avantage, mais un avantage possible.

Biais moderne

Il convient de reconnaître notre penchant moderne pour les documents textuels. L'expérience a appris à beaucoup d'entre nous que le stockage de contenu de valeur dans un format binaire comporte des risques. Les formats binaires sont souvent mal documenté, opaque pour l'utilisateur final, et difficile à ouvrir lorsque le logiciel propriétaire n'est pas maintenu.

Lorsque AppleScript et son format binaire ont été créés, ce parti pris n'était pas encore formé. Les limites de stockage et de calcul étaient bien réelles et chaque kilooctet ou millier de cycles économisés en valait la peine.

Histoire et origines

Les histoires sur l'origine d'AppleScript sont merveilleuses mais difficiles à retrouver de nos jours. AppleScript s'est efforcé d'être un langage convivial, proche de la langue anglaise, et sa vision était époustouflante ; la mise en œuvre effective était plus difficile à réaliser !

2voto

Michael Dimmitt Points 169

Après avoir vu la commande de décompilation partagée par Fartheraway, j'ai découvert la solution. Si vous voulez que le fichier applescript (.scpt) ne soit pas binaire.

@fartheraway le mentionne également dans le bas de sa réponse.

il suffit de faire tout développement avec l'extension .applescript.

L'éditeur script sera capable d'exécuter le code et il ne l'enregistrera pas dans un format compilé.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X