It is said that : Everything is difficult at the beginning , Learning programming is also , stay c/c++ Project practice In the group , I often encounter a small partner asking for programming How to get started with language Problems in , Such as :
- I want to learn C perhaps C++ Language , What open source projects can I recommend ?
- I'm new to a programming language , What do you recommend for practicing ?
- wait
Friends who are groping for progress can enter the group 973961276 Come and learn together , Students who lack project experience can see here c/c++ Enterprise level project practice , A copy of the article is attached at the end of the article c/c++ Introduction to the Syllabus , But it may be a little unclear , If you need a clear version, please leave a message in the comments area or get into the group
See, That's where this series of articles came from , We want to learn c/c++ The students of language , After reading our introductory series , You can find the direction of learning 、 Systematic learning language , And then make a simple gadget , It's not just Hello World
.
The following is a C++ piece The content of . No matter which programming language , The foundation is very important . So we should learn from the basic grammar and basic knowledge , Master the language step by step .
One 、 Basics
1.1 Get started with a project C++ Enough to :CPlusPlusThings
CPlusPlusThings It is a Chinese open source C++ Learning project . It systematically will C++ Learning is divided into 【 Advanced Foundation 】、【 Practical series 】、【C++2.0 New characteristics 】、【 Design patterns 】 and 【STL Source analysis 】、【 Concurrent programming 】、【C++ idioms 】、【 Study the course 】、【 Tools 】、【 expand 】.
As a comprehensive system C++ Learning project ,CPlusPlusThings Is good , It arranged 10 Days The actual combat part of , Understand grammar and function usage in actual combat , The only drawback is , Some of the comments are unsatisfactory , Not very friendly to some novice programmers .【 Advanced Foundation 】 Part content :
- const Those things
- static Those things
- decltype Those things
- References and pointers to those things
- Macro, those things
GitHub Address → github.com/Light-City/…
1.2 The algorithm of the basic part :C-Plus-Plus
C-Plus-Plus It's the recruitment C++ A collection of algorithms implemented , And in accordance with the MIT License agreement to authorize . These algorithms cover computer science 、 Mathematics and Statistics 、 Data Science 、 machine learning 、 Engineering and other topics . With the exception of , You may find that multiple implementations of the same goal use different algorithmic strategies and optimizations .
GitHub Address → github.com/TheAlgorith…
Two 、 Advanced
2.1 modern C++:modern-cpp-tutorial
modern-cpp-tutorial It's modern C++ course , Its purpose is to provide information about the modern C++(2020 Years ago ) A comprehensive introduction to the relevant features of . In addition to introducing the code , It also gives as brief a historical background as possible of its technical requirements , This is a great help in understanding why these features appear .
GitHub Address → github.com/changkun/mo…
2.2 Advanced guide :CppTemplateTutorial
CppTemplateTutorial For Chinese C++ Template Teaching guide for . With famous books C++ Templates Different , The series of tutorials will C++ Templates Teach as a Turing complete language , To help readers to Meta-Programming Achieve mastery through a comprehensive . The original intention of this project is to write , It is through “ programing language ” Perspective , Introduce a simple 、 Clear “ Template language ”. I'll try to string together as many elements of the template as possible , Use some simple examples to help readers learn this course “ Language ”, Let the reader write 、 When reading template code , Can be like if(exp) { dosomething(); }
The same thing comes from the hand , Give Way “ Template metaprogramming ” Technology becomes a firm grasp of readers 、 Useful skills to draw inferences from one instance .
It's suitable to be familiar with C++ Basic syntax 、 Have used STL、 Familiar with some common algorithms , And recursive programming C++ Learners read . Although the project chapters and articles are written in simple terms , But the only regret is that we haven't finished all the chapters yet . The progress is as follows :
- 0. Preface
- 1.Template Basic syntax
- 2. Template metaprogramming Foundation
- 3. In depth understanding of specialization and partial specialization
- 4. Data structure and algorithm in metaprogramming ( Not yet started )
- 5. Advanced techniques for templates ( Not yet started )
- 6. The power of templates : from foreach, transform To Linq( Not yet started )
- 7. Conclusion : The discussion is good , Disputes are useless ( Not yet started )
GitHub Address → github.com/wuye9036/Cp…
3、 ... and 、 Hands on
3.1 Let's practice :MyTinySTL
When you have finished studying C++ Of “ Book ” After knowledge , Is it a little itchy ?MyTinySTL This note is detailed 、 The project to lay a solid foundation for practice is you C++ The next stop of the learning tour . As a novice, practice ,MyTinySTL The author of Alinshans use C++11 It's a small copy of STL( Container Library + Algorithm library ). Code structure is clear and normative 、 Contains Chinese documents and notes , And it comes with a simple testing framework , fit C++ Novice to practice .
GitHub Address → github.com/Alinshans/M…
3.2 Revisiting Tetris in the same year :Tinytetris
Tinytetris It's a use. C++ Write the terminal version of Tetris game . It provides two versions of the source code , There are annotation version and library version , More notes are easy to understand and learn .
GitHub Address → github.com/taylorconor…
3.3 Learn the code of the big guys :calculator
Microsoft open source Windows System pre installed calculator tool . The tool provides standards 、 science 、 Functions of programmer's calculator , And the conversion function between various units of measure and currency . Let's take a look at the code written by Microsoft engineers ! Learn the coding standards of big factories 、 Project structure, etc , Improve the ability to read the source code . English project and no explanation part , Need to read the source code to learn , It's more difficult .
GitHub Address → github.com/microsoft/c…
Last
Want more people to love programming 、 Open source , So I've been trying to 、 Find out how to help more people . I want to see if I can build a College Students Open Source Club , Your programming path has just begun. I want to accompany you for a while .
If you're a college student or graduate student, you love programming 、 Open source , I like to talk about learning technology , But there are no friends around you who share your fun ? So come on HelloGitHub Open source club for college students !
c/c++ Introduction to the Syllabus *