Several questions from a beginner
Hi,
I apologize if something like this has been posted several times before, but I think this is a fairly personal post.
I'd like to try learning a programming language, both for game development and desktop development. I have several questions about this.
1) I'm not sure what language I should start with.
Right now it's between C++ and C#. I've seen lots of topics debating which is better, and I'm not really asking that here. I prefer C# because it seems easier, and I can use it with XNA, but it's not cross-platform, and I'd like to eventually develop for Windows, Linux, and Mac OS X.
I'm also considering taking a game development course in college, which I assume will teach (programming-wise) C++, since it's the most common in the industry.
So I'm not sure if I should trudge through C++ and just learn that, or go with C# which seems easier and learn C++ later. If C# code is fairly easy to port to C++, then that might be the path I'll take.
2) I have difficulty learning the languages
I find I can only learn so much before I get confused or forget things. I understand things like input and output, else, if, and loops. But anything beyond that and it seems to get bogged down in technical details (and I thought I was a technical kind of guy). It could be I'm trying to learn too fast, and I don't think I'm really memorizing the syntax, either (I usually have to look it up). What would you guys say is a good approach to learning a programming language? I've tried Visual Basic 6, VB.NET, C++, and C#, and eventually I always end up getting confused and lost. I'm worried something might be holding me back.
Books I have are: C++ for Dummies, C# Programming for the Absolute Beginner, and Beginning C++ Game Programming. They all seem fairly good, but as I've said, I always get stuck once I get past the basics, and as a result I think I've studied those to understand them pretty well, and breeze through any chapters regarding them, only to get stuck again. I end up losing interest and when I come back, I've gotten rusty.
3) Game or desktop/application development first?
Should I go after one type of development first? Also, how soon should I get into developing graphical games or 'form' applications after getting into console programs? Again, I think I'm moving ahead too quickly and not spending enough time with other things.
For games I'd think something like a text RPG would be good to start with, and maybe a console calculator, things like that.
----------
So those are my questions for now. Sorry if I rambled. And thanks in advance. :)
1. Start with C#, you'll make be making things quicker. Once you understand how a language works, it's normally easy to learn another one.
2. It's not something you're going to learn overnight. It's going to take a lot of repetition before you're to the point where you can easily remember most of the language. Even then, you'll still have quite a bit to learn.
They say it takes 10,000 hours to become great at something, so make sure you want to become great at this. You're looking at a long haul.
3. Start with something small that you can complete in a day at most. Think screensaver, Pong, etc. Something that is maybe a 1 or 2 on a scale of difficulty to make. Then move onto a 3 or 4, such as a game with more sophisticated rules like Tetris or Asteroids.
One of the best things I read was that your first 10 games will suck. Get to the point where you can make them, make them, and be sure to complete them! Completing projects adds tons of experience. It's real easy to say, "I can learn to program sound later, when I really need it." When you're finishing a project, you actually have to force yourself to do all the monotonous, repetitive things that nobody really wants to do, and if its for one of your first 10 games, good chance it will be nice and easy to work through it.
EDIT: you don't have to start on boring topics such as console projects when you first start. Just simple ones. And while a text-based RPG may sound simple, it's not I assure you. It's the same as an RPG, you just don't have to draw things for it. Stick to SIMPLE game concepts (Pong, Tetris, Asteroids, etc) and you'll be fine.
2. It's not something you're going to learn overnight. It's going to take a lot of repetition before you're to the point where you can easily remember most of the language. Even then, you'll still have quite a bit to learn.
They say it takes 10,000 hours to become great at something, so make sure you want to become great at this. You're looking at a long haul.
3. Start with something small that you can complete in a day at most. Think screensaver, Pong, etc. Something that is maybe a 1 or 2 on a scale of difficulty to make. Then move onto a 3 or 4, such as a game with more sophisticated rules like Tetris or Asteroids.
One of the best things I read was that your first 10 games will suck. Get to the point where you can make them, make them, and be sure to complete them! Completing projects adds tons of experience. It's real easy to say, "I can learn to program sound later, when I really need it." When you're finishing a project, you actually have to force yourself to do all the monotonous, repetitive things that nobody really wants to do, and if its for one of your first 10 games, good chance it will be nice and easy to work through it.
EDIT: you don't have to start on boring topics such as console projects when you first start. Just simple ones. And while a text-based RPG may sound simple, it's not I assure you. It's the same as an RPG, you just don't have to draw things for it. Stick to SIMPLE game concepts (Pong, Tetris, Asteroids, etc) and you'll be fine.
Quote:
I prefer C# because it seems easier, and I can use it with XNA, but it's not cross-platform, and I'd like to eventually develop for Windows, Linux, and Mac OS X.
C# is cross platform (see Mono). But that shouldn't matter to you as a beginner, as it will be a long time before you will be able to write really nontrivial programs across all those platforms well, and by then you will be at the point where you could learn a new language if your first language doesn't fit the bill. A good programmer will usually know many languages; besides, even if C++ were "more cross platform" than C# (which is isn't, really, but that is arguable largely based on how you want to interpret "cross platform"), that will not make writing cross platform software any easier.
Quote:
I'm also considering taking a game development course in college, which I assume will teach (programming-wise) C++, since it's the most common in the industry.
Depends on the course and college; some might teach Java, others might teach some random obscure language tied to some game development tool, et cetera.
Quote:
So I'm not sure if I should trudge through C++ and just learn that, or go with C# which seems easier and learn C++ later. If C# code is fairly easy to port to C++, then that might be the path I'll take.
I'd recommend C#, as I find C++ to be a very poor beginners language.
Quote:
I find I can only learn so much before I get confused or forget things. I understand things like input and output, else, if, and loops. But anything beyond that and it seems to get bogged down in technical details (and I thought I was a technical kind of guy). It could be I'm trying to learn too fast, and I don't think I'm really memorizing the syntax, either (I usually have to look it up). What would you guys say is a good approach to learning a programming language? I've tried Visual Basic 6, VB.NET, C++, and C#, and eventually I always end up getting confused and lost. I'm worried something might be holding me back.
How many programs are you writing in these language? You have to practice, practice, practice. You won't be able to absorb much if you just read and expect it to stick. It's a skill you have to train.
Quote:
Books I have are: C++ for Dummies, C# Programming for the Absolute Beginner, and Beginning C++ Game Programming.
For Dummies books are generally horrid, and that C++ one especially is. I've never read that C# book or the second C++ book you listed. There was a C# workshop in these forums a while back; you can find the forum at the bottom of the forums listing page somewhere. There is a sticky thread in there with some C# learning resources.
Python would be another language I would encourage in lieu of C++, and you can find everything you're likely to need at the website.
Quote:
3) Game or desktop/application development first?
Should I go after one type of development first? Also, how soon should I get into developing graphical games or 'form' applications after getting into console programs? Again, I think I'm moving ahead too quickly and not spending enough time with other things.
For games I'd think something like a text RPG would be good to start with, and maybe a console calculator, things like that.
Niether. First, games are applications. Programming games, programming non-games -- same thing. Slightly different approaches, sometimes, but mostly the same stuff.
But you don't care yet. You want to learn to program first. This means, yes, you'll be making relatively uninspiring looking text-based programs to guess numbers or act like CD catalogues for a while. But its important you master those fundamentals. You don't have to be clinical about it -- you can write hangman, for example, or text adventure game type things.
Dude that's a huge order, are you planning on making 2D or 3D, or do you just want to get something on the screen. I will make it short, sweet, and too the point, just go with dark basic. Whether you are just interested in getting something on screen, or learning how stuff works, it has a lot of power. For a beginner it has all the necessarily commands for creating a game. Programming is programming, you would do a lot better to focus on design.
A lot of beginners say things like, I want to create the next, such and such, what is the next such and such? Gears of war, half life, metroid prime, and Tomb raider are all intellectual properties. Intellectual properties come from design, and programmers just make that design work. If you learn to design well then game programming will be easier.
Another thing I have heard is a huge argument or C++ and C#, they are both programming languages. At the stage you are at now, I don't think you really care about the difference between managed and unmanaged code. You could start off with something like basic and still achieve the same results. Programs are about algorithms. They are lines of code that tell the computer what to do. That's what you need to be concerned about.
For programming fundamentals I would look into a language like basic. All programming langauges in some form or other implement, variables, functions, iterations(loops),number types and ranges. Right now, programming langauges have shifted to object orientation. Programming is about objects. The three main cannons of OOP are Inheritance, polymorphism, and encapsulation.
For materials, look into "C++ complete" From 3d buzz, it cost 100$, but the 3d buzz guys really know what they are doing and it's a good start. There's a free online book entitled, "C++ a dialog" It's over a 1000 pages long, but it's really down to earth. Get more than just one book, that helps a lot. I have found that, generally, what you can do with one langauge you can do with another.
Also please don't forget math. If you are planning on creating games then at some point you are going to have to learn math :) Games are just really speciallized applications. It might benefit you to learn about good coding practices and not worry about making a game.
A lot of beginners say things like, I want to create the next, such and such, what is the next such and such? Gears of war, half life, metroid prime, and Tomb raider are all intellectual properties. Intellectual properties come from design, and programmers just make that design work. If you learn to design well then game programming will be easier.
Another thing I have heard is a huge argument or C++ and C#, they are both programming languages. At the stage you are at now, I don't think you really care about the difference between managed and unmanaged code. You could start off with something like basic and still achieve the same results. Programs are about algorithms. They are lines of code that tell the computer what to do. That's what you need to be concerned about.
For programming fundamentals I would look into a language like basic. All programming langauges in some form or other implement, variables, functions, iterations(loops),number types and ranges. Right now, programming langauges have shifted to object orientation. Programming is about objects. The three main cannons of OOP are Inheritance, polymorphism, and encapsulation.
For materials, look into "C++ complete" From 3d buzz, it cost 100$, but the 3d buzz guys really know what they are doing and it's a good start. There's a free online book entitled, "C++ a dialog" It's over a 1000 pages long, but it's really down to earth. Get more than just one book, that helps a lot. I have found that, generally, what you can do with one langauge you can do with another.
Also please don't forget math. If you are planning on creating games then at some point you are going to have to learn math :) Games are just really speciallized applications. It might benefit you to learn about good coding practices and not worry about making a game.
Quote:
Another thing I have heard is a huge argument or C++ and C#, they are both programming languages. At the stage you are at now, I don't think you really care about the difference between managed and unmanaged code
It does matter. It's not the difference between managed/unmanaged, its the fact that C++ is a language designed with an overwhelmingly strong bias towards, 'the programmer knows best.' But of course a beginner, by definition, does not. That's the main reason C++ is not the most optimal first language.
I would also discourage spending money on anything at this stage; there are plenty of excellent free resources out there.
Quote:Original post by jpetrieQuote:
Another thing I have heard is a huge argument or C++ and C#, they are both programming languages. At the stage you are at now, I don't think you really care about the difference between managed and unmanaged code
It does matter. It's not the difference between managed/unmanaged, its the fact that C++ is a language designed with an overwhelmingly strong bias towards, 'the programmer knows best.' But of course a beginner, by definition, does not. That's the main reason C++ is not the most optimal first language.
I would also discourage spending money on anything at this stage; there are plenty of excellent free resources out there.
Trust me jpetrie, as a person who primarily uses a majority of free software, I think that it is better to spend a little money at the beginning to get the answers you need. It's the difference between using a compass and having someone giving you a gps. One way just gets you there faster. That series from 3d buzz will get him a lot further in the long run. I am not knocking free stuff, but sometimes good, solid answers cost. There are also a lot of books on Xna, C++, and C# as well.
To many beginners focus on the smaller details without seeing the bigger details. Things like good design, are also important to learn at this stage which is why I am saying dark basic would be a great choice.
I am not discouraging him from searching for free materials, I am saying that learning to create good software is a lot more important than the language used. It's better to have someone
[Edited by - Game_Coder2009 on October 15, 2009 12:47:48 AM]
Quote:Original post by VertimystI personally think that you should choose C#, for the following reasons:
1) I'm not sure what language I should start with.
Right now it's between C++ and C#.
- You've already said you prefer it. It is for most people easier to work with, you'll be able to get some nice results with less effort using XNA, and there are plenty of resources to help you learn.
- It is actually, to a certain extent cross platform via Mono, and this will only improve over time. As a beginner you shouldn't be overly concerned with this in the short term anyway, but the support for cross-platform is there in future if that helps your decision. If you choose to, you can also make games for XBox 360 using XNA and a Creators Club membership.
- You've said you have difficulty learning, so it makes sense for you to work with the simpler language first, after which it will be significantly easier for you to pick up C++ should you wish to do so.
Quote:2) I have difficulty learning the languagesMake sure you're practicing a lot. You can read as much as you want, but you won't properly understand it until you actually put your theory to use, and you won't remember things unless you're using them often.
It's ok (and pretty normal) to have to look things up, as long as you're just using references to write your own code rather than copying down whole chunks. Over time you should find that you'll start to remember things you've already looked up a couple of times, and you'll be looking up new or more complicated things instead.
A good programmer should be able to find and understand the details of information they need quickly - if you can do that it won't hurt that you don't remember everything right away.
Quote:3) Game or desktop/application development first?Do what interests you, you'll learn better and faster if you're working towards things you really want to do.
Move on to graphics whenever you feel you're ready to do so; if you find it too difficult you can always go back, and it can be good to push yourself with new and difficult things.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement