@beem7

По какому учебнику изучать C++, чтобы работать в современном проекте?

Учебник нужен не столько мне, сколько моему коллеге, который ещё новичок не выше intern'а.

Хотя и мне тоже не помешает почитать. Хоть я и занимаюсь программированием уже несколько лет, за все это время я не прочитал ни одной книги. Мне "авторитетные" люди в свое время сказали, что все книги - дно, а гугл рулит. Я так и сделал, книг не читал, но хорошо научился гуглить и читать статьи и код.

Но сейчас я понимаю, что дно - это как раз статьи. Причем не какие-то конкретные, а любые, и все вместе взятые.

Вводим в гугле, например, "c++ map".

Открываем статью. Нам сразу суют кусок кода. Далее следуют длинные и не очень читаемые объяснения к каждой строчке этого кода. Где-то среди этой простыни затерялась единственная умная мысль, про то, что map сам сортирует значения по ключам. Даже нарочно не заметишь, и не запомнишь. Больше умных мыслей нет. Зато в эту же статью зачем-то засунули multimap. К нему опять код и опять тупые пояснения. И весь код ужасно неряшлив и кишит устаревшими конструкциями, которые в C++11 можно записать покороче. А multimap засунут не в одну, а как минимум в две статьи из топа в поиске.

Ок. Открываем статью на сайте ru.cppreference.com - действительно умном сайте, который позиционирует себя как документацию к C++. Здесь полная противоположность - с первых предложений рассказана сама суть контейнера. Ключи, оказывается, не только сортируются, но и поддерживается их уникальность. Указана алгоритмическая сложность операций. Указан алгоритм, который используется внутри std::map.

Это уже лучше. Такую статью можно использовать хотя бы для повторения знаний при работе над какими-то задачами.

Но для первичного обучения она тоже не подходит. Слишком коротко, и термины такие, которые непосвященный не сможет правильно понять: "std::map - отсортированный контейнер " - что значит отсортированный? Что в нем отсортировано? В нем же еще нет данных...

Вывод из всего этого можно сделать довольно банальный: для первичного обучения - книги, для повторения при работе - нормальные статьи и книги.

Причем, для первичного обучения важно, чтобы книги были на русском языке.

И еще один важный момент. В современном C++ давно уже недостаточно STL. В любом серьезном проекте доступна библиотека Boost. А по ней, например по boost::multi_index, "этих ваших" статей нет ВООБЩЕ. Тут тоже нужны книги.

Нужна книга или книги, которые годятся для обучения, но предоставляют серьезный подход.
  • Вопрос задан
  • 1294 просмотра
Пригласить эксперта
Ответы на вопрос 4
saboteur_kiev
@saboteur_kiev Куратор тега C++
software engineer
Читая книги, невозможно научиться ездить на автомобиле, даже если научишься рассчитывать октановое число.

Поэтому все верно говорят - начинающему нужно много практики. Просто писать код, который работает. Гугл и статьи помогают быстро создать программу, которая в принципе запустится.
Так можно наработать каркас знаний, которые ты не просто слышал, а которые точно работают и ты знаешь как.

Книги - можно читать парралельно. Но лучше начать чуть позже - с багажом практики. Тогда читая книгу ты будешь понимать о чем идет речь, дополнять теорию и навешивать свой каркас более глубоким пониманием.

Если взять по аналогии английский, то для того, чтобы научиться говорить, не нужно годами читать учебники по грамматике. Нужно взять словарь (справочник с++), простой разговорник (статьи с примерами кода) и писать код (пытаться общаться, смотреть мультики/фильмы/подкасты). Так можно сразу понимать и говорить.
А учебники можно уже позже, чтобы углублять свои знания.
Ответ написан
myjcom
@myjcom Куратор тега C++
First

https://stackoverflow.com/questions/388242/the-def...
https://isocpp.org/tour
isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
https://isocpp.org/faq
www.josuttis.com
https://www.aristeia.com/books.html

https://proglib.io/p/cpp-books/
https://tproger.ru/books/cpp-books-beginners/

Подскажите свежий учебник по С++
Какой выбрать современный хороший учебник по C++?
Какой учебник выбрать новичку для изучения C++?
etc...

Новинки (переводы) shtonda.blogspot.com
Рецензии https://www.livelib.ru

Учебник нужен не столько мне, сколько моему коллеге, который ещё новичок не выше intern'а.

https://habr.com/ru/company/piter/blog/320298/
shtonda.blogspot.com/2015/07/practice-programming-...

  
Но для первичного обучения она тоже не подходит. Слишком коротко, и термины такие, которые непосвященный не сможет правильно понять: "std::map - отсортированный контейнер " - что значит отсортированный? Что в нем отсортировано? В нем же еще нет данных...

Если под непосвященным имеется ввиду ваш интерн, то наверное нужно начать с чего то подобного
https://ru.wikipedia.org/wiki/Абстрактный_тип_данных
https://habr.com/ru/post/128457/
https://habr.com/ru/post/339656/
algolist.manual.ru/ds
!!! https://xlinux.nist.gov/dads/ !!!

Лень читать Резюме:
https://www.ozon.ru/context/detail/id/142089790/
https://ps-group.github.io/cxx/cxx_cheatsheet
https://ps-group.github.io/cxx/cxx17

Прочитал много о программирование, где взять практику?
https://habr.com/ru/post/207098/
https://tproger.ru/digest/competitive-programming-...

остальное shtonda.blogspot.com/2013/07/tour-c-plus-plus-stro...
Ответ написан
@savares
Разработчик
Комментировать
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Скотта Мейерса последнюю книгу по C++14 рекомендую.
Beginning C++17 Ивора Хортона. Не уверен правда, есть ли она на русском.
Солтер, Клеппер. C++ для профессионалов. Вообще, это отличная книга, которая охватывает не только сам язык, но ещё и многие другие аспекты программирования.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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