На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (16) « Первая ... 5 6 [7] 8 9 ...  15 16 все  ( Перейти к последнему сообщению )  
> Rust vs C++ , очередная шляпа
    Цитата JoeUser @
    А потому, что результат их сборки - исполнение в виртуальной машине. Вот только представьте - каждый вызов виртуализован! Это сколько же тепла выделяется процессором излишне, коего так не хватает Слава Украине!
    Да не так уж и много лишнего тепла, оно ж все равно в итоге компиляется в нативный код. Вот эрланг, это да, чистая виртуалка, но даже там уже придумали HiPE.
    Ну и как показывает практика, уменьшение тепла выделяемого процессором автоматически приводит к увеличению тепла выделяемого головой программиста. И наоборот.
    Вон Qraizer излучает дофига энергии чтобы протестировать свои критические приложухи, но у него выбора нет, такова специфика профессии. А вот у меня есть, и я с удовольствием уменьшаю тепло головы за счет увеличения тепла процессора. :lol:
    Сообщение отредактировано: applegame -
      Тут вот JoeUser Раст всуе помянул: Метаклассы в C++
      Сообщение отредактировано: JoeUser -
        В расте есть процедурные макросы, которые в первом приближении должны давать те же возможности.
          Цитата JoeUser @
          Наверное тема "презирания" пошла с моей подачки Ну сами посудите, это же чистой воды - гиперболизация! Да, мне не нравятся Java и С#. Но не потому, что они убогие. А потому, что результат их сборки - исполнение в виртуальной машине. Вот только представьте - каждый вызов виртуализован! Это сколько же тепла выделяется процессором излишне, коего так не хватает Слава Украине!

          А зря. Как дополнение к плюсам Java/C# очень даже ничего подходят. А вот всякие Rust, жгут излишне твою энергию. А выхлопа в итоге 0,00000%. В итоге ты знаешь С++, и знаешь как то так немного с боку Rust. Но пишешь исключительно на С++(ну если отбросить другие скриптовые язеги). В итоге от знания С++ и Rust эффективность твоего КПД начинает падать, вместо того, чтобы повышаться. И собственно вытекает это в то, что ты начинаешь выделять больше тепла, но эффективность при этом не повышается :D Тут нужно либо полностью переходить например на Rust, и забывать плюсы, либо не эффективно поддерживать знания в актуальном состоянии этих двух языков. Что просто энергетически затратно и глупо. А всякие явошарпы напротив - повышают твой КПД при затрачивании даже меньшей энергии, чем ты тратишь на Rust. :whistle:
          Сообщение отредактировано: Wound -
            Тут один друг устроился в контору где приходится на шарпе писать (после плюсов и D). Ругает шарп грязными словами.
            Последнее на что жаловался: https://stackoverflow.com/questions/5510343...ents-in-c-sharp
            Такая простая вещь, а делается через адскую жопу.

            Добавлено
            Еще, что писал:
            - невозможно stderr перенаправить в stdout.
            - если из интерфейса функцию убрал (переименовал), а в наследующем классе она осталась, то компилятор никак тебя не предупредит об этом.
            - повальный боксинг всего чего ни попадя в object, а потом в рантайме каст обратно. Даже int-ы, говорит, в object пихают.
            - нет приличных либок для http-сервера.
            - async/await из-за корявой внутренней реализации могут приводить к трудноуловимым дедлокам, а нормальных файберов не завезли.
            - отсутствие compile-time рефлексии, а рантайм-рефлексия тормозная аки черепаха.

            Добавлено
            Я сам на шарпе практически не писал, но копался в сторонних либках и заметил, что энтерпрайз головного мозга весьма распространен среди любителей шарпа.
            То бишь обилие говна вроде OutputGenerationContextVisitorStrategyFactory.
            Сообщение отредактировано: applegame -
              Цитата applegame @
              - невозможно stderr перенаправить в stdout.

              А это хоть где-то можно? Подобное мне кажется слишком низкоуровневой шляпой (в отличие от перенаправления стандартных потоков в файл, например), чтобы её в библиотеку языка запихивать. По крайней мере если бы мне потребовалось сделать такое, я бы просто через api ОС это сделал.

              Цитата applegame @
              - повальный боксинг всего чего ни попадя в object, а потом в рантайме каст обратно.

              В чём он проявляется? Ну да, всё является Object-ом, но это же не то же самое, что постоянный каст туда-обратно.
                Цитата OpenGL @
                В чём он проявляется? Ну да, всё является Object-ом, но это же не то же самое, что постоянный каст туда-обратно.
                В том, что люди часто вместо дженерика кастят в обжект, пихают его куда-нибудь, а потом обратно кастят. Может просто он попал в компанию криворуких программистов. Я не знаю.
                  Цитата applegame @
                  Последнее на что жаловался: https://stackoverflow.com/questions/5510343...ents-in-c-sharp
                  Такая простая вещь, а делается через адскую жопу.

                  Я если честно не понял что он там хочет сделать. Это? Ему это вроде приводили в первом же ответе.
                  ExpandedWrap disabled
                                String[] arguments = Environment.GetCommandLineArgs();
                                Console.WriteLine("GetCommandLineArgs: {0}", String.Join(", ", arguments));


                  Цитата applegame @
                  Еще, что писал:
                  - невозможно stderr перенаправить в stdout.

                  Ээээээээ. Ему логгирование нужно? Так пусть возьмет Serilog тот же. У меня сейчас пишется и в файл и в консоль одновременно, еще и с подсветкой, можно в конфиге еще добавить куда писать надо.

                  Цитата applegame @
                  - если из интерфейса функцию убрал (переименовал), а в наследующем классе она осталась, то компилятор никак тебя не предупредит об этом.

                  Если переименовал - у тебя ничего не соберется, потому что твой класс не будет реализовывать этот интерфейс, это очевидно вроде как. А если ты убрал из интерфейса метод, то в любом языке у тебя не будет ругаться. Ну или пускай не просто убирает, а через рефакторинг меню. Тогда по идее у него везде уберется автоматом.

                  Цитата applegame @
                  - повальный боксинг всего чего ни попадя в object, а потом в рантайме каст обратно. Даже int-ы, говорит, в object пихают.

                  Не, ну тут уже какая предъява к языку? Это уже предъява к программистам. Так же можно сказать что в С++ повально выделяют память, а освобождать забывают, передают аргументы в методы класса/функции не по ссылке/указателю, а по значению. Из за чего программа жутко тупит.

                  Цитата applegame @
                  - нет приличных либок для http-сервера.

                  Вот тут чуть не поперхнулся. Для чего? .ASP Net Core Web App ему в руки, плюс есть встроенный kestrel и httpd серверы. kestrel - пока еще сырой, но зато кросплатформенный. httpd - виндовый, допиленный. Все есть из коробки, того чего нет, может достать из Nuget пакетов. Вот я сейчас пилю полностью кросплатформенное серверное Web приложение, пока нехватки либок для http сервера не ощутил, напротив есть все и даже больше, чем нужно. При том что пишу я под kestrel, который еще недопиленный. Чего ему конкретно не хватает то?

                  Цитата applegame @
                  - async/await из-за корявой внутренней реализации могут приводить к трудноуловимым дедлокам, а нормальных файберов не завезли.

                  Например? Я пока не натыкался если честно.

                  Цитата applegame @
                  - отсутствие compile-time рефлексии, а рантайм-рефлексия тормозная аки черепаха.

                  Опять же для чего? Дженериков не хватает что ли?

                  Добавлено
                  Цитата applegame @
                  Тут один друг устроился в контору где приходится на шарпе писать (после плюсов

                  Я не знаю как после D, но после плюсов - он по идее должен был ощутить внутреннюю гармонию, радость жизни и эйфорию. Ну если он только неделю пишет - то возможно он просто еще не оклиматизировался. И пытается решить задачи С++сными методами в C#. Тогда конечно получаешь некий дискомфорт. Но это по идее должно быть во всех языках.
                  Сообщение отредактировано: Wound -
                    Цитата applegame @
                    если из интерфейса функцию убрал (переименовал), а в наследующем классе она осталась, то компилятор никак тебя не предупредит об этом.

                    Об этом сразу предупредит IDE, если ее правильно настроить. За шарпея не скажу, но в жабе идея мигом начинает краснеть по поводу неуместной аннотации @Override
                    Прикреплённая картинка
                    Прикреплённая картинка
                      Цитата Астарот @
                      За шарпея не скажу, но в жабе идея мигом начинает краснеть по поводу неуместной аннотации @Override

                      Там примерно тоже самое. Можно реализовывать через имя интерфейса. И будет ругаться.
                        Цитата Wound @
                        Там примерно тоже самое. Можно реализовывать через имя интерфейса. И будет ругаться.
                        А есть аннотация @override?

                        Добавлено
                        Цитата Астарот @
                        Об этом сразу предупредит IDE, если ее правильно настроить. За шарпея не скажу, но в жабе идея мигом начинает краснеть по поводу неуместной аннотации @Override
                        Он как раз сетовал на отсутствие override. В D не аннотация, а атрибут override, поэтому ругается не IDE, а компилятор.
                        Сообщение отредактировано: applegame -
                          Цитата applegame @
                          Он как раз сетовал на отсутствие override. В D не аннотация, а атрибут override, поэтому ругается не IDE, а компилятор.

                          Тут не знаю. Знаю, что джетбрейнсы для шарпея делают Rider https://www.jetbrains.com/rider/ а так как делают они, обычно, хорошо, то, скорее всего, все, что у твоего друга болит и чешется, там будет полечено и почёсано.
                            Цитата applegame @
                            А есть аннотация @override?

                            Есть, но предназначена она для виртуальных методов класса. Для интерфейсов есть явная имплементация интерфейса.
                              Цитата Wound @
                              Есть, но предназначена она для виртуальных методов класса. Для интерфейсов есть явная имплементация интерфейса.

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

                                Конечно есть. Я же выше написал:
                                Цитата Wound @
                                Для интерфейсов есть явная имплементация интерфейса.


                                Дело в том, что override несет несколько другую смысловую нагрузку, и к интерфейсам мягко говоря не применима. Потому как интерфейс не может иметь реализации. Соответственно и переопределять там нечего. Там реализовывать нужно. Поэтому override - это скорее про классы.
                                Но ты можешь написать явную реализацию для интерфейса, например:
                                ExpandedWrap disabled
                                      interface MyInterface
                                      {
                                          string GetMyString();
                                          void SetMyString(string value);
                                      }
                                   
                                      public class MyClass : MyInterface
                                      {
                                          string MyInterface.GetMyString()
                                          {
                                              throw new NotImplementedException();
                                          }
                                   
                                          void MyInterface.SetMyString(string value)
                                          {
                                              throw new NotImplementedException();
                                          }
                                      }

                                При таком раскладе, если ты в интерфейсе грохнешь любой метод, будет ошибка компиляции, например можешь попробовать в этом коде закоментировать или переименовать любой метод у интерфейса
                                https://rextester.com/CEPE93720
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (16) « Первая ... 5 6 [7] 8 9 ...  15 16 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0633 ]   [ 18 queries used ]   [ Generated: 28.03.24, 19:02 GMT ]