Ортогональность (программирование)
![]() | Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Август 2012 г. ) |
В компьютерном программировании ортогональность означает , что операции изменяют только одно, не затрагивая других. [1] Этот термин чаще всего используется в отношении наборов инструкций ассемблера как ортогональный набор команд .
Ортогональность в языке программирования означает, что относительно небольшой набор примитивных конструкций можно комбинировать относительно небольшим количеством способов для построения структур управления и данных языка. [2] Это связано с простотой; чем более ортогональна конструкция, тем меньше исключений. Это облегчает изучение, чтение и написание программ на языке программирования. [ нужна ссылка ] . Значение ортогонального признака не зависит от контекста; ключевые параметры — симметрия и согласованность (например, указатель — ортогональное понятие).
Пример IBM Mainframe и VAX подчеркивает эту концепцию. Мэйнфрейм IBM имеет две разные инструкции для добавления содержимого регистра в ячейку памяти (или другой регистр). Эти утверждения показаны ниже:
A Reg1, memory_cell AR Reg1, Reg2
В первом случае содержимое Reg1
добавляются к содержимому ячейки памяти; результат сохраняется в Reg1
. Во втором случае содержимое Reg1
добавляются к содержимому другого регистра ( Reg2
) и результат сохраняется в Reg1
.
В отличие от приведенного выше набора операторов, VAX имеет только один оператор для сложения:
ADDL operand1, operand2
В этом случае два операнда ( operand1
и operand2
) могут быть регистрами, ячейками памяти или их комбинацией; инструкция добавляет содержимое operand1
к содержанию operand2
, сохраняя результат в operand1
.
Инструкция сложения VAX более ортогональна, чем инструкции IBM; следовательно, программисту легче запомнить (и использовать) тот, который предоставляется VAX.
В пересмотренном отчете об алгоритмическом языке Алгол 68 об «ортогональном проектировании» говорилось следующее:
Количество независимых примитивных концепций было сведено к минимуму, чтобы язык было легко описывать, изучать и реализовывать. С другой стороны, эти концепции применялись «ортогонально», чтобы максимизировать выразительную силу языка, пытаясь при этом избежать вредных излишеств.
Конструкция языка C может быть рассмотрена с точки зрения ортогональности. Язык C несколько непоследователен в своем подходе к концепциям и языковой структуре, что затрудняет изучение (и использование) языка пользователем. Ниже приведены примеры исключений:
- Структуры (но не массивы) могут быть возвращены функцией.
- Массив может быть возвращен, если он находится внутри структуры.
- Членом структуры может быть любой тип данных (кроме void или структуры того же типа).
- Элемент массива может иметь любой тип данных (кроме void). Все передается по значению (кроме массивов).
Хотя эта концепция была впервые применена к языкам программирования, с тех пор ортогональность стала признана ценной особенностью при разработке API и даже пользовательских интерфейсов. Здесь также полезно иметь небольшой набор компонуемых примитивных операций без неожиданных перекрестных связей, поскольку это приводит к созданию систем, которые легче объяснить и которые менее утомительны в использовании.
С другой стороны, ортогональность не обязательно приводит к более простым системам, как показывает пример инструкций IBM и VAX — в конце концов, менее ортогональные архитектуры ЦП RISC оказались более успешными, чем архитектуры CISC .
См. также [ править ]
Ссылки [ править ]
- ^ «Компактность и ортогональность» . www.catb.org . Проверено 6 апреля 2018 г.
- ^ Себеста, Роберт В. (2010). Понятия языков программирования (9-е изд.). Бостон: Аддисон-Уэсли. п. 10 . ISBN 9780136073475 . OCLC 268788303 .
Дальнейшее чтение [ править ]
- Программист-прагматик: от подмастерья к мастеру Эндрю Ханта и Дэвида Томаса. Аддисон-Уэсли. 2000. ISBN 978-0-201-61622-4 .
- А. ван Вейнгаарден, Ортогональная конструкция и описание формального языка , Mathematich Centrum, Амстердам, MR 76, октябрь 1965 г.
Внешние ссылки [ править ]
- «Искусство программирования для Unix», глава об ортогональности - хорошо объяснено понятие ортогональности.