Чи є якісь практичні додатки для моделей програмування, які не фон Неймана? Які найпоширеніші мови програмування не фон Неймана?
Чи є якісь практичні додатки для моделей програмування, які не фон Неймана? Які найпоширеніші мови програмування не фон Неймана?
Відповіді:
Коли я кажу "архітектура фон Неймана", я маю на увазі деяке обладнання, яке обмежене "вузьким місцем" фон Неймана - тобто, всі дані переносяться через вузьку шину даних.
Мови програмування Neonann, які я натрапляю, найчастіше - VHDL та Verilog . У VHDL та Verilog за замовчуванням все відбувається одночасно. Програмісту доводиться докладати додаткових зусиль, щоб ряд подій відбувався в послідовному порядку. Це сильно відрізняється від більшості інших мов програмування, що передбачає "вказівник інструкції", який за замовчуванням виконує щонайбільше один рядок коду в будь-який момент, і програмісту доводиться докладати додаткових зусиль, щоб зробити кілька речей, що відбуваються одночасно час.
Деякі люди кажуть, що це більш природний дефолт. Багато студентів, що починають програмувати, очікують, що цикл "while (x> 0) {...}" вийде з моменту, коли x стає рівним нулю, і вони здивовані, дізнавшись, що комп'ютер не оцінює безперервно цю умову.
Більшість людей, що пишуть код VHDL та Verilog, збирають свої програми на FPGA, створюючи невеликі блоки активності, які весь час працюють на повній швидкості. Часто такі люди встановлюють "конвеєр", який зчитує дані з вхідних штифтів, обробляє їх через ряд блоків, вихідні штифти одного блоку безпосередньо підключаються до вхідних штифтів наступного блоку, а кінцевий блок надсилає результат назовні вихідні штифти Це нагадує конвеєр Unix , за винятком того, що надходить новий фрагмент даних і з'являється новий фрагмент даних на кожному тактовому циклі.
Вхідні штифти, проміжні ступені та вихідні штифти не залежать один від одного - вам не доведеться повторно використовувати одну шину даних, мультиплексовану між різними фрагментами даних.
Можливо, вас також зацікавить: Чи є інші архітектури комп’ютера, окрім архітектури von neumann / turing?
Я припускаю, що не фон Фон Нойман, ви маєте на увазі мови, які обійшли "Пляшку фон Неймана" відповідно до статті Беруса "Чи можна програмування звільнити від стилю фон Неймана?". Для зацікавлених можна знайти копію тут: http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf
Відповідь на ваше запитання має бути неоднозначною з кількох причин.
По-перше, які мови задовольняли критеріям у його роботі? Хоча є й такі, які відслідковують функціональне програмування цього документу, це зараз розцінюється як непорозуміння, оскільки він мав на увазі щось на кшталт точкового програмування. То ви йдете з оригінальним непорозумінням чи справжнім наміром газети? Щоб отримати докладнішу інформацію про те, що він мав на увазі, дивіться наступне: http://en.wikipedia.org/wiki/Function-level_programming
По-друге, якщо ви йдете з непорозумінням, наскільки функціональний функціонал? У вас є чисті функціональні мови, нечисті функціональні мови та мови, відносно привітні до функціональної парадигми. Враховуючи те, що ви згадуєте популярність і існує зворотна залежність між цією функціональною чистотою, лише які мови потрібно включати? Чи хочете ви найпопулярнішої чистої функціональної мови (яка взагалі не була б популярною) або більш популярної, яка відповідає деяким мінімальним критеріям "функціональності"? Якщо останні, які ці критерії?
Отже, залежно від точки зору:
Haskell - найпопулярніша з абсолютно чистих функціональних мов, які я знаю, і в ній написані програми. Однак, хоча велика вага у спільноті функціонального програмування, він не популярний у більшій спільноті програмування. Також, використовуючи його, я не вважав, що це практично для використання в реальному світі, і, здається, його цінують за теоретичну роботу. Це дозволяє без точкового стилю, тому ви можете підійти до деяких цілей Backus з цим.
Clojure, Scala і F # - менш чисті, але більш практичні та популярні функціональні мови. F # також дружній до точкового стилю.
Forth, можливо, є прототипним прикладом безточкової мови, і вона була досить поширеною в свої дні, хоча зараз ... Фактор - це ще одна вільна мова, яка привернула певну увагу, але я сумніваюся, що вона відповідала популярності Forth у свій розквіт. .
АПЛ згадав Бекус в один момент (можливо, не у своїй роботі) як крок до, але не повністю сумісний із його цілями. У свій день це було великим у фінансовому секторі. Обов’язково перевіряйте її нащадків, як Дж.
JavaScript не є функціональним, але він досить привітно ставиться до стилю програмування вищого порядку, про що свідчить його велике використання закриттів. Враховуючи свою популярність, вона може просто відповідати критеріям. Не забудьте ознайомитися з деякими цікавими матеріалами, зробленими за допомогою JavaScript, як-от currying та комбінатор.
Як виноска, щоб дати вам більше уявлення про його цілі, ви можете перевірити дві мови, які він розробив, щоб відповідати його критеріям. Вони зовсім не популярні в AFAIK, тому це було б лише заради знань:
Я думаю, що програмування Linda та tuplespace може відповідати законопроекту. Асоціативні / узгоджуючі операції з пам’яттю з одночасністю означають, що (концептуально) вузьке вузол Фон-Неймана усунуто.
Ідучи в цьому напрямку, чисті мови акторської моделі також моделюють спілкування, а не послідовність інструкцій. І хоча вони є формалізмами, а не власне мовами програмування, обчислюють обробку, як обчислення Pi, CSP та Петрі Нетса, спілкування моделей пов'язаними способами.
Дивіться у wikipedia за посиланнями (я новий користувач і під захистом від спаму), але про якийсь химерний гумор щодо імені Лінди читайте на веб- сторінці http://c2.com/cgi/wiki?LindaEtymology .