Можем ли мы построить функциональный компьютер?


12

Как и FP, в конце концов, все наши программы структурированы. То есть не имеет значения, насколько чистыми или функциональными мы их создаем - они всегда переводятся в сборку, поэтому то, что на самом деле скрывается за капотами, это инструкции, состояния и циклы. Мы как бы подражаем ФП.

Как аппаратный нуб, мой вопрос: почему мы не используем компьютерные архитектуры, которые фактически вычисляют вещи в функциональном стиле? Например, компьютер может состоять из примитивных «функциональных микросхем», таких как «concat», «map» и «Reduce», и программа просто скажет компьютеру, как передавать данные между этими микросхемами, чтобы вычислить желаемый результат. Например, в конкатенационных языках.

бессмысленный набросок

Это не имеет смысла, но может проиллюстрировать, о чем я думаю.


5
У меня нет связи, но был изготовлен чип на Haskell, в экспертных системах также было специальное оборудование LISP. Я думаю, что вы могли бы быть ближе к карте / уменьшить парадигму в оборудовании, чем что-либо еще, хотя. Единственное преимущество FP - это масштабируемость до параллелизма. Во всех других отношениях fp менее производительный, потому что он менее детализирован в инструкциях из-за более высокого уровня абстракции. На уровне металла производительность является королем, и, кроме того, даже на уровне абстракции по математике, в исполнении все является обязательным условием. Вычислить 2 * 3 + 5, не делая двух заказанных шагов. Это все обязательно
— Джимми Хоффа

3
Ссылка на чип от Haskell @ JimmyHoffa: Редуцерон .
— Дэн Д.

1
Также вас может заинтересовать Verity, которая является компилятором для лямбда-исчисления с именем по имени с высоким порядком и аффинной рекурсией, которая также имеет обязательные локальные эффекты для статического оборудования через VHDL.
— Дэн Д.

5
@Dokkat: if we could make a specialized chip for Filter, for example, it would need just a single clock for a Filter operation. Не совсем, потому что Filter не является «операцией»; это функция высшего порядка, которая применяет произвольную внешнюю операцию к списку. Вы не можете уменьшить это до одного такта.
— Мейсон Уилер

2
@Dokkat Это функция высшего порядка, так как она принимает на вход функцию. Смешная специфика - это то, что делает ваш пример чем-то, что можно сделать «за одну операцию». Конкретная функция предиката является константой, и поэтому она не является истинным фильтром. Создание фильтра, который принимает произвольную функцию предиката, не может быть сведено к одному такту, потому что вы не можете контролировать, сколько тактов занимает входная функция.
— Chewy Gumball

Ответы:


11

Они делают компьютеры такими. Это называется ПЛИС . Конечно, ПЛИС поддерживают как последовательную, так и комбинационную логику, но ничто не мешает вам просто использовать комбинационную часть, как вы предлагаете.

На практике, однако, последовательная логика (типа с состоянием) чрезвычайно полезна даже на уровне чипа. С одной стороны, это значительно уменьшает количество логических элементов, необходимых для решения проблемы. С другой стороны, это решает множество проблем проектирования, связанных с сигналами, имеющими разные задержки распространения.

Если вы заинтересованы в подобных вещах, то вам стоит проверить FPGA. Есть недорогая ардуино-подобная доска под названием papilio, которая отлично подходит для начинающих. Люди используют его для всего: от контроля роботов до майнинга биткойнов.


Спасибо за ответ, я читаю на ней страницу Википедии - но не является ли FPGA универсальным программируемым оборудованием, а не оборудованием, специально предназначенным для функционального программирования, как на моем наброске?
— MaiaVictor

1
Google "алгоритм сортировки fpga", если вы хотите увидеть, как это делается. То, что вы нарисовали, представляет собой программируемую комбинационную логическую схему, которая является именно тем, для чего предназначена ПЛИС.
— Карл Билефельдт

Великолепно, я сделаю свое исследование!
— MaiaVictor

если у вас нет последовательности, то вы действительно смотрите на аналоговую электронику
— JK.

2
@jk Это не совсем так; Возьмем, к примеру, арифметико-логическую единицу в простом ЦП, который является цифровым и (чисто) комбинационным.
— m3th0dman

8

В сущности, да, аналоговые компьютеры работали так: вы меняли параметры, и электрический ток изменялся соответствующим образом. Это то, что на некоторое время сделало их «более быстрыми» в 1950-х годах - вас не заботило медленное создание и изменение отдельных «состояний», как в старых цифровых бегемотах.

И, возможно, квантовые компьютеры тоже могут работать таким образом: если состояние некоторых квантовых явлений зависит от состояния других, то изменение некоторого «начального» состояния изменит одновременно следующие состояния - никаких промежуточных «состояний» между ними.


3
+1 за упоминание квантовых компьютеров, я думаю, что способность делать такие вещи, как предлагает ОП, станет для них главным преимуществом, когда они действительно материализуются
— Джимми Хоффа
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.