Что такое “Ортогональность”?

NAudio является библиотекой аудио.NET с открытым исходным кодом, которая может воспроизвести WAV, MP3, WMA, AAC и файлы AIFF, использовав ACM или кодеки Основы Медиа, установленные на Вашем компьютере в целях распаковки. Для поддержки ogg, существует дополнительный пакет самородка , можно использовать.

( Редактирование: обновленный с деталями поддерживаемого звукового файла вводит в NAudio 1.7. Кроме того, полное раскрытие: Я - автор этой библиотеки)

120
задан George Stocker 6 October 2009 в 19:03
поделиться

9 ответов

Ортогональность - это свойство, которое означает, что «изменение A не меняет B». Примером ортогональной системы может быть радио, в котором смена станции не приводит к изменению громкости и наоборот.

Неортогональная система будет похожа на вертолет, в котором изменение скорости может изменить направление.

253
ответ дан 24 November 2019 в 01:36
поделиться

Если у вас есть набор конструкций. Язык называется ортогональным , если он позволяет программисту свободно смешивать эти конструкции. Например, в C вы не можете вернуть массив (статический массив), C в этом случае считается неортогнальным:

int[] fun(); // you can't return a static array.
// Of course you can return a pointer, but the langauge allows passing arrays.
// So, it is unorthognal in case.
9
ответ дан 24 November 2019 в 01:36
поделиться

В общем, ортогональность - это взаимосвязь между двумя вещами, при которой они оказывают минимальное влияние друг на друга.

Термин пришел из математики, где два вектора ортогональны, если они пересекаются под прямым углом.

Представьте себе типичное двумерное декартово пространство (типичная сетка с осями X / Y). Постройте две линии: x = 1 и y = 1. Две линии ортогональны. Вы можете изменить x = 1, изменив x, и это не повлияет на другую строку, и наоборот.

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

11
ответ дан 24 November 2019 в 01:36
поделиться

Подумайте о том, что он может изменить одну вещь, не оказывая невидимого воздействия на другую часть.

14
ответ дан 24 November 2019 в 01:36
поделиться

Из книги Эрика С. Раймонда «Искусство программирования UNIX»

Ортогональность - одно из наиболее важных свойств, которое может помочь сделать даже сложные проекты компактными. В чисто ортогональном дизайне операции не имеют побочных эффектов; каждое действие (будь то вызов API, вызов макроса или языковая операция) изменяет только одно, не затрагивая другие. Есть один и только один способ изменить каждое свойство любой системы, которой вы управляете.

34
ответ дан 24 November 2019 в 01:36
поделиться

Из Википедии :

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

Например, автомобиль имеет ортогональные компоненты и элементы управления (например, ускорение автомобиля не влиять на что угодно, кроме компоненты, связанные исключительно с функция ускорения). На с другой стороны, неортогональный дизайн может иметь свое рулевое влияние торможение (например, электронная устойчивость контроль), или его скорость настроить его приостановка. [1] Следовательно, это считается, что использование происходит из использование ортогональных в математике: Один может проецировать вектор на подпространство проецируя его на каждого члена группы набор базисных векторов отдельно и добавление прогнозов тогда и только тогда, когда базисные векторы взаимно ортогональные.

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

Проще говоря, две вещи являются ортогональными, если изменение одного не влияет на другое.

2
ответ дан 24 November 2019 в 01:36
поделиться

Говоря о проектных решениях по языкам программирования, ортогональность может рассматриваться как то, насколько легко вам предсказать другие вещи об этом языке на основе того, что вы видели в прошлом.

Для Например, на одном языке вы можете иметь:

str.split

для разделения строки и

len (str)

для получения длины.

На более ортогональном языке вы всегда будете используйте str.x или x (str).

Когда вы клонируете объект или делаете что-нибудь еще, вы будете знать, использовать ли

clone (obj)

или

obj.clone

Это один из основных моментов ортогональности языков программирования. Это избавит вас от необходимости обращаться к руководству или спрашивать кого-нибудь.

В статье в Википедии больше говорится об ортогональности в сложных проектах или языках низкого уровня. Как кто-то предположил выше в комментарии, книга Sebesta четко говорит об ортогональности.

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

;)

1
ответ дан 24 November 2019 в 01:36
поделиться

из википедии :

Информатика

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

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

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

2
ответ дан 24 November 2019 в 01:36
поделиться

Большинство ответов очень многословны и даже неясны. Дело в том, что если инструмент ортогонален, его можно добавить, заменить или удалить в пользу более качественных инструментов, не завинчивая все остальное.

Это разница между плотником, имеющим молоток, и пилой, которая может можно использовать для молотка или пиления, или иметь какой-нибудь новомодный молоток / пила, который предназначен для пиления дерева, а затем сколачивает его вместе. Любой из них будет работать для пиления, а затем молотка, но если вы получите задание, требующее пиления, но не молотка, тогда будут работать только ортогональные инструменты. Точно так же, если вам нужно вкручивать вместо молотка, вам не нужно выбрасывать пилу, если она перпендикулярна (не смешана) с вашим молотком.

Классический пример - инструменты командной строки unix:

4
ответ дан 24 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: