NJ5 said:
I think the concepts involved in programming with C are crucial for any programmer, mainly memory management and pointers. They're better learned first, than struggled with later after the bad habits have setted in.
For people programming in higher-level languages, the concepts involved in programming with Assembly are only crucial for the micro-optimizations minded programmer. That's my guideline for recommending C as a first language. Assembly can come later without harm.
|
I totally agree with this. I wish when I was younger that I would have skipped QBasic (Quickbasic) alltogether. That led my into Visual Basic and a bevy of REALLY bad programming habits.
I mainly do Actionscript 2 and 3 coding (yeah, Flash/Flex/Air! ... it's not THAT bad :p) for a living, but I code in C++ and C# whenever the need arises to get dirty with data, threading and stuff that simply can't be done in Flash. Everything I do at home is strict C++ using Boost and the C++ standard library.
Concerning what you should learn. As a programmer, I took the route of going straight to C to pick up C++. I think it actually hurt me more than it helped. Your mileage may vary though as a "newbie". There are some very specific bad habits that C can get you into and tutorial sites (and even some books) will walk you right into them thinking nothing of it. You can do strict procedural programming in C++. Keep your programs in one file and you'll see. C/C++ are both very simple standards, but in being simple (few commands, few operators, few syntax rules) it offers a lot of flexibility in how you program. (This can be bad and good.)
The suggestions about coding a million games is absolutely correct. Code the simplest game you can think of. Think of another way you could have done it and try it out. You WILL fail, many times. With each failure comes a better understanding of what works and what doesn't. Don't be afraid to create something so cheesey and crappy that you're ashamed to show it to your friends. You'll actually complete something and be proud of yourself. You may even jump the gun and show it to your friends who will probably say, "Wow, that's nice... um. What is it?" If they bring you down, don't let it get to you. Think about it this way: They probably couldn't do it. ;)
If you see someone talking about optimizations, skip it. When you create your games and you start feeling comfortable, then you can look into optimizing. It's a deep dark tunnel of tricks and magic. This is NOT the thing to start learning right away and it only starts to make sense when you know a little bit more about the language and why it works.
Yes, you could learn the raw information of Assembly and enhance your skills, but you'll likely only discourage yourself from the real task at hand. Besides, you'll have enough to worry about with how everything you make goes into one long line of bytes (or bits), including all those things you think are square. To computers, there is only one long single line of data. You can chunk it up any way you want. The computer still only sees it as one.