Answers.Body: <h1>Why your are struggling</h1>
  <p>C++ is hard, very hard. C++ is 10 times bigger than C (this was true 10 years ago when C++ was a lot smaller). It is very hard to learn, and very hard to use even after you have learnt it.</p>
  <p>When I programmed it C++, I found it faster to first write the program in another language, then translate it manually into C++. (not just compared with my self, this made me faster than others in the team).</p>
  <p>It is better to separate learning to program from learning the language. There are examples of teachers teaching one language, then at the end of the course, teaching how to translate into C++ and 2 or 3 other languages. This was done more quickly and more successfully that taking the shorter route and teaching C++ direct.</p>
  <p>Therefore, learn all of these concepts in a language that is much much easier to learn. Then if need it learn the language.</p>
  <h1>Some suggestions</h1>
  <ul>
  <li>Scratch (first language)</li>
  <li>Berkeley snap (1st or 2nd language, depending)</li>
  <li>Python (used my many schools, but not perfect) (used by real programmers)</li>
  <li>Lisp (A very simple language, can learn in a few minutes, so you can focus on learning to program) (use the resource design and interpretation of computer programs — available in book and video form)</li>
  <li>Rust (Fastest growing language by use. It makes C++ obsolete. It was designed to be fast, but also safe, and easy to use compared to fast low-level languages)</li>
  </ul>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-12-10T10:07:33.350Z
Answers.LastActivityDate: 2022-12-10T10:07:33.350Z
Answers.UserDisplayName: ctrl-alt-delor
Answers.Body: <p>I've written a C++ (and Fortran2008) textbook for an engineering audience. In addition to teaching the things that I think they should know, it has a good number of programming projects that are designed to exercise their C++ skills. <a href="https://theartofhpc.com/isp.html" rel="nofollow noreferrer">https://theartofhpc.com/isp.html</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-11-28T21:41:11.747Z
Answers.Text: I did read one of your OpenMP lectures. I appreciate that you wrote this answer. Thank you.
Answers.UserDisplayName: james dilaw
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-11-28T21:19:06.150Z
Answers.LastActivityDate: 2022-11-28T21:19:06.150Z
Answers.UserDisplayName: Victor Eijkhout
Body: <p>I spent some years only learning C++ from online websites and YouTube videos. I went over basic stuff like variables, functions, pointers, references, and so on, as well as OOP concepts like classes, operator overloading, inheritance, virtual functions, and so on, and I did some template exercises. But every time I move on to the next topic, I find myself forgetting what I learned before. Then I noticed that I needed to make software that covered all those C++ concepts (I know some programmers may have gone through this and decided to do what I'm going to do now).</p>
  <p>I'd like to know if there is such a thing as minimal software designed to cover most of the C++ concepts that work together, and it must be small software;  (not writing an operating system). I know this question sounds strange, but I'm going to give it a try and just want to gain some time if someone has done this before. Thank you all; I may be lucky if someone there designed such a thing.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-11-28T00:47:44.000Z
Comments.Text: Are you looking for a project that you can do or a program that you can study? Or something else?
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-11-28T01:06:37.397Z
Comments.Text: @Buffy I'am looking for a lightweight software to train my C++ skills. this software have to cover all c++ core concepts and it was designed for educational purposes.
Comments.UserDisplayName: james dilaw
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-11-28T16:16:17.283Z
Comments.Text: Note that this is a bit akin to asking for a sport that lets you practice on all of the balls used in different sports -- projects require different structures, and non-trivial projects can be approached in many different ways.  There is no sport that helps you practice with shuttlecocks, bowling balls, tennis rackets, and curling brooms.  (I am probably making my point too strongly, but I hope you see what I mean.)
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-02-12T23:10:45.407Z
Comments.Text: @Ben. I would say it is more like asking for a small star: The core concepts of C++ are huge. A better approach will be to learn 4 other languages first. And before that, learn one language well.
Comments.UserDisplayName: ctrl-alt-delor
Tags: <c++>
Title: Small software that covers most c++ core concepts?
ThreadText: # Small software that covers most c++ core concepts?
  
  (Asked by: username_0 on 2022-11-27)
  
  I spent some years only learning C++ from online websites and YouTube videos. I went over basic stuff like variables, functions, pointers, references, and so on, as well as OOP concepts like classes, operator overloading, inheritance, virtual functions, and so on, and I did some template exercises. But every time I move on to the next topic, I find myself forgetting what I learned before. Then I noticed that I needed to make software that covered all those C++ concepts (I know some programmers may have gone through this and decided to do what I'm going to do now).
  
  I'd like to know if there is such a thing as minimal software designed to cover most of the C++ concepts that work together, and it must be small software; (not writing an operating system). I know this question sounds strange, but I'm going to give it a try and just want to gain some time if someone has done this before. Thank you all; I may be lucky if someone there designed such a thing.
  
  **Tags:** c++
  
  > **Comments:**
  > **username_1**: Are you looking for a project that you can do or a program that you can study? Or something else?  
  > **username_0**: @username_1 I'am looking for a lightweight software to train my C++ skills. this software have to cover all c++ core concepts and it was designed for educational purposes.  
  > **username_2**: Note that this is a bit akin to asking for a sport that lets you practice on all of the balls used in different sports -- projects require different structures, and non-trivial projects can be approached in many different ways.  There is no sport that helps you practice with shuttlecocks, bowling balls, tennis rackets, and curling brooms.  (I am probably making my point too strongly, but I hope you see what I mean.)  
  > **username_3**: @Ben. I would say it is more like asking for a small star: The core concepts of C++ are huge. A better approach will be to learn 4 other languages first. And before that, learn one language well.  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_4 on 2022-11-28. Score: 2 | Accepted answer
  
  I've written a C++ (and Fortran2008) textbook for an engineering audience. In addition to teaching the things that I think they should know, it has a good number of programming projects that are designed to exercise their C++ skills. <https://theartofhpc.com/isp.html>
  
  > **Comments:**
  > **username_0**: I did read one of your OpenMP lectures. I appreciate that you wrote this answer. Thank you.  
  
  ---
  
  ### Answer by username_3 on 2022-12-10. Score: 0
  
  # Why your are struggling
  
  C++ is hard, very hard. C++ is 10 times bigger than C (this was true 10 years ago when C++ was a lot smaller). It is very hard to learn, and very hard to use even after you have learnt it.
  
  When I programmed it C++, I found it faster to first write the program in another language, then translate it manually into C++. (not just compared with my self, this made me faster than others in the team).
  
  It is better to separate learning to program from learning the language. There are examples of teachers teaching one language, then at the end of the course, teaching how to translate into C++ and 2 or 3 other languages. This was done more quickly and more successfully that taking the shorter route and teaching C++ direct.
  
  Therefore, learn all of these concepts in a language that is much much easier to learn. Then if need it learn the language.
  
  # Some suggestions
  
  * Scratch (first language)
  * Berkeley snap (1st or 2nd language, depending)
  * Python (used my many schools, but not perfect) (used by real programmers)
  * Lisp (A very simple language, can learn in a few minutes, so you can focus on learning to program) (use the resource design and interpretation of computer programs — available in book and video form)
  * Rust (Fastest growing language by use. It makes C++ obsolete. It was designed to be fast, but also safe, and easy to use compared to fast low-level languages)
  
  
  ---
  
  