Learning C++?

Kinja'd!!! "AddictedToM3s - Drives a GC" (addictedtom3s)
07/26/2015 at 13:00 • Filed to: None

Kinja'd!!!2 Kinja'd!!! 22
Kinja'd!!!

Okay, here’s the deal. I’ve always liked computers and over the years I’ve somehow become the IT guy in the family and got to fix all the computer issues (unfortunately). Last year I had a chemistry professor who taught us some Python and it reignited my interest in learning to code. Now that I have a little extra time on my hands I think it’s time to learn some coding languages and take my computer knowledge to the next level since I can do hardware repairs but am almost completely useless when it comes to complex software issues.

After doing some googling, the language I’ve decided on is C++ in order to nail the basics and then maybe expand into Java afterwards. I also found !!!error: Indecipherable SUB-paragraph formatting!!! with some lessons on C++. The consensus seems to be that it’s easier/better to learn with a project in mind so that is something that will need to be decided on after I pick up some of the basics.

So what say you oppo? Is it a reasonable goal to learn C++ as a novice? Any suggestions where I can find other resources?

McLaren F1 GTR for your time.


DISCUSSION (22)


Kinja'd!!! Breakfast Burrito: The True Resident Burrito > AddictedToM3s - Drives a GC
07/26/2015 at 13:28

Kinja'd!!!1

Took a class on it in college. From what I know C++ is a very good language to start with, as it is very versatile and makes learning other codes easier. My class actually started us off with coding in Matlab which was very nice to learn and made understanding C++ easier so if you are a complete novice like I was, that might be the move.


Kinja'd!!! mitology > AddictedToM3s - Drives a GC
07/26/2015 at 13:30

Kinja'd!!!1

I would say go for it dude, start with the website so you can get the essentials like the syntax and flow control but then start thinking of an outcome, that will help you improve a lot quicker plus help you maintain your interest in learning the language too :) been there done that with java and javascript


Kinja'd!!! boxrocket > AddictedToM3s - Drives a GC
07/26/2015 at 13:37

Kinja'd!!!1

I learned C++ in high school, where it built on my prior knowledge of BASIC, HTML (early HTML, so I guess it was 2 or 3?), and some others. It’s very good to learn it, but I don’t know how relevant it is nowadays with so much being based on HTML5 and such.


Kinja'd!!! Bryan doesn't drive a 1M > AddictedToM3s - Drives a GC
07/26/2015 at 13:51

Kinja'd!!!1

C++ is hard, but if you learn it you can learn pretty much any language afterward. The book “Effective C++” is an excellent reference, but it’s not meant to teach C++. Tons of examples of good practice and pitfalls to avoid.

Also, http://www.cplusplus.com/ I work in C++ as a large part of my job and constantly refer to that website.

Having a project in mind is a great idea, otherwise you might get bored and none of the concepts will stick. If you’re interested in C++ user interfaces, maybe check out Qt: http://www.qt.io/


Kinja'd!!! Carlos wishes he has a manual > AddictedToM3s - Drives a GC
07/26/2015 at 13:57

Kinja'd!!!1

Edx.org has a great intro to computer science class it is taught in python though, If you aren’t too fixed on c++. it is taught by a professor from MIT. And is free! You should check it out. I think the class is called “intro to computer science with python”


Kinja'd!!! Tim (Fractal Footwork) > AddictedToM3s - Drives a GC
07/26/2015 at 14:14

Kinja'd!!!1

https://www.codecademy.com


Kinja'd!!! samssun > AddictedToM3s - Drives a GC
07/26/2015 at 15:09

Kinja'd!!!0

I missed the Visual Basic intro course in school, so C++ was my first coding experience. Wasn’t bad at all, very logical. Playing around with VBA macros in Excel is another good way to learn your way around things and can be much more useful than “real” programming depending on your job.

Here’s a neat site: http://learncodethehardway.org/


Kinja'd!!! 1111111111111111111111 > AddictedToM3s - Drives a GC
07/26/2015 at 15:47

Kinja'd!!!0

I use powershell and vb everyday. It all depends on what you want to do. I manage and automate things...check out cbt nuggets, they have top notch classes, and a month subscription can expose you to many other things you might not have known about.


Kinja'd!!! valsidalv, reminding you that infiniti is an option > AddictedToM3s - Drives a GC
07/26/2015 at 16:54

Kinja'd!!!0

C++ is a fine choice for a language to learn and as an added bonus its supported by all the major operating systems.

My only question is how you expect it to help you fix “complex software issues”. For example, if your browser crashes your knowledge of programming won’t really help you unless the browser is open-source (its code is freely available) and you actually want to work on the code. However, programming does teach you to think in a certain way and that’s probably the biggest benefit to troubleshooting computer problems.


Kinja'd!!! Ryan A. > AddictedToM3s - Drives a GC
07/26/2015 at 17:31

Kinja'd!!!3

If you’re serious about learning how to develop software, it’s important that you learn how to develop software — not how to write in X language. It’s important to know basic design patterns and when to use them effectively.

That being said, C++ has a steeper learning curve than other languages like Python, Ruby, or JavaScript. Those three are great places to start because they have toolchains that are easier to use.

Python has a very easy to master syntax and very good documentation. There are a fair number of third-party libraries, too.

Ruby has an advantage over Python with bundler, which makes it very easy to use other libraries and make software very quickly and reliably. Its syntax is very easy to follow and reads a bit like English. The one downside to that, however, is that it’s different when compared to other languages.

JavaScript now runs on more than just browsers, thanks to node.js. There are more libraries than you’ll know what to do with — and they’re easily installable with a great package manager. JavaScript is (well, can be) a very minimal language which makes it easy to learn. There are some advanced concepts (like higher-order functions) that take awhile to master, but once mastered are very powerful.

What kind of software are you interested in developing? That is important, too. Some languages are better suited for certain tasks than others.


Kinja'd!!! TheRealBicycleBuck > Ryan A.
07/26/2015 at 18:48

Kinja'd!!!1

I couldn’t agree more. The concepts are more important than the languages, but you do need to get experience in both object-oriented and procedural languages. Learn both.


Kinja'd!!! RoboRed "The road to hell is paved with overturned Vanduras" > AddictedToM3s - Drives a GC
07/26/2015 at 22:48

Kinja'd!!!1

http://www.dailyinfographic.com/flowchart-whic…


Kinja'd!!! Nauraushaun > AddictedToM3s - Drives a GC
07/26/2015 at 23:35

Kinja'd!!!0

I disagree. I’d start learning Java, or something other than C++.

C++ isn’t so relevant anymore. A lot of places don’t use it simply because you get more errors that are harder to debug in C++. If you don’t need the speed, it’s not worth the risk. And some other languages can give you speed and safety as well.

Yes, if you know C++ you’ll find other languages easy. Just like if you can drive a Carrera GT (notoriously difficult) or Lotus Exige you’ll find an auto Corolla easy. But what would happen if you took a novice in these cars? Swearing, stalling, failure. They’d quit. Don’t bite off more than you can chew.

Languages like Java are C++ made easy. Also, learn Java and you can develop Android apps! People like to insult Java, but it’s still relevant, has tons of online help and is pretty easy to use. Not a bad starting point.


Kinja'd!!! AddictedToM3s - Drives a GC > Ryan A.
07/27/2015 at 00:29

Kinja'd!!!0

That’s a good point. Do you recommend picking up a book on developing software or researching the internet? I have no problem with picking up a book and learning about how to develop software. The issue is whether a book would be beneficial compared to spending several hours reading up on it from forums and blogs.

I am aware of the ease of Python. I’ve done some coding with Python in a class and found it very logical. The thing is I would like to learn a language that is more useful for OS and hardware integration.

With that said, I have noticed Java may be also be suitable for that. So I guess the real meat of the issue is if I should go for C++ or Java?


Kinja'd!!! AddictedToM3s - Drives a GC > Nauraushaun
07/27/2015 at 00:34

Kinja'd!!!0

That’s true. My plan for learning Java after getting C++ was to try and make apps for my Nexus since I have some ideas for features I would like to see on it. Looks like I should jump straight into Java based on a few other suggestions as well.

Based on your comments I’m wondering if it would be beneficial to learn C++? My understanding was that it allows for one to get a better understanding of syntax based on its strict requirements. Would you say that is necessary/true?


Kinja'd!!! AddictedToM3s - Drives a GC > valsidalv, reminding you that infiniti is an option
07/27/2015 at 00:37

Kinja'd!!!0

To answer your question I was more referring to when I would want to create a script for some automated applications for a family member’s computer so I wouldn’t have to go through and explain everything in detail that they would most likely forget to do over time. Granted I know that’s probably an insane and possibly unrealistic reason but I have always wanted to learn to program and I figure that would be a good justification for motivating myself to learn.


Kinja'd!!! Ryan A. > AddictedToM3s - Drives a GC
07/27/2015 at 10:35

Kinja'd!!!1

OS and hardware stuff isn’t my area of expertise. Other people will be better at making suggestions as to which languages would be good to learn.

As far as books/internet research goes, I think it’s personal preference. My only tip is, if you’re looking for a book, skim through it to see if it has examples. And do all of the examples!


Kinja'd!!! valsidalv, reminding you that infiniti is an option > AddictedToM3s - Drives a GC
07/27/2015 at 12:07

Kinja'd!!!0

Haha, no that’s a very good reason and something I have done before.

Just FYI, scripting languages can be quite different from programming languages but the transition won’t be difficult once you are familiar with programming. Python is actually a good example of a language that works well for both scripting and programming.

I’ve read some of the other responses and I disagree with the sentiment that C++ is not a good place to start. In fact, C++ allows you to (if you want) go quite deep down and hit low-level code and this is very important to understanding advanced programming concepts. I actually studied C# before C++ and the transition was very weird. If I did it the other way around I think I would have had a much easier time (I studied Computer Engineering).


Kinja'd!!! AddictedToM3s - Drives a GC > valsidalv, reminding you that infiniti is an option
07/27/2015 at 16:37

Kinja'd!!!0

Cool. Sounds like C++ it is. Would you recommend getting a few books to learn it or just spending several hours on forums and blogs for someone who is trying to learn it on their spare time?


Kinja'd!!! Nauraushaun > AddictedToM3s - Drives a GC
07/27/2015 at 23:17

Kinja'd!!!1

There are some benefits to learning C++.

I don’t think syntax is one of them. The syntax (the way the language is structured) is similar to Java. The difficulty with C++ is more with complex features that are difficult to understand. For example, you need to know more about how memory works behind the scenes. Java hides most of that stuff for you making life easier every day.

But you do need to learn the memory stuff eventually. Java is obviously still using the machine’s memory, and just because it manages most of it for you doesn’t mean you can get by knowing nothing about it. Especially for mobile devices. And this is where C++ knowledge might help you - if you’ve had to manage memory in C++, you’ll have a more innate sense of what Java is doing behind the scenes and how to do it right.

But you could say the same thing about assembly programming (very low level, not as close to English as Java/C++), or about machine code (binary) as well. They’re much more difficult, but if you learn how to use them you’ll know everything there is to know about how your computer is handling your memory etc.

I guess it’s about finding a balance :)


Kinja'd!!! Nauraushaun > AddictedToM3s - Drives a GC
07/27/2015 at 23:18

Kinja'd!!!0

Making apps for your phone is awesome fun. I’ve made a few apps, and a few crappy games. Google lets you publish stuff to the store all by yourself for free, except the one-time $25 developer account fee. It’s great!


Kinja'd!!! valsidalv, reminding you that infiniti is an option > AddictedToM3s - Drives a GC
07/28/2015 at 15:34

Kinja'd!!!1

Personally I am unable to study programming from a book so I don’t know of any good ones.

I think others have posted some links and I’m sure you can find any number of tutorials online - once again I don’t have a favourite. But do acquaint yourself with the site www.stackoverflow.com as it’s very helpful and you might find yourself asking questions there too quite soon.