Tan rápido como lo ha hecho FP, al final, todos nuestros programas están estructurados. Es decir, no importa cuán puro o funcional los hagamos, siempre se traducen al ensamblaje, por lo que lo que realmente funciona detrás de las campanas son instrucciones, estados y bucles. Somos una especie de emulación de FP.
Como novato en hardware, mi pregunta es: ¿por qué no estamos usando arquitecturas informáticas que realmente computan las cosas en un estilo funcional? Por ejemplo, una computadora podría consistir en "chips funcionales" primitivos como "concat", "map" y "reduce", y un programa simplemente le diría a la computadora cómo hacer fluir los datos entre esos chips para calcular el resultado deseado , como en lenguajes concatenativos.
Esto realmente no tiene sentido, pero podría ilustrar lo que estoy pensando.
fuente
if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation.
En realidad no, porque Filter no es "una operación"; Es una función de orden superior que aplica una operación externa arbitraria a una lista. No puede reducir eso a un solo ciclo de reloj.Respuestas:
Hacen computadoras así. Se llama FPGA . Por supuesto, los FPGA son compatibles con la lógica secuencial y combinatoria, pero no hay nada que le impida simplemente usar la parte combinacional como sugiere.
En la práctica, sin embargo, la lógica secuencial (del tipo con estado) es extremadamente útil incluso a nivel de chip. Por un lado, reduce significativamente el número de puertas lógicas necesarias para resolver un problema. Por otro lado, resuelve muchos problemas de diseño relacionados con señales que tienen diferentes retrasos de propagación.
Si está interesado en ese tipo de cosas, vale la pena echarle un vistazo a los FPGA. Hay una tabla barata tipo arduino llamada papilio que es ideal para principiantes. La gente lo usa para todo, desde control de robots hasta minería de bitcoins.
fuente
Essentiall, sí, las computadoras analógicas funcionaban de esa manera: estabas cambiando los parámetros y una corriente eléctrica se modificó en consecuencia. Eso es lo que los hizo "más rápidos", durante un tiempo, en la década de 1950: no le importaba la lenta creación y modificación de "estados" separados como en los antiguos gigantes digitales.
Y podría decirse que las computadoras cuánticas también podrían funcionar de esa manera: si el estado de algunos fenómenos cuánticos depende del estado de otros, entonces cambiar algún estado "inicial" cambiará los siguientes estados simultáneamente, sin "estados" intermedios.
fuente