Maclisp - Maclisp

Maclisp
Paradigmas Multi-paradigma : funcional , procedimental , reflexivo , meta
Família Lisp
Projetado por Richard Greenblatt
Jon L. White
Desenvolvedor MIT : Projeto MAC
Apareceu pela primeira vez Julho de 1966 ; 55 anos atrás ( 1966-07 )
Disciplina de digitação dinâmico , forte
Linguagem de implementação Linguagem de montagem , PL / I
Plataforma PDP-6 , PDP-10
SO Sistema de compartilhamento de tempo incompatível , TOPS-10 , TOPS-20 , Multics
Extensões de nome de arquivo .lisp , .fasl
Influenciado por
Lisp 1.5
Influenciado
Lisp Comum

Maclisp (ou MACLISP , às vezes denominado MacLisp ou MacLISP ) é uma linguagem de programação , um dialeto da linguagem Lisp . Ele se originou no Projeto MAC do Massachusetts Institute of Technology (MIT) (do qual derivou seu prefixo) no final dos anos 1960 e era baseado no Lisp 1.5. Richard Greenblatt foi o principal desenvolvedor da base de código original para o PDP-6 ; Jon L. White foi responsável por sua posterior manutenção e desenvolvimento. O nome Maclisp começou a ser usado no início dos anos 1970 para distingui-lo de outros garfos de PDP-6 Lisp, notavelmente BBN Lisp .

História

Maclisp é um descendente do Lisp 1.5 . Maclisp se afasta do Lisp 1.5 usando uma célula de valor para acessar e armazenar os valores dinâmicos das variáveis ; Lisp 1.5 usou uma pesquisa linear de uma lista de associação para determinar o valor de uma variável. A avaliação da variável Maclisp é mais rápida, mas tem diferentes semânticas de variáveis. Maclisp também empregou macros de leitura para tornar a entrada e saída mais legíveis , chamadas de entrada / saída (E / S). Em vez de entrar (QUOTE A), pode-se entrar 'Apara obter a mesma expressão s . Embora ambas as implementações coloquem funções na lista de propriedades, Maclisp usa sintaxe diferente para definir funções. Maclisp também possui um recurso de carregamento sob demanda.

Maclisp começou em computadores Digital Equipment Corporation PDP-6 e PDP-10 executando o Incompatible Timesharing System (ITS); mais tarde, ele foi portado para todos os outros sistemas operacionais PDP-10, por exemplo, Timesharing / Total Operating System , TOPS-10 e TOPS-20 . A implementação original estava em linguagem assembly , mas uma implementação mais tarde Multics usado PL / I . Maclisp se desenvolveu consideravelmente durante sua vida. Recursos principais foram adicionados que, em outros sistemas de linguagem, normalmente corresponderiam aos números de lançamento principais.

Maclisp foi usado para implementar o sistema de álgebra computacional Macsyma (CAS) ou programa de álgebra simbólica. O desenvolvimento do Macsyma também gerou vários recursos no Maclisp. O programa de mundo de blocos SHRDLU foi escrito em Maclisp e, portanto, a linguagem era amplamente usada na comunidade de pesquisa de inteligência artificial (IA) no início dos anos 1980. Ele também foi usado para implementar outras linguagens de programação, como Planner e Scheme . Multics Maclisp foi usado para implementar o primeiro Emacs baseado em Lisp .

Maclisp foi uma implementação Lisp influente, mas não é mais mantida ativamente. Ele agora roda em emuladores PDP-10 e pode ser usado para fazer experiências com os primeiros programas de IA.

Características

Maclisp começou com um número pequeno e fixo de tipos de dados : células cons , átomo (mais tarde denominado símbolo ), inteiro e número de ponto flutuante . As adições posteriores incluíram: arrays , que nunca foram tipos de dados de primeira classe; inteiros de precisão arbitrária (bignums); cordas ; e tuplas . Todos os objetos (exceto inums) foram implementados como ponteiros , e seu tipo de dados foi determinado pelo bloco de memória para o qual apontava, com um caso especial para números pequenos (inums).

Os programas podem ser interpretados ou compilados . O comportamento compilado foi o mesmo que o interpretado, exceto que as variáveis ​​locais eram lexicais por padrão no código compilado, a menos que declaradas como SPECIAL, e nenhuma verificação de erro foi feita para operações inline como CAR e CDR. O compilador Ncomplr (meados da década de 1970) introduziu suporte numérico rápido para linguagens Lisp, gerando código de máquina (instruções) para aritmética ao invés de chamar rotinas interpretativas que despacham no tipo de dados. Isso tornou a aritmética do Lisp comparável em velocidade ao Fortran para operações escalares (embora o array Fortran e a implementação de loop tenham permanecido muito mais rápidos).

A versão original era limitada pelo endereço de memória de palavra de 18 bits do PDP-10, e um esforço considerável foi despendido para manter a implementação enxuta e simples. O Multics Maclisp tinha um espaço de endereçamento muito maior, mas era caro de usar. Quando a memória e o poder de processamento do PDP-10 foram excedidos, a Máquina Lisp foi inventada: Máquina Lisp Lisp é o descendente direto de Maclisp. Vários outros dialetos Lisp também estavam em uso, e a necessidade de unificar a comunidade resultou na moderna linguagem Common Lisp .

Nome

Maclisp foi nomeado para o Projeto MAC e não está relacionado ao computador Macintosh (Mac) da Apple , que antecede em décadas. Os vários sistemas Lisp para o Macintosh não têm nenhuma semelhança particular com o Maclisp.

Referências

links externos