NewtonScript - NewtonScript

NewtonScript
Paradigma Protótipo Orientado a Objetos
Projetado por Walter Smith
Desenvolvedor computador Apple
Apareceu pela primeira vez 1993 ; 28 anos atrás ( 1993 )
Disciplina de digitação Dinâmico
Influenciado por
Auto , Dylan
Influenciado
Io

NewtonScript é uma linguagem de programação baseada em protótipo criada para escrever programas para a plataforma Newton . É fortemente influenciado pela linguagem de programação Self , mas modificado para ser mais adequado às necessidades de dispositivos móveis e embarcados .

História

Em 3 de agosto de 1993, a Apple revelou o Apple Newton MessagePad . O dispositivo tinha 640 KB de RAM e 4 MB de ROM, rodando em máquina Acorn RISC de 20 MHz.

A principal intenção por trás do projeto Newton, era desenvolver um dispositivo capaz de substituir um computador sendo portátil. Com bateria e memória limitadas, os desenvolvedores procuravam uma linguagem de programação capaz de atender a esses desafios.

Os desenvolvedores analisaram a linguagem C ++, mas perceberam que faltava flexibilidade. Eles começaram a se concentrar em linguagens baseadas em protótipos e ficaram impressionados com Smalltalk e Self. Ao mesmo tempo, a Apple estava desenvolvendo outra linguagem de programação dinâmica chamada Dylan , que era uma forte candidata para a plataforma Newton.

No entanto, tanto Self quanto Dylan foram deixados de lado, já que ambos estavam em um estágio inicial de integração adequada.

Em vez disso, uma equipe chefiada por Walter R Smith desenvolveu uma nova linguagem chamada NewtonScript. foi influenciado por uma linguagem dinâmica como Smalltalk e um modelo de protótipo baseado em Self.

Recursos

Embora NewtonScript tenha sido fortemente influenciado por Self, houve algumas diferenças em ambas as linguagens.

As diferenças surgiram devido a três problemas percebidos com o Self.

  1. Uma é que o típico Self snapshot requer 32 MB de RAM para ser executado, enquanto a plataforma Newton foi projetada para usar apenas 128 KB para o sistema operacional. Isso exigiu uma redução séria do motor para torná-lo apto e ainda ter espaço para aplicações.
  2. Outro problema era o desempenho. Como o idioma seria usado para todo o sistema, em vez de apenas ser executado em um sistema operacional existente, ele precisava ser executado o mais rápido possível.
  3. Finalmente, o sistema de herança no mecanismo normal do Self tinha um único objeto pai, enquanto as GUIs normalmente têm dois - uma para os objetos e outra para o layout da GUI que normalmente é tratado por meio da adição de um slot em algum tipo de objeto de hierarquia da GUI (como Exibir ).

A sintaxe também foi modificada para permitir um estilo de programação mais baseado em texto, em oposição ao uso generalizado do Self de um ambiente de GUI para programação. Isso permitiu que os programas Newton fossem desenvolvidos em um computador executando o Toolkit, onde os programas seriam compilados e, em seguida, baixados para um dispositivo Newton para execução.

Uma das vantagens da herança baseada em protótipo do NewtonScript foi o uso reduzido de memória, uma consideração importante no Newton de 128 KB. O protótipo de um objeto GUI poderia realmente ser armazenado na ROM, portanto, não havia necessidade de copiar dados ou funções padrão para a memória de trabalho.

Ao contrário das linguagens baseadas em classes, onde a criação de um objeto envolve a alocação de memória para todos os seus atributos, o uso da herança de protótipo por NewtonScripts permitiu alocar memória para alguns campos como _proto e _parent em vez de criar um novo objeto inteiro. Aqui, _proto e _parent significam se o objeto está usando protótipo ou herança pai.

Um exemplo para ilustrar o conceito acima, um desenvolvedor pode criar uma nova instância de botão. Se o botão usar a fonte padrão, acessar seu "slot" de fonte (ou seja, propriedade ou variável de membro) retornará um valor que está realmente armazenado na ROM; a instância do botão na RAM não tem um valor em seu próprio slot de fonte, portanto, a cadeia de herança do protótipo é seguida até que um valor seja encontrado. Se o desenvolvedor alterar a fonte do botão, definir seu slot de fonte com um novo valor substituirá o protótipo; este valor de substituição é armazenado na RAM. A " herança diferencial " do NewtonScript, portanto, fez uso eficiente da dispendiosa memória RAM flash do Newton, armazenando a maior parte dos dados padrão e do código na ROM mais barata e muito maior do PDA .

Termos importantes

Visualizações: são objetos criados pelo Newton View System, que são criados em tempo de execução para renderizar visualizações.

Template: É um blueprint a partir do qual as visualizações são criadas.

Protos: eles podem ser o projeto de um modelo ou visualização e são elementos das bibliotecas de código NewtonScript.

Frame e Slot: Frame é uma coleção dinâmica de slots, e um elemento do frame é chamado de slot. Um slot é composto de nome e valor. O valor pode ser de qualquer tipo. Vale a pena observar que todos os objetos em NewtonScript são quadros.

Sopa e entrada: é uma coleção relacionada de quadros / dados. A entrada é uma moldura individual em uma sopa.

Frame Heap: RAM alocada dinamicamente por NewtonScript.

Vista Base: É a vista principal da aplicação, composta por todas as variáveis ​​e métodos utilizados na aplicação.

Vantagens e desvantagens

Vantagens

  • NewtonScript é uma linguagem de programação baseada em protótipo dinâmico, que usa herança diferencial. Isso significa que é muito eficaz no uso de espaço de memória. Por ser dinâmico, é fácil modificar objetos, verificar tipos, etc. em tempo de execução, dando grande flexibilidade aos desenvolvedores.
  • Os objetos criados podem ser armazenados na memória permanente, como cartão flash ou memória interna. O RAM é usado apenas para armazenar atributos cujos valores mudam durante o tempo de execução. Isso reduz o consumo de memória.
  • A escrita de interfaces para aplicações GUI pode ser implementada efetivamente usando o modelo de protótipo, uma vez que podemos escrever um objeto diretamente para um controle GUI em vez de criar uma classe e instanciá-la.
  • A coleta de lixo é realizada automaticamente pelo sistema. Isso ajudou os desenvolvedores a se concentrarem mais no desenvolvimento de aplicativos, em vez de se preocupar com o gerenciamento de memória. A coleta de lixo também ajudou a atenuar o problema de ponteiros pendentes, onde um ponteiro aponta erroneamente para um local da memória que foi desalocado.

Desvantagens

  • Como o código NewtonScript foi escrito em uma plataforma e executado em outra, era praticamente impossível depurar. Melhor depuração do código no mecanismo Newton teria ajudado a compensar esse problema até certo ponto, mas a memória limitada tornava isso difícil. Em vez disso, o desenvolvedor obteria uma indicação vaga junto com um código de erro, sem qualquer capacidade de combiná-lo com as linhas do código original.
  • Outra desvantagem é que a variável dinâmica reduz a velocidade da operação, uma vez que a desreferenciação de ponteiro simples não pode ser usada como em tipagem estática como C ++ e Java.

Influências

Com o cancelamento do projeto Newton pela Apple em 1998, todos os outros desenvolvimentos principais do NewtonScript foram interrompidos. No entanto, os recursos usados ​​no NewtonScript continuariam a inspirar outros modelos e linguagens de programação.

O modelo de objeto baseado em protótipo de Self e NewtonScript foi usado em JavaScript , a linguagem mais popular e visível para usar o conceito até agora.

NewtonScript também é um dos ancestrais conceituais (junto com Smalltalk, Self, Act1, Lisp e Lua ) de uma linguagem de programação de propósito geral chamada Io que implementa o mesmo modelo de herança diferencial, que foi usado em NewtonScript para conservar memória.

Veja também

Referências

links externos