Xiaobai C++ Getting Started and Crazy Learning Route (Book List)

This article is actually a summary of my own introductory process, a minimal nonsense guide to getting started with C++. After summarizing, suddenly found like a reading list?

Before the specific summary, I want to answer a question first - do you want to learn C first and then learn C++?
When I was a Xiaobai, I wondered about this question, and here is an answer for the later Xiaobai and myself back then.
My personal opinion is that as far as learning C++ is concerned, it is enough to learn C++ directly, without first learning C. In Zhihu, I saw that Stephen Thomas Lavavej, who maintains STL at Microsoft, said that he wasted a lot of time learning C language before learning C++. He knew that he would start directly from C++.

Many old projects are written in C language, and most of the later programming careers still cannot be avoided by learning C language, but at that time you already have C++ skills, so it is not a big problem.

Therefore, this article basically does not mention the learning of C, and directly insists on C++. Spectators who don't agree don't spray it, it's just a fork in the upper right. Students who agree can look down.

getting Started

"Accelerated C++", "Essential C++" two-choice intensive reading. Selected readings of "A Tour of C++".

  • "Accelerated C++" is very suitable for novices, because it is only less than 300 pages, which is a clear stream in the general brick-like introductory book. Easy to read through and less frustration. With such a length, it can also involve the use of some standard libraries, which is really suitable for getting started.
  • "Essential C++" is more suitable for intermediate hands with other programming experience to quickly learn C++. The content will be deeper than "Accelerated C++".
  • "A Tour of C++", the masterpiece of C++ creators, is suitable for reviewing C++ knowledge quickly after you have just finished your studies or after a long time of study.

While reading the book, supplemented by the information of these several websites, cross-validation——

(The purpose is just to confirm, other information is also available, there are too many online, here is just what I saw at the time)

At the beginning, I mainly read Accelerated C++, and when I was commuting and commuting, I looked at the auxiliary part of the information on my mobile phone, and I saw that it was different from reading. Even sometimes realize that some concepts in the material are not very accurate, and now you will find that you really understand.
This kind of cross-validation reading method, some people ask me why is it necessary? (I read several materials that may overlap in content). There are two advantages, one is that it can make you more confident in your basic understanding when you get started; the other is that I have not seen any book or article that can be completely clear and unambiguous from beginning to end. Cross-checking can make many understandings clear as early as possible.

After completing this step, you can start looking at other people's code on GitHub and try to write some code.
In my case, I learned to create a new C++ project under xcode, and then I wrote two calculators and a student management system by referring to these links. Then start moving bricks.
Calculator 1: blog.csdn.net/jiejinquani…Calculator
2: www.zhihu.com/question/28…Student
Management System: blog.csdn.net/qcyfred/art…

Getting started is the most critical step. You have a preliminary understanding of various basic concepts, and you can successfully write and run the code. It feels great.
The following is the introduction to the vast sea after a smooth entry, so let’s swim slowly and slowly. Be careful, don't rush, don't have the idea of ​​​​learning the following content in one go, and then start working. Because it takes a lot of time and the effect is not good, and C++ is endless, and no one dares to say that they are proficient. Please keep learning while investing in practice.

systematized

After getting started, you should read some more systematic books when you have time. Specifically, "C++ Programming Language" (now in its fourth edition) and "C++ Primer" are selected for intensive reading. There will be time to flip through another book later.
(Emphasis!!! "C++ Primer" and "C++ Primer Plus" are not different versions of the same book, and the authors are different. [Not recommended] See "C++ Primer Plus")

function library

At this point you should have crossed the syntax hurdle to start understanding the library. You can read "C++ Standard Library", "In-depth Understanding of C++ Object Model" and "Analysis of STL Source Code" by Mr. Hou Jie in order.

Chasing performance and elegance

Now you should have a little knowledge of C++, and you may be interested in how to write better performance and more elegant C++ code. You can continue to read "Effective C++" and "More Effective C++", "Exceptional C++".

philosophy

If you can stick to this last step, you may be going crazy. Crazy people like to ask philosophical questions, such as who C++ is, where it came from, and where is it going.
Try to read "C++ Meditations", "The Design and Evolution of C++/C++ Language Design and Evolution".
In addition, C++ (C language) is a language that is relatively close to the bottom of the computer among a number of high-level languages. If you know more about computer structure, storage, and operation principles, you will have a more thorough understanding of the ins and outs of C++. You can read "Introduction to Computer Science", "Code Encyclopedia" of software engineering, "Modern Operating System" of operating systems, programs "In-depth understanding of computer systems" for beginners.


The 2018.10.12 update
is necessary for Android developers to learn C/C++, and how to combine them? ——Nightfall meteor shower android development@android

Personally, the necessity depends on the business area of ​​the company and your personal interests. For example, the audio and video business involved in the live broadcast company must involve c/c++ (there is no java code for ffmpeg or something); similar businesses that require c/c++ are generally performance-heavy and low-level things. If you judge that your company does not have this need in the short and medium term, then it is your turn to see if you are interested. As a digression, the big front-end will slowly erode native development, and gradually pure Android development will be replaced, although the process should be very slow. On the one hand, you can also switch to a larger front-end, which is faster; on the other hand, you can do these low-level things in depth, which is not so easy to replace, but who can tell what will happen in the future, haha.

How to combine Android and C/C++?
You can search for keywords such as ndk and jni to understand the basic tutorials on the Internet. There should be no problem for everyone to use this basic knowledge, but if it is more in-depth, for example, in the code with clear functions, how is the c code structured, the life cycle, how to cooperate with android (java), etc. To be honest, it is necessary to practice of a project. After I have good thinking in this regard, I will write some articles from the perspective of Xiaobai 0 basics.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=324058168&siteId=291194637