Computerarchitekturen, die NICHT auf Arrays basieren [geschlossen]

9

Wadlers Originalarbeit über Monaden für die funktionale Programmierung (Haskell), sagt er

Eine andere Frage mit einer langen Geschichte ist, ob es wünschenswert ist, Programme auf Array-Aktualisierungen zu basieren. Da so viel Aufwand in die Entwicklung von Algorithmen und Architekturen investiert wurde, die auf Arrays basieren, werden wir diese Debatte umgehen und einfach davon ausgehen, dass die Antwort Ja lautet.

Es gibt keine Zitate oder Hinweise auf andere mögliche Architekturen. Ich habe etwas über eine Architektur gehört, die zu Lisp passt. Kann mir bitte jemand eine Erklärung und Anleitung geben, wo / wie ich mit diesem Thema anfangen kann? Ich würde mich sehr freuen, wenn Sie die verschiedenen Architekturen kurz erläutern können.

Sternchen
quelle
1
Vielleicht ist es möglich, eine Art Hardware-Unterstützung hinzuzufügen, um Bäume effizienter zu machen als jetzt. Besonders in Bezug auf die Cache-Lokalität.
CodesInChaos
In gewissem Sinne ist ein Computer mit mehreren Kernen eher für eine reine Sprache geeignet.
PyRulez
@CodesInChaos Das Wiki hat einen Stumpf auf der Graph Reduction-Maschine und einen Link zur SECD-Maschine, der auf einem Papier von 1963 basiert. Ich bin mir nicht sicher, ob es das ist.
Sternchen

Antworten:

0

Es gibt die Symbolics Lisp Machine , auch Lisp Machine


In einem anderen Punkt, der auch apropos sein könnte, gab es früher benutzerdefinierte Hardware für die Datenflussprogrammierung. Dieser Text besagt, dass das in den 70er Jahren entwickelte Konzept und kundenspezifische Hardware bis in die 80er Jahre verfolgt wurden.

Erik Eidt
quelle
Listen sind wirklich nur Arrays mit zusätzlichen Funktionen.
Robert Harvey
@ RobertHarvey Konzeptionell sehr unterschiedlich. Einer bietet indizierte Operationen, der andere sequentiell. Nur einer muss sich des nächsten (und vorherigen) bewusst sein, dh ich bin Teil einer Sequenz. Tatsächlich muss ein Array Inhalte nicht nacheinander speichern. Es ist nur praktisch. Ein Array muss nur einen Index bereitstellen (dieser Index kann konzeptionell alles sein) und dieser Index kann zum Abrufen und Aktualisieren des Elements in O (1) verwendet werden.
Sternchen