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

    конечно, ведь нет ничего идеального, если б у меня был эталон сравнения я бы сравнивал плюсы именно с ним (ну в этой теме редко очень, чтоб не сильно оффтопить)
    и о каких дядьках идет речь? у Страуструпа да Вирта имена погромче многих =)

    Цитата Qraizer @
    А, ну кроме Лиспа, сорри.

    к лиспам (CL, Scheme/Racket) у меня тоже есть претензии, видимо не было повода их тут озвучивать, так что не за что извиняться =)
      Цитата Qraizer @
      Не насмешил. IL_Agent, счас скажешь, что джереники мощнее? Аминь.

      Нет. Причём тут дженерики ?
      Цитата Qraizer @
      Слив подтверждён.Я не сомневался, что уместить в две строки философию Решёточных типов не получится.

      А я утверждал, что шарпе всё просто и идеально ? Короче, ты не в тему опять.
        Цитата Romkin @
        Объект - набор предков. Это и выглядит как набор предков, и работает так же, по внешним признакам.
        Перечисли эти признаки.
        Цитата Romkin @
        Ты никогда не можешь получить предка из потомка иначе как создав предка и скопировав в него нужные данные из потомка. Явно.
        Можно я немножко посомневаюсь? Первый попавшийся код в VCL:
        ExpandedWrap disabled
            TNotifyEvent = procedure(Sender: TObject) of object;
          ...
            TCustomUtilityButton = class(TCustomButtonControl)
            private
          ...
              FOnClick: TNotifyEvent;
          ...
            end;
          ...
          procedure TCustomUtilityButton.Click;
          begin
            if Assigned(FOnClick) then
              FOnClick(Self);
          end;
        Какие будут комментарии по вызову FOnClick? Каким образом Self типа TCustomUtilityButton превращается в Sender типа TObject?

        Цитата Romkin @
        Более того, активное использование шаблонов происходит из технологических ограничений принятой реализации объектов, в частности, невозможности вызовов виртуальных методов из конструктора.
        Ты точно знаешь, что такое "шаблон" в C++?
          Цитата trainer @
          Можно я немножко посомневаюсь? Первый попавшийся код в VCL:
          ExpandedWrap disabled
              TNotifyEvent = procedure(Sender: TObject) of object;
            ...
              TCustomUtilityButton = class(TCustomButtonControl)
              private
            ...
                FOnClick: TNotifyEvent;
            ...
              end;
            ...
            procedure TCustomUtilityButton.Click;
            begin
              if Assigned(FOnClick) then
                FOnClick(Self);
            end;
          Какие будут комментарии по вызову FOnClick? Каким образом Self типа TCustomUtilityButton превращается в Sender типа TObject?

          обычное приведение к супертипу, так везде =/

          Добавлено
          Цитата trainer @
          Ты точно знаешь, что такое "шаблон" в C++?

          я, тоже не вижу при чем тут вызов виртуальных методов из конструктора. одно из сновных назначений шаблонов -- обеспечение параметрического полиморфизна.
            Цитата Red @
            Цитата D_KEY @
            IL_Agent, от тебя ну никак не ожидал.
            Сто раз обсуждали. Это некорректный код.
            Требуешь создание нового объекта конкретного типа - какой тут полиморфизм?
            Ничего не сделал, чтобы предотвратить срез(конструирование объекта базового класса из объекта производного) - какой ты программист?

            В C# нельзя делать структуры (типы значений) базовыми или производными типами других классов или структур. Хотя они неявно наследуются от класса ValueType.

            А также неявно наследуются от object, вот что самое поразительное :D
            Просто верх изящества :lool:

            Добавлено
            Цитата korvin @
            это некорректный язык.

            Почему?

            Цитата
            и как после этого можно C++ называть объектно-ориентированным?

            Он ни в коем случае не является чистым объектно-ориентированным языком. Он мультипарадигмальный по своей природе.
              Цитата D_KEY @
              Он ни в коем случае не является чистым объектно-ориентированным языком. Он мультипарадигмальный по своей природе.

              но это же не значит, что ООП-часть должна быть реализована неполно и через чур сложно

              Добавлено
              кстати по Симуле, я ее конечно совсем чуть-чуть потрогал, почитал там на сайте, что один из ее минусов -- сложность, но почему-то не обнаружил этой сложности, вроде все четко и однозначно. может подразумевалось "для того времени"?
              Сообщение отредактировано: korvin -
                В чём неполнота и сложность?
                  Цитата korvin @
                  Цитата Qraizer @
                  korvin, обоснуй.

                  ООП -- это позднее связывание и никаких приведений типа (они там не нужны).

                  Отчасти так. Но разве в приведенном коде было ООП?

                  Цитата
                  в C++ же мы тут наблюдаем обычное процедурное программирование на структурах несмотря на наличие слова class в коде.

                  Все верно, только не "в С++", а в приведенном коде :)

                  Цитата
                  на лицо очередное несоответствие общепринятых терминов и их реализации в C++
                  Корявый код(с точки зрения логики) на любом языке не говорит ничего об языке. Т.е. вообще ничего.
                  Сообщение отредактировано: D_KEY -
                    Цитата Adil @
                    В чём неполнота и сложность?

                    неполнота в некоторой "структурности" объектов, т.е. то, что в С++ называют объектами, в других ЯП -- структуры, не более (единственное отличие -- множественное наследование).
                    с другой стороны 3 спецификатора доступа к полям * 3 спецификатора наследования, наличие виртуальных и невиртуальных методов, static-спецификатор (ну это еще ладно, при отсутствии метаклассов покатит), различие объекты-значения, объекты-ссылки, дружественные функции.

                    Добавлено
                    Цитата D_KEY @
                    Отчасти так. Но разве в приведенном коде было ООП?

                    Все верно, только не "в С++", а в приведенном коде :)

                    Корявый код(с точки зрения логики) на любом языке не говорит ничего об языке. Т.е. вообще ничего.

                    но таки зачем вообще давать эту возможность? зачем подменять общепринятое значение слова class? почему нельзя было сделать нормальные классы, а не просто ключевое слово, единственное отличие от структуры которого -- дефолтный спецификатор доступа? вот уж точно бесполезный сахар, продвинутый ради маркетинга
                      Цитата IL_Agent @
                      Почему компилятор мне про некорректность ничего не рассказал ?

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

                      Цитата
                      Цитата MyNameIsIgor @
                      IL_Agent получил результат на уровень своих знаний - вот и всё.

                      Полученный результат абсолютно не очевиден и требует знаний, это я и показывал.
                      Для человека, который знает язык, этот результат абсолютно очевиден.

                      Цитата
                      Цитата D_KEY @
                      Требуешь создание нового объекта конкретного типа - какой тут полиморфизм?

                      А если я делаю так:
                      Цитата Flex Ferrum @
                      Добавили один символ и, о ЧУДО! ВСЁ ЗАРАБОТАЛО! Шайтнан... :)

                      , то тип перестаёт быть "конкретным" ?

                      Нет, тип тут уже "ссылка на объект класса Base". Этот тип может принимать значение ссылки на объекты класса Base и его наследников.
                      В первом же случае ты просил создать новый объект именно класса Base.

                      Цитата
                      Цитата D_KEY @
                      Ничего не сделал, чтобы предотвратить срез - какой ты программист?

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

                      Каких проблем? Ну так кто тебя заставляет использовать язык, который ты не понимаешь?

                      Добавлено
                      Цитата DesweR @
                      Цитата D_KEY @
                      Кстати, речь о размещении вообще не идет.

                      Из этого напрямую и вытекает.

                      Нет.

                      Цитата
                      Цитата D_KEY @
                      std::string ведет себя так же.

                      А также он является владельцем самой строки, что заставляет не забывать о некоторых нюансах ;)
                      Каких?

                      Цитата
                      Цитата D_KEY @
                      Единственное, о чем тут можно говорить, так это об организации "стандартного" виртуального конструктора копирования, причем в стиле С++

                      Поподробнее?
                      Я там дальше привел пример на псевдо-С++(от Masterkent'а)

                      Добавлено
                      Цитата IL_Agent @
                      Цитата MyNameIsIgor @
                      А по поводу логичности разделения в шарпе на ссылочные типы и значения уже обсуждалось...

                      Собственно, вброс и был навеян этим обсуждением. С++ такой логичный :)

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

                      Добавлено
                      Цитата korvin @
                      нет же, способ передачи совсем не причем, а причем система типов

                      Все как раз наоборот. Система типов не при чем.

                      Добавлено
                      Цитата Повстанець @
                      Прочитал на днях книжку по яве. Там про разницу передачи ссылочных и объектных типов трижды упоминается специально (в общем обзоре, конкретно при изучении классов и в краткой теории ООП с т.з. явы) и много-много раз в сносках и комментариях к коду, как бы напоминается. Наверное это от того, что мешанина из ссылочных и объектных типов настолько очевидна и логична. :yes:

                      +100500 Я об этом уже говорил и в этой и в соседней теме.
                      Сообщение отредактировано: D_KEY -
                        Цитата D_KEY @
                        Да, он логичный. В нем везде одна семантика при работе с переменными, как и во всех нормальных языках.

                        ни в одном нормальном языке нет объектов-значений, но примитивные типы работают как значения =)
                          Цитата Romkin @
                          Открою тайну: по сравнению с TP в Delphi просто добавили реализацию классов.
                          Похоже для тебя будет откровением, но в Delphi не добавляли реализацию классов, поскольку классы в TP уже были (просто ими мало кто пользовался). В классы только добавили атрибуты.

                          korvin, ты там для меня привел две цитаты, содержащие выражения "компилируется в нативный код" и "транслируется в программу на C". Это ни капельки не делает программу не интерпретируемой. Мне по работе пришлось написать более десятка разных интерпретаторов (не очень сложных, но все же). Так вот, только три из них интерпретировали текст напрямую, остальные транслировали программу в текст С-программы (кроме этого сгенерированного файла были и другие). Тем не менее, я-то знаю, что в результате транслированный текст просто интерпретировался.

                          Можешь сравнить быстродействие, например CL-программы, при выполнении ее качественным интерпретатором и скомпилированной хорошим "компилятором". Уверен, что, кроме совсем уж простых случаев, разница составит несколько процентов (и неизвестно еще, что будет быстрее)
                            Цитата IL_Agent @
                            Цитата Flex Ferrum @
                            Вот и в случае C++ не перестаёт.

                            Однако
                            Цитата Flex Ferrum @
                            ЧУДО! ВСЁ ЗАРАБОТАЛО! Шайтнан...
                            . А это противоречит утверждению:
                            Цитата D_KEY @
                            Требуешь создание нового объекта конкретного типа - какой тут полиморфизм?

                            Нет. Просто тип не Base, а Base&, т.е. "ссылка на Base".

                            Добавлено
                            Цитата IL_Agent @
                            Цитата trainer @
                            Вообще-то там написано "передать копию объекта типа Base"

                            ExpandedWrap disabled
                              void Func(Base b)

                            Где написано "копия" ?

                            ExpandedWrap disabled
                              Base b

                            Это означает новый объект типа Base.
                              Цитата korvin @
                              приходится сталкиваться с тем, что две реализации одного и того же интерфейса могут иметь сильно разную семантику, несмотря на то, что автором интерфейса могла подразумеваться какая-то конкретная семантика

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

                                Ты не передаешь наследника. И какого полиморфизма ты ждешь?

                                Добавлено
                                Цитата IL_Agent @
                                А если полиморфизм не работает, зачем вообще разрешать передавать наследников без определения приведения типа ?

                                Не знаю, почему ты принял такое решение.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 185 186 [187] 188 189 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3314 ]   [ 14 queries used ]   [ Generated: 1.08.26, 00:16 GMT ]