На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (56) « Первая ... 25 26 [27] 28 29 ...  55 56  ( Перейти к последнему сообщению )  
> D vs C++ , почти сурковская пропаганда: не пора ли C++ потихоньку готовиться к пенсии?
    Цитата applegame @
    Реально. Но придется отказаться от многих встроенных приятных вещей и от половины стандартной библиотеки.

    Разве это реальная практическая альтернатива?
    Цитата applegame @
    очередной атрибут

    Нагромождение фич какое-то...
    Цитата applegame @
    Можно ли вообще отказаться от шаблонов/дженериков в пользу макросов?

    Нет. Потому что они решают разные задачи.
      Цитата applegame @
      Ну D-шные шаблоны вполне читаемы. Макросы мне представляются тяжелой артиллерией для каких-то особо сложных случаев.
      Но ведь найдутся случаи когда даже D-шные шаблоны окажутся недостаточно мощными?..
      Ведь и плюсовые шаблоны для ряда применений отлично подходят, а часто и без них жить можно, но иногда требуется большее.

      Цитата applegame @
      Можно ли вообще отказаться от шаблонов/дженериков в пользу макросов?
      Это в контексте раста/плюсов или в каком-нибудь абстрактном языке? Имхо, это разные инструменты и хорошо иметь и то и другое.

      Цитата applegame @
      Странная какая-то фича, и, насколько я понял, это обилие unwrap() как раз и есть следствие отсутствия исключений, нет?
      Ну фича (спорная) в том, что обработка ошибок происходит явно.

      Относительно отсутствия исключений - есть паника, которая точно так же раскручивает стек, вызывает деструкторы и т.д. Есть возможности её перехватить/обработать. Нет "только" удобного способа проверить к какому типу исключение относится. Может когда-то дойдут до того, что это тоже нужно, ведь изначально панику можно было обработать только на границе потоков.
        Цитата MyNameIsIgor @
        Разве это реальная практическая альтернатива?
        Да, реальная. И становится все реальней. Фобос (стандартная либа) все больше и больше "ренджифицируется", что делает ненужными аллокации памяти вообще. Лямбды далеко не всегда требуют аллокаций, а там где требуют можно заменить на аналог std::function. Получаются эдакие плюсы на стероидах. Посмотрим что будет через полгода.
        Цитата MyNameIsIgor @
        Нагромождение фич какое-то...
        Да, атрибутов нагородили мама не горюй.

        Добавлено
        Цитата DarkEld3r @
        Но ведь найдутся случаи когда даже D-шные шаблоны окажутся недостаточно мощными?
        Бывает такое но редко. Строковые миксины D успешно заменяют практическое любое применение макросов. Но выглядит это как помойка. Я не люблю строковые миксины именно за их уродство.
        Сообщение отредактировано: applegame -
          Цитата applegame @
          Да, реальная. И становится все реальней. Фобос (стандартная либа) все больше и больше "ренджифицируется", что делает ненужными аллокации памяти вообще. Лямбды далеко не всегда требуют аллокаций, а там где требуют можно заменить на аналог std::function. Получаются эдакие плюсы на стероидах.

          Скорее это получается два языка в одном. По мне, так уже либо сборщик мусора есть, либо его нет. Не надо метаться - это всё то же стаскивание всего, что блестит.
            Цитата MyNameIsIgor @
            Скорее это получается два языка в одном. По мне, так уже либо сборщик мусора есть, либо его нет. Не надо метаться - это всё то же стаскивание всего, что блестит.
            Это главная беда D - постоянное метание. С академической точки зрения - D отвратное говно, напичканое всем, чем ни попадя, работающее странным образом и т.д. и т.п. Но с практической точки зрения - садишься и пишешь, причем гораздо быстрее и безопаснее, чем на плюсах. GC в тех задачах, для которых я использую D (web-cервисы) практически не влияет на производительность.

            Добавлено
            Я бы попробовал Rust, но блин, такого любителя синтаксического сахара как я эти unwrap() раздражают просто нереально.
            Сообщение отредактировано: applegame -
              Цитата DarkEld3r @
              Можно зайти с другой стороны - плюсовые шаблоны применяются для метапрограммирования как раз потому что специализированного инструмента в языке не имеется. Результат зачастую не сильно читаемым получается.
              "Зачем вводить новое, если старое и так справляется." Примерно так думали в Комитете, наверное, предполагая, что всё это нечитабельное в конечном итоге будет внесено в библиотеку и красивенько там сверху оттуда смотреться. Получилось ли, это другой вопрос.
                Цитата Qraizer @
                предполагая, что всё это нечитабельное в конечном итоге будет внесено в библиотеку и красивенько там сверху оттуда смотреться.
                Ну всё-всё предусмотреть и спрятать в библиотеку точно не получится, если мы о стандартной. Если о сторонних, то сейчас "кишки метапрограммирования" зачастую наружу торчат. Как минимум, в виде ошибок компиляции. Нормальные макросы сгладили бы обе проблемы.
                  Ну, boost::mpl, конечно, не на варганили, но кое-что-таки внесли. Всякие там std::is_XXX(), std::enable_if(), std::make_-, add_-, remove_XXX()... Мало, что ли?
                  ExpandedWrap disabled
                    template <typename T>
                    class A: private T
                    {
                      struct Null: T {};
                      static Null NullPtr;
                      
                    public:
                      A(      typename std::enable_if<std::is_default_constructible<T>::value, T>::type* = &NullPtr);
                      A(const typename std::enable_if<std::is_copy_constructible<T>::value,    T>::type&           );
                      A(      typename std::enable_if<std::is_move_constructible<T>::value,    T>::type&&          );
                    /* ... */
                    };
                  В принципе, выглядит читабельно и, будучи Стандартным, избавляет от разгребания велосипедов C++03, а что ещё надо-то?
                  Вот только я себя никак не приучу их юзать, и потому не знаю, насколько этого хватает. Вон, для A<>::A() чуток не хватило.
                  Сообщение отредактировано: Qraizer -
                    Цитата Qraizer @
                    В принципе, выглядит читабельно

                    :D

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

                    А так у меня ещё есть надежды хотя бы на concepts lite в 17...
                    Сообщение отредактировано: D_KEY -
                      Цитата Qraizer @
                      В принципе, выглядит читабельно и, будучи Стандартным

                      По-моему ты только что изобрёл фичу C++11 под названием Inheriting constructor.

                      Добавлено
                      Цитата D_KEY @
                      А так у меня ещё есть надежды хотя бы на concepts lite в 17...

                      Да вроде должны быть.
                        Цитата Flex Ferrum @
                        По-моему ты только что изобрёл фичу C++11 под названием Inheriting constructor.
                        Ага. Ничего проще в качестве примера не придумалось.
                          Цитата applegame @
                          Кроме того слишком гибкие макросы - прямой путь к

                          Какие макросы слишком гибки на твой взгляд?

                          Добавлено
                          Цитата applegame @
                          Странная какая-то фича, и, насколько я понял, это обилие unwrap() как раз и есть следствие отсутствия исключений, нет?

                          Скорее это следствие отсутствия do-нотации. Впрочем, если не ошибаюсь, макрос try! там как-то помогает.
                            Цитата korvin @
                            Какие макросы слишком гибки на твой взгляд?
                            Макросы того же Nemerle. Насколько я понял они позволяют сделать так, что любая последовательность любых допустимых символов может оказаться вполне синтаксически корректной, если для этого будет сделан соответствующий макрос. Прямо как случай с Ruby в указанном ролике.
                            Впрочем, может быть в Nemerle, в отличие от Ruby это не создаст много проблем. По крайней мере если я накосячу в одном из этих слов, то в Nemerle я получу ошибку еще на стадии компиляции, я правильно понимаю?
                            Сообщение отредактировано: applegame -
                              Цитата applegame @
                              Макросы того же Nemerle. Насколько я понял они позволяют сделать так, что любая последовательность любых допустимых символов может оказаться вполне синтаксически корректной, если для этого будет сделан соответствующий макрос. Прямо как случай с Ruby в указанном ролике.
                              Впрочем, может быть в Nemerle, в отличие от Ruby это не создаст много проблем. По крайней мере если я накосячу в одном из этих слов, то в Nemerle я получу ошибку еще на стадии компиляции, я правильно понимаю?

                              Конечно на этапе компиляции, Nemerle же статически типизированный. Впрочем, даже в динамически типизированных Scheme и CL получишь ошибку компиляции. Просто Ruby --- это поделие для хипстеров-студентов. =)
                                Цитата korvin @
                                Впрочем, даже в динамически типизированных Scheme и CL получишь ошибку компиляции.
                                Как, если тип становится известным только в run-time?
                                Цитата korvin @
                                Просто Ruby --- это поделие для хипстеров-студентов. =)
                                Просто Ruby - некомпилируемый язык, что впрочем никак не противоречит твоему утверждению :D

                                Добавлено
                                P.S. Только что прочитал, что в Go даже дженериков нет. Ужоснах.
                                Сообщение отредактировано: applegame -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (56) « Первая ... 25 26 [27] 28 29 ...  55 56


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