На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (32) « Первая ... 21 22 [23] 24 25 ...  31 32  ( Перейти к последнему сообщению )  
> Развейте мои сомнения: упростится ли программирование при переходе от C к C++?
    Цитата simsergey @
    Вероятность утечки памяти в С++, особенно при работе с объектами в Run-Time гораздо выше. Правильнее сказать, не "вероятность утечки памяти", а "вероятность допущения ошибок", приводящих к утечке памяти, выше.
    С хрена ли выше?
    Цитата simsergey @
    И вообще, за памятью должен следить программист, не зависимо от языка! <_<
    Ага, щаззз. Вместо того чтобы сосредоточится на сути задачи, программист, по-твоему, должен тратить силы на совершенно рутинное, нудное и чреватое ошибками управление памятью. Да ну на хер.
      Цитата applegame @
      Вместо того чтобы сосредоточится на сути задачи, программист, по-твоему, должен тратить силы на совершенно рутинное, нудное и чреватое ошибками управление памятью. Да ну на хер.
      Вдогонку, умные указатели и другие контроллеры ресурсов для того в C++ и придумали, чтобы не слишком отвлекаться на рутину.
        Цитата simsergey @
        Одно дело указатель - адрес в памяти, другое дело целый объект. Я о проблеме быстродействия.

        Нет этой проблемы. Я, например, даже shared_ptr не так уж и часто использую - у меня обычно владелец объекта известен, и поэтому он просто во владельце обёрнут в unique_ptr. И его производительность в точности равна производительности обычного указателя.
        Цитата simsergey @
        Автор ведет речь о том, что все эти расширения языка лишние для решения конкретных задач, которые, скажем, он бы мог решить свободно на Си.

        Не думаю, что есть такие задачи. По крайней мере я слабо представляю, где были бы лишними, например, деструкторы. Ну и в любом случае автору никто не мешает писать на С++ в стиле Си. Вывод - Си не нужен.

        Добавлено
        Цитата amk @
        При этом в C++ из коробки есть средства для работы в таких ситуациях, а в C их нет и быть не может.

        Не всегда. Например, С++ в принципе не способен отловить такое:
        ExpandedWrap disabled
          std::vector<std::string> v;
           
          void push_twice(const std::string &s)
          {
              v.push_back(s);  // При добавлении происходит реаллокация
              v.push_back(s);  // Ссылка s тут уже умерла - Fail
          }
           
          v.push_back("Ooops");
          push_twice(v.back());

        Туда же - изменение vector/deque пока по ним итерируешься. Единственный выход - выносить как-либо такие проверки в рантайм. Во время же компиляции из известных мне языков от этого только Rust нормально избавляет.
          Цитата OpenGL @
          Ну и в любом случае автору никто не мешает писать на С++ в стиле Си. Вывод - Си не нужен.

          Вывод неверен :)
          Автор живет не в изоляции. Код нужно еще и читать. И если не знать C++ полноценно, то разобраться в C++ коде будет невозможно. Даже библиотеки использовать.
          Это таки два разных языка. И в вопросе выживания у C, на мой взгляд, шансов больше.

          Добавлено
          Цитата OpenGL @
          Например, С++ в принципе не способен отловить такое

          Ну Си тоже, потому в контексте разговора это неважно.
          Хотя, на мой взгляд, в Си ты к этому больше готов, C++(по сравнению с Си) дает ложное ощущение спокойствия. Видел это в реальной разработке и не в одной команде. Но это лишь мои тараканы, на объективную аргументацию не тянет.

          Добавлено
          Цитата OpenGL @
          Во время же компиляции из известных мне языков от этого только Rust нормально избавляет.

          Он от этого "избавляет" путем запрета. В то время как ты просто нарушил контракт(неявный) вызываемой функции, она сама все делает правильно.
          Сообщение отредактировано: D_KEY -
            Цитата D_KEY @
            Автор живет не в изоляции. Код нужно еще и читать. И если не знать C++ полноценно, то разобраться в C++ коде будет невозможно. Даже библиотеки использовать.
            Это таки два разных языка. И в вопросе выживания у C, на мой взгляд, шансов больше.

            Ты сейчас перечислил минусы программиста, а не языка.
            Цитата D_KEY @
            Ну Си тоже, потому в контексте разговора это неважно.

            Я ровно это же самое сказал постом ранее :)
            Цитата D_KEY @
            Он от этого "избавляет" путем запрета.

            Есть другой способ избавиться от нежелательных действий на этапе компиляции?
              Цитата OpenGL @
              Ты сейчас перечислил минусы программиста, а не языка.
              На самом деле если один язык имеет более сложные синтаксис, библиотеку и т.д., чем другой, то программисту его освоить сложнее. В результате язык теряет часть пользователей, основным занятием которых является не написание собственно программ. Я, к примеру, хоть и числюсь на работе программистом, на самом деле занимаюсь разработкой логики работы вычислительных блоков. Дополнительно пишу разные вспомогательные программы, по большей части не очень большие. ЯП мне нужен не сам по себе, а для моделирования/проверки того, что я и другие наразрабатывали. То есть собственно программирование у меня занимает часто несколько минут в день. В результате об особенностях работы с тем же C++ я больше узнаю здесь, на форуме, из обсуждений подобных этой теме, чем из собственного опыта.

              И в результате, мне часто быстрее какую-нибудь штуку написать на чистом C, чем разбираться, как это эффективно реализовать на C++. Впрочем я и на C сейчас редко писать стал, чаще быстрее набросать нужное на питоне, тем более, что к скорости особых требований нет.
                Цитата amk @
                На самом деле если один язык имеет более сложные синтаксис, библиотеку и т.д., чем другой, то программисту его освоить сложнее.

                Я с этим и не спорю. Речь-то не об этом, а о том, что у си нет ни одного плюса перед плюсами - на последних точно так же можно писать в стиле Си и с использованием сишных библиотек, и поэтому использование С вместо плюсов является чем угодно, но никак не логичным и взвешенным решением.
                  Цитата OpenGL @
                  можно писать в стиле Си и с использованием сишных библиотек, и поэтому использование С вместо плюсов является чем угодно, но никак не логичным и взвешенным решением
                  Нелогично писать на C++ в стиле C и с C-шными библиотеками. Потому что тогда к программе прицепится довольно много такого, что не будет использоваться. Лучше тогда именно C и ограничиться, благо компилятор чистого C всегда в комплекте идёт.
                    Цитата amk @
                    Потому что тогда к программе прицепится довольно много такого, что не будет использоваться.

                    Например?
                      Цитата OpenGL @
                      Например?
                      Исполнительную библиотеку C++ надо инициализировать. Делается это независимо от того, используются её возможности или нет. Для программы размером в гигабайт это наверно не очень существенно, но не все проекты такие большие.
                        Ты так говоришь, как будто там мегабайты кода :-? Не знаю, как насчёт микроконтроллеров, но ни в одном проекте для ПК/мобилок это значимым не будет. А то и не будет вообще - по крайней мере helloworld, скомпиленный gcc и g++ на -O3 у меня выдали идентичный ассемблерный код.
                          Цитата amk @
                          Исполнительную библиотеку C++ надо инициализировать. Делается это независимо от того, используются её возможности или нет. Для программы размером в гигабайт это наверно не очень существенно, но не все проекты такие большие.

                          Т.е., получается, что единственный минус c++ перед си - то что надо обязательно подключать какие-то библиотеки. Всё остальное - сплошные плюсы.
                          Ну да, мелкие программки можно и на Си делать. Можно и на ассемблере. Без разницы. Причём они, как правило, реализуют один алгоритм с парой функций. Здесь C++ мало поможет.

                          Добавлено
                          Цитата OpenGL @
                          но ни в одном проекте для ПК/мобилок это значимым не будет.

                          Будет. Когда тебе нужно сделать dll с десятком малосвязанных функций. Чтоб размер имел значение.
                            Цитата Олег М @
                            Будет. Когда тебе нужно сделать dll с десятком малосвязанных функций. Чтоб размер имел значение.

                            С какого такого перепоя он будет иметь значение, если g++ даже libstdc++ не линкует, если ничего от С++ ты не используешь?
                              Цитата OpenGL @
                              С какого такого перепоя он будет иметь значение, если g++ даже libstdc++ не линкует, если ничего от С++ ты не используешь?

                              А зачем тебе тогда C++, если ты ничего от него не используешь? В частности (тут я тупо не в курсе) будет ли libstdс++ линковаться, если ты используешь из плюсов только new и delete? Без них никак
                                Цитата OpenGL @
                                если ничего от С++ ты не используешь

                                Если быть точнее - из STL :)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) « Первая ... 21 22 [23] 24 25 ...  31 32


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0559 ]   [ 15 queries used ]   [ Generated: 15.06.24, 22:04 GMT ]