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

        Да какая разница, часть или не часть. Принцип работы это не меняет.
          Цитата IL_Agent @
          Да какая разница, часть или не часть. Принцип работы это не меняет.
          Ты абсолютно не знаком с принципом работы шаблонов. И не слушаешь тех, кто знаком. Твои утверждения голословны.
            Цитата IL_Agent @
            Потому что нет такой фичи

            Нет фичи "сливания" компилятором своих внутренних структур в эквивалентный код на плюсах? Ну, да, в теории она возможна, на практике - вряд ли нужна.
            IL_Agent, я вам предлагаю задачу, с которой уже двое дельфистов слились, перед этим тоже громко вещавших
            Цитата Romkin @
            Как раз у этих конкурентой для метапрограммирования все есть исходно и в языке, просто мозгу, который запорчен примитавами шаблонов и макросов, врубиться в это невозможно

            Раз уж
            Цитата IL_Agent @
            а с++-шаблоны - это навороченный, многофункциональный, но убогий препроцессор.

            то не могли бы вот эту хрень
            ExpandedWrap disabled
              public static Tuple<T1> Create<T1>(T1 item1);
              public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2);
              public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3);
              public static Tuple<T1, T2, T3, T4> Create<T1, T2, T3, T4>(T1 item1, T2 item2, T3 item3, T4 item4);
              public static Tuple<T1, T2, T3, T4, T5> Create<T1, T2, T3, T4, T5>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5);
              public static Tuple<T1, T2, T3, T4, T5, T6> Create<T1, T2, T3, T4, T5, T6>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6);
              public static Tuple<T1, T2, T3, T4, T5, T6, T7> Create<T1, T2, T3, T4, T5, T6, T7>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7);
              public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> Create<T1, T2, T3, T4, T5, T6, T7, T8>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8);

            сделать менее похожей на поделку индусского джуниора?
              Цитата IL_Agent @
              Принцип работы это не меняет.
              Меняет и сильно. Шаблоны компилятся полностью (почти) в точке их определения. В точках использования (точнее инстанцирования, это не одно и то же) компилятор только досвязывает имена и выполняет кодогенерацию.
                Цитата Повстанець @
                Шаблоны не разворачиваются ни в какой код, кроме машинного.

                И в какой же машинный код развернётся вот это, например:
                ExpandedWrap disabled
                  template<typename A,typename B>
                  A f(B x, A y)
                  {
                    return x+y;
                  }

                ?

                Цитата Повстанець @
                Проверка синтаксиса начинается ещё до инстанцирования.

                Дык само собой, у шаблонов есть синтаксис, который надо проверять, и который ужасен, кстати :).
                  Цитата Qraizer @
                  Меняет и сильно. Шаблоны компилятся полностью (почти) в точке их определения. В точках использования (точнее инстанцирования, это не одно и то же) компилятор только досвязывает имена и выполняет кодогенерацию.

                  Цитата Повстанець @
                  Шаблоны не разворачиваются ни в какой код, кроме машинного. Проверка синтаксиса начинается ещё до инстанцирования. Оптимизация кода начинается до инстанцирования. Шаблоны это не фича конвертирующая чего то там в С++. Шаблоны это и есть С++. Почему ты не слушаешь людей, которые всё же разбираются в вопросе?
                  Да, компиляцию упустил. Компиляция начинается до инстанцирования.
                    MyNameIsIgor, у меня произвольнопараметрические мультиметоды на C++03 именно такими и получаются :wub: . На variadic templates, конечно, изящнее.
                      Цитата IL_Agent @
                      Дык само собой, у шаблонов есть синтаксис, который надо проверять, и который ужасен, кстати

                      И чем же он ужаснее синтаксиса шарповских дженериков? :)
                        Цитата IL_Agent @
                        Дык само собой, у шаблонов есть синтаксис, который надо проверять, и который ужасен, кстати
                        Тут trainer одного за троллизм уже приструнивал. IL_Agent, где аргументы? Чем синтаксис шаблонных конструкций оличается от нешаблонных, окромя лидирующего template<>?
                          Цитата IL_Agent @
                          Препоцессор, увидев инстанцирование, создав две функции для этих типов.

                          А как препроцессор отличит инстанцирование от вызова нешаблонной функции, ведь разрешение перегрузки выполняется компилятором?
                          Или разрешение перегрузки - это тоже препроцессор?
                            Цитата Qraizer @
                            MyNameIsIgor, у меня произвольнопараметрические мультиметоды на C++03 именно такими и получаются . На variadic templates, конечно, изящнее.

                            Да, но у нас есть списки типов и boost.preprocessor. Только для наших друзей это примитивно и не достойно их высокоразвитого мозга. Вот пусть и покажут, как это делается белыми людьми.
                              Цитата IL_Agent @
                              Так вот, там макросы лиспа приводятся в качестве примера препроцессора. Только там они пишутся на том же языке, что и код, в который они разворачиваются.

                              Макросы лиспа очень слабо связаны с шаблонами С++. Я бы даже сказал, что между ними практически нет ничего общего.
                                Цитата MyNameIsIgor @
                                Нет фичи "сливания" компилятором своих внутренних структур в эквивалентный код на плюсах? Ну, да, в теории она возможна, на практике - вряд ли нужна.

                                Я про это и говорю. Внутренние структуры компилятора, полученные в результате компиляции шаблонов, соответствуют некоторому плюсовому нешаблонному коду. Препроцессору С тоже ничего не мешает так работать.
                                Ну а С# тут не причём. В нём нет аналогичного препроцессора.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 334 335 [336] 337 338 ...  494 495


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