. Освоение С++ — посоветуйте книги и материалы
Освоение С++ — посоветуйте книги и материалы

Освоение С++ — посоветуйте книги и материалы

О себе: 19 лет, 0 опыта, 2 года свободного времени +, огромное желание постигать.

Нужен совет: выбрал C++(VS2015) как первый и основной язык для дальнейшего перехода в геймдев 1) Какие книги и материалы изучать с полного нуля, ибо везде пишут разные вещи и разные книги

2) Реально ли выйти хотя-бы на уровень джуна в цпп за пару лет

3) Какие доп материалы кроме книг компа и обучалок нужны

До обраного В обраному 0

Схожі топіки 122 коментарі

Огромное спасибо все кто отписывается и будет писать, узнал кучу материала для освоения начал читать и кодить,кодить,кодить «hello,world :D»

Я когда 10 лет назад начинал учить плюсы, внимательно читал Herb Schildt — C++ from ground up.

много материалов по этой теме есть на сайте Центра робототехники Boteon в разделе «домашнее задание» (доступно для зарегистрированных пользователей)

Чистый С++можно выучить так:1) архитектура / общие принципы программирования: C++ in Action: Industrial Strength Programming. Эта штука расскажет на примере калькулятора, как с нуля написать свой проект, как его апгрейдить, и что зачем в языке нужно. Сам язык излагается очень сумбурно.2) собственно язык: Teach yourself C++ in 21 Days (какие-нибудь старые версии в нете). Дает хорошую базу по собственно С++. Детали и извращения можно потом почитать в C++ FAQ Lite в нете (тоже где-то лежат зеркала старой версии). Для прохождения собеседования надо прочесть Страуструпа и, вероятно, что-то про С++ 11/14.3) практика: написать что-нибудь свое. Если хочется в игрушки — значит, какой-нибудь арканоид, например. Только вот что: на С++ писать очень долго. Рекомендую вначале выучить Питон, и первую игрушку писать на нем. По окончании процесса собирания граблей месяца и полурабочая версия игрушки на Питоне) можно возвращаться к С++ (написать еще одну игрушку).4) Питон: учится по туториалу, который входит в доки (инсталляция). Но чтобы что-то с этим самым питоном сделать, смотри пункт 1.5) IDE: Eclipse (Linux) или VS (Windows) для С++, PyCharm или PyScripter для Питона.6) Почитать на Википедии про: структуры данных, алгоритмы, многопоточность, design patterns, antipatterns. От джунов серьезно требовать не должны, но желательно понимать, о чем тебя спрашивают на собеседовании.7) Библиотеки: Я использовал PyGame для игрушки на Питоне и WinApi для С++. Вероятно, сейчас стоило бы юзать QT.

Если тратить 100% времени на чтение и программирование, можно это все успеть за 9 месяцев. Потом — походить по собеседованиям, после 10 неудачных попыток уже примерно знаешь вопросы, дочитываешь то, на чем завалили, и на 11 собеседовании проходишь.После этого еще года 3 надо будет читать умные книжки.

Доп материалы никакие не нужны. Если комп слабый — можно найти старые тулзы, которые на нем летать будут.

Я вот больше года учу уже. Прошел кучу всяких уроков. Основные принципи OOP и самого языка знаю вроде бы. Начал недавно учить Qt, написал элементарную игру с его помощью. Это задание такое тестовое было. Немного удивился, что на Qt дали пилить игру. Сейчас вот сижу и думаю, что дальше-то. По собесам хожу, но среди них половина неадекватных. В основном несколько вопросов из разряда «Женаты? Дети есть?» и тестовое на дом. Не понятно зачем ради этого звать на собеседование. Итого — фидбека годного пока что нет. На одном из собесов вальнули логической задачей. Разволновался, не смог решить и меня послали не задав ни одного тех.вопроса :D Сейчас начал читать Страуструпа в оригинале. C++ Programming language. Надеюсь это даст мне то, чего не хватает для работы. Хотя страниц там немеренно, читать буду долго, походу) p.s. спасибо за развернутый ответ топик стартеру. мне он тоже был полезен.

А я вот что-то не уверен, что «The C++ Programming Language» Страуструпа так уж прям необходимо читать. Да, можно почитать — лишним не будет, конечно. Но если ты хочешь поскорее выучить язык и понять, как на нём программировать, не отстреливая себе конечности, то найдутся варианты получше. Причём на любом из этапов твоего обучения.

Если ты новичок, то учи основы по чему-то более лёгкому для восприятия. Книг для новичков море — выбирай любую. Из того, что я сам читал, могу порекомендовать Стивена Прату («C++ Primer Plus»). Есть пара кривоватых мест (например, в разделе про placement new он не упоминает про выравнивание), но в целом книга очень подробно и доступно объясняет основы. Начиная с шестого издания есть вставки а ля «а вот в C++11 можно ещё воооот таааак зафигачить», что тоже плюс, ибо знания плюшек из новых стандартов сейчас много где спрашивают.

Для новичков же «The C++ Programming Language» Страуструпа будет тяжёлой книгой. Она скорее этакий «справочник» для тех, кто уже знает основы. Я знаю многих людей, которые рано брались за эту книгу и бросали. Так что советовать её новичку не могу.

Для новичков у Страуструпа есть другая книга: «Programming: Principles and Practice Using C++». Но она предлагает учить C++ с несколько другого конца. Например, начинать динамические массивы сразу с векторов, минуя сырые указатели и прочую «сишную» муть. Это с одной стороны хорошо, с другой плохо — дискутировать на эту тему можно очень долго. Тема для очередного холивара :)Но по факту я не знаю ни одного человека, который бы выучился на программиста C++ по такой методике, несмотря на то, что сейчас её активно продвигают. Может, она ещё себя оправдает. Но пока рекомендовать этот подход я тоже не стану.В конце концов, все эти низкоуровневые «сишные» штуки, работу с указателями и т.д. программист на C++ также должен знать. Нельзя пользоваться вектором и не понимать, как он устроен.

Если ты уже знаешь основы, то лучше шлифуй свои знания не Страуструпом, а книгами по «хорошим практикам». Это в первую очередь совместная книга Саттера и Александреску «C++ Coding Standards» и все книги Скотта Майерса: «Effective C++», «More Effective C++», «Effective STL», «Effective Modern C++».Они тебе расскажут, как пользоваться C++ так, чтоб не прострелить себе ногу (ожидая, что с основами языка ты уже достаточно хорошо ознакомлен).Если затянет, то туда же можешь добавить и «сольные» работы Саттера (серия «Exceptional C++»). Он рассматривает несколько более специализированные проблемы, преимущественно касающиеся безопасности относительно исключений. Но это уже опционально. Главное Майерса осиль.Если по ходу чтения будешь встречаться с незнакомыми классами или функциями из std (книги для новичков всё-таки рассматривают не 100% стандартной библиотеки) — не стесняйся заглядывать на cppreference.com и cplusplus.com/reference. На первом сайте формулировки более наукообразные, но более полные и точные. На втором — более лёгкие для понимания.

И не забывай про многопоточность. Конкретно по многопоточности в C++ есть книга Энтони Уильямса «C++ Concurrency In Action». Можешь почитать её, но более сложные главы пропускай или читай по диагонали. Знать о потоках, мьютексах, условных переменных, атомиках (которые по умолчанию sequentially consistent) тебе в любом случае стоит. А вот атомики с не-дефолтными memory ordering’ами, дизайн lock-free структур данных и прочий матан пусть подождёт — с джуниора такое спрашивать не будут.

Надо просто ходить на все собесы и не бояться сразу после окончания технических вопросов спросить у того, кто их задавал, что почитать на эту тему, или чего тебе не хватает. Технари часто менее злые, чем рекрутеры, и относятся к тебе не как к пачке денег, а как к потенциальному сотруднику (сложившемуся или несложившемуся). Поэтому на вопросы могут поотвечать.Обычно на то, чтобы найти первую работу, уходит не меньше 10 собеседований. Между ними надо почитывать то, что рекомендуют, и дотягивать непонятые области, хотя бы с Википедии.Можно не брезговать вакансиями embedded C — зарплата в тех же рамках, но будет возможность на практике увидеть, как работает все то, что в С++ «под капотом». Часто эмбедеры прыгают между С и С++ проектами, даже в рамках одной конторы. И может быть, что С в результате больше понравится, чем С++.

Еще одно: тот, кто спрашивает, ошибается. Мне на первом собеседовании сказали «пошел на, работать не будет». Пришел домой, скомпилил, запустил — работает. Оказывается, собеседующий не знал приоритеты применения операторов. Еще есть куча спорных моментов, в частности — во всем, что касается архитектуры (шаблонов, . ), оптимизаций и подхода к проекту (например, юнит/автотесты против ручного тестирования с кучей ассертов). Если на тебя кричат или улыбаются, и говорят, что ты не прав, даже аргументируя какими-то гипотетическими случаями, лучше от такой команды держаться подальше. Очень часто на практике все по-другому.(Это не касается явно нерабочего кода, который свалится при запуске. Но если ты сделал но в общем написал задачку правильно — это вполне нормальный результат.)

Если контора дает задачки на дом — это уже плохой знак. Они не уважают твое время.

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

📎📎📎📎📎📎📎📎📎📎