Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить синтаксис паскаля(делфи) 
:(
    Опции темы
Любитель
Дата 3.6.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Ладно, скажем по-вашему - почему в дельфях нету интерфейсов для неавтоматических объектов?


--------------------
PM MAIL ICQ Skype   Вверх
skyboy
Дата 3.6.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(Любитель @  3.6.2008,  12:22 Найти цитируемый пост)
нафига мне вообще заботиться о подсчёте ссылок

не заботься.. все - для тебя. поставь заглушки на методы, реализующие подсчет ссылок и пожалуйста - держи утечки памяти. распишитесь о получении: здесь и здесь smile 
Цитата(Любитель @  3.6.2008,  12:46 Найти цитируемый пост)
Это собственно и называется смарт-поинтер.

кстати, тебя не напрягает тот факт, что смарт-понинтеры в "неуправляемом" С++ надо указывать явно? как же? это же лишний код! почему надо писать лишний код?! или любые указатели в С++ становятся "умными" по умолчанию?

Добавлено через 4 минуты и 14 секунд
Цитата(Любитель @  3.6.2008,  13:36 Найти цитируемый пост)
почему в дельфях нету интерфейсов для неавтоматических объектов?

типа приведения типов в С++? потому что не будет контроля. RTTI дает большой контроль за типом данных во время выполнения, но и приводить можно только к тому, от чего наследовано, а не к тому, у кого одноименные методы. А если и в С++ приводить только к тем классам, от которых происходило наследование, то какая разница? опять же пришли к противостоянию "мультинаследование против однозначного наследования"

Добавлено через 7 минут и 4 секунды
Цитата(Любитель @  3.6.2008,  13:36 Найти цитируемый пост)
почему в дельфях нету интерфейсов для неавтоматических объектов?

ты Алексиса не понял. Интерфейс по сути - разновидность автоматического объекта. 
а если поставишь заглушки-пустышки, то ничего у тебя удаляться не будет. и все должны быть довольны.
PM MAIL   Вверх
Любитель
Дата 3.6.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(skyboy @  3.6.2008,  14:39 Найти цитируемый пост)
кстати, тебя не напрягает тот факт, что смарт-понинтеры в "неуправляемом" С++ надо указывать явно? как же? это же лишний код! почему надо писать лишний код?! или любые указатели в С++ становятся "умными" по умолчанию?

Не, не напрягает. Я просто пишу boost::shared_ptr<MyType> (подставить tr1 по вкусу). А любые нет - указал, стали. Но никто не заставляет, чтоб они ими были.

Цитата(skyboy @  3.6.2008,  14:39 Найти цитируемый пост)
типа приведения типов в С++? 

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

ЗЫ Блин, мне надоедает обсуждать одну тему smile 


--------------------
PM MAIL ICQ Skype   Вверх
skyboy
Дата 3.6.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(Любитель @  3.6.2008,  13:48 Найти цитируемый пост)
Почему реализация любого интерфейса заставляет реализовывать подсчёт ссылок?

странно, что тебя не напрягает сам факт принудительного наследования от класса(TObject), у которого с полтора десятка методов. типа, "а вдруг я захочу реализовать собственную логику метода inheritsFrom(AClass: TClass)?" и т.д..

Добавлено через 1 минуту и 32 секунды
вообще, не могу понять. тебя не устраивает:
а) необходимость самостоятельно писать код в случае "косого наследования"?
б) необходимость реализации подсчета ссылок в том или ином виде?
в) необходимость реализации чего бы то ни было?
PM MAIL   Вверх
Alexeis
Дата 3.6.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Любитель @  3.6.2008,  13:36 Найти цитируемый пост)
Ладно, скажем по-вашему - почему в дельфях нету интерфейсов для неавтоматических объектов? 

  Объект который управляет интерфейс не является автоматическим. Автоматическим объектом называется сам интерфейс (объект в общем смысле этого слова, не тот что инстанцируется классом).


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Любитель
Дата 3.6.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(skyboy @  3.6.2008,  14:54 Найти цитируемый пост)
вообще, не могу понять. тебя не устраивает:
а) необходимость самостоятельно писать код в случае "косого наследования"?
б) необходимость реализации подсчета ссылок в том или ином виде?
в) необходимость реализации чего бы то ни было? 

Все пункты. Тобою они как раз названы в порядке важности smile Только на всякий случай замечу - "необходимость реализовывать нечто мне ненужное". Как - это уже не суть важно.

Цитата(skyboy @  3.6.2008,  14:39 Найти цитируемый пост)
а если поставишь заглушки-пустышки, то ничего у тебя удаляться не будет. и все должны быть довольны. 

Я понимаю. Только это костыль. Во-первых, я всё равно что-то должен писать (что мне вовсе не надо), а во-вторых, это как раз может создать потенциальные проблемы. Кто-нибудь будет юзать этот TMyMyObject, увидит, что он реализует IUnknown (который как я понял объявляет лишь всё, связанное с подсчётом ссылок) и решит, что это работает. А ему - обломись smile Я ничего против подсчёта ссылок, даже его ручной реализации не имею - ну пусть будет отдельный интерфейс, который мы реализуем, если хотим. А не хотим - не будем smile

Цитата(Alexeis @  3.6.2008,  15:00 Найти цитируемый пост)
Объект который управляет интерфейс не является автоматическим. Автоматическим объектом называется сам интерфейс (объект в общем смысле этого слова, не тот что инстанцируется классом). 

Ладно, чо-т я запутался smile Вопрос я переформулировал выше. Сорри, если что-то в вашей терминлогии не так понял smile


--------------------
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 3.6.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Любитель @  3.6.2008,  14:43 Найти цитируемый пост)
Я понимаю. Только это костыль. Во-первых, я всё равно что-то должен писать (что мне вовсе не надо), а во-вторых, это как раз может создать потенциальные проблемы. Кто-нибудь будет юзать этот TMyMyObject, увидит, что он реализует IUnknown (который как я понял объявляет лишь всё, связанное с подсчётом ссылок) и решит, что это работает. А ему - обломись smile Я ничего против подсчёта ссылок, даже его ручной реализации не имею - ну пусть будет отдельный интерфейс, который мы реализуем, если хотим. А не хотим - не будем smile

  Интерфейсы реализованы так чтобы выполнять свою функцию. Например, "строитель" создает некоторый функциональный объект и передает его интерфейсы тем кто его должен использовать. Клиенты не знают ничего о классе объекта и о том как он реализует свои интерфейсы, не знает какие еще у него есть интерфейсы и не знает использует ли его еще кто-то. В этой модели, можно сколько угодно менять класс функционального объекта, добавлять к нему другие члены, которые будут частично или полностью реализовывать интерфейсы, заменять его другим при этом все зависимые модули даже не нужно перекомпилировать, поскольку они ссылаются на абстрактный интерфейс. Сам же строитель отпускает свое дитя в свободное плавание, при этом строитель не должен созвать ни каких дополнительных списков с созданными им объектами. Более того сам объект не будет существовать до окончания работы приложения и освободит ресурсы сразу же как только станет ненужным.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Любитель
Дата 3.6.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Блин, у меня есть интерфейс объекта, поддерживающего, например, сравнение (IComparable smile ) - зачем мне плясать с подсчётом ссылок?

Кстати, возникла идея - а в Delphi .Net интерфейся тоже наследуются от IUnknown?!


--------------------
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 3.6.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Любитель @  3.6.2008,  15:32 Найти цитируемый пост)
Кстати, возникла идея - а в Delphi .Net интерфейся тоже наследуются от IUnknown?!


  Боюсь что там ситуация намного хуже, там любой объект наследует IInterface, а подсчет ссылок реализован у всех объектов, так как это является частью механизма сборки мусора. Там что-то вроде такого получается

<указатель на управляющий объект>  -> <управляющий объект> -> <объект>

Фактически указатель на объект не доступен, доступен только <указатель на управляющий объект>, сам же <управляющий объект> реализует IUnknown и возможно еще кучу всякой хрени. При проходе очередного цикла сборки мусора объект перемещается в памяти и в управляющий объект записывается новый адрес объекта (существует системная очередь хранящая все ссылки на управляющие объекты), при этом <указатель на управляющий объект> остается неизменным. На управляющий объект может быть множество ссылок, которые он сам считает. Когда этот счетчик становиться равным нулю, объект будет объявлен не нужным и будут удален при следующем цикле сборки мусора.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Любитель
Дата 3.6.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Alexeis @  3.6.2008,  17:23 Найти цитируемый пост)
а подсчет ссылок реализован у всех объектов, так как это является частью механизма сборки мусора

Ну... это не банальный подсчёт ссылок. Насколько я знаю, ВМ просто хранит информацию о всех объектах и при запуске собрки мусора стоит граф объектов. "Висячие" части (не связанные со статическими полями, локальными переменными и т. д.) удаляются. То есть, это явно не подсчёт ссылок и реализуется это не на уровне отдельных классов (и не на уровне System.Object), а на уровне ВМ.

Цитата(Alexeis @  3.6.2008,  17:23 Найти цитируемый пост)
На управляющий объект может быть множество ссылок, которые он сам считает.

Он ничего не считает. Весь подсчёт проводится не во время работы, а во время сборки мусора.

Цитата(Alexeis @  3.6.2008,  17:23 Найти цитируемый пост)
там любой объект наследует IInterface

Гм. А что это за IInterface?! Что в нём объявлено? Просто речь о том, что дотнетовские интерфейсы ни от чего не наследуются (что логично) - как с этим поступает Delphi .Net?

Это сообщение отредактировал(а) Любитель - 3.6.2008, 17:51


--------------------
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 3.6.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Alexeis, 
в общем с подсчетом ссылок ересь какая-то получается
как сказал Любитель, костыль на пустом месте

ты вот лучше скажи: как в Delphi обстоят дела с шаблонами?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
lukas
Дата 3.6.2008, 18:40 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



MAKCim,

шаблоны это не проблема языка... это проблема среды... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Lazin
Дата 3.6.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(lukas @  3.6.2008,  18:40 Найти цитируемый пост)
шаблоны это не проблема языка... это проблема среды... 

нет, это проблема языка smile 
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 3.6.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(lukas @  3.6.2008,  18:40 Найти цитируемый пост)
шаблоны это не проблема языка... это проблема среды...  

с шаблонами ясно  smile 
сейчас найдем еще что-нибудь...



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
skyboy
Дата 3.6.2008, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(MAKCim @  3.6.2008,  18:07 Найти цитируемый пост)
с шаблонами ясно

ну да. как же. писать малопонятные инструкции с <> - это запросто. А воспользоваться расширением для рефакторинга, которому надо будет передать имя класса и имя дл поля, и IDE  сформирует "скелет" по шаблону "Observer" - это не круто. аааа.... укусите меня за ногу....
Как в С++ с метаклассами дела обстоят?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0725 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.