Por mais que a FP tenha feito, no final, todos os nossos programas estão estruturados. Ou seja, não importa o quão puro ou funcional nós os tornemos - eles sempre são traduzidos para montagem, então o que realmente passa por trás dos capuzes são instruções, estados e loops. Estamos meio que emulando FP.
Como noob de hardware, minha pergunta é: por que não estamos usando arquiteturas de computadores que realmente computam as coisas em um estilo funcional? Por exemplo, um computador poderia consistir em "chips funcionais" primitivos, como "concat", "map" e "reduce", e um programa simplesmente informaria ao computador como fluir os dados entre esses chips para calcular o resultado desejado. , como em idiomas concatenativos.
Isso realmente não faz sentido, mas pode ilustrar o que estou pensando.
fonte
if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation.
Na verdade não, porque o Filter não é "uma operação"; é uma função de ordem superior que aplica uma operação externa arbitrária a uma lista. Você não pode reduzir isso a um único ciclo de relógio.Respostas:
Eles fazem computadores assim. É chamado de FPGA . Obviamente, os FPGAs suportam lógica sequencial e combinacional, mas não há nada que o impeça de usar a parte combinatória conforme sugerido.
Na prática, no entanto, a lógica seqüencial (do tipo com estado) é extremamente útil, mesmo no nível do chip. Por um lado, reduz significativamente o número de portas lógicas necessárias para resolver um problema. Por outro lado, resolve muitos problemas de design relacionados a sinais com diferentes atrasos na propagação.
Se você está interessado nesse tipo de coisa, vale a pena conferir os FPGAs. Há uma placa barata, semelhante a um arduino, chamada papilio, que é ótima para iniciantes. As pessoas o usam para tudo, desde controle de robôs até mineração de bitcoin.
fonte
Essencialmente, sim, os computadores analógicos funcionavam dessa maneira: você estava alterando parâmetros e uma corrente elétrica foi modificada de acordo. Foi isso que os tornou "mais rápidos", durante algum tempo, na década de 1950 - você não se importava com a lenta criação e modificação de "estados" separados, como nos antigos gigantes digitais.
E, sem dúvida, os computadores quânticos também podem funcionar dessa maneira: se o estado de alguns fenômenos quânticos depende do estado de outros, a alteração de um estado "inicial" alterará os seguintes estados simultaneamente - nenhum "estado" entre eles.
fonte