How do I know when I can program ?

Started by
8 comments, last by Cosmosis 19 years, 6 months ago
As lame as this may sound, i've been trying to learn to program as a hobbist for a while now 1-2 years in C how do I know when its time to move on to C++ or learn more complex features of the language ? I want to learn opengl or directx but then I look at some code some code and can barely follow so how do you guys take the plunge from learning a programming lanaugage to more advance api ?? Or I was thinking maybe I should just study more math it took me forever to really understand and write my own bubble sort and I look at things like radix sorts and cry.
http://www.phusnikn.net
Advertisement
Well, I recommend jumping into C++ right now. If you want to learn DirectX C++ is a must, while with OpenGL it helps a lot. It is really worth the effort to learn C++. Anyway, about an API. I recommend learning something easy first (SDL, or Allegro), then once you have the concepts for easy 2D games, jump into the 3D world. SDL works well with OpenGL, so don't think it's pointless to learn SDL.

SDL - www.libsdl.org
Allegro - www.allegro.cc

Don't worry about other peoples code. Until you get into more complex things you don't need to understand how it works, but rather understand how to use it.
If you feel like you understand the basics of C pretty well, then its time to move on to C++. I'd learn C++ first, then learn SDL (check the link in my signature). You should learn DirectX later, but I found it much more difficult than SDL or OpenGL.
A simple answer for this one is to just try it. You can’t limit your self like that. What I mean is, you can’t just wonder if you can program or develop interesting applications. You must try it. The only way you will learn is trial and error; as I’m sure you already know a lot of this from your experience with C. Just give it a short! If you have problems, I will be here to help you and so will many, many others here on GameDev.
Take back the internet with the most awsome browser around, FireFox
Quote:Or I was thinking maybe I should just study more math it took me forever to really understand and write my own bubble sort and I look at things like radix sorts and cry.


Good Idea! Someone who actually wants to learn the math before programming a 3D Game and failing. If it really took you a long time to implement a bubble sort, then I would suggest studying a little more math before moving on to any more programming. Bubble sort, and Radix sort for that matter, is just understanding some logic. I've never used Radix Sort in my games, yet, so I don't know if its neccesary to understand it.

Sure, like the above poster said, you could use SDL and make some 2D games, the math that is required in most 2D Games is high school geometry, but if you want to truly understand what you're doing in 3D, you should have at least a somewhat decent knowledge of the math behind 3D computer graphics. I recommend this tutorial (click) if you want to learn some vector math which will be very helpful if you make anything 3D.

Also, if you just program as a hobby, and you want to make some neat games, then I would suggest SDL, but if you really want to learn what's going on, use DirectX. Sure you can call one of SDL's functions and load almost any kind of file with one line of code, but if you write your own loader using DirectX, then you can get a much better understanding as to how images are loaded. People say that "use SDL, DirectX is so complex", but I don't think DirectX is that bad. When I first learned DirectX, it took me about a week to understand how to get a window set up and start blitting some images using DirectDraw. When I used SDL, it took me about 1 hour to understand how to get it set up and working.
You'll never truely know 'when your ready' you just jump right in and see what you can do :)

And yeah learn math...you only need trig if your going to do 2D but beyond that i couldnt tell you as thats out of my field somewhat.
You're ready when you can follow the code. The best thing to do is assign yourself progressivly more difficult projects and then finish them. For example, first make a black jack game using plain text only. Then make a graphical version. Then add music. And so on.

A good way to learn new concepts is to find existing code that implements the concept and then tweak it to see what does what.

If you're trying to learn OpenGL or whatever go to GameTutorials.com and download a sample. Then mess with the code to see how changing things affects the output. And then try to expand the code to do something more complex.
my heart goes out to you dude, but you just gotta jump in. Take some classes if you can, that will help a lot, or find some way to meet some other programmers in person. I mean, radix sort is easy once you got the concept ( in real language ), but looking at a mathematical proof can be very daunting. And this goes for a lot of what you will use as your coding tools, some books certainly make things out to be really hard, when they're not. A book that really helped me at the time you're probably at, is this :

Walls & Mirrors, by Carrano + Pritchard

and just crunch through all the programming projects. That'll beef up your confidence. By the way, I read a huge pile of C++ books as well, and this was my favourite for core concepts. It's a really nice book. Good luck!

*edit* horrors, accidentally linked to the java version!! Oh teh noes!
Hi!

My definition of "knowing how to program": When you're able to think in terms of the problem you're trying to solve, not in terms of how you solve it with the programming language being used. (Well, actually that's Bruce Eckel's definition... ;) )

Cheers,
Drag0n
-----------------------------"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning..." -- Rich Cook"...nobody ever accused English pronounciation and spelling of being logical." -- Bjarne Stroustrup"...the war on terror is going badly because, if you where to compare it to WWII, it's like America being attacked by Japan, and responding by invading Brazil." -- Michalson
Learning more math is never a bad thing, specially if you eventually want to get into 3D programming. Most games nowadays are developed in C++, but if you don't think you are ready for C++ yet, you may want to consider C#.

C# is slower than C++, but for a beginner it may be easier to learn since you wont have to worry about dynamic memory allocation, pointers, COM, or anything like that. You can basically jump right into the programming without having to worry about a lot of the nitty gritty details you would need for C++.

If you have your mind set on games, your end goal should probably be C++ ... but C# might be a good next step along the way.

You can download free copies of microsoft's visual studio 2005 express betas (including C#) here: http://lab.msdn.microsoft.com/express/

If you dont want to run the beta versions, I think there are some other free C# compilers available, although I don't know what they are called.

edit: You might also want to pick up a good general book on data structures and algorithms. Learning the theoretical side of programming will help you out no matter what language you are using.

This topic is closed to new replies.

Advertisement