Языки программирования фон Неймана

редактировать

A язык фон Неймана - это любой из тех языков программирования, которые являются абстрактными высокого уровня. изоморфные копии архитектур фон Неймана. По состоянию на 2009 год большинство современных языков программирования подпадают под это описание, вероятно, как следствие широкого доминирования компьютерной архитектуры фон Неймана в течение последних 50 лет.

Различия между Fortran, C и даже Java, хотя и значительны, в конечном итоге ограничиваются тем, что все три основаны на стиле программирования компьютера фон Неймана. Если, например, все объекты Java выполнялись параллельно с асинхронной передачей сообщений и декларативной адресацией на основе атрибутов, то Java не входила бы в группу.

Изоморфизм между языками программирования и архитектурами фон Неймана проявляется в следующем:

  • программные переменные cells ячейки памяти компьютера
  • управляющие операторы ↔ компьютерные инструкции по тестированию и переходу
  • операторы присваивания ↔ выборка, сохранение инструкций
  • выражения ↔ обращение к памяти и арифметические инструкции.

Критика

Джон Бэкус утверждал, что операторы присваивания в языках фон Неймана разделяют программирование на два мира. Первый мир состоит из выражений, упорядоченного математического пространства с потенциально полезными алгебраическими свойствами: большая часть вычислений происходит здесь. Второй мир состоит из операторов, беспорядочного математического пространства с несколькими полезными математическими свойствами (структурированное программирование можно рассматривать как ограниченную эвристику, которая, тем не менее, применима в этом пространстве).

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

Присутствие в современных системах

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

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

Многие широко используемые языки программирования, такие как C, C ++ и Java, перестали быть строго фон Нейманом, добавив поддержку параллельной обработки в форме потоков.. Однако большинство языков категорически не фон Неймана также являются функциональными языками и не получили широкого распространения.

Ссылки

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.

  1. ^[theory.stanford.edu/~aiken/other/backus.pdf Можно ли освободить программирование от стиля фон Неймана?], Джон Бэкус, Коммуникации ACM, том 21, номер 8, август 1978 г.
  2. ^ссылка больше не активен.
  3. ^Архивы IBM: Джон Бэкус
Последняя правка сделана 2021-06-18 05:27:19
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте