Arquiteturas de computadores NÃO baseadas em matrizes [fechadas]

9

Artigo original de Wadler sobre Mônadas para Programação Funcional (Haskell), ele diz

Outra questão com uma longa história é se é desejável basear os programas na atualização da matriz. Como tanto esforço foi desenvolvido no desenvolvimento de algoritmos e arquiteturas baseados em matrizes, contornaremos esse debate e simplesmente assumiremos que a resposta é sim.

Não há citações ou dicas para outras arquiteturas possíveis. Eu ouvi algo sobre uma arquitetura adequada ao Lisp. Alguém pode me orientar com algumas explicações e orientações sobre onde / como posso começar sobre este tópico. Eu apreciaria muito que você possa explicar brevemente a arquitetura diferente.

Asterisco
fonte
11
Talvez seja possível adicionar algum tipo de suporte de hardware para tornar as árvores mais eficientes do que são agora. Especialmente sobre a localidade do cache.
CodesInChaos
Em certo sentido, um computador com múltiplos núcleos é mais adequado a uma linguagem pura.
PyRulez
@CodesInChaos O wiki tem um tronco na máquina de redução de gráfico e um link para a máquina SECD com base em um artigo de 1963. Não tenho certeza se é isso.
Asterisk

Respostas:

0

Há a Symbolics Lisp Machine , também Lisp Machine


Em outra nota, isso também pode ser apropriado, costumava haver hardware personalizado para programação de fluxo de dados. Este texto diz que o conceito desenvolvido nos anos 70 e o hardware personalizado foram perseguidos nos anos 80.

Erik Eidt
fonte
As listas são realmente apenas matrizes com recursos extras.
Robert Harvey
@RobertHarvey Conceitualmente muito diferente. Um fornece operações indexadas, o outro seqüencial. Somente um é necessário para estar ciente do próximo (e anterior), ou seja, eu faço parte de uma sequência. Na verdade, uma matriz não precisa armazenar o conteúdo sequencialmente. É apenas conveniência. Uma matriz apenas precisa fornecer um índice (esse índice pode ser conceitualmente qualquer coisa) e esse índice pode ser usado para buscar e atualizar o elemento em O (1).
Asterisk