O Editor de scripts (anteriormente AppleScript Editor anterior ao Yosemite 10.10) salva .scpt
arquivos como arquivos binários, não como arquivos de texto sem formatação.
Isso torna o trabalho com eles em sistemas de controle de código-fonte um tanto complicado.
Alguém sabe por que esse é o caso? Existe algum histórico de longa data que exigia que esse formato de arquivo fosse algo diferente de arquivos de texto sem formatação?
applescript
Ian C.
fonte
fonte
Respostas:
O artigo de William R. Cook contém uma excelente história e insights dos envolvidos com o AppleScript em 1989.
O que se segue é divertido e especulativo.
Conservação de espaço e processamento
O AppleScript foi escrito em um momento em que cada byte e bit era valioso. A codificação preguiçosa do OS X como formatos de lista de propriedades seria um desperdício aos olhos dos primeiros desenvolvedores.
O formato binário fornecia um formulário pré-analisado que evitava duplicar o processo de análise complexo, propenso a erros e demorado, com cada carregamento do disco. Melhor carregar diretamente na memória e executar.
Adaptativo
Salvar em formato binário permitiu que os AppleScripts fossem vinculados aos códigos AppleEvent subjacentes, em vez do dicionário de terminologia longa.
Isso permitiria que um AppleScript gravado e salvo em uma versão de um aplicativo fosse atualizado automaticamente para alterações de terminologia entre as versões dos aplicativos de destino.
Um objeto inteiro pode ser chamado de 'número inteiro' no script, mas salvo como o código de quatro caracteres '
int
' na representação binária. O código de quatro caracteres proveniente do dicionário AppleScript fornecido pelo sistema operacional.Se uma terminologia AppleScript futura decidir alterar a palavra voltada ao usuário para inteiro, a representação binária poderá mapear para o nome mais recente.
Um outro lado disso é possível ver hoje. Escreva um AppleScript no dicionário de um aplicativo. Em seguida, remova o aplicativo totalmente do seu Mac. O que você vê no Editor de scripts ao abrir o script?
Pelo menos nas versões recentes, o AppleScript Editor mostrou divisas ao redor do código de quatro caracteres . O código foi lembrado e destacado. Não é o usuário que enfrenta a terminologia.
Provavelmente, esse não é o principal benefício, mas um possível benefício.
Viés moderno
Vale a pena reconhecer nosso viés moderno para documentos de texto. A experiência ensinou muitos de nós que armazenar conteúdo valioso em formato binário traz riscos. Os formatos binários costumam ser pouco documentados, opacos ao usuário final e difíceis de abrir quando o software proprietário não é mantido.
Quando AppleScript e seu formato binário foram criados, esse viés ainda não foi formado. Os limites computacionais e de armazenamento eram muito reais e cada kilobyte ou milhares de ciclos salvos valia a pena.
História e Origens
As histórias da origem do AppleScript são maravilhosas, mas difíceis de rastrear nos dias de hoje. O AppleScript tentou ser um idioma amigável, como o inglês, e era de tirar o fôlego em sua visão; a implementação real foi mais difícil de acertar!
fonte
Em resumo,
.scpt
permite compatibilidade com versões anteriores. Além disso, o AppleScript / javascript (etc) pode ser salvo com a mesma extensão, já queScript Editor
agora suporta javascript.Para descompilar
.scpt
no shell:https://github.com/rupa/applescript/blob/master/decompile.sh
A parte mais relevante:
O Textmate é um editor de terceiros que pode ler
.scpt
:https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm
A parte mais relevante:
Essa função vem
OSAScript.h
, além do OS X SDK. EmOSAScript.h
, há este longo comentário:Basicamente, quando salvo
.scpt
, umOSALanguageInstance
descritor também é salvo no arquivo.Se um arquivo for salvo como
.applescript
/ texto, o sistema o compilará com a versão mais recente da linguagem AppleScript. Um script, por exemplo, escrito para uma versão mais antiga do OS X pode não funcionar em uma nova versão porque algumas funções se tornaram obsoletas. Com.scpt
, o sistema / aplicativo selecionou para qual versão do applescipt se destina.A partir da 10.10, o javascript pode ser salvo
.scpt
e executado corretamente.fonte
asprint
disponível em < hasseg.org/asprint >, que permite 'imprimir' arquivos .scpt. A única desvantagem é que ele não funciona em arquivos .scpt JavaScript, apenas em arquivos AppleScript.Depois de ver o comando decompile compartilhado por Fartheraway, descobri a solução. Se você deseja que o arquivo AppleScript (.scpt) não seja binário.
@fartheraway também menciona isso na parte inferior de sua resposta.
basta fazer todo o desenvolvimento com a extensão .applescript.
O Editor de scripts poderá executar o código e não o salvará em um formato compilado.
fonte