На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
Страницы: (20) « Первая ... 8 9 [10] 11 12 ...  19 20 все  ( Перейти к последнему сообщению )  
> Как вы относитесь к паскалю? , (есть гипотеза)
   
Как вы относитесь к паскалю?
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Цитата Mr.Delphist @
    Да-да, множественное наследование всегда было священой коровой сишников у нас в универе. Но когда начинаешь спрашивать, а где ты его реально применяешь, начинаются отмазки "ну... мнэээ... вот не надо пока..."

    Ну примеси и подобные вещи: http://en.wikipedia.org/wiki/Mixin - довольно удобны.
      А после этого они тоже говорят, мол, множественное наследование не нужно?
        Цитата Qraizer @
        А после этого они тоже говорят, мол, множественное наследование не нужно?
        Множественное наследование - не нужно. ;)

        Добавлено
        На самом деле, примеси - это не попытка обойти запрет на множественное наследование. Это лучше, чем множественное наследование. И отсутствие примесей в C++ - существенный недостаток.
        Сообщение отредактировано: applegame -
          Цитата applegame @
          примеси - это не попытка обойти запрет на множественное наследование
          ...
          отсутствие примесей в C++ - существенный недостаток.

          Потрясающая логика :D В C++ не стали запрещать множественное наследование, потому миксины, как отдельная конструкция, там не нужны. То же касается и интерфейсов.

          Добавлено
          Цитата applegame @
          лучше, чем множественное наследование

          Чем?
          Сообщение отредактировано: D_KEY -
            Цитата applegame @
            На самом деле, примеси - это не попытка обойти запрет на множественное наследование.

            Я сколько не пытался, не могу понять разницу между примесями и множественным наследованием.
              applegame, простое - тоже.
                Цитата D_KEY @
                Чем?
                Цитата korvin @
                Я сколько не пытался, не могу понять разницу между примесями и множественным наследованием.
                Миксины не встраиваются в иерархию классов. Никаких вам неопределенных ромбиков и лишних сущностей.
                Например, посмотрим на бустовские интрузивные контейнеры. Чтобы класс мог быть элементом интрузивного контейнера его приходится наследовать от специальных классов, нужных только чтобы добавить несколько членов. Можно конечно и руками вписать нужные элементы, но это как-то совсем уже крайний случай. А если один класс должен быть в нескольких контейнерах? Да еще могут быть применены различные стратегии. В итоге иерархия засирается кучей коротких веток, которым там делать явно нечего. Миксины идеально подходят для этой задачи. Разница, скорее эстетическая, чем практическая, тем не менее.
                  Цитата applegame @
                  Никаких вам неопределенных ромбиков и лишних сущностей.

                  И что будет, если включить в класс два миксина с одинаковыми методами?
                    Цитата korvin @
                    И что будет, если включить в класс два миксина с одинаковыми методами?
                    Зависит от языка. В D это решается указанием идентификатора при подмешивании. После чего можно уточнить вызываемый метод применяя соответствующий идентификатор.
                      applegame, если у нас есть механизм наследования, который способен решить все эти задачи, то зачем нам вводить лишние сущности в виде отдельного механизма интерфейсов и отдельного механизма миксинов, да еще и наследование при этом оставлять, только функциональность обрезать? И ты еще что-то заявляешь о лишних сущностях?
                        Цитата applegame @
                        Никаких вам неопределенных ромбиков и лишних сущностей.
                        Неопределённых ромбиков и лишних сущностей не существует. Вам наврали.
                          Цитата D_KEY @
                          applegame, если у нас есть механизм наследования, который способен решить все эти задачи, то зачем нам вводить лишние сущности в виде отдельного механизма интерфейсов и отдельного механизма миксинов, да еще и наследование при этом оставлять, только функциональность обрезать?
                          Универсальное зачастую хуже специализированного. Особенно когда самая главная функциональность практически не востребована.
                          Цитата D_KEY @
                          И ты еще что-то заявляешь о лишних сущностях?
                          Лишние сущности - это гусеницы на самолете. Прикинь, самолет, который может летать, а может и бульдозером поработать. Лично я предпочитаю две отдельные специализированные машины: самолет и бульдозер.
                          Цитата Qraizer @
                          Неопределённых ромбиков и лишних сущностей не существует. Вам наврали.
                          Существует еще как. Правда C++ решил их своим излюбленным методом - костылями.
                          Сообщение отредактировано: applegame -
                            Цитата applegame @
                            Универсальное зачастую хуже специализированного. Особенно когда самая главная функциональность практически не востребована.
                            ...
                            Лишние сущности - это гусеницы на самолете. Прикинь, самолет, который может летать, а может и бульдозером поработать. Лично я предпочитаю две отдельные специализированные машины: самолет и бульдозер.

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

                            Добавлено
                            Цитата applegame @
                            Правда C++ решил их своим излюбленным методом - костылями.

                            Аргументировано.
                              Цитата D_KEY @
                              Старые версии Си требовали объявлений в начала блока, т.е. разница с паскалем все-равно была.
                              Также старые версии требовали локальные объявления с инициализацией размещать после объявлений.
                              Так правильно:
                              ExpandedWrap disabled
                                int a;
                                int b = 0;

                              А так - ошибка:
                              ExpandedWrap disabled
                                int a = 0;
                                int b;


                              Добавлено
                              Цитата applegame @
                              Лишние сущности - это гусеницы на самолете.

                              user posted image
                              user posted image
                              Сообщение отредактировано: trainer -
                                trainer, на самом деле и так и так правильно, и все соответствующие стандарту (описанию) языка компиляторы оба примера компилировали без проблем. Другое дело, что некоторые из них накладывали разные ограничения, например, при использовании goto или switch не в любом блоке можно было разместить объявление.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (20) « Первая ... 8 9 [10] 11 12 ...  19 20 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0967 ]   [ 19 queries used ]   [ Generated: 27.07.26, 13:30 GMT ]