Answer the question
In order to leave comments, you need to log in
C++ skill buildup
Of course, it is interesting to understand a new area for yourself, but I want to benefit from this in the future. Therefore, now dealing with the pluses, I asked myself the following questions:
1) Additional technologies. Having shoveled several dozens of vacancies, I discovered that knowledge of STD (which, however, is not an additional technology) and Boost in terms of libraries, plus network and multi-threaded programming in terms of technologies, are in demand. The rest is applied area.
Are there any other must-know things for a c ++ developer that do not depend on specialization (algorithms, OOP, OS architectures and other fundamental things - this does not apply to the question, because the concepts are language-independent and you need to know them anyway, I'm currently interested in C++
2) OpenSource projects with a low threshold of entry and high-quality code, so that such a beginner in applied programming (behind mainly the web) as I could see how adult uncles do it, and write code that other programmers will watch and evaluate.
In general, the essence is that I want to become a sought-after c ++ developer after a while. And for this, only knowledge of the language is not enough, as my practice shows.
ps I looked at both .net, and java, and mobile platforms, but I didn’t like it, so advice on choosing another technology would be redundant, I think.
Answer the question
In order to leave comments, you need to log in
Qt is a different world, not std or boost. I think the requirements that you found in the vacancies are very enough. You have to practice a lot, a lot. In c++, you have a free hand and you have to practice bumps in order to understand when and how to use all these C plus plus chips.
If you want to write “true” programs, where the main thing is logic, algorithms, speed, then it’s better to look more at std, boost, if there is more gui, then study Qt more deeply.
Unfortunately, I can't suggest any projects. At least for now, look at the source, well, the same boost. Everything is quite complicated there and the design is “library”, that is, everything is written as abstract and generalized as possible (in real projects, this is rather evil). But something will already show and teach something. Start with a simple one (with libraries that provide cross-platform): boost time, boost thread, then you can boost asio (it is much more complicated).
What exactly a c++ programmer should understand from purely technical things that are not related to skill is templates. Try to learn how to do things that work similar to boost::enable_if, boost::any(+using RTTI), boost::HAS_XXX (determines whether type XXX is declared in such and such a structure), then you can learn how to sort lists of types (there is a modern Alexandrescu designing in C ++), at the same time, you can practice programming in a pure functional language. After that, the templates are yours :)
Experience in team work, version control systems, and writing unit tests is often required. Working with some kind of bugtracker won't hurt. Next comes knowledge of cross-platform libraries, WinAPI/Posix, development of multi-threaded/network applications, etc.
Although semi-off, did not look towards the D language? Although it is inferior to C++ in terms of distribution and the number of different libs (note: compatible with C++), the language itself is declared as a modern replacement for C++, devoid of its historical shortcomings, convenient and practical.
I asked the same question as you, and came to the conclusion that I would watch D first of all (while I am in the process of mastering C).
Here the theoretical minimum for a programmer is described, and C ++ is in the first place there .
On the first point - study design patterns . It will also be quite useful to read Fowler's excellent book " Refactoring ". The examples given in the book can be translated in relation to other programming languages.
In general, it is enough to know what is in stl and approximately know what is in boost. This is necessary in order to quickly find out where to find a solution and not to cycle.
It would be nice to read books by Myers, Sutter and Alexandrescu. This will help to understand some of the bottlenecks of the language. Well, write actually :) Experience is priceless.
Regarding Qt: it is worth reading a tutorial on it somewhere in order to understand what-to-what (slots \ signals, metasystem, etc.) and then code, again. Qt is happy with a simple library (in terms of learning) with great potential. I also advise you to immediately look at QtQuick as a promising GUI in Qt
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question