Так что же такое программирование наука или ремесло? :-)
От: AI Россия  
Дата: 03.07.04 07:22
Оценка: +1 :)
чера читая книжку Герб Саттер "Решение сложных задач на с++" столкнулся с таким определением принципа подстановкм LSP Барбары Лисков



Если для каждого объекта о1 типа S существует объект о2 типа T такой, что для всех программ P, определённых в терминах T, поведение P останется неизменным при подстановке о1 вместо о2 , то S является подтипом T .





PS после прочтения этого принципа вспомнилась Ерёменко ( матанализ физтех)
с теорией о чешуйчатой поверхности
Так что имхо мат анализ для программиста нужен

17.08.04 11:23: Перенесено модератором из 'Коллеги, улыбнитесь' — Sinclair
Re: Так что же такое программирование наука или ремесло? :-)
От: Demon_TM  
Дата: 03.07.04 08:27
Оценка:
A> Если для каждого объекта о1 типа S существует объект о2 типа T
A> такой, что для всех программ P, определённых в терминах T,
A> поведение P останется неизменным при подстановке о1 вместо о2 , то
A> S является подтипом T .

Ну и что тут непонятного-то? Матанализ я, конечно, изучал. Но он тут
ИМХО не причем. Тут банальная логика.
Posted via RSDN NNTP Server 1.9 beta
Re[2]: Так что же такое программирование наука или ремесло?
От: AI Россия  
Дата: 03.07.04 08:33
Оценка:
Здравствуйте, Demon_TM, Вы писали:

A>> Если для каждого объекта о1 типа S существует объект о2 типа T

A>> такой, что для всех программ P, определённых в терминах T,
A>> поведение P останется неизменным при подстановке о1 вместо о2 , то
A>> S является подтипом T .

D_T>Ну и что тут непонятного-то? Матанализ я, конечно, изучал. Но он тут

D_T>ИМХО не причем. Тут банальная логика.

А я и не говорил что не понятно. я лишь хотел сказать о том что такой стиль изложения больно напоминает мат анализ и всё.
Re[2]: Так что же такое программирование наука или ремесло?
От: RUB  
Дата: 03.07.04 08:34
Оценка:
Здравствуйте, Demon_TM, Вы писали:

A>> Если для каждого объекта о1 типа S существует объект о2 типа T

A>> такой, что для всех программ P, определённых в терминах T,
A>> поведение P останется неизменным при подстановке о1 вместо о2 , то
A>> S является подтипом T .

D_T>Ну и что тут непонятного-то? Матанализ я, конечно, изучал. Но он тут

D_T>ИМХО не причем. Тут банальная логика.
а что такое не банальная логика?
типа матан — это не банальная логика.
))
Re: Так что же такое программирование наука или ремесло? :-)
От: Glen Able Россия  
Дата: 03.07.04 08:50
Оценка: -3
Здравствуйте, AI, Вы писали:

AI>PS после прочтения этого принципа вспомнилась Ерёменко ( матанализ физтех)

AI>с теорией о чешуйчатой поверхности
AI>Так что имхо мат анализ для программиста нужен

Нет, просто автор матанализу переучился

Понять что-то из такого объяснения невозможно — нужно уже знать на момент прочтения
Это ИМХО, а Вы сразу по рогам...
Re: Так что же такое программирование наука или ремесло? :-)
От: Astaroth Россия  
Дата: 03.07.04 14:03
Оценка: 3 (1) :)
Здравствуйте, AI, Вы писали:

AI>

AI>Если для каждого объекта о1 типа S существует объект о2 типа T такой, что для всех программ P, определённых в терминах T, поведение P останется неизменным при подстановке о1 вместо о2 , то S является подтипом T .
AI>


Мляяя...
Мне же теперь ночью будет критерий Коши с окровавленным топором сниться!..
http://livejournal.com/users/breqwas
Re[2]: Так что же такое программирование наука или ремесло?
От: ArtDenis Россия  
Дата: 03.07.04 14:43
Оценка: 1 (1) +1 :))) :))
Здравствуйте, Astaroth, Вы писали:

A>Мне же теперь ночью будет критерий Коши с окровавленным топором сниться!..


скорее с красным молотком
... << Rsdn@Home 1.1.4 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: Так что же такое программирование наука или ремесло?
От: oRover Украина  
Дата: 04.07.04 07:23
Оценка:
Здравствуйте, Glen Able, Вы писали:

GA>Нет, просто автор матанализу переучился


GA>Понять что-то из такого объяснения невозможно — нужно уже знать на момент прочтения


понять то можно, но что это не очень читабельно — согласен. ИМХО, мозг чистую абстракцию плохо воспринимает, ему нужны образы.
... << Rsdn@Home 1.1.4 beta 1 >>
Re: Так что же такое программирование наука или ремесло? :-)
От: Кодт Россия  
Дата: 05.07.04 07:04
Оценка: :)
Здравствуйте, AI, Вы писали:

AI>чера читая книжку Герб Саттер "Решение сложных задач на с++" столкнулся с таким определением принципа подстановкм LSP Барбары Лисков


[q]
AI>Если для каждого объекта о1 типа S существует объект о2 типа T такой, что для всех программ P, определённых в терминах T, поведение P останется неизменным при подстановке о1 вместо о2 , то S является подтипом T .
[q]
В такой формулировке Саттер выпячивает теоретико-множественные детали (сюръективность, классы эквивалентности), и прячет отличительную черту, а именно принцип проекции и предикат эквивалентности.
Перекуём баги на фичи!
Re: Так что же такое программирование наука или ремесло? :-)
От: MarW https://www.wincatalog.com
Дата: 05.07.04 08:56
Оценка:
Здравствуйте, AI, Вы писали:

Если для каждого объекта о1 типа S существует объект о2 типа T такой, что для всех программ P, определённых в терминах T, поведение P останется неизменным при подстановке о1 вместо о2 , то S является подтипом T .

Да, определение точно в стиле математиков... Кстати, а что имеется в виду под "подтипом"? Если это "подкласс" (производный клас, дочерний класс), то определение не верно, ибо можно переопределить фукциональность подкласса так, что при замене им базового класса функциональность изменится, а класс всё равно останется подклассом...
WinCatalog — Disk Catalog Software for Windows
Re[2]: Так что же такое программирование наука или ремесло?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.07.04 09:59
Оценка: 1 (1) +1 :)
Здравствуйте, MarW, Вы писали:
MW>Да, определение точно в стиле математиков... Кстати, а что имеется в виду под "подтипом"?
Вот то и имеется в виду, что если для каждого объекта о1 типа S существует объект о2 типа T такой, что для всех программ P, определённых в терминах T, поведение P останется неизменным при подстановке о1 вместо о2 , то S является подтипом T. Что непонятно-то?
MW>Если это "подкласс" (производный клас, дочерний класс), то определение не верно, ибо можно переопределить фукциональность подкласса так, что при замене им базового класса функциональность изменится, а класс всё равно останется подклассом...
Нет, определение не может быть неверным. С точки зрения этого определения твой унаследованный подкласс не является подтипом. И собственно за это сениор архитекторы бьют джуниор архитекторов логарифмической линейкой по кривым рукам.
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Так что же такое программирование наука или ремесло?
От: Кодт Россия  
Дата: 05.07.04 10:02
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


Надо бы ещё побить авторов терминологии, поскольку отношение наследования не есть отношение субкласс/суперкласс в теоретико-множественном понимании.
Перекуём баги на фичи!
Re: Так что же такое программирование наука или ремесло? :-)
От: hrg Россия  
Дата: 17.08.04 08:37
Оценка: 1 (1)
AI -> "Так что же такое программирование наука или ремесло? " :

A>

A> Если для каждого объекта о1 типа S существует объект о2 типа T такой,
A> что для всех программ P, определённых в терминах T, поведение P
A> останется неизменным при подстановке о1 вместо о2 , то S является
A> подтипом T .

A>



A> PS после прочтения этого принципа вспомнилась Ерёменко ( матанализ

A> физтех)
A> с теорией о чешуйчатой поверхности
A> Так что имхо мат анализ для программиста нужен

Все простое- сложно. Чтобы писать понятно и доходчиво — нужно прилагать
усилий больше.

Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу
видно — гармонист...
Posted via RSDN NNTP Server 1.9 beta
Re: Так что же такое программирование наука или ремесло? :-)
От: dimitry_dimitry  
Дата: 18.08.04 05:57
Оценка: :)
Здравствуйте, AI, Вы писали:

это способ зарабатывания денег
... << Rsdn@Home 1.1.4 beta 1 >>
Re[4]: Так что же такое программирование наука или ремесло?
От: S.Yu.Gubanov Россия http://sergey-gubanov.livejournal.com/
Дата: 18.08.04 05:58
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Sinclair, Вы писали:


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


К>Надо бы ещё побить авторов терминологии, поскольку отношение наследования не есть отношение субкласс/суперкласс в теоретико-множественном понимании.


Например, в оберонах вместо термина "наследование" используется термин "расширение типа".
Re[5]: Так что же такое программирование наука или ремесло?
От: Кодт Россия  
Дата: 18.08.04 08:16
Оценка: 3 (1)
Здравствуйте, S.Yu.Gubanov, Вы писали:

К>>Надо бы ещё побить авторов терминологии, поскольку отношение наследования не есть отношение субкласс/суперкласс в теоретико-множественном понимании.


SYG>Например, в оберонах вместо термина "наследование" используется термин "расширение типа".


"Расширение типа" дословно означает переход к суперклассу (в ТМ-понимании).
В то же время наследование — более сложная штука.

Тип "указатель на наследника" является субклассом типа "указатель на базу".
Но является ли сам тип "наследник" субклассом или суперклассом базы — это уже вопрос.

Наследник как субкласс базы: не добавляет новых членов-данных, не добавляет открытых членов-функций, усиливает контракт.
Наследник как суперкласс базы: может расширять функциональность и не усиливает контракт.

Но чаще всего наследник не только расширяет функциональность, но и меняет контракт (где-то усиливая, а где-то ослабляя).
Перекуём баги на фичи!
Re[6]: Так что же такое программирование наука или ремесло?
От: S.Yu.Gubanov Россия http://sergey-gubanov.livejournal.com/
Дата: 18.08.04 09:34
Оценка: -1
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, S.Yu.Gubanov, Вы писали:


К>>>Надо бы ещё побить авторов терминологии, поскольку отношение наследования не есть отношение субкласс/суперкласс в теоретико-множественном понимании.


SYG>>Например, в оберонах вместо термина "наследование" используется термин "расширение типа".


К>"Расширение типа" дословно означает переход к суперклассу (в ТМ-понимании).


А что такое "ТМ-понимание"?

В оберонах "расширение типа" означает то что буквально означает РАСШИРЕНИЕ типа. Что буквально обозначает слово "расширение"? Расширение — это когда был маленький, а стал большой, то есть расширился.
TYPE
  SpaceVector = EXTENSIBLE RECORD 
    X,Y,Z: REAL;
  END;
  
  SpaceTimeVector = RECORD (SpaceVector)
    T: REAL;
  END;

Тип SpaceVector был маленький и содержал только 3 переменных, а мы его взяли и расширили до типа SpaceTimeVector который стал больше (шире) чем SpaceVector на 1 переменную. Был маленький, а стал большой, что произошло? — правильно, произошло расширение!

Оберонистая терминология хороша тем, что она обозначает именно то что буквально обозначают используемые слова, в то время как class-овая терминология с суперклассами, подклассами, субклассами и прочими "наследованиями" только запутывает суть дела.
Re[7]: Так что же такое программирование наука или ремесло?
От: Кодт Россия  
Дата: 18.08.04 10:08
Оценка: +1
Здравствуйте, S.Yu.Gubanov, Вы писали:

К>>"Расширение типа" дословно означает переход к суперклассу (в ТМ-понимании).


SYG>А что такое "ТМ-понимание"?


Теоретико-множественное.

SYG>В оберонах "расширение типа" означает то что буквально означает РАСШИРЕНИЕ типа. Что буквально обозначает слово "расширение"? Расширение — это когда был маленький, а стал большой, то есть расширился.


А если я вместо наращивания, наоборот, усилил контракт?
class String
{
public:
  String(const char* s);
  ...
};

class StringUppercase : public String
{
public:
  StringUppercase(const char* s) : String(s)
  {
    assert(no_lowercase(s));
  }
  ...
};

По-моему, слово "наследование" вполне выражает суть явления. В отличие от "субклассирования" или "расширения", которые притягивают не вполне уместные аналогии из математики. Конечно, хоть горшком назови, но новичков это сбивает с толку, о чём уже говорил Синклер.
Перекуём баги на фичи!
Re[8]: Так что же такое программирование наука или ремесло?
От: S.Yu.Gubanov Россия http://sergey-gubanov.livejournal.com/
Дата: 18.08.04 12:36
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А если я вместо наращивания, наоборот, усилил контракт?


Если Вы про контракты, то так нельзя. Есть интерфейс и есть реализация интерфейса. Больше ничего нет. Компонентно ориентированная парадигма такая. В оберонах нельзя изменить контракт. Так что, расширение типа — это в самом деле расширение...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.