Prompt, please, a coherent plan of learning C++, which will provide knowledge not only to solve educational problems, but to apply in commercial practice.
Most courses give the basics, the plan is always the same. Passed fundamentals, data types, overloading, encapsulation, polymorphism, etc. and finished the theoretical part is the use of templates.
I would like to see something like plan training on hexlet , which details technology to create a specific application.
Found the courses opus plan, and it, too, would like to know the opinion:
- Build system: build, test and deploy
- Shyrokosmolenka features of the C++11 standard. auto. A closure is a Lambda function. Tuples.
- Shyrokosmolenka features of the C++11 standard. an rvalue or lvalue reference. Move semantic. Variadic Templates. POD. The lambda function. Tuples.
- Innovations 14 standard.
- Deep into the implementation of smart pointers.
Pitfalls and optimization.
- The standard allocator and its disadvantages. Various methods of memory management.
- C++: macros. Type traits to STL. SFINAE
- Design principles FOR
UML. Principles: SoC, DRY, YAGNI, KISS, TDA, LoD, SOLID
- Patterns GoF
Streams. Critical sections and synchronization mechanisms: mutex, semaphore, conditional variables, barriers. The thread pools.
- The 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.
- Asynchronous programming
Architecture asynchronous services. Low-level support for asynchronous code execution.
- Lockfree DS
Non-blocking data structures and algorithms. BOOST Lockfree
Sockets. Protocols: TCP and UDP. Serialization. HTTP. Json. Zmq. Protobuf.
- Asynchronous I/o
Libraries and practices of non-blocking data transfer
The use of RDBMS. Connecting and working with databases
- Key Value
The Idea Of NoSQL. Aerospike, redis, leveldb
- Map reduce
- OOP when working with databases. DAO and Repository patterns
- Dlib. Clustering, topic modeling. Regression. Classification.
There is also a matrix of competence
, but I would like to project this in C++
And a couple of questions:
1) do I Need a mentor? So whether its presence helps to progress?
2) Should we just "jump from a boat to learn to swim" and try to write some sort of simple game engine, bot tutorials where Google strange parts and study topics?