Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Вниз

Delphi 2007. Нас опять не слышат.   Найти похожие ветки 

 
oxffff ©   (2007-03-03 13:19) [0]

http://hallvards.blogspot.com/2007/03/review-delphi-2007-for-win32-beta-part.html

....

It also means that the compiler has not been updated with new features that would break binary compatibility, so there are no generics support yet, for instance


 
Ketmar ©   (2007-03-03 13:34) [1]

да они уже и так мусора надобавляли. ХВАТИТ! пора применять виртовский подход: "а что бы такого ещё выкинуть нафиг?"


 
Янг   (2007-03-04 04:50) [2]

Где это Вирт такое говорил?


 
Ketmar ©   (2007-03-04 14:07) [3]

он ещё и делал. достаточно посмотреть на Оберон (который первый). это потом его уговорили мусора надобавлять опять.


 
просто так   (2007-03-04 14:27) [4]

generics мусор? несогласен!


 
Суслик ©   (2007-03-04 14:48) [5]

все там нормально - все будет хорошо


 
Ketmar ©   (2007-03-04 14:55) [6]

мусор.


 
просто так   (2007-03-04 15:02) [7]


> мусор.

ну чтож, устраивает tlist - пользуйся, а мне очень нехватает полноценных контейнеров, без кучи копипастов и костыльных махинаций с $include


 
Ketmar ©   (2007-03-04 15:17) [8]

и TList мусор.


 
просто так   (2007-03-04 15:25) [9]

а что не мусор?


 
Ketmar ©   (2007-03-04 15:31) [10]

пиво.


 
default ©   (2007-03-04 15:34) [11]

Ketmar ©   (04.03.07 15:31) [10]
зажёг;)
я думал щас Кетмар начнёт что-то умное про генерики рассказывать ан нет;)


 
default ©   (2007-03-04 15:37) [12]

я вот тоже без генериков жить не могу;)


 
Ketmar ©   (2007-03-04 15:39) [13]

> default ©   (04.03.07 15:34) [11]
угу. умное. да. это только если я вспомню куда намедни моск спрятал.


 
Palladin ©   (2007-03-04 15:42) [14]

в мусор наверно...


 
просто так   (2007-03-04 15:45) [15]


> пиво.

это пока в дельфи генериков нет, как тока появятся, перейду на водку.


 
oxffff ©   (2007-03-04 19:59) [17]


> Суслик ©   (04.03.07 14:48) [5]
> все там нормально - все будет хорошо


Ну. Ну.
Что то говорили про Highlander в первом квартале(февраль-март). Чего только в нем не обещали.
И поддержку generics и расширение RTTI и т.д.
А теперь уже ближе к концу года 2007.

Нормально?


 
default ©   (2007-03-04 20:15) [18]

генерики позволяют писать более простой, быстрый и надёжный код
это просто счастье свалившееся на программистов;)


 
Суслик ©   (2007-03-04 21:49) [19]


> oxffff ©   (04.03.07 19:59) [17]

терпи


 
oxffff ©   (2007-03-04 22:46) [20]


> Суслик ©   (04.03.07 21:49) [19]
>
> > oxffff ©   (04.03.07 19:59) [17]
>
> терпи


Пусть сначала поправят custom variant by ref.
Мы с вами обсуждали это летом.

http://qc.codegear.com/wc/qcmain.aspx?d=31461

Так и остается без внимания.


 
oxffff ©   (2007-03-05 19:21) [21]

http://qc.codegear.com/wc/qcmain.aspx?d=31461

Так и остается без внимания.


 
Celades ©   (2007-03-05 19:45) [22]

Конечно не очень к месту, но просто вспомнилось то, чем нас обычно чмырят сишники:
"Мы берем и реализуем, а дельфины ждут когда им это сделает Borland"


 
просто так   (2007-03-05 20:12) [23]

где можно почитать как borland планирует ввести в паскаль генерики? если конечно планирует)


 
Суслик ©   (2007-03-06 01:45) [24]

нигде


 
Суслик ©   (2007-03-06 01:48) [25]


> oxffff ©   (05.03.07 19:21) [21]
> http://qc.codegear.com/wc/qcmain.aspx?d=31461
>
> Так и остается без внимания.


Сергей!
1. Репорт открыт
2. Открыт Пьером Ле Ришем (он плохие репорты не открывает).
3. Репорт во внутренней базе данных ошибок.
4. Возможно, что когда-нить доберутся и до вашего репорта.

Все будет хорошо:)


 
oxffff ©   (2007-03-06 14:37) [26]


> Все будет хорошо:)


Вы не c русского радио?

:)

Очень надеюсь.


 
jack128 ©   (2007-03-06 17:05) [27]

Кста, а мона на пальцах объяснить, что означают эти статусы багов в qc

Report Status Legend:
Open  Reported  Resolved  Closed  Withdrawn  Private  
?


 
Игорь Шевченко ©   (2007-03-06 17:08) [28]


> Open  Reported  Resolved  Closed  Withdrawn  Private  


Открытый (работают), Сообщенный, Исправленный, Закрытый, Отброшенный, Частный


 
jack128 ©   (2007-03-06 17:13) [29]

Игорь Шевченко ©   (06.03.07 17:08) [28]
Закрытый, Отброшенный, Частный

что значит закрытый? что значит отброшенный? что что значит частный?


 
Игорь Шевченко ©   (2007-03-06 17:20) [30]

jack128 ©   (06.03.07 17:13) [29]

How to Interpret some of the fields in QC
Because QualityCentral synchronizes with internal systems, there are some fields that have meaning for our internal processes that may not have obvious meaning outside of our internal processes. The following tables will hopefully explain some of the values for these synchronized fields.

Status Field

Value
Description

Open
Open defect, requires resolution

Resolved
Resolved defect, requires verification

Closed
Closed defect, no action required

Reported
New defect, requires tester review

Withdrawn
Report has been withdrawn by submitter

 

A report starts off with a status of “Reported”. When a sysop promotes the report to CodeGear’s internal bug tracking system, the status goes from “Reported” to “Open”. When work is completed with the report , the status goes from “Open” to “Closed”.

The “Withdrawn” status is used when the author of a report decides it is no longer valid and “withdraws” the report

http://dn.codegear.com/article/33888


 
DiamondShark ©   (2007-03-07 02:08) [31]


> а мне очень нехватает полноценных контейнеров

Зачем?


 
Суслик ©   (2007-03-07 08:12) [32]


> DiamondShark ©   (07.03.07 02:08) [31]
>
> > а мне очень нехватает полноценных контейнеров
>
> Зачем?

глупый вопрос, чессо слово


 
pasha_golub ©   (2007-03-07 11:32) [33]


> DiamondShark ©   (07.03.07 02:08) [31]


> Зачем?

Фигачить наследников TObjectList. :-) Мне тоже иногда не хватает. Можно, конечно, руцями. Но иногда "хочетцо волшепства".


 
Игорь Шевченко ©   (2007-03-07 11:36) [34]

В древнем Китае желающим странного отрубали голову. Во избежание


 
просто так   (2007-03-07 11:43) [35]

Что странного чтоб переложить на компилятор делать рутинный копи\паст?


 
Игорь Шевченко ©   (2007-03-07 11:44) [36]

просто так   (07.03.07 11:43) [35]

Так и до множественного наследования договоримся.


 
pasha_golub ©   (2007-03-07 11:49) [37]


> It also means that the compiler has not been updated with
> new features that would break binary compatibility, so there
> are no generics support yet, for instance


А вот хотя бы из-за этого можно порадоваться: Code that would earlier generate internal errors now generate clean compile-time errors with explanations of what is wrong with the code.

Я всегда потом холодным обливаюсь, когда вижу сообщение о внутренней ошибке. Ибо это обычно грозит покупкой нового бубна


 
просто так   (2007-03-07 11:56) [38]

>>Так и до множественного наследования договоримся.
а что, давайте порассуждаем на эту тему)))

понятно что обойтись можно без всего. но блин хочется)))
я не хочу чтоб борланд сделал с++ в обличии паскаля. просто считаю что параметризированные типы необходимая вещь


 
Игорь Шевченко ©   (2007-03-07 12:03) [39]

просто так   (07.03.07 11:56) [38]


>  считаю что параметризированные типы необходимая вещь


И как Object Pascal 12 лет без них обходится ? Уму непостижимо.


 
jack128 ©   (2007-03-07 12:03) [40]

Игорь Шевченко ©   (06.03.07 17:20) [30]
сенкс

Игорь Шевченко ©   (07.03.07 11:44) [36]
Так и до множественного наследования договоримся.

А с твоим подходим - и до запрета наследования классов можно договорится ;-)

pasha_golub ©   (07.03.07 11:49) [37]
Ибо это обычно грозит покупкой нового бубна

Угу. Уже пол дня пытаюсь сбилдить проэкт.  Интернал еррор и все. Хоть ты тресни.


 
просто так   (2007-03-07 12:07) [41]

>>И как Object Pascal 12 лет без них обходится ? Уму непостижимо.
человек без секса тоже живет, некоторые даже не жалуются:-)
что Вы против генериков имеете конкретно?


 
Игорь Шевченко ©   (2007-03-07 12:16) [42]

просто так   (07.03.07 12:07) [41]


> что Вы против генериков имеете конкретно?


То, что неуемное их (generics) употребление во-первых, запутывает код, во-вторых, порождает невозможность обобществить классы в ряде случаев. Это уже выстраданное.


 
pasha_golub ©   (2007-03-07 12:21) [43]


> Игорь Шевченко ©   (07.03.07 12:16) [42]


> То, что неуемное их (generics) употребление во-первых, запутывает
> код, во-вторых, порождает невозможность обобществить классы
> в ряде случаев. Это уже выстраданное.

Пусть будет так. Тогдя я хочу расширение ИДЕ, чтобы если я пишу абракадабру вида:

TMyClassList = class(TObjectList,TMyClass)

мне его сразу переворачивали в определение класса с переопределенными методами.

Большего мне не надо :)


 
просто так   (2007-03-07 12:22) [44]

1. это проблемы конкретного програмиста, неумерое примененье хоть чего ничего хорошего не принесет.
2. это следствие 1.


 
Суслик ©   (2007-03-07 12:46) [45]

я за женирики


 
Игорь Шевченко ©   (2007-03-07 12:56) [46]

pasha_golub ©   (07.03.07 12:21) [43]


> Пусть будет так. Тогдя я хочу расширение ИДЕ, чтобы если
> я пишу абракадабру вида:
>
> TMyClassList = class(TObjectList,TMyClass)
>
> мне его сразу переворачивали в определение класса с переопределенными
> методами.


есть такое. Называется ModelMaker Code Explorer, Алексей Вуколов может дать более развернутую информацию.


> 1. это проблемы конкретного програмиста, неумерое примененье
> хоть чего ничего хорошего не принесет.
> 2. это следствие 1.


А почему бы не перейти на С++, или, на худой конец, на С#, где и генериков и прочих излишеств как звезд на небе ?


 
просто так   (2007-03-07 14:03) [47]

>>А почему бы не перейти на С++, или, на худой конец, на С#, где и генериков и прочих излишеств как звезд на небе ?

не по делу. я также могу сказать "почему бы не ввести в паскаль генерики"
все в мире совершенствуется, и должно совершенствоваться, паскаль не исключение.
ps. в генериках вижу только плюсы. даешь генерики!


 
Суслик ©   (2007-03-07 14:05) [48]

не боись - и мы доживем


 
Игорь Шевченко ©   (2007-03-07 14:06) [49]


> все в мире совершенствуется, и должно совершенствоваться,
>  паскаль не исключение.


Даешь множественное наследование и макросы


 
Суслик ©   (2007-03-07 14:07) [50]

и макросы будут, множественное наследие тоже будет


 
default ©   (2007-03-07 14:09) [51]

мда, называть генерики излишеством это отклонение либо признак неприятия всему новому


 
просто так   (2007-03-07 14:11) [52]


> Игорь Шевченко ©   (07.03.07 14:06) [49]
>
> > все в мире совершенствуется, и должно совершенствоваться,
>
> >  паскаль не исключение.
>
>
> Даешь множественное наследование и макросы

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


 
tesseract ©   (2007-03-07 14:17) [53]


> Даешь множественное наследование и макросы


Макросы ещё ничего, но множественное неследование-то зачем?
Интерфейсы можно наследовать хоть по 10 штук - с классами-то это зачем?


 
Игорь Шевченко ©   (2007-03-07 14:53) [54]

просто так   (07.03.07 14:11) [52]


> помоему у Вас уж очень нездоровый консеративизм


Здоровый.


> хотя макросы - штука полезная. а мн - соглашусь, больше
> неразберихи чем пользы


Всякий овощ приносит пользу, будучи употреблен надлежащим образом в надлежащее время.


 
GrayFace ©   (2007-03-07 20:59) [55]

Игорь Шевченко ©   (07.03.07 14:06) [49]
Даешь множественное наследование и макросы

А макросы хорошо бы было.


 
Джо ©   (2007-03-07 21:08) [56]

> [55] GrayFace ©   (07.03.07 20:59)
> А макросы хорошо бы было.

Плохо :-)


 
просто так   (2007-03-07 22:08) [57]


> > [55] GrayFace ©   (07.03.07 20:59)
> > А макросы хорошо бы было.
>
> Плохо :-)

асче адин консерватор...
Если вделфи появятся макросы, Вас все заставят переписать с их использованием чтоли?


 
Игорь Шевченко ©   (2007-03-07 22:28) [58]


> Если вделфи появятся макросы, Вас все заставят переписать
> с их использованием чтоли?


Нет, придется разгребать код, написанный любителями макросов. А это зря потраченное время.


 
Petr V.Abramov   (2007-03-07 22:30) [59]

> Игорь Шевченко ©   (07.03.07 14:06) [49]
> Даешь множественное наследование и макросы
нет, дорогая, это ты даешь (с) анекдот
почему-то ни в одной среде множетвенного визуального наследования не сделано
может, конечно, индусы на лыжах кактаться не умеют, более чем вполне более чем возможно


 
просто так   (2007-03-07 22:38) [60]

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


 
Джо ©   (2007-03-07 22:39) [61]

> [60] просто так   (07.03.07 22:38)
> >>Нет, придется разгребать код, написанный любителями макросов.
> А это зря потраченное время.
> поменьше таких друзей-любителей. зато скольковремени можно
> сэкономить, юзая генерики, макросы. что вы так за "любителей"
> переживаете, неужели конкретно вам, в написании ваших программ
> гененерики непригодятся?

Лично мне — нет. Спокойно без них обхожусь, и уже не один год.


 
Игорь Шевченко ©   (2007-03-07 22:42) [62]

просто так   (07.03.07 22:38) [60]


> неужели конкретно вам, в написании ваших программ гененерики
> непригодятся?


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


 
просто так   (2007-03-07 22:50) [63]

с таким подходом нужно завязывать с програмированием. вы уверены что без генериков ваш код не травмирует отальных)?


 
Игорь Шевченко ©   (2007-03-07 22:53) [64]

просто так   (07.03.07 22:50) [63]


> с таким подходом нужно завязывать с програмированием


Боюсь, что поздно уже завязывать. Кроме того, кушать хочется, а оно знаешь ли, насущно.


> вы уверены что без генериков ваш код не травмирует отальных)?


До сегодняшнего дня жалоб не поступало :)


 
DrPass ©   (2007-03-07 22:56) [65]


> поменьше таких друзей-любителей

Понимаешь ли, поменьше их не станет. Станет только побольше, с годами. А мне, например, приходилось разбирать (и сейчас приходится сопровождать) плюсовый код, утыканный темплейтами и макросами. Если бы его аффтары сейчас были в моем городе, я бы не поленился - приехал бы в ним и придушил их к чертовой матери.
Не нужны в программе конструкции "для ленивых", которые усложняют ее чтение, пусть даже и облегчая написание. Тем более что польза от женериков весьма надуманна. Вам позарез нужен универсальный контейнер для классов? А попробуйте спроектировать приложение так, чтобы там не был нужен универсальный контейнер. Получится в 99.9% случаев, причем ничуть не хуже.


 
просто так   (2007-03-07 23:03) [66]

>>Кроме того, кушать хочется, а оно знаешь ли, насущно.
в том и дело, обсуждается вещь облегчающая добыванье лишнего бутера с икрой. можно спорить о чистоте языка, не зарабатывая на нем деньги, а так сказать  академически. если подойти с практической точки зрения, любые способы хороши, лишьбы быстрей и проще.
>>До сегодняшнего дня жалоб не поступало :)
точно пора))


 
Джо ©   (2007-03-07 23:05) [67]

Хорошо оно выходит «быстрей и проще», если потом сам в собственном коде разобраться можешь с трудом!.. Мда-с, вот оно, отношение к ремеслу как к халтуре в чистом виде.


 
просто так   (2007-03-07 23:09) [68]

>>Не нужны в программе конструкции "для ленивых", которые усложняют ее чтение, пусть даже и облегчая написание.
с конструкциями для "не ленивых" думаю будет нечуть не легче. при неоптимальной архитектуре.
кстати с генериками появляется такая штука как компилтим проверка типов, что нехило облегчает жизнь вообщето


 
просто так   (2007-03-07 23:11) [69]

б
> Джо ©   (07.03.07 23:05) [67]
>
> Хорошо оно выходит «быстрей и проще», если потом сам в собственном
> коде разобраться можешь с трудом!.. Мда-с, вот оно, отношение
> к ремеслу как к халтуре в чистом виде.

быстрей и проще у вас = халтурно? у меня нет.


 
Игорь Шевченко ©   (2007-03-07 23:13) [70]

просто так   (07.03.07 23:09) [68]


> кстати с генериками появляется такая штука как компилтим
> проверка типов, что нехило облегчает жизнь вообщето


Так она и без того вроде есть.


> если подойти с практической точки зрения, любые способы
> хороши, лишьбы быстрей и проще.


Copy/Paste - с практической точки зрения наиболее быстрый способ. И немного контекстной замены.


 
Sergey Masloff   (2007-03-07 23:21) [71]

Игорь Шевченко ©   (07.03.07 23:13) [70]
>Copy/Paste - с практической точки зрения
Так обобщенные типы (дженерики режет слух) и позволяют копипаста избежать. Неужели никто не писал по десятку потомков TList отличающиеся только тем что элементы должны быть экземплярами определенного класса и чтобы не требовалось постоянное приведение типов?


 
просто так   (2007-03-07 23:24) [72]

>>И немного контекстной замены.
вот вот, а потом нужно поправить чтонибудь одновременно в n unit`ах

>>Так она и без того вроде есть.
где она у tlist? возвращается просто pointer
у генериков будет возвращаться pmysuperpupertype


 
Игорь Шевченко ©   (2007-03-07 23:28) [73]

Sergey Masloff   (07.03.07 23:21) [71]


> Неужели никто не писал по десятку потомков TList отличающиеся
> только тем что элементы должны быть экземплярами определенного
> класса и чтобы не требовалось постоянное приведение типов?
>


Раньше писал. Потом прочитал умную книжку и перестал писать только затем, чтобы там хранились экземпляры определенного типа, а стал добавлять дополнительное поведение и классы перестали быть потомками TList, а стали список в себе инкапсулировать.

Кстати о книжках.


 
Sergey Masloff   (2007-03-07 23:32) [74]

Игорь Шевченко ©   (07.03.07 23:28) [73]
>Кстати о книжках.
15 числа я так понял ты идешь на семинар? Это соседнее с нашим основным офисом здание. Так что даже если я не пойду на сам семинар то пересечемся обязательно.


 
Игорь Шевченко ©   (2007-03-07 23:33) [75]

Sergey Masloff   (07.03.07 23:32) [74]

Договорились. Иду.


 
Sergey Masloff   (2007-03-07 23:34) [76]

Игорь Шевченко ©   (07.03.07 23:28) [73]
А про обертки из Бакнелла (я так понимаю) в чем упрощение по сравнению с обобщенным классом?


 
oxffff ©   (2007-03-07 23:36) [77]

Я тут вникаю в

At the implementation level, the primary difference is that C# generic type substitutions are performed at runtime and generic type information is thereby preserved for instantiated objects.

Означает ли это что мы можем инстанцировать Generics run time.
Функция возвращает TYPE. А я инстанцирую параметризованный класс использовая этот тип в качестве параметра?

Возможно ли это через  System.Activator:СreateInstance и

К сожалению/к счатью не настолько силен в .NET.


 
Sergey Masloff   (2007-03-07 23:36) [78]

Игорь Шевченко ©   (07.03.07 23:33) [75]
>Договорились. Иду.
Отлично.


 
просто так   (2007-03-07 23:36) [79]

>>стали список в себе инкапсулировать.
тлист, вид с боку. принципиальная разница - куча наследников или куча инкапсуляторов


 
Игорь Шевченко ©   (2007-03-07 23:45) [80]

Sergey Masloff   (07.03.07 23:34) [76]


> А про обертки из Бакнелла (я так понимаю) в чем упрощение
> по сравнению с обобщенным классом?


Не, не из Бакнелла. Из Фаулера, про рефакторинг. Там у него хорошая мысль есть, что незачем делать классы, которые ничего не делают - это мусор, а не классы.

просто так   (07.03.07 23:36) [79]


> тлист, вид с боку. принципиальная разница - куча наследников
> или куча инкапсуляторов


Разница вообще-то есть, мне в наследниках не требуется возможность вызывать методы TList"а Exchange, Delete и еще кучу.


 
Суслик ©   (2007-03-07 23:53) [81]

фигня а не топик.
один уперся как скала в первоначальное свое высказываение, другие пытаются сдвинуть скалу

(удалит же пост злыдеть какой-нить :(  )


 
просто так   (2007-03-07 23:55) [82]

>>Разница вообще-то есть, мне в наследниках не требуется возможность вызывать методы TList"а Exchange, Delete и еще кучу.
я понимаю, разницы нет в размерах копипаста.
а вот я нипонимаю почему рутинный копипаст не переложить на компилятор? и почему увидев в исходнике конструкцию "generic" он сразу становится непонятным. гораздо проще просмотреть 10 "почти" одинаковых  исходников, и выругаться найдя таки тот в котором мы "+" забыли исправить на "-", при контекстной замене


 
Суслик ©   (2007-03-07 23:56) [83]


> просто так   (07.03.07 23:55) [82]

ну что ты так убиваешься (только СВОЕ время впустую тратишь)  - это же религия: никогда не отказываться от своего первоначального высказывания.


 
oxffff ©   (2007-03-07 23:57) [84]


> фигня а не топик.
> один уперся как скала в первоначальное свое высказываение,
>  другие пытаются сдвинуть скалу
>
> (удалит же пост злыдеть какой-нить :(  )


Вы утверждали выше что и макросы будут.
А множественное наследование тоже?

Истина?


 
oxffff ©   (2007-03-08 00:01) [85]

>Суслик ©   (07.03.07 14:07) [50]
>и макросы будут, множественное наследие тоже будет

Это пост истина или шутка?


 
Celades ©   (2007-03-08 00:11) [86]

А можно вопрос? А зачем тогда такой делфи, если есть уже такой С++ или С#?


 
Игорь Шевченко ©   (2007-03-08 00:20) [87]

просто так   (07.03.07 23:55) [82]


> а вот я нипонимаю почему рутинный копипаст не переложить
> на компилятор? и почему увидев в исходнике конструкцию "generic"
> он сразу становится непонятным. гораздо проще просмотреть
> 10 "почти" одинаковых  исходников, и выругаться найдя таки
> тот в котором мы "+" забыли исправить на "-", при контекстной
> замене


Я, собственно с этими generics в шарпе нахлебался достаточно, не говоря уже о С++, любую хорошую идею обычно умудряются довести до состояния полностью неочевидного кода и главное, чтобы в итоге что-то написать полезное для работы с классами или интерфейсами (в C#), прихоится выполнять массу работы по склейке этих вот...параметризованных типов.
Время жалко, если честно.


 
oxffff ©   (2007-03-08 00:26) [88]


> Я, собственно с этими generics в шарпе нахлебался достаточно,
>  не говоря уже о С++, любую хорошую идею обычно умудряются
> довести до состояния полностью неочевидного кода и главное,
>  чтобы в итоге что-то написать полезное для работы с классами
> или интерфейсами (в C#), прихоится выполнять массу работы
> по склейке этих вот...параметризованных типов.
> Время жалко, если честно.


Подождите.
Сделать можно даже то, о чем я спрашивал
oxffff ©   (07.03.07 23:36) [77].

Кстати C++ этого не может.

The MakeGenericType method allows you to write code that assigns specific types to the type parameters of a generic type definition, thus creating a Type object that represents a particular constructed type. You can use this Type object to create run-time instances of the constructed type.

Вот это метапрограммирование.


 
просто так   (2007-03-08 00:26) [89]

>>Время жалко, если честно.
ок.


 
Игорь Шевченко ©   (2007-03-08 00:32) [90]

oxffff ©   (08.03.07 00:26) [88]


> Вот это метапрограммирование.


У любого метапрограммирования есть два очень больших недостатка - это большое количество "клеевого" кода, превращающего вроде бы очевидную программу в совершенно неочевидную и перенос ошибок с времени компиляции на время выполнения.


 
oxffff ©   (2007-03-08 00:45) [91]


> У любого метапрограммирования есть два очень больших недостатка
> - это большое количество "клеевого" кода, превращающего
> вроде бы очевидную программу в совершенно неочевидную и
> перенос ошибок с времени компиляции на время выполнения.
>


Я с вами полностью согласен.
Все это так запутает, что элегантность может превратиться в ужасную
невыразительность.
Почему я спросил, просто интересно внутреннее устройство.
Точнее как именно MSIL хранит generic, как инстанцирует.
Как это делает в run time.
Хотя это очень просто посмотреть под отладчиком IL.
Найти бы время на это.


 
Игорь Шевченко ©   (2007-03-08 00:50) [92]

oxffff ©   (08.03.07 00:45) [91]

Можно еще и MONO посмотреть, проект с исходниками. Я, честно говоря, не помню, сделали они уже generics или нет.


 
oxffff ©   (2007-03-08 01:29) [93]


> Игорь Шевченко ©   (08.03.07 00:50) [92]
> oxffff ©   (08.03.07 00:45) [91]
>
> Можно еще и MONO посмотреть, проект с исходниками. Я, честно
> говоря, не помню, сделали они уже generics или нет.


Да я кажется расскатал слишком губу. Я думал что этот код работает

public class GenericSample<T>
{
   public GenericSample()
   {
       
   }
   public void InvokeUnknown(T x)
   {
   x.Someproc();
   }
}

Попытка вызвать у  неизвестного типа метод.
Думал, как это сделали.
Первое решение через invoke методов через Reflection.
Но это медленно. Потом возможно первый вызов через Reflection, а следующие напрямую.

Но этот код не работает

Error 1 T" does not contain a definition for "Someproc"

Как оказалось generics то, совсем не generics.

Что касаемо run type инстанцирования их. То не думаю, что это не решаемо.

То ли дело С++ и template. Но там препроцессор.
Да и программирование там одно сплошное - Макропрограммирование.


 
Celades ©   (2007-03-08 01:33) [94]


> То ли дело С++ и template. Но там препроцессор.

шаблоны там обрабатываются компилятором.


 
oxffff ©   (2007-03-08 01:46) [95]


> Celades ©   (08.03.07 01:33) [94]
>
> > То ли дело С++ и template. Но там препроцессор.
>
> шаблоны там обрабатываются компилятором.


А вы уверены?
Открываем книгу Альфред Ахо "Компиляторы принципы, технологии иструменты", MSDN и google.

Из google

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

В С++ этy функцию выполняет препроцессор - программа, которая занимается различными подстановками и преобразованиями в исходном коде, после чего передает трансформированный код компилятору. Это и есть механизм шаблонов.

Так что вы ошибаетесь.
Но не суть важно.

Важно что С++ делает это complite Time


 
oxffff ©   (2007-03-08 01:49) [96]

http://www.realcoding.net/article/view/4265


 
Celades ©   (2007-03-08 02:19) [97]


> А вы уверены?

абсолютно

>  С++ этy функцию выполняет препроцессор

нет. В С++ препроцессор С, поэтому о шаблонах он ничего не знает, как и отипах и т.д.

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

нет. Вы сами не понимаете, что такое шаблоны в С++. Они обрабатываются компилятором. Поэтому в частности возможны вывод типов и epression templates. Например:

template< typename T >
T min( T& a, T& b )
{
  return a < b ? a : b;
}
//...
int a = min( 234, 25 );


 
Celades ©   (2007-03-08 02:42) [98]


> http://www.realcoding.net/article/view/4265

бред


 
jack128 ©   (2007-03-08 03:08) [99]

Celades ©   (08.03.07 2:19) [97]
Они обрабатываются компилятором

это понятно, но смысл от этого не менчется. В С++ - шаблоны - суть макросы. В отличии от C#.


 
Celades ©   (2007-03-08 03:13) [100]


> это понятно, но смысл от этого не менчется. В С++ - шаблоны
> - суть макросы. В отличии от C#.

да. продвинутые "макросы"


 
oxffff ©   (2007-03-09 11:16) [101]


> > А вы уверены?
>
> абсолютно
>
> >  С++ этy функцию выполняет препроцессор
>
> нет. В С++ препроцессор С, поэтому о шаблонах он ничего
> не знает, как и отипах и т.д.


Собственно у меня нет желания вам что то доказывать.
Вы даже внимательно не хотите прочитать.


> jack128 ©   (08.03.07 03:08) [99]
> Celades ©   (08.03.07 2:19) [97]
> Они обрабатываются компилятором
> это понятно, но смысл от этого не менчется. В С++ - шаблоны
> - суть макросы. В отличии от C#.


Constraint  Description  
where T: struct
The type argument must be a value type. Any value type except Nullable can be specified. See Using Nullable Types (C# Programming Guide) for more information.

where T : class
The type argument must be a reference type, including any class, interface, delegate, or array type.

where T : new()
The type argument must have a public parameterless constructor. When used in conjunction with other constraints, the new() constraint must be specified last.

where T : <base class name>
The type argument must be or derive from the specified base class.

where T : <interface name>
The type argument must be or implement the specified interface. Multiple interface constraints can be specified. The constraining interface can also be generic.

where T : U
The type argument supplied for T must be or derive from the argument supplied for U. This is called a naked type constraint.

....
By constraining the type parameter, you increase the number of allowable operations and method calls to those supported by the constraining type and all types in its inheritance hierarchy. Therefore, when designing generic classes or methods, if you will be performing any operation on the generic members beyond simple assignment or calling any methods not supported by System.Object, you will need to apply constraints to the type parameter.

When applying the where T : class constraint, it is recommended that you do not use the == and != operators on the type parameter because these operators will test for reference identity only, not for value equality. This is the case even if these operators are overloaded in a type used as an argument. The following code illustrates this point; the output is false even though the String class overloads the == operator.

Весьма сомнительные шаблоны. Поскольку для "нормальной работы", кроме assign operation, мы должны использовать constraints, фактически сокращая generalization, т.е указывая базовый тип, мы расширяем набор операций.

Нужны ли нам такие псевдошаблоны? (кроме assign operation)


 
pasha_golub ©   (2007-03-09 13:01) [102]


> Игорь Шевченко ©   (07.03.07 23:28) [73]


>
> Раньше писал. Потом прочитал умную книжку и перестал писать
> только затем, чтобы там хранились экземпляры определенного
> типа, а стал добавлять дополнительное поведение и классы
> перестали быть потомками TList, а стали список в себе инкапсулировать.
>
>

А можно пример, пожалуйста? Вот у меня сейчас около 10 классов, и соответственно 10 списков на каждый. Нехилое загромождение. Как это победить по умному?


 
Sapersky   (2007-03-09 14:37) [103]

Есть такой трюк, который можно применять и со стандартным TList, и со своими контейнерами, хотя его наверняка посчитают "небезопасным":

Type
 PPointerListRef = ^PPointerList; // ну не PPPointerList же :)

 TListEx = class(TList) // или ObjectList
 private
   FRef : PPointerListRef;
 protected
   procedure Grow; override; // begin Inherited; FRef^ := List; end;
 public
   constructor Create(ARef : PPointerListRef); // begin FRef := ARef; end;
   // ещё можно Clear переопределить
 end;

При использовании:
Type
   PMyClassList = ^TMyClassList;
   TMyClassList = array[0..MaxListSize - 1] of TMyClass;

Var
 List : TListEx;
 Items : PMyClassList;
List := TListEx.Create(@Items);

Далее, если нужен доступ к элементам, обращаемся к Items.
Объявления типов всё равно требуются, но т.к. это не классы, они не маячат в Code Explorer и не раздражают :)


 
oxffff ©   (2007-03-09 14:46) [104]

>Нужны ли нам такие псевдошаблоны? (кроме assign operation)

Все же отвечу сам на свой вопрос. Польза будет.
Только вот очень интересна реализация для Win32.

В этом может оказать содействие Дмитрий Тимохов.

Давайте у него и спросим.

Уважаемый Дмитрий.
Как они собираются их реализовать?


 
Суслик ©   (2007-03-09 14:58) [105]

Не знаю (честно)


 
Игорь Шевченко ©   (2007-03-09 15:29) [106]

pasha_golub ©   (09.03.07 13:01) [102]


> А можно пример, пожалуйста? Вот у меня сейчас около 10 классов,
>  и соответственно 10 списков на каждый. Нехилое загромождение.
>  Как это победить по умному?


Пример можно посмотреть в классе TDataSet - списком являются Fields, но, как ты понимаешь, TDataSet не наследуется от списка, а содержит список полей в себе, наряду с другими полезными методами и свойствами. Хотя мог бы и наследоваться от списка...


 
oxffff ©   (2007-03-09 16:54) [107]


> Не знаю (честно)


А они то сами знают?
Хотят их ввести аж c delphi 1.0 (Где то читал).


 
Суслик ©   (2007-03-09 17:28) [108]


> А они то сами знают?
> Хотят их ввести аж c delphi 1.0 (Где то читал).

вообще репорт недавно открыли. номер точно не помню.


 
oxffff ©   (2007-03-09 17:45) [109]


> Суслик ©   (09.03.07 17:28) [108]
>
> > А они то сами знают?
> > Хотят их ввести аж c delphi 1.0 (Где то читал).
>
> вообще репорт недавно открыли. номер точно не помню.


Регулярно посейшая этот репорт.
Только странно.
Голосов месяц назад было 130. А сейчас 125.

Думаю это показательно. Результат с нововедения из .NET налицо.
Людям не нравиться.


 
Суслик ©   (2007-03-09 17:46) [110]

голосов меньше стало т.к. кол-во голосов у каждого чела ограничено, поэтому некоторые голоса просто поснимали в пользу других репортов.


 
Celades ©   (2007-03-09 20:09) [111]


> Собственно у меня нет желания вам что то доказывать.
> Вы даже внимательно не хотите прочитать.

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


 
Игорь Шевченко ©   (2007-03-09 21:37) [112]


> Вот от этого и ест все проблемы комьюнити делфи, то что
> большинство не хотят учиться и развиваться.


Это везде


 
oxffff ©   (2007-03-09 23:08) [113]


> Celades ©   (09.03.07 20:09) [111]
>
> > Собственно у меня нет желания вам что то доказывать.
> > Вы даже внимательно не хотите прочитать.
>
> прочитать что, тут статью которыю ты привел, то там ни один
> код не компиляруется, т.к. в С++ нет просто таких констоукций,
>  которые там приведены. и автор явно не в себе.

Вы правы.
A class template is first specialized and then instantiated by the compiler.

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


Спасибо за комплимент.



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.77 MB
Время: 0.046 c
15-1173540667
PARUS
2007-03-10 18:31
2007.04.01
JAVA на компе


2-1173426039
wwwrr
2007-03-09 10:40
2007.04.01
constructor


11-1144162375
Vedun
2006-04-04 18:52
2007.04.01
Просмотр htm-страниц с помощью TKOLWebBrowser


3-1168392288
NovaC
2007-01-10 04:24
2007.04.01
dBaseIV &amp; password


2-1173258178
sergeyst
2007-03-07 12:02
2007.04.01
Как убрать слэш из пути





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский