Конференция "Прочее" » Филосовский вопрос
 
  • Palladin © (14.05.08 16:41) [140]

    > Рихтера можно для начала почитать.

    а я его и читаю... просто поискал по ключевым словам ответов, смотрю это дело у него обсуждается на ~480 странице... а я еще дальше ~120 не ушел :)
  • DiamondShark © (14.05.08 17:07) [141]

    > Expert .NET IL Assembler.

    А это зачем?! Во всяком случае, для принятия решения "а стоит ли?".
    Всё равно что выбирая: "Писать ли мне на Дельфи, или может на Ц++ остаться?" -- начать читать х86 ассемблер.
  • oxffff © (14.05.08 17:16) [142]

    > DiamondShark ©   (14.05.08 17:07) [141]


    У меня после прочтения стало выстраиваться более точное представление работы .NET. А соблазна перейди на .NET стало меньше.
  • oxffff © (14.05.08 17:18) [143]
    >oxffff ©   (14.05.08 17:16) [142]

    Скорее на C++\Managed C++.

    Подождем Tiburon.
  • Palladin © (14.05.08 17:18) [144]

    > Подождем Tiburon.

    что за зверь?
  • Дмитрий С (14.05.08 17:41) [145]

    > а за это больно бьют по нежным местам... ЮЗ, помню, хорошо
    > рассказывал, за, помоему, $10 за warning и 5$ за hint. уважам'с
    > и однозначно одобрям'c.

    А как же например?
    Symbol '<element>' is specific to a platform ?

    ------------------
    В Си запрещено создавать экземпляры абстрактного класса на этапе компилирования? Или запрещено даже в качестве типа переменной использовать?
  • Palladin © (14.05.08 17:46) [146]

    > Symbol '<element>' is specific to a platform ?

    это к Юре


    > В Си запрещено создавать экземпляры абстрактного класса
    > на этапе компилирования?

    там вообще запрещено классы объявлять :)
  • Игорь Шевченко © (14.05.08 17:48) [147]

    > А как же например?
    > Symbol '<element>' is specific to a platform ?


    {$WARN SYMBOL_PLATFORM OFF}

    Все эти Platform-specific после смерти Kylix годятся разве что в кунсткамеру
  • DiamondShark © (14.05.08 18:40) [148]

    > Или запрещено даже в качестве типа переменной использовать?

    Использовать в качестве типа переменной -- это и есть создавать экземпляры.
    Разрешено использовать в качестве типа указателя.
  • Юрий Зотов © (14.05.08 19:15) [149]
    > KSergey ©   (14.05.08 11:40) [99]

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

    +100.

    1. Олег (Ega23) - обрати внимание на эти слова. Когда твоим продуктом станет не end-user application, а что-то вроде VCL (пусть даже и сильно меньшего масштаба) - тогда ты оценишь полезность abstract.

    2. На строке AbstractClass.Create() компилятор выдает предупреждение. Для тех, кто соблюдает культуру программизма этого вполне достаточно. А те, кто не соблюдает, все равно налепят ошибок - если не здесь, так в других местах. Поэтому что-то там запрещать - особого смысла не имеет. Достаточно предупредить.
  • Ega23 © (14.05.08 19:24) [150]

    > Когда твоим продуктом станет не end-user application, а
    > что-то вроде VCL (пусть даже и сильно меньшего масштаба)
    > - тогда ты оценишь полезность abstract.


    Ну возможно. Я думаю, мы по этому поводу ещё приватно поговорим...  :)
  • Юрий Зотов © (14.05.08 19:33) [151]
    > Ega23 ©   (14.05.08 19:24) [150]

    На рыбалке?
    :о)))))))))
  • Anatoly Podgoretsky © (14.05.08 21:24) [152]
    > DiamondShark  (14.05.2008 16:05:09)  [129]

    Так и в Дельфи тоже, абстрактные классы инстанциировать нельзя.
    Но мы то не про классы, а про методы, а это разные вещи.
  • Ega23 © (14.05.08 21:45) [153]

    > Юрий Зотов ©   (14.05.08 19:33) [151]
    >
    > > Ega23 ©   (14.05.08 19:24) [150]
    >
    > На рыбалке?
    > :о)))))))))
    >


    Это через полтора месяца. Я думаю 28 мая... :)
  • Loginov Dmitry © (14.05.08 22:41) [154]
    > А зачм в Delphi нужна директива abstract? В чём её прелесть?
    >


    Полезная директива. Помимо контроля, ее можно использовать и для более земных целей. Допустим есть приложение, работающее с некоторым терминалом. Разработан базовый абстратный класс, к которому выполняются обращения из основного приложения, например:


    TTerminalDriver = class
    public
     function GetVersion: Integer; virtual; abstract;
     procedure Config; virtual; abstract;
     function GetData: OleVariant; virtual; abstract;
    end;



    Для взаимодействия с каждым типом терминала (у каждого производителя будет свой протокол) удобно располагать код в DLL (по одной DLL для каждого типа терминала). В каждой DLL есть тот же класс, но без директивы "abstract", т.е. реализация необходимой функциональности. В каждой DLL экспортируется одна функция "InitDriver", в которой создается объект класса TTerminalDriver и возвращается в виде результата. Остальное думаю понятно - что один драйвер, что десять, для приложения разницы нет никакой. При разработке новой DLL не нужно изменять старые и т.д. Одна особенность: новые функции добавляются всегда в конец класса, при этом увеличивается номер версии.
    Того же можно достичь и массой других способов, но этот - самый краткий (короче уже просто некуда) и простой.
  • Palladin © (14.05.08 22:48) [155]
    только некорректный...
  • ketmar © (14.05.08 22:54) [156]
    >[154] Loginov Dmitry © (2008-05-14 22:41:00)
    а ещё за вынесение классов в DLL надо бить канделябром. чтобы в следующий раз неповадно было.

    ---
    Understanding is not required. Only obedience.
  • Palladin © (14.05.08 23:03) [157]
    вынесение то фик с ним, пусть там у себя внутри длл работает сколько влезет, но возврат результатом экспортной функции чужеродного тела и работа с ним в хосте как с кровинушкой... зцих с гвоздями. пожизненный.

    но, хозяйкам на заметку, устал уже говорить, замена dll на bpl все решает :)

    ну или ручное инстанцирование в dll общих rtti и мм по образу и подобию bpl
  • Loginov Dmitry © (14.05.08 23:12) [158]
    > а ещё за вынесение классов в DLL надо бить канделябром.
    > чтобы в следующий раз неповадно было.


    Канделябр сломаешь :)
  • ketmar © (14.05.08 23:25) [159]
    >[157] Palladin © (2008-05-14 23:03:00)
    >замена dll на bpl все решает :)
    кроме того, что ничем иным как дельфой они не делаются. отсюда я и говорю, что нефиг специфические вещи в DLL пихать.

    ---
    Understanding is not required. Only obedience.
 
Конференция "Прочее" » Филосовский вопрос
Есть новые Нет новых   [134435   +13][b:0.001][p:0.001]