Anyone can help me point to the right direction in C++ learning?

"
anubite wrote:
Doing C++ is really, really hard. I would say most professional "experienced" programmers don't even get it right. That's because C++ is a hybrid monster of C and OOP. It's relatively challenging to find the right balance between "let's write low level assembly!!!" and "let's abstract everything into interfaces and services".

If you're a beginner, start with C. Get really, really good at C. Then when you're comfortable with C, start leaning a more 'modern' language like C#. Then, when you're comfortable with that, come back to C++, and like...try to cram the best of both of them into C++. Also, learn boost/stl. And while you're at it, try to find a tutor. I'm honestly convinced that becoming good enough at C++ to game development in it requires somebody actually pointing out when you make design flaws.

I'm not saying C++ is impossible. What I'm saying is it's really easy to write spaghetti in C++. You have so many tools at your disposal and you need to know when to bring out the bazooka and when to use the scalpel. When to roll your own pizza dough and when to use the store-bought crap. And there are so many patterns and anti-patterns you need to be aware of...plus you need to be generally knowledgable in low-level OS-based stuff, not just in Windows, but in Linux/Unix too, because chances are the code you're writing has to operate in both spaces.

And when you think you're done with C++? Well, now it's time to learn CUDA or the equivalent, and write shaders.

Don't let yourself be discouraged. You've got to take it on step at a time. But doing C++ well I think makes you a...fucking ninja. Whereas something more pedestrian like Java, Javascript, Python, etc. makes you...uh...just a regular chef. Or something. I don't know where I'm going with that analogy. C++ is basically an amalgam of "you can do everything" and the response to that over the last 20 years has been "yeah, sure that's great, but..."

In the meanwhile, you can learn a lot if you just go digging in Unreal Engine's source code, or the equivalent library. Start tinkering there. I learned a lot making my first game in SDL, too, that's also a good place to start.

Buying a book in my opinion is a waste of your money. Unless you're one of the rare sorts who actually reads books and follows their lessons. For the price of one or two novels a month, you can just sub to Pluralsight, which has a full battery of programming courses. They're generally pretty good especially if you're at a beginner/intermediate level.


Thank you for tell me this, because the more I study this language the more I ask myself something similar to what you said here :

"
I'm not saying C++ is impossible. What I'm saying is it's really easy to write spaghetti in C++. You have so many tools at your disposal and you need to know when to bring out the bazooka and when to use the scalpel.


This is so true, from my lowest level of understanding so far (each day I spend now hours reading and mimicking and writing little lines of my own with and without the book) I often ask myself "What is the use of this...can't I just use this as a integer and ignore this strings...oh! Oh... I'd want to use a string to define this after all because this would become problematic if I wanted to write this...ah.. a if statement... it's so weird how that's read!"

I feel like Piety learning thaumaturgy right now, my life hasn't been that great up to this point but this self teaching invigorates me, even if I don't do well it feels good to train myself in something so forbearing as this. I've decided that learning C++ structures my mind to understand the other languages and it seems to have some small effect, I've combined looking at python and it seems much more simpler than C++.. but I still want to get this down before I move on to other languages. C++ is very... brilliant, I've managed to "get it" so far, page by page.

My training means that if I do not understand something I go back and write it out, recite it, so far I am on "if" statements and it has been sticking so far, I do hope to branch myself out and identify what needs to be used and when...it's so fun! I'm not lying, it keeps me motivated and keeps me from being depressed from my life situations, opening my books is like drowning out the worlds problems and becoming more enlightened as I look into learning something new.

"
In the meanwhile, you can learn a lot if you just go digging in Unreal Engine's source code, or the equivalent library. Start tinkering there. I learned a lot making my first game in SDL, too, that's also a good place to start.


I typically grab open source code of those who are more proficient at C++, then I nibble and chew on their codes, looking to see what I do not know and what I do know, the stuff I do not know or understand yet I note and continue reading my books for the time to put the puzzle together, so far I've been able to do well in understanding what they do in their more advanced code, it makes reading into a new chapter more exciting as I can teach myself what they did, bonus for "how can I make what they did shorter in code?".

I've had a life trauma event that has made me learn this, made me push for it, I only have one life and it is my goal to get this down no matter how long it takes. I want to dabble in it and make it my plaything. I want to break the limits of my mind into new territory that was never made for me. It's really fun doing this, really fun challenging myself.

"
If you're a beginner, start with C. Get really, really good at C. Then when you're comfortable with C, start leaning a more 'modern' language like C#. Then, when you're comfortable with that, come back to C++, and like...try to cram the best of both of them into C++. Also, learn boost/stl. And while you're at it, try to find a tutor. I'm honestly convinced that becoming good enough at C++ to game development in it requires somebody actually pointing out when you make design flaws.


This has been added to my learning, I have a feeling I will understand this better in the future. Thank you for writing this.

"
And there are so many patterns and anti-patterns you need to be aware of...plus you need to be generally knowledgeable in low-level OS-based stuff, not just in Windows, but in Linux/Unix too, because chances are the code you're writing has to operate in both spaces.


Another good one! Something that actually came into my little skull as I was on my lunch break today at my job. I swear to the Gods this was something I was thinking about as I read and wrote through chapter 3. " Can this operate in Linux...I wonder what Windows code looks like on a advance level far from this"."

I won't lie to you, the ONLY reason I can study this and not give up is because
1. It feels amazing learning a new language that many give up on seemingly.
2. I feel enlighten knowing that there is a "language" you can use to make stuff happen.

I'm only worried my job will get a whiff of my books in the break room and on the factory floor and start to get suspicious of my future activities :)

"
Buying a book in my opinion is a waste of your money. Unless you're one of the rare sorts who actually reads books and follows their lessons


I am strict with myself, if I don't understand a chapter I go back and redo it until I do, I also make myself write the code tutorials with no Code::Blocks to better understand what I want to do and why. Since I've made this post I've made a little progress in getting myself to know what it means to write and command what I want the code I'm writing to do. I still have difficulty "making my own" code from nothing, usually I know now what a newbie snippet of code is doing, but I am nowhere near the big mamma jamma of code. Still level 2 at best.








Report Forum Post

Report Account:

Report Type

Additional Info