Re[5]: Программирование на языке Delphi. Глава 3.
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 29.11.05 15:39
Оценка:
Здравствуйте, ekamaloff, Вы писали:

E>

Object types are supported for backward compatibility only. Their use is not recommended.

Тогда посыпаю голову пеплом. Вот лопухи, record до C++-ного класса так и не дорастили по возможностям, а существующую альтернативу объявили deprecated

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[3]: Программирование на языке Delphi. Глава 3.
От: Dimonka Верблюд  
Дата: 29.11.05 15:46
Оценка:
Здравствуйте, ramasha, Вы писали:

SM>> Существуют также объекты старого стиля (object), на которые распространяется многое из вышесказанного, но все-таки не все.

R>По поводу "новых" и "старых" стилей, интересно : What is New in the Delphi Compiler — Danny Thorpe


R> -Records don't have inheritance, i.e. no VMT.

R> -Records can implement interfaces in .NET but not in Win32.

В 2006-м Delphi пообещали сделать методы для записей под Win32..
Re[6]: Программирование на языке Delphi. Глава 3.
От: Аноним  
Дата: 29.11.05 19:11
Оценка:
Здравствуйте, Slicer [Mirkwood], Вы писали:

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


E>>

Object types are supported for backward compatibility only. Their use is not recommended.

SM>Тогда посыпаю голову пеплом. Вот лопухи, record до C++-ного класса так и не дорастили по возможностям, а существующую альтернативу объявили deprecated

Это не недоработка, объектная модель была полностью пересмотрена. Было решено отказаться от value-type объектов. И правильно, иначе теряются все преимущества объектов (расширение типа, виртуальные методы и т.д.). Представьте ситуацию, что объявляется массив из value-type объектов. Вы можете добавить в массив объект производного класса? Вы можете записать такой объект в файл (как вы записываете запись)? Кстати, на платформе .NET value-type объекты отсутствуют. Чувствуется одна и та же рука
Re[6]: Программирование на языке Delphi. Глава 3.
От: Denis_TST Россия www.transsys.ru
Дата: 29.11.05 22:07
Оценка:
Здравствуйте, Slicer [Mirkwood], Вы писали:

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


E>>

Object types are supported for backward compatibility only. Their use is not recommended.

SM>Тогда посыпаю голову пеплом. Вот лопухи, record до C++-ного класса так и не дорастили по возможностям, а существующую альтернативу объявили deprecated
Самое интересное что Object types существуют аж с Dephi 1 и отлично работают. Я например встречал обертку
над GDI+ сделанную с использованием этих типов. Типы Point, Color итд сделаны как object (с служебными методами),
их можно размещать с стеке и не возиться с созданием\удалением.

Почему их похоронили совершенно не понятно
... << RSDN@Home 1.2.0 alpha rev. 599>>
Re[7]: Программирование на языке Delphi. Глава 3.
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 30.11.05 10:45
Оценка: +1
Hello Аноним, you wrote:

> Это не недоработка, объектная модель была полностью пересмотрена. Было решено отказаться от value-type объектов. И правильно, иначе теряются все преимущества объектов (расширение типа, виртуальные методы и т.д.)


Да ну?
Тогда от куда в Борланд Паскале виртуальные методы?
И наследование там тоже было.

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


Я вместо этого объявлю массив указателей на объекты. И все у меня получится.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
Re[7]: Программирование на языке Delphi. Глава 3.
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 30.11.05 10:46
Оценка:
Hello Аноним, you wrote:

> Это не недоработка, объектная модель была полностью пересмотрена. Было решено отказаться от value-type объектов. И правильно, иначе теряются все преимущества объектов (расширение типа, виртуальные методы и т.д.)


Да ну?
Тогда от куда в Борланд Паскале виртуальные методы?
И наследование там тоже было.

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


Я вместо этого объявлю массив указателей на объекты. И все у меня получится.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
Re[7]: Программирование на языке Delphi. Глава 3.
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 30.11.05 10:46
Оценка:
Hello Аноним, you wrote:

> Это не недоработка, объектная модель была полностью пересмотрена. Было решено отказаться от value-type объектов. И правильно, иначе теряются все преимущества объектов (расширение типа, виртуальные методы и т.д.)


Да ну?
Тогда от куда в Борланд Паскале виртуальные методы?
И наследование там тоже было.

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


Я вместо этого объявлю массив указателей на объекты. И все у меня получится.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
Re[7]: Программирование на языке Delphi. Глава 3.
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 30.11.05 15:48
Оценка:
Hello Аноним, you wrote:

> Это не недоработка, объектная модель была полностью пересмотрена. Было решено отказаться от value-type объектов. И правильно, иначе теряются все преимущества объектов (расширение типа, виртуальные методы и т.д.)


Да ну?
Тогда от куда в Борланд Паскале виртуальные методы?
И наследование там тоже было.

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


Я вместо этого объявлю массив указателей на объекты. И все у меня получится.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
Re[7]: Программирование на языке Delphi. Глава 3.
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 30.11.05 18:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Кстати, на платформе .NET value-type объекты отсутствуют. Чувствуется одна и та же рука

Советую получше ознакомиться с платформой .NET Ключевое слово "value types". Тамошние структуры допускают наследование (хотя полиморфизм ограничен) и инкапсуляцию (могут содержать вместе с данными и методы). Как и old-style objects. Чего часто и не хватает в дельийских record'ах. Имхо, это недоработка. Если бы в дельфях отказались от old-объектов, но улучшили структуры, я бы не жаловался. А так — от одной альтернативы призывают воздерживаться, а другую не обеспечивают.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[4]: Программирование на языке Delphi. Глава 3.
От: ramasha Украина  
Дата: 01.12.05 05:30
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>В 2006-м Delphi пообещали сделать методы для записей под Win32..


Ну, так я вроде об этом и написал

Major Win32 Compiler Work
-Records with Methods


И два ограничения: Записи нельзя унаследовать и они не могут быть реализацией интерфейсов.

-Records don't have inheritance, i.e. no VMT.
-Records can implement interfaces in .NET but not in Win32.

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Программирование на языке Delphi. Глава 3.
От: Аноним  
Дата: 01.12.05 07:31
Оценка:
Здравствуйте, Slicer [Mirkwood], Вы писали:

SM> ... Тамошние структуры ...


Это хорошо известно. Все-таки речь шла не о структурах, а о class instances. Ключевой момент — наличие VMT среди полей объекта.
Re[9]: Программирование на языке Delphi. Глава 3.
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 01.12.05 19:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Это хорошо известно. Все-таки речь шла не о структурах, а о class instances. Ключевой момент — наличие VMT среди полей объекта.

Которое как раз не всегда желательно. Ну и плюс хранение objects в "boxed"-виде, как записей.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[5]: Программирование на языке Delphi. Глава 3.
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 01.12.05 19:06
Оценка: 2 (1)
Здравствуйте, ramasha, Вы писали:

R>-Records don't have inheritance, i.e. no VMT.

Нет VMT <> нет наследования. Правда, "нет VMT" + "нет интерфейсов" = "нет полиморфизма", но наследование уже имевшихся в предке методов все еще возможно. Как фактически обстоит дело в D2006, не знаю.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[6]: Программирование на языке Delphi. Глава 3.
От: ramasha Украина  
Дата: 02.12.05 05:58
Оценка:
Здравствуйте, Slicer [Mirkwood], Вы писали:

R>>-Records don't have inheritance, i.e. no VMT.

SM>Нет VMT <> нет наследования.
Действительно, я это упустил.
Я перевел так: Записи не наследуются т.е. нет VMT. Если я правильно перевел, непонятно почему Danny так написал ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Программирование на языке Delphi. Глава 3.
От: Аноним  
Дата: 02.12.05 17:05
Оценка:
Здравствуйте, Denis_TST, Вы писали:

D_T>Здравствуйте, Slicer [Mirkwood], Вы писали:


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


E>>>

Object types are supported for backward compatibility only. Their use is not recommended.

SM>>Тогда посыпаю голову пеплом. Вот лопухи, record до C++-ного класса так и не дорастили по возможностям, а существующую альтернативу объявили deprecated
D_T>Самое интересное что Object types существуют аж с Dephi 1 и отлично работают. Я например встречал обертку
D_T>над GDI+ сделанную с использованием этих типов. Типы Point, Color итд сделаны как object (с служебными методами),
D_T>их можно размещать с стеке и не возиться с созданием\удалением.

D_T>Почему их похоронили совершенно не понятно


Старая модель объектов нарушала концептуальную целостность языка программирования.

var
X, Y: T;
begin
...
X := Y;
...
end;

В том случае, если X и Y — value-type objects, непонятно, как должен сработать оператор присваивания (например, не понятно, должно ли выполниться копирование указателя VMT). Проектировщики языка сделали ошибку, но у них хватило смелости ее признать и исправить. Это стало возможным благодаря тому, что не существовало стандарта на язык Borland Pascal (иногда отсутствие стандарта играет положительную роль).
Re[8]: Программирование на языке Delphi. Глава 3.
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 02.12.05 18:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Старая модель объектов нарушала концептуальную целостность языка программирования.


А>var

А> X, Y: T;
А>begin
А> ...
А> X := Y;
А> ...
А>end;

А>В том случае, если X и Y — value-type objects, непонятно, как должен сработать оператор присваивания (например, не понятно, должно ли выполниться копирование указателя VMT).


Но позвольте — эта операция, тем не менее, выполнялась четко определенным образом Причем присуща она не только BP, но и C++...

Впрочем, разговор ушел в сторону. Предлагаю отделить ветку и отправить в holy wars или еще куда. Факт тот, что борманы уже объявили это дело deprecated, а после драки кулаками не машут.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.