Что такое "ортогональность"? - PullRequest
116 голосов
/ 06 октября 2009

Что означает «ортогональность», когда речь идет о языках программирования?

Какие примеры ортогональности?

Ответы [ 16 ]

0 голосов
/ 03 мая 2018

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

0 голосов
/ 01 мая 2017

Проверка ортогональности матриц:

Ортогональность также может быть относительно матриц,

Matrix *(transpose of matrix)= identity matrix. 

Нажмите на ссылку ниже, чтобы просмотреть видео YouTube об ортогональности.
https://youtu.be/tNekLaxnfW8

0 голосов
/ 09 декабря 2015

Ортогональность означает степень, в которой язык состоит из набора независимых примитивных конструкций, которые могут быть объединены при необходимости для выражения программы. Элементы являются ортогональными, если нет ограничений на то, как они могут комбинироваться

Example : non-orthogonality

PASCAL: функции не могут возвращать структурированные типы. Функциональные языки высоко ортогональны.

0 голосов
/ 16 августа 2015

Ортогональность в языке программирования означает, что относительно небольшой набор примитивные конструкции могут быть объединены относительно небольшим количеством способов построить структуры управления и данных языка. Кроме того, каждый Возможное сочетание примитивов является законным и значимым. Например, рассмотрим типы данных. Предположим, что язык имеет четыре примитивных типа данных (целое число, число с плавающей запятой, double и символ) и операторы двух типов (массив и указатель). Если два операторы типа могут быть применены к себе и к четырем примитивным типам данных, можно определить большое количество структур данных. Значение ортогональной языковой характеристики не зависит от контекст его появления в программе. (слово ортогональное происходит от математическая концепция ортогональных векторов, которые не зависят друг от друга другое.) Ортогональность следует из симметрии отношений между первичными ставители. Отсутствие ортогональности приводит к исключениям из правил языка. Например, в языке программирования, который поддерживает указатели, он должен быть можно определить указатель для указания на любой конкретный тип, определенный в языке. Однако если указателям не разрешено указывать на массивы, многие потенциально полезные пользовательские структуры данных не могут быть определены. Мы можем проиллюстрировать использование ортогональности в качестве концепции дизайна путем сравнения один аспект языков ассемблера мэйнфреймов IBM и серия миникомпьютеров VAX. Мы рассмотрим одну простую ситуацию: добавление двух 32-битных целочисленных значений, которые находятся либо в памяти, либо в регистрах, и заменяя одно из двух значений суммой. У мейнфреймов IBM есть два инструкции для этой цели, которые имеют форму

A Reg1, memory_cell
AR Reg1, Reg2

, где Reg1 и Reg2 представляют регистры. Семантика этих

Reg1 ← contents(Reg1) + contents(memory_cell)
Reg1 ← contents(Reg1) + contents(Reg2)

Инструкция добавления VAX для 32-разрядных целочисленных значений:

ADDL operand_1, operand_2

с семантикой

operand_2 ← contents(operand_1) + contents(operand_2)

В этом случае любой операнд может быть регистром или ячейкой памяти. Конструкция команды VAX является ортогональной в том смысле, что одна инструкция может используйте регистры или ячейки памяти в качестве операндов. Есть два способа указать операнды, которые можно комбинировать всеми возможными способами. Дизайн IBM не ортогонально. Только два из четырех возможных комбинаций операндов законно, и эти два требуют различных инструкций, A и AR. Дизайн IBM более ограничен и, следовательно, менее доступен для записи. Например, вы не можете добавить два значения и сохранить сумму в ячейке памяти. Кроме того, IBM дизайн сложнее освоить из-за ограничений и дополнительных инструкций. Ортогональность тесно связана с простотой: чем больше ортогональность дизайн языка, меньшее количество исключений, требуемых правилами языка. Меньшее исключения означают более высокую степень регулярности в дизайне, что делает язык легче учить, читать и понимать. Любой, кто научился значительная часть английского языка может свидетельствовать о сложности изучения его много исключений из правил (например, я до е, кроме как после с).

0 голосов
/ 16 августа 2015

В качестве примеров отсутствия ортогональности в языке высокого уровня рассмотрим следующие правила и исключения в C. Хотя C имеет два вида структурированных типов данных: массивы и записи (структуры), записи могут быть возвращены из функций, но массивы не могут. Членом структуры может быть любой тип данных, кроме void или структуры того же типа. Элемент массива может быть любого типа данных, кроме void или функции. Параметры передаются по значению, если только они не являются массивами, в этом случае они, по сути, передаются по ссылке (поскольку появление имени массива без индекса в программе на C интерпретируется как адрес первого элемента массива)

0 голосов
/ 12 ноября 2013

В языках программирования функция языка программирования называется ортогональной, если она ограничена без ограничений (или исключений). Например, в Паскале функции не могут возвращать структурированные типы. Это ограничение на возврат значений из функции. Поэтому мы это рассматриваем как неортогональная особенность. ;)

...