Языки программирования фон Неймана
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Язык фон Неймана в вычислительной технике — это язык программирования , который представляет собой абстрактную изоморфную копию архитектуры фон Неймана высокого уровня . [1] По состоянию на 2009 год [update], большинство современных языков программирования подходят под это описание [ нужна ссылка ] , вероятно, вследствие широкого доминирования компьютерной архитектуры фон Неймана в течение последних 50 лет.
Различия между Fortran , C и даже Java , хотя и значительные, в конечном итоге ограничиваются тем, что все три основаны на стиле программирования компьютера фон Неймана. [ нужна ссылка ] Если бы, например, все объекты Java выполнялись параллельно с асинхронной передачей сообщений и декларативной адресацией на основе атрибутов, то Java не было бы в группе.
Изоморфизм между языками программирования фон Неймана и архитектурами заключается в следующем:
- переменные программы ↔ ячейки памяти компьютера
- операторы управления ↔ компьютерные инструкции по тестированию и переходу
- операторы присваивания ↔ выборка и сохранение инструкций
- выражения ↔ обращение к памяти и арифметические инструкции.
Критика [ править ]
Джон Бэкус утверждал, что операторы присваивания в языках фон Неймана разделяют программирование на два мира. Первый мир состоит из выражений , упорядоченного математического пространства с потенциально полезными алгебраическими свойствами: здесь происходит большая часть вычислений. Второй мир состоит из операторов , беспорядочного математического пространства с немногими полезными математическими свойствами ( хотя структурное программирование можно рассматривать как ограниченную эвристику , применимую в этом пространстве).
существовал Бэкус утверждал, что к 1978 году в информатике , порочный круг в котором давний акцент на языках фон Неймана сохранил главенство компьютерной архитектуры фон Неймана, а зависимость от нее сделала языки, не относящиеся к фон Нейману, неэкономичными и, таким образом, ограничила их использование. дальнейшее развитие: отсутствие широко доступных и эффективных языков, отличных от фон Неймана, лишило разработчиков компьютеров мотивации и интеллектуальной основы, необходимой для разработки новых компьютерных архитектур. [2]
Присутствие в современных системах [ править ]
Многие современные процессоры теперь содержат несколько вычислительных ядер, и многопоточное программирование обычно является наиболее эффективным способом использования большей вычислительной мощности в одной программе. Некоторые современные процессоры высоко оптимизированы с помощью таких методов, как выполнение вне очереди , но со сложной логикой, позволяющей определить, когда это можно сделать, не нарушая семантики фон Неймана модели логического программирования. Широко используются отдельные кэши инструкций и данных, что делает аппаратное обеспечение модифицированной гарвардской архитектурой , но опять же с логикой для обнаружения случаев, когда оптимизация не удалась, чтобы иметь возможность выполнять самомодифицирующийся код .
Некоторые специализированные процессоры (включая графические процессоры ) представляют собой очень широкие устройства с несколькими командами и несколькими данными (MIMD). Процессоры общего назначения обычно имеют несколько ядер, но каждое из них достаточно быстрое, поэтому многие программы работают достаточно быстро без распараллеливания отдельных задач. (Потоки обычно используются для работы с асинхронными вводами или выводами, особенно в графическом интерфейсе .) ЦП общего назначения технически являются устройствами MIMD, но обычно только аппаратное обеспечение, разработанное с нуля для программирования MIMD, называется MIMD.
Многие широко используемые языки программирования, такие как C , C++ и Java, перестали быть строго фон Неймановскими, добавив поддержку параллельной обработки в форме потоков . Однако большинство языков, категорически не фон Неймана, также являются функциональными языками и не получили широкого распространения.
См. также [ править ]
Ссылки [ править ]
- ^ Бэкус, Джон (1 августа 1978 г.). «Можно ли программирование освободить от стиля фон Неймана? функционального стиля и его алгебры программ» . Коммуникации АКМ . 21 (8). Ассоциация вычислительной техники: 613–641. дои : 10.1145/359576.359579 . Проверено 15 июля 2023 г.
- ^ Архивы IBM: Джон Бэкус