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

        С - когда программа модульная, С++ - для программы с классами :)

        Я не уверен в таком разделении :yes: .
          BugHunter, почему?
            Цитата
            А вообще, в С++ много замечаельных нововведений - хотя бы new и delete, значительно лучше чем malloc() и free().
            А также стандартная библиотека - она ведь основана на классах!

            Сомнительный плюс. Когда парадигму толкают не разобравшись, потом бывают проблемы.
              Цитата Ho Im @
              Сомнительный плюс. Когда парадигму толкают не разобравшись, потом бывают проблемы.

              Подробнее, плз...
                Цитата Alexander RUS @
                BugHunter, почему?

                Если я в своей (простенькой) программе использую шаблонные классы vector<> и т.п. (которые писал не я) - считается ли это программа программой с классами? Если я разбиваю программу на С++ на несколько длл-ек - она перестаёт быть модульной от того, что написана на С++ ? Вообще то практика показывает, что любой большой проект лучше бить на модули. Так и команде работать проще.

                Я бы сделал разделение по объёму. Если проект превышает ххх килострок, то его лучше переписать на С++. О велечине ххх идут споры, но она не очень велика.

                Цитата

                Когда парадигму толкают не разобравшись, потом бывают проблемы.

                Какую парадигму и кто толкал необоснованно? И самое главное, какие из этого возникли проблемы?
                Я знаю случаи, когда переходы с С->C++ и обратно позволяли успешно решить ряд текущих
                проблем. Правда переход с С++ на С менее часты.

                Ho Im, я вас умоляю, ваш фанатизм позволяет мне думать, что вы неправы. Почитайте Гегеля. А именно: всё что он пишет о диалектике. Отрезвляет, знаете ли.
                  Я, как правило, о таком:
                  Цитата
                  А вообще, в С++ много замечаельных нововведений - хотя бы new и delete, значительно лучше чем malloc() и free().
                  А также стандартная библиотека - она ведь основана на классах!

                  Вот здесь я вижу почти что фанатизм. Лично не вижу преимуществ в том, что стандартная библиотека основана на классах. Чему-то это помогает, но панацеей от красных глаз не является. Как говаривал небезызвестный БГ, "некоторые вещи я могу спеть только на русском, некоторые -- только на английском". Напротив, неудачную процедурную модель еще можно переделать (с той же моделью данных), но неудачная ОО-модель... Упаси Аллах.

                  Я понимаю, что менеджменту ужасно нравится -- до мурашек по спине -- когда им говорят, что аппликация реализуется "с классами". Но все-таки, стоит спуститься на землю, и признать, что, например, функциональный стиль в C++ -- это скорее костыль. А для ряда задач лучше него не сыщешь.

                  То есть, это не есть плохо. Но явного превосходства в "библиотеке на классах" и "new и delete", по непонятно каким критериям "лучшим", нежели malloc(3) и free(3), я таки не вижу.

                  Тем более, когда определенная парадигма навязывается языком -- это уже не плюс. И не ноль. Это минус.
                    Цитата Ho Im @
                    Тем более, когда определенная парадигма навязывается языком -- это уже не плюс. И не ноль. Это минус.

                    Ткни пальцем - в каком месте эта парадигма навязывается? Или ты хочешь сказать, что программируя на С++ я не могу использовать функциональный стиль? Тогда ты в корне неправ.
                    Цитата Ho Im @
                    Лично не вижу преимуществ в том, что стандартная библиотека основана на классах.

                    Приемущество хотя бы в обобщенности кода. Причем на разных уровнях - как на уровне самой библиотеки, так и на уровне ее использования. И не надо говорить о #define-ах. Шаблоны и дефайны - совершенно разные вещи. Даже рядом не стоят.
                    При этом даже использование стандартной библиотеки не заставляет тебя проектировать собственный код с использованием классов. Теже самые шаблоны прекрасно работают с POD-типами. А свободные функции - они и в африке свободные функции. Итог - не хочешь программировать с использованием ОО-парадигмы - да сколько угодно. Языку и библиоеке это совершенно по барабану.

                    Добавлено
                    Цитата Ho Im @
                    "new и delete", по непонятно каким критериям "лучшим", нежели malloc(3) и free(3), я таки не вижу.

                    Гм. Ну как бы так сказать... При использовании new тебе не надо явно указывать размер создаваемого объекта (это сделает сам компилятор), не надо явно вызывать функцию инициализации (компилятор сам вызовет подходящий конструктор). delete сам вызовет функцию деинициализации (деструктор). Ты можешь явно переопределить new и delete для конкретного типа (при этом клиенсткий код останется неизменным). Хочешь сказать, что при использовании malloc и free ты получаешь такой же сервис?
                      Цитата
                      Хочешь сказать, что при использовании malloc и free ты получаешь такой же сервис?

                      Я получаю более легкий runtime, цепляющийся к программе, если эти вещи не нужны.
                      Цитата
                      Или ты хочешь сказать, что программируя на С++ я не могу использовать функциональный стиль?

                      Да все можно. Вон на васике ось пишут... Но -- будет ли это удобно?
                        +) используя new мы получаем очень удобный "откат назад" (Стандарт гарантирует, что всё вернётся взад) если вдруг при конструировании 4256 объекта вдруг что то сломалось. Это получается автоматом, без лишних телодвижений.
                        +) операторы new / delete удобно перегружаются для отдельных классов, если нас не устраивает стандартный менеджер памяти.
                        +) такая вещь, как "типы данных, похожие на стандартные", для которых перегружены операторы +, -, *.

                        Вообще мощь С++ складывается из 3 вещей.
                        1) перегрузка
                        2) шаблоны
                        3) наследование
                        4) namespaces
                        5) параметры по умолчанию: нет нужды переписывать переколбашивать весь проект, елси в функцию добавится параметр
                        6) более строгая типизация

                        т.о. видно, что С++ лучше подходит для КРУПНЫХ проектов.

                        Цитата

                        Я получаю более легкий runtime, цепляющийся к программе, если эти вещи не нужны.

                        ну, не нужны, так не нужны. в наше время скорость рантайма приносится в жертву лёгкости отладки и сопровождения.
                        К тому же, если всё в порядке, то скорость не сильно хуже.
                          Цитата Ho Im @
                          Я получаю более легкий runtime, цепляющийся к программе, если эти вещи не нужны.

                          А что, в С++ malloc и free уже отменили? :blink: :blink: :blink:
                            Цитата Flex Ferrum @
                            А что, в С++ malloc и free уже отменили? :blink: :blink: :blink:

                            ДА нет! Это изжиток С... :rolleyes:
                              Вот, нашел интересное масло для огня:
                              Why C++ Sucks
                              Why C++ Sucks

                              Искал сходные материалы по C, не нашел.
                                Цитата

                                Искал сходные материалы по C, не нашел.


                                1) С не сакс, просто он немного... для другого.
                                2) С сакс потому что смотри мой пост от Вчера, 19:41
                                3) Категоричность статей позволяет мне думать, что авторы заблуждаются.

                                называть кого то гадом, козлом и уродом - это значит, что все НОРМАЛЬНЫЕ аргументы уже иссякли. А это значит, что их нет. Ну нету в С адекватного ответа namespace-ам, шаблонам, и перегрузке. И это мы ещё не дошли до классов, операторов и т.п. полиморфизму!

                                Я так понимаю, С не может быть саксом, потому что это часть С++.

                                Ho Im - вашу бы энергию, да против Дельфи ;) :lool:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0678 ]   [ 15 queries used ]   [ Generated: 27.04.24, 09:07 GMT ]