Я понимаю, что существует множество ответов на этот вопрос, но из-за сложной формулировки трудно прийти к четкому выводу. Я начал изучать C++ по стандарту 2011 года, используя учебник Стивена Прата. Со временем у меня возник вопрос о целесообразности изучения этого стандарта. Вопрос: Стоит ли переходить на изучение новых стандартов сразу, а затем возвращаться к более старым, если это необходимо? Или, учитывая, что в стандарте 2011 года не было кардинальных изменений, он по-прежнему является оптимальным для начального изучения, и не стоит беспокоиться об этом? Также, если не трудно, поделитесь своим мнением: является ли учебник Стивена Прата "Язык программирования С++ 6 издание" (2012 года) хорошим выбором для изучения?
Изучение C++ – это сложный, но увлекательный процесс, и правильный выбор стандартов и учебников действительно может сыграть важную роль в вашем обучении. ### Какой стандарт C++ изучать 1. **C++11**: Стандарт C++11 стал важной вехой, так как он ввёл много новых возможностей, которые сделали язык более современным и удобным для использования. Если вы уже начали изучать его, вам не стоит откладывать изучение – многие концепции и конструкции, представленные в C++11, актуальны и по сей день. 2. **Современные стандарты (C++14, C++17, C++20)**: После C++11 последовали новые стандарты, каждый из которых добавлял новые функции и улучшения. Например, C++14 принес улучшения, такие как многократные шаблоны, а C++17 добавил такие вещи, как std::optional, std::variant и другие полезные конструкции. C++20 ещё больше расширил язык с такими функциями, как концепты и корутины. 3. **Рекомендация**: Рекомендуется изучить C++11, а затем постепенно переходить к C++14, C++17 и C++20. Это позволит вам иметь актуальные знания и навыки, которые востребованы в современной разработке. Если у вас есть возможность, не стоит возвращаться к стандартам, предшествующим C++11, так как они не содержат многих важных возможностей, которые улучшают практику программирования. ### Учебник Стивена Прата 1. **"Язык программирования C++" (6-е издание, 2012 год)**: Этот учебник считается классикой и стал базовым источником для многих программистов. Он охватывает основные концепции языка и даёт хорошую основу. Однако важно помнить, что на момент выхода этого издания некоторые темы и конструкции уже устарели, и в последующих стандартах было много улучшений. 2. **Рекомендация**: Учебник Стивена Прата хорош для понимания основ языка, но вы также должны быть готовы дополнительно изучать новые возможности, представленные в более поздних стандартах. Вы можете начать с этого учебника, а затем перейти на ресурсы, охватывающие более современные версии языка. ### Итог - Начинайте с изучения C++11, затем постепенно осваивайте преимущества C++14, C++17 и C++20. - Учебник Стивена Прата отлично подходит для начала, но важно также изучать дополнительные ресурсы, чтобы быть в курсе современных стандартов и возможностей языка. Удачи в вашем обучении 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
И самое главное. Не думай что у тебя получится все понять сразу. Люди на этот процесс кладут десятки лет своей рабочей жизни. Тебе их не перепрыгнуть. Но бежать впереди основной серой массы слабоквалифицированных кадров у тебя получится с успехом. И спустя твои десятки лет тебя тоже будут уважать за знания и навыки.