Könnten wir einen funktionierenden Computer bauen?

12

So viel wie FP getan hat, am Ende sind alle unsere Programme strukturiert. Das heißt, es spielt keine Rolle, wie rein oder funktional wir sie herstellen - sie werden immer in Baugruppen übersetzt. Was also tatsächlich hinter den Hauben läuft, sind Anweisungen, Zustände und Schleifen. Wir emulieren FP.

Als Hardware-Neuling lautet meine Frage: Warum verwenden wir keine Computerarchitekturen, die tatsächlich Dinge in einem funktionalen Stil berechnen? Beispielsweise könnte ein Computer aus primitiven "funktionalen Chips" wie "concat", "map" und "redu" bestehen, und ein Programm würde dem Computer lediglich mitteilen, wie die Daten zwischen diesen Chips fließen sollen, um das gewünschte Ergebnis zu berechnen , wie in verketteten Sprachen.

Unsinnsskizze

Das macht nicht wirklich Sinn, könnte aber veranschaulichen, was ich denke.

MaiaVictor
quelle
5
Habe den Link nicht zur Hand, aber ein Haskell-Chip wurde hergestellt, Expertensysteme hatten auch spezielle Lisp-Hardware. Ich denke, Sie wären vielleicht näher an der Karte / reduzieren das Paradigma in der Hardware als alles andere. Der einzige perfekte Vorteil von FP ist die Skalierbarkeit für Parallelität. Auf alle anderen Arten ist fp weniger performant, weil es in seinen Anweisungen aufgrund einer höheren Abstraktionsebene weniger feinkörnig ist. Auf der Metallebene ist die Leistung König, und abgesehen von der Abstraktionsebene der Mathematik ist bei der Ausführung alles unerlässlich. Berechnen Sie 2 * 3 + 5, ohne zwei geordnete Schritte auszuführen. Es ist alles unerlässlich
Jimmy Hoffa
3
@ JimmyHoffas Off-Hand-Haskell-Chip-Link: Reduceron .
Dan D.
1
Vielleicht interessiert Sie auch Verity , ein Compiler für einen Call-by-Name-Lambda-Kalkül mit höherer und affiner Rekursion, der auch zwingende lokale Auswirkungen auf statische Hardware über VHDL hat.
Dan D.
5
@Dokkat: if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation. Nicht wirklich, weil Filter keine "Operation" ist; Es ist eine Funktion höherer Ordnung, die eine beliebige externe Operation auf eine Liste anwendet. Sie können nicht reduzieren , dass auf einen einzigen Taktzyklus.
Mason Wheeler
2
@Dokkat Es handelt sich um eine Funktion höherer Ordnung, da eine Funktion als Eingabe verwendet wird. Die lächerliche Spezifität macht Ihr Beispiel zu etwas, das "in einer einzigen Operation" gemacht werden kann. Die spezifische Prädikatfunktion ist konstant und daher kein wirklicher Filter. Das Erstellen eines Filters mit einer beliebigen Prädikatfunktion kann nicht auf einen einzelnen Taktzyklus reduziert werden, da Sie nicht steuern können, wie viele Taktzyklen die Eingabefunktion benötigt.
Chewy Gumball

Antworten:

11

Sie machen solche Computer. Es heißt FPGA . Natürlich unterstützen FPGAs sowohl sequentielle als auch kombinatorische Logik, aber nichts hindert Sie daran, nur den kombinatorischen Teil zu verwenden, wie Sie es vorschlagen.

In der Praxis ist jedoch sequentielle Logik (die Art mit Zustand) selbst auf Chipebene äußerst nützlich. Zum einen wird die Anzahl der zur Lösung eines Problems erforderlichen Logikgatter erheblich reduziert. Zum anderen werden viele Entwurfsprobleme gelöst, die mit Signalen mit unterschiedlichen Ausbreitungsverzögerungen zusammenhängen.

Wenn Sie an solchen Dingen interessiert sind, sind FPGAs einen Besuch wert. Es gibt ein preiswertes Arduino-ähnliches Board namens Papilio , das sich hervorragend für Anfänger eignet . Die Leute nutzen es für alles, von der Robotersteuerung bis zum Bitcoin-Mining.

Karl Bielefeldt
quelle
Vielen Dank für die Antwort, ich lese die Wikipedia-Seite durch - aber ist FPGA nicht eher eine generische programmierbare Hardware als eine auf funktionale Programmierung spezialisierte Hardware, wie auf meiner Skizze?
MaiaVictor
1
Google "fpga Sortieralgorithmus", wenn Sie sehen möchten, wie es gemacht wird. Was Sie gezeichnet haben, ist eine programmierbare kombinatorische Logikschaltung, für die genau ein FPGA entwickelt wurde.
Karl Bielefeldt
Großartig, ich werde meine Nachforschungen anstellen!
MaiaVictor
Wenn Sie überhaupt keine Sequenzierung haben, dann schauen Sie sich wirklich die analoge Elektronik an
jk.
2
@jk Das stimmt nicht wirklich; Nehmen wir zum Beispiel die arithemtisch-logische Einheit in einer einfachen CPU, die digital und (rein) kombinatorisch ist.
m3th0dman
8

Essentiall, ja, analoge Computer haben so funktioniert: Sie haben Parameter geändert und ein elektrischer Strom wurde entsprechend geändert. Das war es, was sie in den 1950er Jahren eine Zeit lang "schneller" machte - Sie kümmerten sich nicht um die langsame Schaffung und Änderung separater "Zustände" wie bei den alten digitalen Giganten.

Und möglicherweise funktionieren Quantencomputer auch so: Wenn der Zustand einiger Quantenphänomene vom Zustand anderer abhängt, ändert das Ändern eines "Anfangs" -Zustands gleichzeitig die folgenden Zustände - keine "Zustände" dazwischen.

Äneas
quelle
3
+1 für die Erwähnung von Quantencomputern, ich denke, die Fähigkeit, Dinge wie das OP zu tun, legt nahe, dass dies der Hauptvorteil für diese sein wird, wenn sie tatsächlich eintreten
Jimmy Hoffa,