На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (56) « Первая ... 52 53 [54] 55 56   ( Перейти к последнему сообщению )  
> D vs C++ , почти сурковская пропаганда: не пора ли C++ потихоньку готовиться к пенсии?
    Цитата Qraizer @
    А насколько просто переносится туда метакод оттуда?
    Трудно сказать. Что-то простое переносится просто:
    ExpandedWrap disabled
      template<typename A> void foo(A a){ ... }
    ExpandedWrap disabled
      void foo(A)(A a){ ... }

    Что-то более сложное может потребовать переписывания с нуля, включая алгоритмы и даже философию. Думаю, метапрограмминг в D тебе бы очень понравился, но в дизайне других мест понакосячено серьезно. Так что D умудряется вызывать восторг и ненависть одновременно. :lol:
    Ну и я бы не стал писать на D код для авионики. :)
    Сообщение отредактировано: applegame -
      Цитата applegame @
      а вот gdc (который уже в gcc) и ldc оптимизируют не хуже соответственно g++ и clang.

      Ну круто, если так :)
        Цитата D_KEY @
        Ну круто, если так
        D очень похож на плюсы, так что это не удивительно.
          Цитата applegame @
          Полностью отвязать в принципе невозможно, так как встроенные массивы и замыкания могут задействовать GC.

          А этим можно как-то управлять?

          Добавлено
          Цитата applegame @
          Цитата D_KEY @
          Ну круто, если так
          D очень похож на плюсы, так что это не удивительно.

          Ну оптимизирующий компилятор - достаточно сложная штука, у C и C++ больше и ресурсов и наработок.
            Цитата D_KEY @
            А этим можно как-то управлять?
            Можно заставить компилятор запретить операции с GC в нужном скоупе и не пользоваться этими операциями, заменяя их на RAII, RC (счетчики ссылок), а то и на старое доброе ручное управление памятью.
            Цитата D_KEY @
            Ну оптимизирующий компилятор - достаточно сложная штука, у C и C++ больше и ресурсов и наработок.
            Во-первых, автор D - Уолтер Брайт, который сам является разработчиком хорошо известного в прошлом C++ компилятора. Во-вторых, вероятно, ты недооцениваешь оптимизации llvm и бекенда gcc. Все три компилятора D: dmd, gcc и ldc используюут один и тот же фронтенд. А вот бекенды у них разные. Результаты весьма отличаются.
            Сообщение отредактировано: applegame -
              D на какую область ориентирован? У него просто синтаксис с какой то встроенной библиотекой? Многопоточность, кросплатформенность на каком уровне? Какие библиотеки под него есть? Игры писать там? Веб? Десктоп? Или это просто какой то красивый синтаксис?
                Цитата Wound @
                D на какую область ориентирован? У него просто синтаксис с какой то встроенной библиотекой? Многопоточность, кросплатформенность на каком уровне? Какие библиотеки под него есть? Игры писать там? Веб? Десктоп? Или это просто какой то красивый синтаксис?
                Область у D приблизительно совпадает с C/C++, но из-за достаточно удобного синтаксиса и быстрой компиляции он неплохо зашел в web и даже в скриптинг. С многопоточностью все отлично, с библиотеками не ахти, но к D можно прибиндить сишные и плюсовые либки. Так что игры писать можно. Без рантайма (а значит без GC и большой части стандартной либы) поддерживает, в принципе, все что поддерживают gcc и llvm. Полноценно поддерживаются x86/x86_64 Linux/Windows/MacOS/FreeBSD. Существуют неофициальные билды для Android и Raspberry PI.
                Короче, если отклонился от официально поддерживаемых платформ - готовся к танцам с бубном. Например: Как на D писать под ARM
                  Заканчивалась вторая декада 21-го века. Люди всё ещё придумывали, чем бы им заменить С++. Варианты с Java, C#, D, Go и Rust уже пробовали... Надо придумывать новые! :D
                    Явошарпы и go разве претендовали на замену плюсам? По-моему максимум на что они претендовали это на какую-либо нишу.
                      Цитата Flex Ferrum @
                      Надо придумывать новые!

                      Ну в нише мобильных устройств С++ таки подвинулся нехотя :lol:
                        Цитата JoeUser @
                        Цитата Flex Ferrum @
                        Надо придумывать новые!

                        Ну в нише мобильных устройств С++ таки подвинулся нехотя :lol:

                        Да он много где подвинулся. Просто не все хотят это признавать.
                          А вот можно ли в плюсах создать "типизированную" лямбду (std::function<void(int)> например) с замыканиями, но без аллокаций в куче?
                          Сообщение отредактировано: applegame -
                            Ну если тебя не устроит auto f = ... или передача в шаблон функции, то нет. Но мне кажется, что о чем-то таком уже был спор тут и даже тесты были, где кресты все равно выиграли по скорости.
                              Цитата D_KEY @
                              Ну если тебя не устроит auto f = ... или передача в шаблон функции, то нет. Но мне кажется, что о чем-то таком уже был спор тут и даже тесты были, где кресты все равно выиграли по скорости.
                              У кого выигрывали? Я что-то не помню такого спора. Речь именно о типизированной лямбде, для передачи в нешаблонную функцию:
                              ExpandedWrap disabled
                                pragma(inline, false)
                                void foo(scope void delegate(int) fn) {
                                    fn(10);
                                }
                                 
                                int bar() {
                                    int i = 10;
                                    foo((int x){
                                        i += x;
                                    });
                                    return i;
                                }

                              Прямой плюсовой аналог однозначно просрет дешному во всем:
                              ExpandedWrap disabled
                                #include <functional>
                                 
                                __attribute((noinline))
                                void foo(std::function<void(int)> fn) {
                                    fn(10);
                                }
                                 
                                int bar() {
                                    int i = 10;
                                    foo([&i](int x){
                                        i += x;
                                    });
                                    return i;
                                }


                              В дешном аллокаций не будет, в плюсовом, насколько я понимаю, стопроцентно будет.
                              Сообщение отредактировано: applegame -
                                Цитата applegame @
                                Прямой плюсовой аналог однозначно просрет дешному во всем

                                Вот мне помнится, что по крайней мере в скорости вызовов не просирает, а чуть ли не выигрывает :)
                                Если не лень, можешь померить.

                                Добавлено
                                Цитата
                                __attribute((noinline))

                                Нахрена?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (56) « Первая ... 52 53 [54] 55 56 


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0849 ]   [ 16 queries used ]   [ Generated: 29.03.24, 12:46 GMT ]