На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 136 137 [138] 139 140 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    http://files.rsdn.ru/74426/spirit_crash.png волшебно =)

    Обажаю спирит :) Он еще и компилируется не хило так...
    Но с другой стороны, лучше spirit пока ничего нет.

    Добавлено
    Цитата trainer @
    Ну да, в C++ возможны очень сложные шаблоны. Программист использует их только и исключительно по собственном желанию и добровольно соглашается на возможные сложности при компиляции/отладке.

    Вопрос в том, зачем разработчики boost'а ТАК используют шаблоны, всегда ли это оправдано, и что можно сказать о таком языке, в котором для реализации некоторых вещей просто необходимо прибегать к такому монстрообразному коду...
      вот еще небольшой вброс от одного товарища:
      Цитата
      Цитата
      Класс состоящий только из виртуальных функций фактически является аналогом интерфейса в таких языках как C# или Java

      чушь. отнаследуйся от двух "классов, состоящих только из (чисто) виртуальных функций", имеющих совпадающие сигнатуры, и убедись, что интерфейсов в C++ нет (не было и не будет)

      -- а в чем подвох?
      Цитата
      C#, C++ -- первое соберётся, второе - нет
        korvin, то, что интерфейсов в С++ нет говорилось уже неоднократно. Другое дело, что если в языке есть множественное наследование и абстрактные классы, то интерфейсы и не нужны, по крайней мере такие, какие они в C#, Java и Delphi.
          Цитата D_KEY @
          korvin, то, что интерфейсов в С++ нет говорилось уже неоднократно. Другое дело, что если в языке есть множественное наследование и абстрактные классы, то интерфейсы и не нужны, по крайней мере такие, какие они в C#, Java и Delphi.

          ты не прочитал вторую цитату:
          Цитата
          C#, C++ -- первое соберётся, второе - нет

          =)
            ExpandedWrap disabled
              class IA
              {
              public:
                  virtual void f() = 0;
              };
               
              class IB : virtual public IA
              {
              public:
                  virtual void g() = 0;
              };
               
              class A : virtual public IA
              {
              public:
                  virtual void f() {}
              };
               
              class B : public A, public IB
              {
              public:
                  virtual void g() {}
              };
               
              int main()
              {
                B b;
               
                b.f();
                b.g();
               
                return 0;
              }
            Вполне нормально собирается. И даже работает.
              Цитата D_KEY @
              что можно сказать о таком языке, в котором для реализации некоторых вещей просто необходимо прибегать к такому монстрообразному коду...
              можно сказать то, что в нем можно сделать то, чего первоначально не предполагалось.

              Добавлено
              Цитата D_KEY @
              зачем разработчики boost'а ТАК используют шаблоны
              Странно слышать от тебя такой вопрос. Очевидно чтобы перенести максимум работы на стадию компиляции.
                Цитата korvin @
                вот еще небольшой вброс от одного товарища:
                Цитата
                Цитата
                Класс состоящий только из виртуальных функций фактически является аналогом интерфейса в таких языках как C# или Java

                чушь. отнаследуйся от двух "классов, состоящих только из (чисто) виртуальных функций", имеющих совпадающие сигнатуры, и убедись, что интерфейсов в C++ нет (не было и не будет)

                -- а в чем подвох?
                Цитата
                C#, C++ -- первое соберётся, второе - нет

                Боянистый вброс. На сколько помню D&E и Саттера (и ни с чем не путаю), это даже обсуждалось на комитете. Там же выяснилось, что всё легко решается.
                ExpandedWrap disabled
                  #include <iostream>
                   
                  class Interface1
                  {
                    Interface1(const Interface1&);
                    Interface1& operator= (const Interface1&);
                  public:
                    Interface1() {}
                    virtual void f() = 0;
                    virtual ~Interface1() {}
                  };
                   
                  class Interface2
                  {
                    Interface2(const Interface2&);
                    Interface2& operator= (const Interface2&);
                  public:
                    Interface2() {}
                    virtual void f() = 0;
                    virtual ~Interface2() {}
                  };
                   
                  class Interface1_f : public Interface1
                  {
                    void f() { iface1_f(); }
                  public:
                    virtual void iface1_f() = 0;
                  };
                   
                  class Interface2_f : public Interface2
                  {
                    void f() { iface2_f(); }
                  public:
                    virtual void iface2_f() = 0;
                  };
                   
                  class A : public Interface1_f, public Interface2_f
                  {
                  public:
                    void iface1_f() { std::cout << "Interface1::f()" << std::endl; }
                    void iface2_f() { std::cout << "Interface2::f()" << std::endl; }
                  };
                   
                  void f1(Interface1& iface)
                  {
                    iface.f();
                  }
                   
                  void f2(Interface2& iface)
                  {
                    iface.f();
                  }
                   
                  int main()
                  {
                    A a;
                    f1(a);
                    f2(a);
                  }
                  Цитата trainer @
                  можно сказать то, что в нем можно сделать то, чего первоначально не предполагалось.

                  макросистемы CL и Scheme тоже это позволяют, но без таких многоэтажных полотен =) или ближе к теме возьмем те же дженерики C#/Delphi

                  Цитата trainer @
                  Странно слышать от тебя такой вопрос. Очевидно чтобы перенести максимум работы на стадию компиляции.

                  не так уж и много работы выполняют шаблоны на этапе компиляции =)

                  Добавлено
                  Цитата Повстанець @
                  ExpandedWrap disabled
                    class IA
                    {
                    public:
                        virtual void f() = 0;
                    };
                     
                    class IB : virtual public IA
                    {
                    public:
                        virtual void g() = 0;
                    };
                     
                    class A : virtual public IA
                    {
                    public:
                        virtual void f() {}
                    };
                     
                    class B : public A, public IB
                    {
                    public:
                        virtual void g() {}
                    };
                     
                    int main()
                    {
                      B b;
                     
                      b.f();
                      b.g();
                     
                      return 0;
                    }
                  Вполне нормально собирается. И даже работает.

                  да-да, виртуальное наследование уже обсудили... костыли и подпорки =) хотя можно было просто одно ключевое слово interface ввести вместо десятка разнообразных комбинаций virtual и прочего =)
                  Цитата
                  виртуальное наследование интерфейсов смысла не имеет, и как раз хорошо показывает тот факт, что чисто абстрактные классы в C++ - это именно чисто абстрактные классы, и ничего более
                    Цитата korvin @
                    да-да, виртуальное наследование уже обсудили... костыли и подпорки =) хотя можно было просто одно ключевое слово interface ввести вместо десятка разнообразных комбинаций virtual и прочего =)
                    Зачем в языке со множественным наследованием интерфейс?
                      Цитата MyNameIsIgor @
                      Боянистый вброс. На сколько помню D&E и Саттера (и ни с чем не путаю), это даже обсуждалось на комитете. Там же выяснилось, что всё легко решается.
                      ExpandedWrap disabled
                        #include <iostream>
                         
                        class Interface1
                        {
                          Interface1(const Interface1&);
                          Interface1& operator= (const Interface1&);
                        public:
                          Interface1() {}
                          virtual void f() = 0;
                          virtual ~Interface1() {}
                        };
                         
                        class Interface2
                        {
                          Interface2(const Interface2&);
                          Interface2& operator= (const Interface2&);
                        public:
                          Interface2() {}
                          virtual void f() = 0;
                          virtual ~Interface2() {}
                        };
                         
                        class Interface1_f : public Interface1
                        {
                          void f() { iface1_f(); }
                        public:
                          virtual void iface1_f() = 0;
                        };
                         
                        class Interface2_f : public Interface2
                        {
                          void f() { iface2_f(); }
                        public:
                          virtual void iface2_f() = 0;
                        };
                         
                        class A : public Interface1_f, public Interface2_f
                        {
                        public:
                          void iface1_f() { std::cout << "Interface1::f()" << std::endl; }
                          void iface2_f() { std::cout << "Interface2::f()" << std::endl; }
                        };
                         
                        void f1(Interface1& iface)
                        {
                          iface.f();
                        }
                         
                        void f2(Interface2& iface)
                        {
                          iface.f();
                        }
                         
                        int main()
                        {
                          A a;
                          f1(a);
                          f2(a);
                        }

                      _это_ называется _легко_ решается? ну ладно...
                        Цитата korvin @
                        или ближе к теме возьмем те же дженерики C#/Delphi

                        Эммм... А что дженерики? Они чем-то так немерянно круты?
                        Цитата korvin @
                        не так уж и много работы выполняют шаблоны на этапе компиляции =)

                        Вы пытаетесь оперировать абсолютными величинами? Если всё сравнивать с чем-то аналогичным, конечно, если у нас есть возможность исполнения кода на этапе компиляции, то это гораздо круче. Но всё же очевидно, что шаблоны выполняют больше работы, чем те же дженерики.
                          Цитата Повстанець @
                          Зачем в языке со множественным наследованием интерфейс?

                          а зачем виртуальное наследование? Вы же интерфейс от класса отличаете?
                            Цитата korvin @
                            _это_ называется _легко_ решается? ну ладно...

                            А что, ниасилили? :)
                              Цитата MyNameIsIgor @
                              Эммм... А что дженерики? Они чем-то так немерянно круты?

                              нет, но их дебажить значительно легче

                              Добавлено
                              Цитата MyNameIsIgor @
                              А что, ниасилили? :)

                              а зачем эту кучу мусора асиливать? =)

                              Добавлено
                              Цитата MyNameIsIgor @
                              шаблоны выполняют больше работы, чем те же дженерики.

                              с этим я и не спорил никогда. но ничего фантастического шаблоны не делают.
                                Цитата korvin @
                                нет

                                Именно, ничего в них хорошего.
                                Цитата korvin @
                                но их дебажить значительно легче

                                И много вы дебажили шаблонов?
                                Цитата korvin @
                                а зачем эту кучу мусора асиливать? =)

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

                                Добавлено
                                Цитата korvin @
                                с этим я и не спорил никогда. но ничего фантастического шаблоны не делают.

                                Да Боже упаси утверждать, что они делают фантастическое. Просто они делают достаточно, чтобы во многом облегчить жизнь программиста на C++.
                                Сообщение отредактировано: MyNameIsIgor -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 136 137 [138] 139 140 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.2389 ]   [ 15 queries used ]   [ Generated: 31.07.26, 02:58 GMT ]