Языки программирования фон Неймана - Von Neumann programming languages

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

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

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

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

Критика

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

Backus[2] утверждал, что существует сейчас в Информатика а порочный круг где давний упор на языки фон Неймана оставил примат компьютерной архитектуры фон Неймана, а зависимость от нее сделала языки, не относящиеся к фон Нейману, экономически невыгодными и, таким образом, ограничила их дальнейшее развитие: Языки Neumann лишили компьютерных дизайнеров мотивации и интеллектуальной основы, необходимой для разработки новых компьютерных архитектур.[3]

Наличие в современных системах

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

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

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

Рекомендации

Статья основана на материалах, взятых из Бесплатный онлайн-словарь по вычислительной технике до 1 ноября 2008 г. и зарегистрированы в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.

  1. ^ [theory.stanford.edu/~aiken/other/backus.pdf Можно ли освободить программирование от стиля фон Неймана?], Джон Бэкус, Сообщения ACM, том 21, номер 8, август 1978 г.
  2. ^ ссылка больше не активна.
  3. ^ Архивы IBM: Джон Бэкус