Tak jak papka, jak FP, w końcu wszystkie nasze programy mają strukturę. Oznacza to, że nie ma znaczenia, jak czyste lub funkcjonalne je wykonujemy - zawsze są tłumaczone na asembler, więc to, co faktycznie działa za maskami, to instrukcje, stany i pętle. Naśladujemy FP.
Jako noob sprzętowy moje pytanie brzmi: dlaczego nie używamy architektur komputerowych, które faktycznie obliczały rzeczy w funkcjonalnym stylu? Na przykład komputer może składać się z prymitywnych „funkcjonalnych układów”, takich jak „konkat”, „mapa” i „redukcja”, a program po prostu mówi komputerowi, jak przepływać dane między tymi układami, aby obliczyć pożądany wynik , na przykład w językach konkatenatywnych.
To naprawdę nie ma sensu, ale może zilustrować to, co myślę.
functional-programming
computer-science
haskell
lisp
clojure
MaiaVictor
źródło
źródło
if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation.
Nie bardzo, ponieważ Filtr nie jest „operacją”; jest to funkcja wyższego rzędu, która stosuje dowolną zewnętrzną operację do listy. Nie można ograniczyć , że do jednego cyklu zegara.Odpowiedzi:
Robią takie komputery. Nazywa się to FPGA . Oczywiście układy FPGA obsługują zarówno logikę sekwencyjną, jak i kombinacyjną, ale nic nie stoi na przeszkodzie, abyś korzystał z kombinacji, jak sugerujesz.
W praktyce jednak logika sekwencyjna (taka ze stanem) jest niezwykle użyteczna nawet na poziomie układu. Po pierwsze, znacznie zmniejsza liczbę bramek logicznych wymaganych do rozwiązania problemu. Po drugie, rozwiązuje wiele problemów projektowych związanych z sygnałami mającymi różne opóźnienia propagacji.
Jeśli jesteś zainteresowany tego typu rzeczami, warto sprawdzić układy FPGA. Istnieje niedroga, przypominająca arduino deska o nazwie papilio, która jest idealna dla początkujących. Ludzie używają go do wszystkiego, od kontroli robota po wydobycie bitcoinów.
źródło
Essentiall, tak, komputery analogowe działały w ten sposób: zmieniałeś parametry i odpowiednio modyfikowano prąd elektryczny. To sprawiło, że w latach 50. stały się „szybsze” - nie przejmowałeś się powolnym tworzeniem i modyfikacją oddzielnych „stanów” jak w starych cyfrowych potworach.
I zapewne komputery kwantowe również mogą działać w ten sposób: jeśli stan niektórych zjawisk kwantowych zależy od stanu innych, wówczas zmiana stanu „początkowego” spowoduje jednoczesną zmianę następujących stanów - brak „stanów” pomiędzy nimi.
źródło