I started learning C++ in completely different way from most people - I started by developing plugins for software using the provided SDK. As such, my code was always embedded in a massively huge environment in which half the code was closed source and the other half was in the SDK. So, you can imagine, I had a very difficult time debugging problems: http://www.cplusplus.com/forum/general/27955/
Not only that, but I never even heard of a "console" until a couple years later, because the only interaction with my code was through the software when it loaded my plugins. I didn't know of any way to isolate and test my code outside of the SDK environment. I also couldn't tell what was "real C++" and what was part of the SDK or a result of the SDK. As such, I always felt helpless to solve problems - I couldn't ask for help here because nobody had knowledge of the SDK, and I couldn't ask for help from the software authors either because they expect that the people using their SDK already know C/C++. I had to learn everything the hard way for a long time, all by myself, and I am glad to be out of that depressing hole.
I read that the best way to learn is to use c++ so perhaps your experience was not abnormal after all. But what you did sounds complex. We're you employed to do a job?
I'm trying to learn by brute forcing my way through c++ primer. I hope it works for me.
I started with a copy of MSVS 4.0 and some book that explained C++ basics coupled with MFC (don't remember the name).
I started making games that were built on dialog boxes where you'd push buttons to interact with the environment. I remember the first game I made had 4 'noun' buttons (which would change depending on what room you were in), and 4 'verb' buttons that changed after you selected a noun.
So like you started in a room... and the available noun buttons were "key" and "door". You'd click the "key" button, then click the "take" verb button. etc, etc.
After that I figured out how to draw basic graphics onto a dialog, and I did another game that was the same idea but more visual.
After that, I got into retro system ROM hacking and made a utility to load up the Final Fantasy NES rom and had it display stats for various items/shops/etc. You could then edit them and save the ROM, allowing you to customize the game.
At that point, that effectively became my learning tool. I kept adding more and more features to the utility to edit different aspects of the game, each one requiring me to learn different things.
After that I did some cheesy graphical games that I never finished... then moved on to emulation.
So... uh... did that answer your question? Hahaha. I don't know whether or not this was "normal" or not. But it's how I learned.
What is your definition of "normal way"? Attending a course and/or online tutorials?
That would be the "formal" route, I'm talking informal but also abnormal. Normal is reading online tutorials and writing little console programs for a while.
returnThis wrote:
I read that the best way to learn is to use c++ so perhaps your experience was not abnormal after all. But what you did sounds complex. We're you employed to do a job?
No, I was doing it because I wanted to to it, but I tried to be professional about it. I'm still supporting and maintaining some of the plugins I wrote back in 2008 to this day.
@Disch: That's kind of in the middle, but I guess it counts ;)
I guess it depends on the person. I had an instructor in college that thought learning to program from online tutorials was abnormal and put more faith than he should have in books written by 'all professional programmers', including the bad ones (Schildt, Malik, etc.).
As for me, I can't say my learning was abnormal because I started with DOS+DJGPP/Rhide under Windows with C++ for DUMMIES.
I was the artist in a 2 person game team and the programmer decided to just ditch everything so I decided to take up learning C++.
I had a goal in mind, so I started by following along with tutorials for the Irrlicht rendering engine and then going to cplusplus.com for references and stackoverflow.com to get answers for things I was having difficulties with.
And right about now... I'm a month into this whole experience. lol...
Before this though I had a decent understanding of HTML, CSS, PHP and MySQL so some of the terminology from that helped out quite a bit when starting C++.
Although some terminology were very different which required me to look up the meaning of certain words. x)
I suppose I was a 'normalish' route: I got into C++ because I wanted to do some 3D graphical modelling and animation, things like that. I really started off with a language/IDE called 'Processing' ( http://www.processing.org/ ) (version 1). However, I was dissatisfied with the experience, and I ended up learning C (indirectly) using NeHe's OpenGL tutorials: note I was originally intending to learn OpenGL, and C just happened to be the medium through which I learned it. I mostly just got NeHe's code and fiddled with it, using my knowledge of basic concepts from Processing, and gradually learnt how things worked.
I also started learning python at about the same time, and its use of object orientation like classes made me wonder if C had classes, so I looked it up and found C++. I basically then worked it out myself from there, but eventually I couldn't get further and resorted to some online tutorials for things like inheritance and other things I had seen on programming boards but didn't understand.