Чи можемо ми побудувати функціональний комп'ютер?


12

Зрештою, як це зробив FP, зрештою, всі наші програми структуровані. Тобто, не має значення, наскільки чистими чи функціональними ми їх робимо - вони завжди переводяться на збірку, тому те, що насправді працює за капотами, - це інструкції, стани та петлі. Ми наче наслідуємо FP.

Як апаратний ноб, моє питання: чому ми не використовуємо комп'ютерні архітектури, які насправді обчислювали речі у функціональному стилі? Наприклад, комп'ютер може складатися з примітивних "функціональних мікросхем", таких як "concat", "map" і "reduct", а програма просто розповість комп'ютеру, як передавати дані між цими мікросхемами, щоб обчислити бажаний результат , як, наприклад, в конкатенативних мовах.

ескіз нісенітниці

Це насправді не має сенсу, але може ілюструвати те, що я думаю.


5
Немає зв'язку з рукою, але був зроблений чіп Haskell, експертні системи також мали спеціалізовану техніку lisp. Я думаю, ви могли б бути ближче до карти / зменшити парадигму в апараті, ніж все інше. Єдина користь для ПП - це масштабність до паралелізму. У всіх інших випадках fp менш ефективний, оскільки він менш тонкозернистий в його інструкціях через більш високий рівень абстракції. На металевому рівні виконання є корольним, і крім того, навіть на рівні абстракції математики, у виконанні все є обов'язковим. Обчисліть 2 * 3 + 5, не роблячи двох упорядкованих кроків. Це все обов'язково
Джиммі Хоффа

3
@ Від руки JimmyHoffa є чіп-посилання на чіке haskell: Reduceron .
Ден Д.

1
Також вас може зацікавити Verity, яка є компілятором для обчислення за назвою Lambda з вищим порядком і афінною рекурсією, що також має імперативні локальні ефекти для статичного обладнання через 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 . Звичайно, FPGA підтримують як послідовну, так і комбінаційну логіку, але ніщо не заважає тобі просто використовувати комбінаційну частину, як ти пропонуєш.

На практиці, однак, послідовна логіка (вид із станом) надзвичайно корисна навіть на рівні чіпів. З одного боку, це значно зменшує кількість логічних воріт, необхідних для вирішення проблеми. Для іншого він вирішує багато проблем із дизайном, пов'язаних із сигналами, що мають різні затримки розповсюдження.

Якщо вас цікавить така штука, FPGA добре варто перевірити. Існує недорога ардуїноподібна дошка під назвою папіліо, яка чудово підходить для початківців. Люди використовують це для всього, від управління роботами до видобутку біткойна.


Дякую за відповідь, я читаю сторінку Вікіпедії на ній - але хіба FPGA не є загальним програмним обладнанням, а не обладнанням, спеціалізованим для функціонального програмування, як на моєму ескізі?
MaiaVictor

1
Google "алгоритм сортування fpga", якщо ви хочете побачити, як це робиться. Те, що ви намалювали, - це програмована комбінаційна логічна схема, саме для якої призначена FPGA.
Карл Білефельдт

Чудовий, я буду робити свої дослідження!
MaiaVictor

якщо у вас взагалі немає послідовності, то ви дійсно дивитесь на аналогову електроніку
jk.

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

8

Так, аналогові комп'ютери працювали саме так: ви змінювали параметри і відповідно змінювали електричний струм. Саме це і зробило їх "швидшими", певний час, у 50-х роках - вас не хвилювало повільне створення та модифікація окремих "станів", як у старих цифрових гегемотах.

І, мабуть, і квантові комп'ютери теж можуть працювати таким чином: якщо стан одних квантових явищ залежить від стану інших, то зміна деякого "початкового" стану одночасно змінить наступні стани - між ними немає "станів".


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