Optimal Newbie Way for C ++ / Qt

Frequently asked by novice programmers a question - what materials to read to improve their professional level? In this, most general form, it is impossible to answer this question. It depends on the person’s current knowledge and skills, on his specialization, on tasks that will arise before him in the future. However, I will try to answer this question for the direction of programming that I am best versed in - creating cross-platform complex desktop applications. Level and class applications PhotoShop, VisualStudio, MS Word. Such applications, in which, from the point of view of the programmer, there are more diverse tasks:

  • Rendering of a classic “office” GUI such as buttons, progress bars, widgets, animations.
  • Rendering any non-standard graphics such as continuously moving graphics from millions of points.
  • Work with databases
  • Networking
  • Working with the operating system registry
  • Work with printer
  • Fast (including parallel) execution of complex computing tasks.
  • And many many others.

There are not so many sets of platforms and frameworks that allow you to effectively build such applications. At one time, having tried different platforms, programmers in my organization confidently settled on the following link: C ++ language and Qt platform. As time has shown, this choice did not fail. It is with an eye on this choice that I will begin to set forth the set of materials that I recommend for study by novice programmers if they want to become real gurus in this direction.

This set of materials was studied at one time by the author of this text, his older and younger colleagues, and went through several iterations to become optimal. Experiments have revealed materials whose study gives the maximum increase in work efficiency with a minimum, albeit not a short training time. Of course, since we are talking about optimality in the field of education, then a touch of subjectivity is inevitable here, but I tried to minimize it.

So who is this text for? If you are a university graduate who decided to connect his life with programming, then this text is for you. Believe me, you will save a lot of your time if you take my advice at the start of your career. If you graduated from high school several years ago, work as a programmer, but still do not solve any serious problems, then this text is for you. You can grow to really serious tasks, which will not be embarrassing to tell descendants. If you have been working as a programmer for about 5 years now, but you feel that for some reason your career is “not going”, and for those sitting nearby it is “going”, then this text is for you. If you are an experienced programmer and begin to follow the path of a leader, then simply read this text and distribute it among subordinates. And if you are a guru,who has experienced everything and which is difficult to surprise with something, you can simply read this text to nastalgit along the path traveled, recalling the mistakes or successes of the past.

So, what is this optimal way from my point of view? It is very simple - to study in the necessary order the set of fundamental books. Books are not very many, but not few. Those who count on a freebie can immediately close this text. Books will need to be read, combining this with practical activities, that is, with the work of a novice programmer. As a rule, programmers even at work have some periods of time unfilled by work, and reading books at these intervals is a sacred matter. If these gaps do not exist, then make it a rule to read in the evening. If at work it’s work, but there’s no other time, then close the text and don’t torment yourself, but don’t cry about the non-growing salary either.

Why books? Why focus on books? Why not the Internet, is there everything there? It is true that you will inevitably have to use the Internet on the way to study, and quite often. And fill in all the gaps with the Internet. But the books offered are the base upon which you will learn how to navigate the programming world. And you will be able to further completely independently find answers to any questions, both in books not yet read, and on the Internet. I have selected a set of books in such a way as to form this base. A confident, solid base that lasts for many years. Not until the end of life, but still.

How long will it take to master all these books? Good question, and the key word here is to master. It is necessary not only to read diagonally, but to master it. That is, put this knowledge into practice, translate it into code. Go back to the book, re-read with a new understand the text. Then it will be development. But only then it will be the accumulation of the very base that will solve any problems. So what time is it? My answer is 5 years. Long? Yes, not fast. But experience shows that it is impossible faster. Do you want for six months or a year? No, it won’t work, even if you are Einstein. No one succeeded. This is a feature of programming in general, and of the C ++ language in particular. As my more experienced colleague said, the C ++ language is not for the crooked, and the creation of large systems is not for the weak-willed. So if you have so much time or no will,to become an experienced, highly paid employee, look elsewhere. For example, making template sites is a much simpler thing than creating complex desktop applications. Layout designers and enikeyshchiki - hello!

So, let's start the list of books. Their total volume is 5150 pages. If possible, I will comment on why I recommend this particular book and not another, or suggest alternatives.

  1. ++ 600 . , « , C++: ». 800 . « : ++». , , . , – ! ! , . 2 – , . ( ), . , , , double . , , ! , . , 800 . . – ? , , , ++ (++11, ++14, ++17, ++20), – . , , , .

    , ? C++ . , . (, ), « » , , «». ! , – .
  2. « . C++. 55 ». 300 . , : « C++. 50 », « C++. 35 », « ++. 35 ». – , «55 ». , . , , , . . , – .
  3. «Qt 5.10. ++. . ». 1072 . – «Qt 4. GUI C++. , ». , , : , – , ( ). , GUI-, 5 000-30 000 . - — .

    2 3 , , – , .
  4. « : ++. ». 263 . ++, , . .
  5. « . . ». 350 . – , , , . , . – . , , - . , , .
  6. . 3 , -. , , . , . , , « » .

    , ! « , ». 406 . 6. , ( pdf), . , « »: «, , : - . ». . « », ; ; SmallTalk, « »; pdf, , , ( – , !)

    , «, , : ». , – Java ++.
  7. «. . , .». 720 . , – GUI, – . – «: , ». , 2005, 2018.
  8. « , . Git ». 493 . , , Git, , . , , Git, . , , Git. . , . Git, . , , . , , , Git , .
  9. ! . – . , . , , . , . .

    , « , : ++». 323 . , – . , , . , , . C++17, C++14, C++11. , , . , , ! , .

    – « : ++ . ». . (, ) . , , - .
  10. « , . . , ». 432 . , ( ) , , , . - . – « . . ., ». , , , «» .

That's all! Beginners, go for it!

To finally dot the i, you can look back and ask - why aren't there such famous authors as McConnell, Larman, Butch, Fowler and others in the list of books? Just because I did not consider the study of the books of these authors to be the best way to develop a beginner in the C ++ / Qt world. And so it turned out 10 books with a total volume of 5150 pages, and to add not so successful books there seemed to me overkill.

All Articles