Answers.Body: <p>What specific open source programs/areas are you interested in? Check their webpages, download the sources and build them yourself, they often list &quot;easy/for beginner&quot; tasks, sniff around their development lists, peek at the bug reporting system. That should give you a better idea of the task you are taking on, and how friendly the community is. Perhaps they have pointers at good tutorials and even are willing to give a hand.</p>
  <p>To learn C++, check out <a href="http://www.cplusplus.com" rel="nofollow noreferrer">CPlusPlus</a> and <a href="https://en.cppreference.com" rel="nofollow noreferrer">CPPReference</a>. There are plenty of tutorials around elsewhere, but make sure to grab a new one (the language is still somewhat in flux). Then dig in and create patches for your favorite package. The first ones will probably be rejected or rewritten beyond all recognition by the stewards, but you'll learn a ton by looking at the changes.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-01-03T00:33:03.757Z
Answers.Text: cplusplus.com is extremely outdated. I would definitely not recommend it. Especially since you clearly indicate that it's important to "grab a new one".
Answers.UserDisplayName: Fureeish
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-04-10T01:11:26.387Z
Answers.LastActivityDate: 2021-04-10T01:11:26.387Z
Answers.UserDisplayName: vonbrand
Answers.Body: <p>So, if you're simply looking to convert the knowledge you already have, web searches like</p>
  <blockquote>
  <p>C++ for C developers</p>
  </blockquote>
  <blockquote>
  <p>C++ for javascript developers</p>
  </blockquote>
  <blockquote>
  <p>C++ for python developers</p>
  </blockquote>
  <p>... will get you up to speed.</p>
  <p>As a relative beginner, you'll also learn features of the original languages that you didn't know, and get a taste of what sorts of features professional developers find helpful and worthy of discussion.  Comparing languages like this is an excellent way of expanding your knowledge of programming languages as a field!</p>
  <p>If I were you, I'd also consider searches based on the languages you say you are already familiar with:</p>
  <blockquote>
  <p>C for python developers</p>
  </blockquote>
  <blockquote>
  <p>Python for C developers</p>
  </blockquote>
  <blockquote>
  <p>C for javascript developers</p>
  </blockquote>
  <p>... and so on.</p>
  <p>You can find out quite a bit about programming languages as a field by working through these comparisons in languages that you already know.</p>
  <p>That's my answer to the question you've directly asked.  Before I go, though, I do have one important caveat: your goal shouldn't be to &quot;learn&quot; as many languages as possible.  Your goal right now should be to find a home base language that excites you enough that you want to delve deeply into it.  Depth is far more valuable than breadth, if only because picking up a new language is relatively easy (as demonstrated by my searches).  Honestly, as long as the languages share similar paradigms<sup>1</sup>, you can translate most of your knowledge of one language to another in roughly an afternoon.</p>
  <p>So, by all means go and check out C++!  But when you've explored around a little, see if it also ignites your sense of fun and intrigue.  If it does, then really take some time to start to learn the language in depth.  You might spend a year, maybe a few years, or maybe only a few months before you lose interest.  But the goal is to dive deep, and really learn something <em>well</em>.  As strange as it sounds, deep diving will ultimately give you a lot more flexibility than more shallow explorations as you learn and develop.</p>
  <p>Good luck!</p>
  <p><sup>1 - When they <em>don't</em> share paradigms, such as moving from procedural to functional programming, then things become much more interesting, and the process of learning the language is much tougher, though the rewards are also much greater.</sup></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-05-23T15:36:14.223Z
Answers.Text: **Do not confuse C and C++**. They look similar, C is (almost) a subset of C++, but they are profoundly differerent languages.
Answers.UserDisplayName: vonbrand
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-05-23T22:02:16.687Z
Answers.Text: @vonbrand I didn't, I was referencing C in the second part because it is a language that op says they already know. I will edit to make that clearer.
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-02-19T15:02:37.280Z
Answers.LastActivityDate: 2021-05-23T22:00:43.480Z
Answers.LastEditDate: 2021-05-23T22:00:43.480Z
Answers.UserDisplayName: Ben I.
Answers.Body: <p>Stroustrup, Bjarne (May 2014) &quot;Programming -- Principles and Practice Using C++&quot; Addison-Wesley ISBN 978-0321-992789</p>
  <p><a href="https://stroustrup.com/programming.html" rel="nofollow noreferrer">https://stroustrup.com/programming.html</a></p>
  <p>1,000 pages. It will hurt. You will learn.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-06-23T01:47:30.187Z
Answers.LastActivityDate: 2021-06-23T01:47:30.187Z
Answers.UserDisplayName: Louis B.
Body: <p>My background:</p>
  <ol>
  <li><p>I have completed the course CS50X which covered C, python, web development, and some data structures in C. I can currently use C, python, and javascript.</p>
  </li>
  <li><p>I want to learn C++ and I want to:</p>
  <ul>
  <li>Contribute to open source projects</li>
  <li>Competitive Programming</li>
  <li>Take part in App development if possible</li>
  </ul>
  </li>
  </ol>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-02-19T15:24:36.823Z
Comments.Text: Practice, practice, practice.
Comments.UserDisplayName: Michel Billaud
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-02-27T22:13:00.390Z
Comments.Text: If you have mastered `C` then your are 5% there.
Comments.UserDisplayName: ctrl-alt-delor
Tags: <self-learning><c++>
Title: How to learn C++?
ThreadText: # How to learn C++?
  
  (Asked by: username_0 on 2021-02-19)
  
  My background:
  
  1. I have completed the course CS50X which covered C, python, web development, and some data structures in C. I can currently use C, python, and javascript.
  2. I want to learn C++ and I want to:
  
     * Contribute to open source projects
     * Competitive Programming
     * Take part in App development if possible
  
  **Tags:** self-learning, c++
  
  > **Comments:**
  > **username_1**: Practice, practice, practice.  
  > **username_2**: If you have mastered `C` then your are 5% there.  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_5 on 2021-02-19. Score: 4 | Accepted answer
  
  So, if you're simply looking to convert the knowledge you already have, web searches like
  
  > C++ for C developers
  
  > C++ for javascript developers
  
  > C++ for python developers
  
  ... will get you up to speed.
  
  As a relative beginner, you'll also learn features of the original languages that you didn't know, and get a taste of what sorts of features professional developers find helpful and worthy of discussion. Comparing languages like this is an excellent way of expanding your knowledge of programming languages as a field!
  
  If I were you, I'd also consider searches based on the languages you say you are already familiar with:
  
  > C for python developers
  
  > Python for C developers
  
  > C for javascript developers
  
  ... and so on.
  
  You can find out quite a bit about programming languages as a field by working through these comparisons in languages that you already know.
  
  That's my answer to the question you've directly asked. Before I go, though, I do have one important caveat: your goal shouldn't be to "learn" as many languages as possible. Your goal right now should be to find a home base language that excites you enough that you want to delve deeply into it. Depth is far more valuable than breadth, if only because picking up a new language is relatively easy (as demonstrated by my searches). Honestly, as long as the languages share similar paradigms1, you can translate most of your knowledge of one language to another in roughly an afternoon.
  
  So, by all means go and check out C++! But when you've explored around a little, see if it also ignites your sense of fun and intrigue. If it does, then really take some time to start to learn the language in depth. You might spend a year, maybe a few years, or maybe only a few months before you lose interest. But the goal is to dive deep, and really learn something *well*. As strange as it sounds, deep diving will ultimately give you a lot more flexibility than more shallow explorations as you learn and develop.
  
  Good luck!
  
  1 - When they *don't* share paradigms, such as moving from procedural to functional programming, then things become much more interesting, and the process of learning the language is much tougher, though the rewards are also much greater.
  
  > **Comments:**
  > **username_3**: **Do not confuse C and C++**. They look similar, C is (almost) a subset of C++, but they are profoundly differerent languages.  
  > **username_5**: @username_3 I didn't, I was referencing C in the second part because it is a language that op says they already know. I will edit to make that clearer.  
  
  ---
  
  ### Answer by username_6 on 2021-06-23. Score: 4
  
  Stroustrup, Bjarne (May 2014) "Programming -- Principles and Practice Using C++" Addison-Wesley ISBN 978-0321-992789
  
  <https://stroustrup.com/programming.html>
  
  1,000 pages. It will hurt. You will learn.
  
  
  ---
  
  ### Answer by username_3 on 2021-04-10. Score: 1
  
  What specific open source programs/areas are you interested in? Check their webpages, download the sources and build them yourself, they often list "easy/for beginner" tasks, sniff around their development lists, peek at the bug reporting system. That should give you a better idea of the task you are taking on, and how friendly the community is. Perhaps they have pointers at good tutorials and even are willing to give a hand.
  
  To learn C++, check out [CPlusPlus](http://www.cplusplus.com) and [CPPReference](https://en.cppreference.com). There are plenty of tutorials around elsewhere, but make sure to grab a new one (the language is still somewhat in flux). Then dig in and create patches for your favorite package. The first ones will probably be rejected or rewritten beyond all recognition by the stewards, but you'll learn a ton by looking at the changes.
  
  > **Comments:**
  > **username_4**: cplusplus.com is extremely outdated. I would definitely not recommend it. Especially since you clearly indicate that it's important to "grab a new one".  
  
  ---
  
  