Вы правы, многие люди действительно пишут программы на С++ с диким количеством кода и огромным числом багов. Только вот непонятно, почему ругают за это сам язык, а не людей, неправильно его использующих?.. Вы не знаете?..
«И считаю, что рассматривать С++ в отрыве от возможностей С никак нельзя, хотя-бы потому, что все же он проектировался как наследник С.»
Это заблуждение. Очень вредное заблуждение. Современный С++ не имеет к С практически никакого отношения. Я подчёркиваю, как бы категорично это ни звучало: никакого отношения. С++ и С — это два разных языка программирования, с разной философией и разными сферами применения. Да, С++ произошёл от С, но это — лишь историческая данность прошлого века.
Я не считаю goto злом. Никакая языковая конструкция сама по себе не является ни злом, ни добром. Это инструмент. Хочешь использовать — используй правильно. Не хочешь — не используй вообще. Что касается практики: я пишу на С++, и в моих программах goto нет вообще. Он мне не нужен.
if не являются «вселенским злом», в конце концов, совсем без них программу не напишешь (если только не самую тривиальную). Но то, что они имеют тенденцию разрастаться как снежный ком и усложнять логику программы — это аксиома. Поэтому необходимо самым пристальным образом следить за ними. Самый простой способ (скажем так, первый шаг к победе) — это разбиение вложенных if, поскольку вложенные if уже начинают чуток попахивать вселенским злом.
Производительность немного повысилась, примерно на 1%? Ну, и насколько практичной можно считать облегчённую реализацию вектора со столь малым приростом производительности?
Согласен на 100%. На сегодняшний день С и С++ — это совершенно разные языки программирования. Да, исторические корни С++ никуда не деть, но факт остаётся фактом: эти языки стандартизуются разными Комитетами и идут разными путями. Поэтому совет изучить С перед изучением С++ — это очень (ОЧЕНЬ) вредный совет.
Абсолютно согласен. Например, в моих программах (практически) нет оператора delete. Нету и всё. Зачем мне руками освобождать память, если за меня это могут сделать библиотечные средства, такие как умные указатели и boost::ptr_container?
А что касается С-шных функций в современном С++, то нужны очень (ОЧЕНЬ) серьёзные основания для их использования. В противном случае (а это 99.9%) их наличие в С++-коде говорит о недостаточной квалификации С++-разработчика.
А я использую такую тактику: работаю на куском кода, потом отвлекаюсь от него (сознательно, чтобы думать о другом), потом возвращаюсь к нему, и «свежим» взглядом вижу проблемы. Часто приходит мысль: «Ёлки-палки, как же я сразу не заметил такой глупой ошибки!»
Это заблуждение. Очень вредное заблуждение. Современный С++ не имеет к С практически никакого отношения. Я подчёркиваю, как бы категорично это ни звучало: никакого отношения. С++ и С — это два разных языка программирования, с разной философией и разными сферами применения. Да, С++ произошёл от С, но это — лишь историческая данность прошлого века.
А что касается С-шных функций в современном С++, то нужны очень (ОЧЕНЬ) серьёзные основания для их использования. В противном случае (а это 99.9%) их наличие в С++-коде говорит о недостаточной квалификации С++-разработчика.