Типы-значения & КОП
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.11.04 10:51
Оценка: -1
Небольшое замечание.

В рамках парадигмы КОП (Компонентно Ориентированное Программирование), запрещено (или очень порицается) межмодульное наследование. Межмодульно разрешается наследоваться только от абстрактных типов. Так вот, можно это требование еще более ужесточить. Этот исходный абстрактный тип не должен быть типом-значением, а должен быть (ссылочным/указательным)-типом. А объясняется это очень просто. Дело в том, что тип-значение имеет такой "скрытый" параметр как размер переменной (ведь переменные этого типа размещаются на стеке, а значит зависимым модулям надо знать размер переменной). Если вдруг, потом в исходном модуле внести изменение изменяющее размер переменных этого типа (добавить или удалить скрытое/приватное/неэкспортируемое поле), то все зависимые модули придется ПЕРЕКОМПИЛИРОВАТЬ даже не смотря на то, что в открытом/публичном интерфейсе этого типа изменений не было.

В общем, то это очевидно. Но пока сам на это не нарвешься — до конца не осознаешь.
Re: Типы-значения & КОП
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.11.04 10:58
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Небольшое замечание.


"Просто так"? Или к чему-то?

СГ>В рамках парадигмы КОП (Компонентно Ориентированное Программирование)...


вопрос — чья это парадигма? Кто где когда и как её опубликовал/воплотил и т.п.? Т.е. ты уверен, что нет других систем, где, возможно, это обходится каким-либо образом?

И вообще что под КОП можно подразумевать?

(т.е. назови пророков копов )
Re[2]: Типы-значения & КОП
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.11.04 11:06
Оценка:
Здравствуйте, Курилка, Вы писали:

К>"Просто так"? Или к чему-то?


Просто так, поделился своим наблюдением.

К>вопрос — чья это парадигма? Кто где когда и как её опубликовал/воплотил и т.п.? Т.е. ты уверен, что нет других систем, где, возможно, это обходится каким-либо образом?

К>И вообще что под КОП можно подразумевать?
К>(т.е. назови пророков копов )

КОП уже скоро десять лет будет, а Вы такие вопросы задаете... http://www.research.microsoft.com/users/cszypers/
Re[3]: Типы-значения & КОП
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.11.04 11:15
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>КОП уже скоро десять лет будет, а Вы такие вопросы задаете... http://www.research.microsoft.com/users/cszypers/


Вот какраз такие вопросы и говорят, что далеко это ещё до реального внедрения и признания, хотя, если честно, я об этом гораздо больше знаю (наверное), чем ост. большинство программистов.
Re: Типы-значения & КОП
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.11.04 11:18
Оценка:
Здравствуйте, Сергей Губанов,

Небольшое замечание к небольшому замечанию:
Я правильно понял, что ты критикуешь межмодульное наследование от абстрактных типов-значений?
Если да, то уверен ли ты что бывают абстрактные типы-значения, от которых можно межмодульно унаследоваться?
Если да, то где?
И не лучше ли пользоваться полноценной компонентно-ориентированной средой типа .Net или Java, где такие звери явно запрещены?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Типы-значения & КОП
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.11.04 11:45
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Небольшое замечание к небольшому замечанию: Я правильно понял, что ты критикуешь межмодульное наследование от абстрактных типов-значений? Если да, то уверен ли ты что бывают абстрактные типы-значения, от которых можно межмодульно унаследоваться? Если да, то где?


BlackBox 1.4, Component Pascal:
MODULE M;

TYPE
  T* = ABSTRACT RECORD
    (* поля.... *)
  END;

END M.


S>И не лучше ли пользоваться полноценной компонентно-ориентированной средой типа .Net или Java, где такие звери явно запрещены?


Ой, давайте не будем, а?
Re: Типы-значения & КОП
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.11.04 12:07
Оценка: +2
Здравствуйте, Сергей Губанов, Вы писали:

СГ>В рамках парадигмы КОП (Компонентно Ориентированное Программирование), запрещено (или очень порицается) межмодульное наследование. Межмодульно разрешается наследоваться только от абстрактных типов.


Такого требования в КОП нет, ссылку на современное определение я уже приводил.

СГ> Так вот, можно это требование еще более ужесточить. Этот исходный абстрактный тип не должен быть типом-значением, а должен быть (ссылочным/указательным)-типом. А объясняется это очень просто. Дело в том, что тип-значение имеет такой "скрытый" параметр как размер переменной (ведь переменные этого типа размещаются на стеке, а значит зависимым модулям надо знать размер переменной). Если вдруг, потом в исходном модуле внести изменение изменяющее размер переменных этого типа (добавить или удалить скрытое/приватное/неэкспортируемое поле), то все зависимые модули придется ПЕРЕКОМПИЛИРОВАТЬ даже не смотря на то, что в открытом/публичном интерфейсе этого типа изменений не было.


Все верно. Именно поэтому в дотнете от структур наследоваться нельзя. Еще одна проблема с наследованием value-типов всплывает если покурить над массивами из value-типов.
... << RSDN@Home 1.1.4 beta 3 rev. 235>>
AVK Blog
Re[3]: Типы-значения & КОП
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.11.04 12:10
Оценка: 21 (4) +3
Здравствуйте, Сергей Губанов, Вы писали:
СГ>BlackBox 1.4, Component Pascal:
почему-то меня это совершенно не удивляет.
СГ>Ой, давайте не будем, а?
Давай будем сразу указывать контекст применимости своих "универсальных утверждений", чтобы не смущать публику. Если ты берешься рассуждать о Компонентном Программировании, а не Компонентном Паскале, то будь любезен поинтересоваться тем, что происходит в окружающей действительности.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Типы-значения & КОП
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 24.11.04 12:32
Оценка: -3 :)
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Сергей Губанов, Вы писали:

СГ>>BlackBox 1.4, Component Pascal:
S>почему-то меня это совершенно не удивляет.
СГ>>Ой, давайте не будем, а?
S>Давай будем сразу указывать контекст применимости своих "универсальных утверждений", чтобы не смущать публику. Если ты берешься рассуждать о Компонентном Программировании, а не Компонентном Паскале, то будь любезен поинтересоваться тем, что происходит в окружающей действительности.

В чем смысл Вашего сообщения:
1) Вы знаете способ межмодульного наследования от типов-значений не приводящий к перекомпиляции зависимых модулей при внесении изменений в исходный тип?
2) Вы нашли какую-то другую ошибку в моем сообщении?
3) Вам просто "подраться" захотелось?
4) Что-то другое?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.