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.
Das macht nicht wirklich Sinn, könnte aber veranschaulichen, was ich denke.
quelle
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.Antworten:
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.
quelle
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.
quelle