LINUX.ORG.RU

Ортогональность. Помогите уточнить значение


0

0

Собственно встретил фразу «неортогональная система типов».
Мне стыдно спросить, но я не знаю, что означает слово «ортогональность» в програмизьме...
Для Декартовой системы координат в Эвклидовом пространстве - точный аналог перпендикулярности. Я так понял, что в программировании «неоднороден, независим» это как бы синоним «ортогонален». Правильно?
В этом случае не понятна фраза про типы.

★★★★

Моя догадка: ортогональная система типов может быть использована в качестве базиса для определения всех остальных типов.

stormy
()

> Для Декартовой системы координат в Эвклидовом пространстве - точный аналог перпендикулярности.

пора тебе ещё разок прослушать курс линейной алгебры: «ортогональность» к выбору «системы координат» ...эээ...ммм... ортогональна.

pupok ★★
()

Тоже попробую догадаться int и double - ортогональны, а вот int и unsigned int - нет...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от stormy

>Моя догадка: ортогональная система типов может быть использована в качестве базиса для определения всех остальных типов.

Тогда вопрос. bool И int ортогональны или не ортогональны.

pathfinder ★★★★
()
Ответ на: комментарий от pathfinder

Ну, если я вообще был прав, то, например, в С - неортогональны, а в лиспе - ортогональны.

stormy
()
Ответ на: комментарий от pupok

а тебе пора ещё разок прослушать не только курс линейной алгебры, но и курс просто алгебры, а также функционального анализа и перестать писать глупости на ЛОРе.

anonymous
()
Ответ на: комментарий от anonymous

> не только курс линейной алгебры, но и курс просто алгебры, а также функционального анализа

объясни нам с точки зрения функана как «Декартова система координат» связана со свойством двух векторов быть ортогональными. Система координат нужна для удобной идентификации точек, с некоторой натяжкой можно считать что и векторов. Ортогональность двух векторов устанавливается только после выбора правила для скалярного произведения в векторном пространстве, и это можно сделать не выбирая никакого базиса или «системы координат» (например $\int_0^1f(t)g(t)dt$ в $C^0[0,1]$).

pupok ★★
()
Ответ на: комментарий от pupok

Товарищ cab абсолютно прав. В декартовой системе координат евклидовых пространств ортогональные векторы перпендикуляры. А то обстоятельство, что и не в декартовой системе координат евклидовых пространств они тоже перпендикулярны, не уменьшает правоты товарища cab.

Наличие скалярного произведения позволяет ввести в вещественном гильбертовом пространстве понятие косинуса между двумя его ненулевыми элементами cos(f, g) = (f, g) / (||f||·||g||). Откуда следует, что при нулевом скалярном произведении косинус равен 0. То есть элементы ортогональны или перпендикулярны.

anonymous
()
Ответ на: комментарий от pupok

хотя ортогональные элементы не всегда перпендикулярны

anonymous
()
Ответ на: комментарий от anonymous

> В декартовой системе координат евклидовых пространств ортогональные векторы перпендикуляры.

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


молодой человек, скорее всего ваши познания в линейной алгебре ограничиваются википедией и учебником 10-го класса. Вы слыхали о полях, отличных от R? И о векторных пространствах отличных от Гильбертова? А о нетривиальных скалярных произведениях? Например в R^2 с матрицей
1 0
0 2
вы в курсе что в векторное пространство вообще может не иметь базиса (который вы почему-то упорно называете «декартовой системой координат»)?

pupok ★★
()
Ответ на: комментарий от pupok

что такое «нетривиальное скалярное произведение»? чем отличаются тривиальные числовые функции от нетривиальных числовых функций? Имеете в виду элементарные функции?

И вообще элементы базиса не обязательно ортогональны. Поэтому неправильно говорить об ортогональной системе типов. Правильно говорить о системе типов, являющейся базисом в пространстве типов. О базисной системе типов.

anonymous
()
Ответ на: комментарий от anonymous

> И вообще элементы базиса не обязательно ортогональны.

см. выше. Можно говорить об ортогональности когда нет никакого базиса.

чем отличаются тривиальные числовые функции от нетривиальных числовых функций?

да вы просто троль. Сейчас уже откровенный бред пошёл («тривиальные числовые функции»).

pupok ★★
()
Ответ на: комментарий от pupok

И кто же тут тролль? «нетривиальных скалярных произведениях» - ваше выражение. А скалярное произведение есть числовая функция от пары аргументов.

Выполняем подстановку:
Нетривиальных скалярных произведениях -> нетривиальных числовых функциях от пары аргументов.

Вы самокритично признаёте за собой бред?

anonymous
()

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

cab ★★★★
() автор топика
Ответ на: комментарий от cab

>не должны перекрывать друг друга.

не должны зависеть друг от друга.


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

(да, я про гильбертово и хаусдорфово пространство. А не про вырожденный частный случай, когда базиса может и не быть)

Например: набор инструкций в ассемблерах VAX или Motorola 680x0 характеризуется как «ортогональный набор инструкций».
Потому что
1) в этом ассемблере существуют конструкции вроде mov.l +(a0),(a1)- ; то есть, «регистр» в mov.l — first class значение для операции прединкремент/постдекремент (можно добавить 8*s+c) (ортогональность регистров от операций инкремент/декремент)
2) вместо «регистра» можно записать двойную косвенную адресацию в памяти, и это будет работать (ортогональность «регистров»/адресации в памяти)
3) в операторах цикла можно записать практически любой регистр в качестве счётчика цикла (сравни с LOOP / CX в 80x86 или DJNZ /B в Z80).
4) то же относится не только к циклам, а практически к любым операторам.

То есть, операторы слабо связаны, слабо зависят от регистров. Поэтому возможностей для оптимизации, размещения кода по регистрам больше, поэтому код эффективнее (другой вопрос, что самый сильный в серии 68060 процессор был на уровне Pentium, не быстрее по тактовой частоте).


Ортогональность позволяет прозрачно реализовать first class value. Без ортогональности базисных возможностей нам нужны дополнительные костыли для реализации этого. Что-то вроде паттернов: базовые конструкции ООП языка вроде C++ не ортогональны, поэтому вводим набор паттернов, которые более «ортогональны», и на которые наши системы раскладываются проще, чем на изначальные базовые конструкции. Базовые конструкции Smalltalk или Common Lisp более другие, поэтому набор «паттернов» будет другим, потому что значительная часть «базовых конструкций» и так уже «ортогонализирована».

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.