S>Бред в том, что в Net такого нет. S>Борланд просто автоматом делает метаклассы
Ну да, а крупный рогатый скот автоматом классные лепёшки производит. Потом что хочешь делай — хочешь огород удобряй, хочешь — подсуши и в рамку вставь. Классная фича, могли бы и в C# встроить!
S> И работать с ними намного удобнее и быстрее чем с активаторами и прочей лабудой отображения.
Здравствуйте, mihailik, Вы писали:
S>>Бред в том, что в Net такого нет. S>>Борланд просто автоматом делает метаклассы
M>Ну да, а крупный рогатый скот автоматом классные лепёшки производит. Потом что хочешь делай — хочешь огород удобряй, хочешь — подсуши и в рамку вставь. Классная фича, могли бы и в C# встроить!
Лепешки это вещь классная. Но наследники от Type не возможны для ручного дополнения. А в чем проблема???
S>> И работать с ними намного удобнее и быстрее чем с активаторами и прочей лабудой отображения.
M>Да в сотни раз
А то и больше.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, mihailik, Вы писали:
S>>когда нужно единообразное создание экземпляров
M>И что, в дотнете нет готового решения?
Решить можно все и не обязательно на до нете. Но так как Type не расширяем, то дельфевые метаклассы этим как раз и занимаются. Плохо это или хорошо решать каждому индивидуму.
и солнце б утром не вставало, когда бы не было меня
[Skipped]
M>На последней Kiev .NET User Group один товарищ защищал VB и заодно и Кобол. Выглядело смешно, но у всех были такие умные лица, что я постеснялся гоготать
Тогда надо было флейм развести. На тему всеобщего равенства и братства языков программирования, принесенную в нашу жизнь дотнетом.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Я тебе скажу почему. Потому что в Дельфи нет рефлекшена. S>> Ну батенька у Вас сильно устаревшая информация. Сейчас разговор о Delphi 8.
AVK>Не батенька, вы просто не следите за базаром. Речь шла о использовании статических методов в VCL. При чем тут Дельфи 8?
Вообщето разговор шел static virtual вообще.
AVK>>>Попытка слепо скопировать решения с одной платформы на другую никогда хорошо не кончались. S>> А что плохого в том, что для каждого типа автоматом генерится Meta класс.
AVK>
AVK> А что хорошего? Дельфи 8 без этого не обойтись, им совместимость нужна. Соображения производительности неинтересны, поскольку сущностей мало (вряд ли у тебя в программе будет больше сотни классов, обрабатывающихся каким то спец. алгоритмом) и в ходе работы они не меняются (а значит можно эффективно кешировать). Что же касается типобезопасности то тут вы просто никак не хотите оторваться от Дельфевой модели и пытаетесь ее эмулировать. Следует же просто понять что в дотнете дополнительная метаинформация ортогональна основной, а в Дельфи она непосредственно на нее повязана. Лучше или хуже то или другое решение это отдельный вопрос, главное понять что она другая и слепо копировать не стоит.
У меня есть и по 400 и больше. Пример 1С и автоматически генерящихся исходников по мегабайтам, и неопределенные типы полей и тд. Мне как раз это очень нужно и активно используется.
А то что дельфевые метаклассы расширяют Type ничего плохого в этом не вижу. А насчет копирования, не совсем это копирование а расширение возможностей типа. Вот и все.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, mihailik, Вы писали:
ST>>эк тебе приходится изголяться чтоб "три штуки баксаф палучить"
M>Открою секрет. Я за штуку лицензию на R# куплю и доделаю эту фичу. Коммерческий подход, понимаешь
извини, недооценил
ST>>а мое счастие не в этом — не в staic virtual
M>Так об этом тебе, между прочим, люди и толкуют.
здОрово
еще оно [счастие] не в рефлекшене и не в атрибутах
а, видимо, в том, чтобы решать свои задачи адекватными для выбранной платформы (в т.ч. языковой) методами и платформы правильно для своих задач выбирать
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, s.ts, Вы писали:
ST>>наверное, нет. ST>>просто я каждый день борюсь с ... ST>>удовольствия мало
AVK>Вот и рассказывай с чем ты борешься, а не как предполагаешь что это можно побороть.
— она не работает. там Qt обернули своими классами и ерунда получилась. фразой "MSIL от борланд может не работать" я высказал предположение, что когда борланд обернет дотнет своими приблудами, то это может опять не работать (в буквальном смысле).
Здравствуйте, Serginio1, Вы писали:
AVK>>Не батенька, вы просто не следите за базаром. Речь шла о использовании статических методов в VCL. При чем тут Дельфи 8? S> Вообщето разговор шел static virtual вообще.
Вобще то процитированная тобой фраза была конкретным ответом на конкретный вопрос. Тебе процитировать диалог или сам найдешь?
S> У меня есть и по 400 и больше.
S>> У меня есть и по 400 и больше.
AVK>Это все мелочь.
Но создавать и уничтожать их приходтся очень много. Это касается когда поле объекта неопределенного типа (но наследик базового). И на рефлексии это сажается махом. Конечно можно предусмотреть фабрику классов автоматически её городить. Но зачем если есть метаклассы
а в Native виртуальные конструкторы. Не знаю почему вы все так против метаклассов, но это действительно удобно.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
AVK>>Это все мелочь. S> Но создавать и уничтожать их приходтся очень много.
А метаклассы типа не надо создавать что ли?
S> Это касается когда поле объекта неопределенного типа (но наследик базового). И на рефлексии это сажается махом.
Да нечего там сажать на рефлексии, копейки это. Рефлексия страшна на экземплярах, коих может быть масса.
S>Не знаю почему вы все так против метаклассов, но это действительно удобно.
Не на столько удобно чтобы серьезно менять ради этого язык.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Это все мелочь. S>> Но создавать и уничтожать их приходтся очень много.
AVK>А метаклассы типа не надо создавать что ли?
Метаклассы создаются автоматически в конструкторе типа 1 раз. А вот объекты S>> Это касается когда поле объекта неопределенного типа (но наследик базового). И на рефлексии это сажается махом.
AVK>Да нечего там сажать на рефлексии, копейки это. Рефлексия страшна на экземплярах, коих может быть масса.
10000 20000 тысяч документов по 100 строк в документеа то и более, 2-5 полей итого .... На рефлексию уйдет больше чем на все остальное. Это только конструкторы, а есть и виртуальные статические методы. Я уже говорил meta слассы это скорость типизация и удобство. Type это хорошо но мало.
Я не говорю уже о бухгалтерии. Значит в 1С все отлично???
S>>Не знаю почему вы все так против метаклассов, но это действительно удобно.
AVK>Не на столько удобно чтобы серьезно менять ради этого язык.
А метаклассы фича не языка, а компилятора. Оно пока есть в Delphi и это фича может использоваться и в других языках. Ни чего и менять не надо. И во многих случаях действительно очень удобно.
Интересно а когда M$ создаст другой язык (тоже надеюсь тоже его изучить), более приспособленный дря решения определенных задач и у него будут специализированные фичи, то тоже флейм начнется по ненужности их????
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
AVK>>А метаклассы типа не надо создавать что ли?
S> Метаклассы создаются автоматически в конструкторе типа 1 раз. А вот объекты
А их тебе никто не мешает также создавать в статическом конструкторе 1 раз.
AVK>>Да нечего там сажать на рефлексии, копейки это. Рефлексия страшна на экземплярах, коих может быть масса. S> 10000 20000 тысяч документов по 100 строк в документеа то и более, 2-5 полей итого ....
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>А метаклассы типа не надо создавать что ли?
S>> Метаклассы создаются автоматически в конструкторе типа 1 раз. А вот объекты
AVK>А их тебе никто не мешает также создавать в статическом конструкторе 1 раз.
AVK>>>Да нечего там сажать на рефлексии, копейки это. Рефлексия страшна на экземплярах, коих может быть масса. S>> 10000 20000 тысяч документов по 100 строк в документеа то и более, 2-5 полей итого ....
AVK>Ты как будто не читаешь о чем я тебе пишу.
Масса это сколько 10 миллионов мало??? 2-5 полей неопределенного типа.
Постараюсь еще раз объяснить. Есть БД в котороой больше сотни документов справочников и регистров итд.
Есть поля неопределенного тип имеющий вид IdType и ID. По IDType вызываем конструктор , по ID находим сам объет (вернее записываем его данные). Это легко решается создав хэштаблицу
IdType,@MetaClass. Иначе мне пришлосьбы либо через рефлексию городить
IdType,Type и уже из Type по рефлексии вызывать конструктор, либо создав типизированные делегаты вызывающие конструкторы
IDType, TypeDelegate
. Но при этом теряю информацию о типе до создания объекта.
Еще вариант создать функцию со Switch и по IdType вызывать нужный конструктор. Все решается, но зачем это городить когда есть метаклассы. Самый удобный вариант.
Не говоря уже о расширении информации о типе. И зачем мне ручками делать если метаклассы автоматически генерятся????
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Ты как будто не читаешь о чем я тебе пишу. S>> Масса это сколько 10 миллионов мало???
AVK>10 миллионов классов?
10 миилионов не классов а создание экземпляров классов. Конечно можно кэшировать не удаляя, а повторно использовать уже созданные, но там тоже возникают проблемы с освобождение подчиненных объектов. Легче создать и удалить. Да иногда и хранить тоже нужно.
Наглядный пример проводка в бухгалтерии, где для каждого счета свой набор субконто.
А проводок этих ....
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>10 миллионов классов? S>> 10 миилионов не классов а создание экземпляров классов.
AVK>И какое отношение статические методы или атрибуты имеют к количеству экземпляров?
Вызов конструкторов, дополнительная информация о классах. S>> Конечно можно кэшировать не удаляя,
AVK>Не можно, а нужно.
Так и делается только с ограничением на количество экземпляров класса . S>> а повторно использовать уже созданные, но там тоже возникают проблемы с освобождение подчиненных объектов.
AVK>Какие?
Например есть объект, у него поле со ссылкой на другой объект. Иногда приходится делать поиск.
Док.Клиен.Договор.Счет и еще можно привести кучу примеров. Но теперь у следующего клиента эти поля не нужны клиента не нужны. S>> Легче создать и удалить.
AVK>Это при 10 то миллионах вызовов и 400 классах? Ну ну.
Смех смехом А вот разницы как раз и нет. Создание происходит очень быстро и 10 мил это пшик. Во Во. Но кончно же кэширутся, но все равно в таблицу так или иначе лезть надо как за кэшируемыми объектами так и для нового их создания.
И метаклассы предоставляют огромное удобство.
и солнце б утром не вставало, когда бы не было меня