Добрый день.
Подскажите, пожалуйста, последовательный план обучения C++, который даст знания не только для того, чтобы решать познавательные задачки, но применить себя в коммерческой практике.
Большинство курсов дают основы, план везде один. Прошел основы, типы данных, перегрузку, инкапсуляцию, полиформизм и т.д. и закончил теоретической частью использования шаблонов.
Хотелось бы видеть что то вроде плана обучение на hexlet , где подробно расписаны технологии для создания определенного приложения.
Нашел на курсах отус план, и по нему тоже хотелось бы узнать мнение:
- Система сборки: build, test and deploy
- Широкоиспользуемые фичи C++11 стандарта. auto. Замыкание - Лямбда-функции. Кортежи.
- Широкоиспользуемые фичи C++11 стандарта. rvalue и lvalue ссылки. Move semantic. Variadic Templates. POD. Лямбда-функции. Кортежи.
- Нововведения 14 стандарта.
- Вглубь реализации умных указателей.
Подводные камни и оптимизации.
- Стандартный аллокатор и его недостатки. Различные методы управлением памятью.
- C++: макросы. Type traits в STL. SFINAE
- Принципы проектирования ПО
UML. Принципы: SoC, DRY, YAGNI, KISS, TDA, LoD, SOLID
- GRASP
- Шаблоны GoF
- Антипаттерны
- STL
- Boost
- Многопоточность
Потоки. Критические секции и методы синхронизации: мьютексы, семафор, условные переменные, барьеры. Пулы потоков.
- Concurrency pattern. Active Object, Balking, Barrier, Double-checked locking, Guarded suspension, Leaders/followers, Monitor Object, Reactor, Read write lock, Scheduler, Thread pool, Thread-local storage.
- Асинхронное программирование
Архитектура асинхронных сервисов. Низкоуровневая поддержка асинхронного выполнения кода.
- Lockfree DS
Неблокирующие структуры данных и алгоритмы. BOOST Lockfree
- Сетевое взаимодействие
Сокеты. Протоколы: TCP и UDP. Сериализация. HTTP. Json. Zmq. Protobuf.
- Асинхронный ввод/вывод
Библиотеки и практики работы с неблокирующей передачей данных
- РСУБД
Использование РСУБД. Подключение и работа с БД
- Key Value
Идея NoSQL. Aerospike, redis, leveldb
- Map reduce
- ООП при работе с базами данных. Паттерны DAO и Repository
- Dlib. Кластеризация, тематическое моделирование. Регрессия. Классификация.
Там же присутствует
матрица компетентности , но хотелось бы спроецировать это на C++
И еще пара вопросов:
1) Нужен ли ментор? Так ли его присутствие помогает прогрессировать?
2) Стоит ли сразу "прыгнуть из лодку, чтобы научиться плавать" и пытаться написать какой нибудь простой игровой движок, бота по туториалам, где гуглишь непонятные части и изучаешь темы?