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

    Плохо написанный код на любом языке приходится перебирать до самого основания. Но в ООП-языках у программиста есть хотя бы какой-то стимул делить задачу на части, что хоть немного упрощает её анализ.

    Добавлено
    Цитата Исмаил Прокопенко @
    Сколько всего нужно знать и держать в голове когда кодишь на С++.
    Можешь не держать в голове. Заведи справочник по стандартной библиотеке.
      Цитата amk @
      Тудзами для рефакторинга не пользуюсь, стараюсь сразу писать нормально.

      Но ведь существует и другой стиль (я читал про это в инете) написания С++ программ: по быстрому что-то набросать, а потом рефакторить, рефакторить и рефакторить.
      Может потому что так быстрее получается: написать говнокод, а потом его отрефаторить, чем сразу писать "набело", долго продумывая все нюансы.

      Как считаете?
        Цитата Исмаил Прокопенко @
        Но ведь существует и другой стиль (я читал про это в инете) написания С++ программ: по быстрому что-то набросать, а потом рефакторить, рефакторить и рефакторить.


        Я вас просил подтвердить свои слова кодом на Си. Чтобы разговор был предметным. А вы опять за рассуждения ...
          Цитата JoeUser @
          Я вас просил подтвердить свои слова кодом на Си.

          Я извиняюсь. Но кода не будет.
          Ещё раз прошу пардона.
            Цитата Исмаил Прокопенко @
            И "порог вхождения" в C++ ещё и потому высок, потому что писать хоть сколько то сложные программы невозможно без специализированных тулзов, типа IDE, браузеров иерархии классов и т.п.
            ...
            Ты не поверишь, я вишу в FAR-е. Студия – разве что в качестве отладчика. Рефакторинг, выходящий за пределы возможностей FAR-ного редактора с плагинами, мне не нужен. Итп.
            Ты себе напридумывал страшилок. Все эти страшные фичи C++, наоборот, позволяют тебе не думать над всем тем, над чем C думать требует. Не поняв этого, ты и подошёл к C++ с позиции C, что было ошибкой.
            Цитата Исмаил Прокопенко @
            Просто?
            Если не надо разбираться: а что такое эти A, b и c? Какой они тип имеют в этой точке программы?
            А какая именно функция здесь подразумевается под f?
            А какая функция выполняется под знаком "="?
            А если иерархия имеет 5 уровней с перекрестным наследованием и виртуальными и многократно перегруженными функциями (в том числе и конструкторами)? Просто?
            И тут придется перелопачивать столько кода и проанализировать столько зависимостей (зачастую неявных, как говорят "по умолчанию"), что мама не горюй.
            Ну, что я говорю. Ответь сначала на один вопрос: зачем тебе всё это знать? Это C-шный подход. Плюсовый – "некая хрень f, выглядящая как функция с двумя параметрами и что-то там возвращающая, вызывается c параметрами b и c, и то, что она возвращает, попадает в A". Этого разве не достаточно? Зачем тебе вглубь лезть? C++ спроектированы как раз так, чтобы тебе не требовалось лазить по нутрам, а ты наперекор ему это делаешь. В принципе, ну и ради бога, на здоровье, только жаловаться-то потом зачем?

            Добавлено
            Цитата Исмаил Прокопенко @
            Я извиняюсь. Но кода не будет.
            Та как бы и не удивительно.
              Цитата Исмаил Прокопенко @
              Может потому что так быстрее получается: написать говнокод, а потом его отрефаторить, чем сразу писать "набело", долго продумывая все нюансы.
              Этот стиль хорош только для программ с коротким временем жизни. Написать программу нормально получается быстрее, чем отрефакторить написанную на скорую руку. А привыкнув так писать, и само написание может оказаться быстрее. При аккуратном подходе меньше времени на отладку уходит.
                О достоинствах и преимуществах С++ в этой теме было сказано не мало.
                Но все же БОЛЬШЕ хотелось послушать про недостатки С++ и его ограничения.
                Все мы знаем, что "серебряной пули" не существует и у всех языков программирования есть какие-то недостатки и слабые места, которые вызывают проблемы при коддинге.
                Я сейчас не о тех "проблемах", которые возникают у новичка просто потому, что он плохо знает язык.
                Я о реальных/настоящих проблемах и ограничениях при программировании на С++, которые возникают даже у опытных кодеров на С++.
                  Как ни странно, самый большой его недостаток в его преимуществе – высокий уровень контроля над средствами низкого уровня и совместимость с C на уровне исходных текстов. Именно это создаёт новичкам в Плюсах множество проблем.
                    Цитата Qraizer @
                    Именно это создаёт новичкам в Плюсах множество проблем.

                    а гуру С++ что создает проблемы? Что раздражает в С++?
                      Цитата Исмаил Прокопенко @
                      а гуру С++ что создает проблемы? Что раздражает в С++?

                      Ну я далеко не гуру, но некоторою "многословность" у C/C++ замечаю.

                      К примеру, как будет выглядеть та же задача, которую я написал выше на С++, реализованная на Perl5 (ссылка):

                      ExpandedWrap disabled
                        #!/usr/bin/perl
                         
                        $Text = "Хотелось бы конкретных примеров.\n".
                                "Типа таких \"вот человек решал эту задачу (описание задачи) на СИ полгода.".
                                "Я сделал её на С++ на неделю\"";
                         
                        map {$M{$_}++} split(/[\s,\.=\(\)\"+-]+/,$Text);
                        map {print ${$_}[0]." : ".${$_}[1]."\n"} sort {
                        ${$b}[1] <=> ${$a}[1] || ${$a}[0] cmp ${$b}[0]
                        } map {[$_,$M{$_}]} keys %M;

                      Скрытый текст
                      ExpandedWrap disabled
                        С : 1
                        СИ : 1
                        Типа : 1
                        Хотелось : 1
                        Я : 1
                        бы : 1
                        вот : 1
                        её : 1
                        задачи : 1
                        задачу : 1
                        конкретных : 1
                        неделю : 1
                        описание : 1
                        полгода : 1
                        примеров : 1
                        решал : 1
                        сделал : 1
                        таких : 1
                        человек : 1
                        эту : 1

                      Правда компактнее?
                        Цитата JoeUser @
                        Правда компактнее?

                        Правда.
                        Но "компактней" не значит лучше.
                        Для кода "читабельность" важней компактности.


                        Прикреплённая картинка
                        Прикреплённая картинка
                          Цитата Исмаил Прокопенко @
                          а гуру С++ что создает проблемы? Что раздражает в С++?
                          Если признаком гуру считать то, что он в отличие от новичков умеет применять инструменты к месту, не использует сомнительных архитектурных решений без необходимости и не будет применять фичу ради неё самой, то да, я гуру. Лично меня ничего не раздражает. Я понимаю причины, почему C++ именно таков, и понимаю, почему те или иные его аспекты нельзя было бы сделать иначе.
                          Достаточно соблюдать несколько несложных правил, и программирование на Плюсах будет доставлять только удовольствие. Из-под пальцев будет выходить рабочий код, не требующий отладки (кроме разве что если набажил с разработкой или реализацией алгоритмов, но тут ни языке дело ни разу), надёжный в плане отказоустойчивости, легко сопровождаемый. Именно по причине того, что "не требуется знать, как оно устроено".
                          К примеру, в Плюсовых программах практически не встречается код с сырыми указателями и адресной арифметикой. Уже этого достаточно, чтобы гарантировать отсутствие львиной доли ошибок, которые допускаются в C программах. Они, конечно, зачастую-таки есть, но глубоко в недрах реализаций абстракций, которые однажды были уже отлажены и больше внимания к себе не требуют.

                          Добавлено
                          P.S.
                          Цитата Qraizer @
                          Достаточно соблюдать несколько несложных правил, и программирование на Плюсах будет доставлять только удовольствие.
                          И да, ещё признаком гуру можно считать тот факт, что он знает, когда эти правила можно нарушить и как именно это делать правильно ;) .
                            Цитата Qraizer @
                            Они, конечно, зачастую-таки есть, но глубоко в недрах реализаций абстракций

                            Т.е. их труднее отловить?

                            Цитата Qraizer @
                            И да, ещё признаком гуру можно считать тот факт, что он знает, когда эти правила можно нарушить и как именно это делать правильно

                            А ещё гуру знает слабые места языка и знает его ограничения/НЕДОСТАТКИ.
                            И что вызывает НАИБОЛЬШУЮ сложность при работе на С++.
                            Может он поделится инфой? :)
                            Чтобы новичок не наступал на грабли?
                            Сообщение отредактировано: Исмаил Прокопенко -
                              Цитата Исмаил Прокопенко @
                              Правда.
                              Но "компактней" не значит лучше.
                              Для кода "читабельность" важней компактности.

                              У меня на Perl'е просто гораздо больше практики, чем на C/C++. Читать и писать мне такое - привычно и удобно. И очень существенно - просто быстрее. Хотя тебя понимаю. Для меня данная ситуация несколько напоминает холивары с редактором vi/vim. Народу, который его освоил - я завидую по-белому. С виду аскетичный редактор, со своей "идеологией" режимов - на поверку оказывается очень мощным, мощнейшим инструментом. Однако, чтобы им пользоваться - надо привыкать, надо начинать пользоваться. Много людей, которые себя заставили - очень довольны своими усилиями. Наверное нечто подобное и с языком C++... А я уже лет 15-20 "намечаю в планах" заставить себя работать со включенным NumLock'ом. Как наработался некогда на 83-кнопочных клавах, засело на уровне инстинкта - NumPad == стрелки и ничто иное :lol:
                                Цитата JoeUser @
                                Хотя тебя понимаю.

                                Не думаю.
                                Просто я не программист. У меня другая профессия.
                                Поэтому у меня голова СОВСЕМ ДРУГИМ под завязку забита.
                                И мне просто нужно по быстрому сварганить программу на плюсах.
                                А тут выяснятся, что столько всего нужно знать.
                                Мало того что сам синтаксис на порядок сложней сишного.
                                Так ещё всякие контейнеры и итераторы есть.
                                И всякие тулзы/браузеры кода и прочие приблуды.
                                И прочие нюансы

                                Чтобы все освоить на должным уровне нужно ГОДЫ И ГОДЫ заниматься только чисто программированием и тулзами для программирования.

                                Но у меня-то совсем другая профессия. И там тоже много нужно знать.
                                А голова ведь не резиновая. Да и времени столько на освоение я не могу себе выделить :wall:

                                Вот и маешься: как бы все это обойти, нет ли каких-то обходных путей, чтобы "раз-раз и в дамки"
                                Сообщение отредактировано: Исмаил Прокопенко -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) 1 [2] 3 4 ...  31 32


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