Задать вопрос
@moltikt

Какой стандарт C++ изучать?

Понимаю что ответов на данный вопрос тьма тьмущая, однако из-за формулировки сложно прийти к выводу.
Начал изучать С++ по стандартам 11 года (учебник Стивена Прата). И со временем заострился вопрос о смысле изучения данного стандарта.
Суть вопроса: есть ли смысл прыгать и пытаться учиться сначала по новым стандартам, а позже изучать материал более старых (если есть такая необходимость). Либо же из-за отсутствия кардинальных изменений, стандарт 11 года также является оптимальным для изучения на первых парах и нету смысла зацикливаться об этом?
Также если не сложно, хотелось бы узнать ваше мнение. Является ли материал учебника Стивена Прата "Язык программирования С++ 6 издание "(2012) хорошим выбором.
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
С. Прата подходит только для самого начала. 2012й год, стандарт C++11 вполне подходит чтобы начать.
Дальше Прата рассматривать уже незачем. В стандарт нужно вникать самостоятельно, а не через книги.

Смысла сначала разбираться с последними стандартами особого нет. Код C++ пишется на разных стандартах даже в рамках одного проекта. Редко получается найти достаточно большой коллектив людей, которые один стандарт знают достаточно хорошо. Поэтому люди пишут каждый в своем стиле и со своим знанием.
И в таком коде надо уметь разбираться. Между стандартами много отличий как в синтаксисе, так и в поведении одного и того же кода. Это надо очень хорошо знать.

Для систематизации своих знаний очень важно понимать то, почему в следующем стандарте были сделаны именно такие изменения. Поэтому очень важно разбираться по порядку их выхода.
cfront, C++2.0 и C++98 сегодня иррелевантны. C++03 неактуален из-за изменений в C++11.
C++11 является самой базой понимания современного C++. С ним нужно разобраться буквально до самых мелочей.
C++14 является очень важным шагом вперед и его тоже нужно изучить. Важнее всего отличия поведения кода между C++11 и С++14.
C++17 является радикальным. Помимо прочего в нем оговорен отказ от обратной совместимости стандартов. В нем же сделано больше всего изменений, влияющих на поведение кода. Разница поведения кода до 17-го и после него под час радикальна.

C++20 сосредоточен на метапрограммировании и времени компиляции, но и других изменений в нем тоже хватает. Отличия от C++17 и более ранних весьма существенны. Но продуктового кода на нем сейчас крайне мало и его еще пару лет можно не брать во внимание.
C++23 и C++26 пока можно не брать, они даже на уровне трансляторов все еще плохо поддерживаются.

Из полезного стоит больше всего внимания уделить рабочей версии стандарта: eelis.net/c++draft
А для быстрого ориентирования очень полезна выжимка изменений в стандартах: https://github.com/AnthonyCalandra/modern-cpp-features

И самое главное. Не думай что у тебя получится все понять сразу. Люди на этот процесс кладут десятки лет своей рабочей жизни. Тебе их не перепрыгнуть. Но бежать впереди основной серой массы слабоквалифицированных кадров у тебя получится с успехом. И спустя твои десятки лет тебя тоже будут уважать за знания и навыки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы