На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++

Страницы: (117) « Первая ... 70 71 [72] 73 74 ...  116 117  ( Перейти к последнему сообщению )  
> Delphi vs C++ , Часть 1
    Цитата Romkin @
    Цитата Alex Forth @
    Пиши пример с перегрузкой, компиль его в обьектник ( или в dll), дизасемблируй и рассматривай свой манглинг

    Может быть. Поверю.
    Но что мешает делать так:
    Цитата
    00001230 3 0005 __fastcall Uexproc::CoolProc(char)
    0000122C 4 0006 __fastcall Uexproc::CoolProc(int)
    У?

    Ы!
    Если смотреть с помощью борландовых тулзовин, то они мангленые имена автоматом переводят в удобочитаемый вид.
    Попробуй найти таку строку в бинарнике ;)
      Да.

      Добавлено
      Цитата Alex Forth @
      Если смотреть с помощью борландовых тулзовин, то они мангленые имена автоматом переводят в удобочитаемый вид.
      Попробуй найти таку строку в бинарнике

      Хм. @Uexproc@CoolProc$qqrc @Uexproc@CoolProc$qqri
      И это так сильно отличается?
        Цитата Romkin @
        Да.

        Добавлено
        Цитата Alex Forth @
        Если смотреть с помощью борландовых тулзовин, то они мангленые имена автоматом переводят в удобочитаемый вид.
        Попробуй найти таку строку в бинарнике

        Хм. @Uexproc@CoolProc$qqrc @Uexproc@CoolProc$qqri
        И это так сильно отличается?

        Ну вот ты и нашел манглинг в Делфи, поздравляю!
          Цитата Alex Forth @
          Ну вот ты и нашел манглинг в Делфи, поздравляю!

          Спасибо! :lol:
          А как это выглядит у С++?
            TBaseColors::TBaseColors()

            Borland C++ @TBaseColors@$bctr$qv
            gcc c атрибутом dllimport _imp___ZN11TBaseColorsC1Ev
            Сообщение отредактировано: Alex Forth -
              Цитата daevaorn @
              да, и посмотри что значить перегрузка функций, а то опять смешишь народ.

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

              Ссылка
              На самом деле речь шла не о перегрузке, а о переопределении (overriding).
              Цитата Alex Forth @
              Тут речь идет о том в С++ вместо интерфейса используется абстрактный класс. Т е класс с виртуальными методами.
              Архимедом было высказано утверждение, что в Делфи интерфейс является ни чем иным, как аналогом обстрактного класса в С++ и, следовательно, машинный код для вызова метода ч-з интерфейс в Делфи будет подобен вызову виртуального метода в С++. Смайк с этим не согласился.

              Ну во первых фишку с абстрактным классом можно и в Delphi сделать. Только это будет неэффективно.

              Дельфийский интерфейс не может быть аналогом абстрактного класса, потому что он может иметь множество различных реализаций. В C++ это реализуется множественным наследованием, но в Delphi-то его нет. Еще один аргумент: нельзя реализовывать только часть интерфейса (для наследников абстрактных классов это возможно).

              Цитата trainer @
              Другое тяжелое наследие - динамическое наследование методов с колоссальным оверхедом по времени исполнения.

              Ну а кто заставляет пользоваться динамическим наследованием методов? Есть ведь виртуальные методы.

              Цитата Alex Forth @
              А вот Делфи выступает в той же весовой категории, что и С++.

              Ну не совсем. Все-таки ресурсоемкий код лучше на C++ писать. Хотя бы потому что C++-компиляторы умеют оптимизировать под процессор. Зато на Delphi удобно писать бизнес-логику.

              Цитата archimed7592 @
              Последний раз для совсем слепых: в Дельфи нет возможности делать такие же быстрые, масштабируемые и удобные в использовании системы, как на С++ потому что там нет вопросов.

              :blink:

              Цитата Allexx @
              Вся полезная часть программы в обработчиках событий, даже по функциям не разбито, всё тупо в обработчиках!! Связаны все модули между собой кучей глобальных переменных!

              А я работал с одним сишником. Он написал приложение (MFC), но удобство его было ниже плинтуса. Поэтому было решено написать интерфейс и логику приложения на Delphi, а из плюснутого кода сделать ядро, функции которого и будут вызываться в Delphi-приложении (в основном это отрисовку). Он месяц делал библиотеку. Но что вышло в итоге? Это оказалось то же MFC приложение, со всем хламом. И действительно, много методов было прочно зашито в обработчики сообщений от элементов интерфейсов в диалогах. А ведь по сути требовалось только возможность отрисовки на DC!

              Цитата B.V. @
              И более того - во времена VB5/6 ваш чудо-Delphi практически ничем не превосходил VB.

              Да аргументированно. А собственно чем?

              M
              mo3r, daevaorn, последнее предупреждение! Те, кто считает себя пупом земли и будут переходить на личности будут в этом разделе на премодерации. Хотите показать свой интеллект — пишите аргументированно, а не кидайтесь ссылками и ярлыками.
                Цитата Alex Forth @
                gcc c атрибутом dllimport _imp___ZN11TBaseColorsC1Ev

                Во-во. Об этом я, собственно, и говорил.
                Впрочем, каюсь: уели :)
                Все-таки подумать придется, о чем бы еще пошуметь :(
                  Цитата
                  Ну во первых фишку с абстрактным классом можно и в Delphi сделать. Только это будет неэффективно.

                  Доказательства на всеобщее обозрение!
                    Цитата Smike @
                    Он месяц делал библиотеку. Но что вышло в итоге? Это оказалось то же MFC приложение, со всем хламом. И действительно, много методов было прочно зашито в обработчики сообщений от элементов интерфейсов в диалогах. А ведь по сути требовалось только возможность отрисовки на DC!

                    И он выжил? :blink:
                      Цитата Smike @
                      Ну а кто заставляет пользоваться динамическим наследованием методов?
                      Да в общем-то никто кроме самого Borland. :) Загляни на досуге в исходники VCL
                        Цитата Smike @
                        Еще один аргумент: нельзя реализовывать только часть интерфейса (для наследников абстрактных классов это возможно).

                        Точно? ;) А чистые виртуальные (pure virtual) методы?
                        Цитата Smike @
                        Ну а кто заставляет пользоваться динамическим наследованием методов? Есть ведь виртуальные методы.

                        Кстати, а что имеется в виду под динамическим наследованием? Если не то же, что и виртуальные методы, то что это тогда?
                          Цитата trainer @
                          Да в общем-то никто кроме самого Borland. Загляни на досуге в исходники VCL

                          Ты туда заглянул, увидел dynamic, и сразу сказал "фи"? :)
                          Там применение вполне обосновано: ну не чувствителен DoClick, например, к скорости вызова.

                          Добавлено
                          Цитата Flex Ferrum @
                          Начало выражения 'ID(ID)' может обозначать как вызов функции с переменной в качестве параметра, а может - как начало определения функции.

                          Может, начинать определение функции со слова "def"?
                            Цитата mo3r @
                            Кстати, а что имеется в виду под динамическим наследованием? Если не то же, что и виртуальные методы, то что это тогда?
                            Это такой вызов, когда адрес функции последовательно ищется по таблицам с восхождением от потомка к предку, пока не найдет реализацию.

                            Цитата Romkin @
                            Ты туда заглянул, увидел dynamic, и сразу сказал "фи"?
                            Там применение вполне обосновано: ну не чувствителен DoClick, например, к скорости вызова.
                            ExpandedWrap disabled
                                  procedure Paint; dynamic;
                            Охотно верю, что перерисовка компонентов не чувствительна к скорости выполнения. :)
                              Цитата trainer @
                              Охотно верю, что перерисовка компонентов не чувствительна к скорости выполнения.

                              Не ерничай. Не к скорости выполнения, а к скорости вызова.
                                Цитата mo3r @
                                Точно? ;) А чистые виртуальные (pure virtual) методы?

                                Точнее не бывает. Методы в интерфейсах не имеют атрибутов, им можно задавать только тип вызова.
                                Цитата Flex Ferrum @
                                Что ты по этому поводу думаешь?

                                Не знаю, я же пока этот функционал не реализовывал. Но мне кажется, что нужно упор делать на операцию присвоения (=). Для условных операций делаем ==, чтобы не было разночтений.

                                Цитата trainer @
                                Охотно верю, что перерисовка компонентов не чувствительна к скорости выполнения. :)

                                ExpandedWrap disabled
                                    TGraphicControl = class(TControl)
                                    private
                                      FCanvas: TCanvas;
                                      procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
                                    protected
                                      procedure Paint; virtual;
                                      property Canvas: TCanvas read FCanvas;
                                    public
                                      constructor Create(AOwner: TComponent); override;
                                      destructor Destroy; override;
                                    end;
                                   
                                    TCustomControl = class(TWinControl)
                                    private
                                      FCanvas: TCanvas;
                                      procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
                                    protected
                                      procedure Paint; virtual;
                                      procedure PaintWindow(DC: HDC); override;
                                      property Canvas: TCanvas read FCanvas;
                                    public
                                      constructor Create(AOwner: TComponent); override;
                                      destructor Destroy; override;
                                    end;

                                Где тут динамический Paint?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (117) « Первая ... 70 71 [72] 73 74 ...  116 117
                                Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0934 ]   [ 15 queries used ]   [ Generated: 3.08.25, 05:38 GMT ]