Как и FP, в конце концов, все наши программы структурированы. То есть не имеет значения, насколько чистыми или функциональными мы их создаем - они всегда переводятся в сборку, поэтому то, что на самом деле скрывается за капотами, это инструкции, состояния и циклы. Мы как бы подражаем ФП.
Как аппаратный нуб, мой вопрос: почему мы не используем компьютерные архитектуры, которые фактически вычисляют вещи в функциональном стиле? Например, компьютер может состоять из примитивных «функциональных микросхем», таких как «concat», «map» и «Reduce», и программа просто скажет компьютеру, как передавать данные между этими микросхемами, чтобы вычислить желаемый результат. Например, в конкатенационных языках.
Это не имеет смысла, но может проиллюстрировать, о чем я думаю.
источник
if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation.
Не совсем, потому что Filter не является «операцией»; это функция высшего порядка, которая применяет произвольную внешнюю операцию к списку. Вы не можете уменьшить это до одного такта.Ответы:
Они делают компьютеры такими. Это называется ПЛИС . Конечно, ПЛИС поддерживают как последовательную, так и комбинационную логику, но ничто не мешает вам просто использовать комбинационную часть, как вы предлагаете.
На практике, однако, последовательная логика (типа с состоянием) чрезвычайно полезна даже на уровне чипа. С одной стороны, это значительно уменьшает количество логических элементов, необходимых для решения проблемы. С другой стороны, это решает множество проблем проектирования, связанных с сигналами, имеющими разные задержки распространения.
Если вы заинтересованы в подобных вещах, то вам стоит проверить FPGA. Есть недорогая ардуино-подобная доска под названием papilio, которая отлично подходит для начинающих. Люди используют его для всего: от контроля роботов до майнинга биткойнов.
источник
В сущности, да, аналоговые компьютеры работали так: вы меняли параметры, и электрический ток изменялся соответствующим образом. Это то, что на некоторое время сделало их «более быстрыми» в 1950-х годах - вас не заботило медленное создание и изменение отдельных «состояний», как в старых цифровых бегемотах.
И, возможно, квантовые компьютеры тоже могут работать таким образом: если состояние некоторых квантовых явлений зависит от состояния других, то изменение некоторого «начального» состояния изменит одновременно следующие состояния - никаких промежуточных «состояний» между ними.
источник