#30950 - jquidgley - Mon Dec 06, 2004 4:29 pm
Hi!
I would like to learn programming as a hobby, and even though I know it would take a lot of time to learn how to make a complex game like those for the gameboy advance I would like to try. I have been told to first learn a language, and after that that I should try to make simple games like tic tac toe, pong, breakout, tetris, and then pac-man. But before I learn a language I wanted to know which would be better. I have been told to learn either C, C++ or Java. Which of these languages is better to learn, and with which of them could I eventually reach my goal of making gameboy advance quality games that could be played in a computer.
Thanks for any help.
#30953 - gauauu - Mon Dec 06, 2004 4:57 pm
Great!
You're right, the trick is to start small, then work your way up to something bigger and better.
As far as the language, you will always get a different answer depending on who you ask. C, C++, Java, and most other languages all have their advantages and disadvantages based on what you want to use them for. (Side note: if anyone tries to tell you that one particular language is "the best," they are an idiot. It's all about picking the right language for the right job)
But, to be the stereotypical opinionated geek, I'll share my 2 cents.
Any of those languages would be a great language to learn. The syntax of all 3 is very similar. C++ and Java include object-orientation, which is a pretty useful thing to know.
As far as learning how programming works, java might be your best bet, as it has similar syntax to the others, teaches you OO, includes a huge library of code, but doesn't have some of the tricky/nasty/awesome parts of C++. Your "training" games like tetris, pong, etc, could easily be in java. You could actually end up making some pretty decent quality PC games in java.
C++ and C both have advantages over Java in that they are a bit faster (at this point, some Java evangelist will speak up and tell you some meaningless benchmark about how Java is not slower. Ignore them.) and let you get down to the nitty-gritty of what's going on more than Java will. For more advanced game programming, where you will be either hitting the processor for all it's worth, or for lower level stuff like GBA, you will definitely want to know both C and C++. Luckily, once you know one of them (including Java) it's pretty dang easy to learn the rest.
So to sum up: it really doesn't matter. They are all worth knowing, and you could make interesting games using all of them. Java might be a little easier to learn, but C and C++ will be necessary for some of what I think is the "more interesting stuff" (like writing games for the GBA). As far as making GBA-quality games that would be played on a PC, take your pick, any of them will work.
Last edited by gauauu on Mon Dec 06, 2004 4:58 pm; edited 1 time in total
#30954 - keldon - Mon Dec 06, 2004 4:58 pm
I would personally suggest learning to program first using something like QBasic. There are many people that will tell you that you should do what suits you; and go home and sod off. That is no good as there are so many programming languages to choose from that you will be overwhelmed with choice. So I suggest following this trail:
People may tell you otherwise, and suggest going straight to C. I think this is pointless as basic can be learned by a kid; and will allow you to develop the skills necessary to being able to solve most basic programming tasks.
One thing to note is that programming is a skill. However there are many programming methods to doing things; which are skills in their own right. So once you're comfortable with doing a few "loops" and "sequences" then you can move on to bigger things.
I'll try out this QBasic link later in the week just to make sure it works for you; if not I will google for any newer versions of QBasic.
#30956 - FlyHigh - Mon Dec 06, 2004 5:02 pm
I would suggest C, (C++ is an extension of C so just jumping between is relatively easy. And if you don't know/need the OO-ness than C's good choice)
I learnt VB first but it took a very long-time for me to relearn C because they just seem to dissimilar.
I wouldn't go for Java (personally) as its syntax is almost the same as C++, and I prefer C++ to Java. Java forces to understand OOP compared to C++ which lets you use it optionally.
So in my opinion learn C first. and when you feel up to it learn C++. but quality games can be made in C it just what feel more confortable with.
Hope that helps, and good luck, whatever path you choose.
_________________
"A lecture is a process by which the notes of the professor become the notes of the students without passing through the minds of either" - R. K. Rathbun
#30957 - gauauu - Mon Dec 06, 2004 5:03 pm
Wow! QBasic! I had forgotten that it existed.
Man, I wrote a ton of games for QBasic back in the day. And then the day I discovered there was a version with a compiler, that just knocked my socks off.
Nice recommendation, keldon
#30958 - jquidgley - Mon Dec 06, 2004 5:25 pm
Thanks for all your recomendations. I think I would get started with Java since you said it is easier and that I can build up from it to C or C++ if needed. I thank all of you for your replies which were very helpful.
#30974 - sajiimori - Mon Dec 06, 2004 7:29 pm
To me, Java is starting in the middle.
Some people like to start at the foundation of things, and build from that. If you're like me that way, start with QBasic to get a feel for programming in general, then learn an assembly language, then C.
By the time you're proficient in C, you'll know enough about what you like and dislike to choose your next direction, or to stay with C even.
Of course, if you're not like me, disregard. ;)
#30979 - jma - Mon Dec 06, 2004 8:55 pm
Just a minor rant, but (IMHO) any language that requires you to "learn" on blind faith 5+ keywords just to type out a "Hello, world" program isn't good for learning.
To the OP: have fun, start small and don't try and whip out the next RPG. Start with Pong, Tron, or similar, simple games. Programming is fun... and welcome to the club :)
Jeff
_________________
massung@gmail.com
http://www.retrobyte.org
#30984 - sgeos - Mon Dec 06, 2004 9:35 pm
keldon wrote: |
People may tell you otherwise, and suggest going straight to C. I think this is pointless as basic can be learned by a kid |
When I first started learning C, my "teacher" told me to unlearn everything I knew about basic. He thought it was a liability, not an asset.
-Brendan
#30985 - sajiimori - Mon Dec 06, 2004 9:52 pm
BASIC did damage to me because I spent too much time trying to solve big problems in it (like writing whole games). If you abandon the language as soon as you outgrow it (which will probably happen quickly) then there's no danger.
Essentially, you should only stay with it as long as the solutions you use match the ones you would have used in C. It's impossible for the learner to know this of course, so spending just enough time to understand it is a good guideline.
#31000 - Lupin - Mon Dec 06, 2004 11:43 pm
Visual Basic is great... it doesn't do damage to people and actually it is very possible to write very good (not only 2D) games in VB - just requires some VB programming skills (take a look at my web www.gametutorials.de and go look in "Projects") =)
But sure C and C++ is the way to go if you want to be a professional developer... i just have troubles learning the specific C functions and most times i can't get them work on GBA (i use a trial of ARM STD), but on GBA i only use self written functions anyways because i think the library functions might not be optimized that good for GBA.
_________________
Team Pokeme
My blog and PM ASM tutorials
#31059 - keldon - Tue Dec 07, 2004 1:54 pm
VB is alright. But people first need to learn how to make algorithms before they learn about pointers and everything else. For what you will be creating when you first start, you need nothing more than what basic offers. Just learning for loops and getting it into your head just how coding works.
Next you start going onto procedures and when to use them. But qbasic is perfect for starting because the you can create programs with no procedures , which will allow you to learn the fundamentals to creating programs.
Obviously you will move onto more complex languages and forget your BASIC methods for doing it. But walk before you can run, swim before you dive, and for your own sakes learn basic before you learn anything else.