Looking to start programming, where to start?

Started by
13 comments, last by JDGamedev 11 years, 10 months ago
Im looking to get into some programming (i wanna be a game designer but i also wanna do some game programming too) and i just wanna know where are some good websites to learn from?

Where are some good programs to program with? (Preferably something free, im a tad poor :(

What language should i start with? (Ive been researching C++ but ive heard to start w/ java or python)

What would be a good way to start out? Should i jump straight into trying to make games or start w/ making simple programs and work my way up?

Just some help and advice would be great or if someone could point me in a direction of where to start would be great, ive just been going around different websites finding tutorials and stuff.

THANKS IN ADVANCE!
Advertisement
http://www.gamefroms...-developer.aspx
http://www.gamedev.n...ion=rules&f=101
http://www.gamedev.n...me-programming/


What would be a good way to start out? Should i jump straight into trying to make games or start w/ making simple programs and work my way up?

You start with simple programs to learn at least the basics of the language you chose before you try any game project..

Have fun on your journey ;)


By the way, this is the wrong section to ask. Check out the "For Beginners" section.

Check out the "For Beginners" section.
Moving you there. Good luck! :)

- Jason Astle-Adams

Inukai linked to some good posts. I answered another topic with a post that may be of some help here.

Basically, I'd recommend checking out university websites that have online computer science departments. MIT is the one I use the most, but there are others out there. Of course, going through all the courses is unnecessary unless you have the goal of learning computer science rather than just getting the ability to code games, but the foundations of the introductory courses will serve you well in programming. Another pretty good advantage is you won't be stuck thinking "what should I program...?". The professors already have laid out exercises to teach you fundamental things like using classes and recursion, which, personally, was exactly what I needed and is something a lot of tutorials don't provide.

As for 'good programs to program with', are you talking about the text editors and development environments that you can program in? Those will be very language dependent. Python usually comes bundled with IDLE, which is an excellent (in my opinion) environment. For C++, I liked Code::Blocks, but my libraries got all screwed up recently so I started using the command line. I've never programmed in Java, but I know people recommend Eclipse and NetBeans.

I would probably recommend starting with Python - the two main reasons I've seen people try to start with C/C++ is because it's the industry standard and it's so fast. The reason it's the industry standard is partially just based on inertia, and industries tend to use what they know because it's what they know, rather than because it's actually better, so don't read too much into that. As for speed, it is certainly very fast - but a good coder with good knowledge of algorithms will be able to write something faster in Python in about a fifth the time it takes a newcomer to write a less elegant solution.

People get pretty obsessed with speed (myself included), but the truth is that if a program is running slowly in Python, it's probably because the programmer took the naive approach and brute forced a solution rather than implementing an efficient algorithm. And if you're just starting out, Python is good because it's not going to make you deal with some of the nasty, nasty low level stuff that C++ does. I have spent far more time hunting down segfaults than is reasonable, because I jumped into C++ before I knew how to handle its power.
My video tutorials (Blender Game Engine - Python): http://www.gamedev.net/topic/625003-video-tutorials-blender-game-engine/

+---------------------------------------------------------------------+

| Game Dev video tutorials -> http://www.youtube.com/goranmilovano | +---------------------------------------------------------------------+
I personally recommend starting in C++ as it is very versatile and is the industry standard. It is a little more difficult in the beginning, but if you want to learn more languages after C++ it will be much easier. I would start with small programs and work your way up. You can also get the Code::Blocks compiler for free for C++. If you go the route of starting with something like Java you can get the Eclipse compiler for free as well. Books are a great source as well as online tutorials, just make sure you practice what you learn. :)

Fly Safe 7o

Oops my bad guys, thanks for the help, I'll move over there and check it out! Appreciate the help, while im here tho i had a few questions regarding a couple of the articles:

Out of all the languages, which would you guys recommend? Ive heard lots of good and bad things about C++ which is where i was going to start, but I've heard its outdated and takes too long to do simple things, but I've also heard its the best one.

Isnt C# a subsidiary of C/C++?

I wanted to start out using Visual Basic, but read its outdated, would C# or Python be good starting languages?

If I can learn to program one language, are most of them basically the same? (I know theyre all different, but theyre all programming languages so they have similarities right)?

Just some random questions I had, I'll post more in the beginners section but you guys arent beginners lol, but I'll still go to the beginners section just wanted your guys' thoughts.
I would recommend you start with C# or Python. Learn the basics of the language with simple, text-based programs. You can graduate to simple text-based games (tic-tac-toe or hangman or the like) relatively quickly and keep working on those until you feel accomplished and comfortable enough with the environment to move on to something larger. Practice is key.

Isnt C# a subsidiary of C/C++? [/quote]
No. C# is an entirely distinct language, although it has some syntactical similarities to other C-like languages.

I wanted to start out using Visual Basic, but read its outdated, would C# or Python be good starting languages?[/quote]
C# or Python are both probably better choices. However, a newer version of Visual Basic (VB .Net) would be suitable as well, it's just sort of an ugly language with (in general) poor toolchain support for games. A lot of libraries and APIs that work in Visual Basic do so primarily because VB .Net is a managed CLR language like C#, so things "work" but they don't quite end up feeling right.

If I can learn to program one language, are most of them basically the same? (I know theyre all different, but theyre all programming languages so they have similarities right)?[/quote]
Learning any language of one paradigm (imperative, functional, et cetera) would make learning other languages of that paradigm easier, and to some extent even make learning new programming paradigms easier, yes.

Oops my bad guys, thanks for the help, I'll move over there and check it out! Appreciate the help, while im here tho i had a few questions regarding a couple of the articles:

Out of all the languages, which would you guys recommend? Ive heard lots of good and bad things about C++ which is where i was going to start, but I've heard its outdated and takes too long to do simple things, but I've also heard its the best one.

Isnt C# a subsidiary of C/C++?

I wanted to start out using Visual Basic, but read its outdated, would C# or Python be good starting languages?

If I can learn to program one language, are most of them basically the same? (I know theyre all different, but theyre all programming languages so they have similarities right)?

Just some random questions I had, I'll post more in the beginners section but you guys arent beginners lol, but I'll still go to the beginners section just wanted your guys' thoughts.


C++ and C# outdated. ROFL :-) Where did you hear that from?

I work in business IT and not the game industry. But I hear of lots of jobs for C# programmers.

C++ jobs are a bit rare because very few businesses have use for such a powerful language as C++. After all, if you can program it in a week in C#, why pay someone to take 3 months to program it in C++?

Still, C++ isn't going anywhere. I'm hearing the C++ is "evolving" with Windows 8 and whatnot, but that's not the same thing as "going away".

Machine language is what the computer "speaks". If you want to get real technical, Machine Language is nothing but switch settings (the transistors in your CPU and memory are electronicly controlled switches that are either on (1) or off (0)). That's usually represented with bytes that have values between 0 and 255 where each byte is 8 electronic switches. Machine language is programming the computer by setting the switches by setting every byte a specific value. Now that's a dead language. Not because it's not awesome, but because Assembler is the same thing.

Assembler just assigns mnemonics to the numbers. So just for example, you might have 32 46 29 in machine language. 32 might mean add the next number that comes up to whatever number is in the memory address provided in the next number. Or Add 46 to the value at memory location 29. Assembler allows you to write: ADD 46, 29 rather that 32 46 29 and makes it more clear what you're doing. But it's one for one with machine language. Essentially, it is machine language.

When you get deep into C++, you find out that C++ is Assembly language. Instead of ADD 46, 29 you will have something like X +=46 which says to add 46 to the current value of X. But under the hood X is just a memory address that might be at location 29.

When you dis-assemble Visual C++ you find that it's next to impossible to write better machine language code than Visual C++ does. It's just really good at it. That means C++ is direct control over the hardware. You just simply can't get any more powerful or efficient than that. So good luck replacing it.

Unless Object Oriented Programming goes out of fashion, I don't see C++ going anywhere in the next decade. That doesn't mean it won't evolve. Most modern programming languages are just rehashes of C++. Java is basically C++. C# is basically beginner level C++ that calls the .Net library. It's like new languages can't even manage to do it better than C++; they just abstract it more and take it further away from machine language reducing the performance and power.

Now things like Windows managed code are making things a bit more complicated. So, you have to have managed C++ and CLI and all that, but C++ is still as powerful as it gets. It's so powerful that no one even bothers writing Assembly language code anymore.

Granted, modern machines are so powerful that you can afford to waste a whole lot of the computer's resources. Visual Basic, for example, is not nearly as efficient as C++ but it's a whole lot easier to learn. And there's the question of "maybe it's ok to be less efficient if it makes it easier and development time is shorter".

C# is half way between Visual Basic.Net and C++. It reads a whole lot like C++, making it a little more difficult to learn, but it spends 90% of it's time calling .Net just like VB.Net to the point that the two languages look very similar.

Anyway, to the OP, Visual Basic.Net is a good easy way to start learning programming. C# is just a little harder but a really good language to learn and not that much harder.

I would not recommend C++ as a beginner language. I've seen people fail to learn easier languages. Yes. You can start by learning C++, but if it seems overly difficult definately take a few steps back and learn C# or VB. C# is very similar to C++ but just a whole lot easier because you don't deal with low level stuff. For example, you're going to have to get very familiar with pointers in C++. It's a difficult enough subject it gave me a bit of trouble in college even though I've been programming since I was 12. C# is similar but there are no pointers anywhere in the language. You just simply don't have to learn about pointers in C#. (Granted, eventually you need to learn about pointers but not at the beginner or intermediate level.)

Oh. And most programming languages are similar. I mean, after all, all of them are used to program the computer. But they were all created with different purposes in mind. Basic was created to be easy for beginners and kids to learn. Visual Basic is just a modern version of that, but maybe not as common in the business world today as it once was. Pascal was created to teach college students to program "correctly" before Object Oriented Programming was popular. Assembler was created because it was easier than machine language and nothing else existed at the time. C was created as a powerful improvement over assembler that could be used across many platforms. (Assembler is specific to the CPU being used. Mac Assembler is nothing like Intel Assembler when you get into the specifics.) Java was created to be used on even MORE platforms without any code changes but ran through a virtual machine which is slower than C. C++ was created to make C object oriented. C# was created to compete against Java and leverage the .Net CLR. So they all have their advantages for certain things related to why they were created in the first place.

Learning any computer language will make learning the next one a whole lot easier. And, yes, an array is an array no matter what language it's programmed in. In other words, a lot of what you learn in one language will apply directly to the others.

Generally, the more powerful the language, the harder it is to learn and the more time it takes to get anything done in it. That's why no one does Assembler anymore, since C++ is a little easier but can do the exact same thing just as efficiently (with some rare exceptions). And that's why businesses don't want to hire C++ programmers (except game design companies who primarily want to hire only C++ programmers) when they can hire a C# programmer to do the same thing in 1/10th the time and just buy a more expensive and more powerful computer to make up for the performance lost. Businesses can afford to throw more hardware at a problem. But game design companies can't tell their customers "Well, we could have programmed our game in C++ so that you could run it on a $1,000 computer, but we decided to program it in VB.Net. But HEY, it will run JUST as well if you go buy a $5,000 computer to run it on. Oh. And by the way that will be $60 for the privledge of playing our game."

So: easiest language VB.Net
best language to start with if you can handle it: C#
best language to know but one of the most difficult:C++ (C++ is actually a whole lot more than just C++. Good C++ programmers know Win32, ATL, STL, maybe MFC, and can tell you exactly how Windows works under the hood with things like multi-threading management using mutexes and semephores and large block memory management using page locking. In short, learning C++ is just the beginning of learning C++ for Windows. Learning C++ is actually the "easy" part and only about 1/100th of the journey.)

Post Script: I actually got up out of bed after going to bed to write this because I forgot to tell you: you can download VB.Net Express edition or C#.Net Express edition for free from Microsoft. It's hard to beat that price. So, it won't cost you anything to give them a try. (For that matter, I think you can also download C++ Express edition for free too.)

you can download VB.Net Express edition or C#.Net Express edition for free from Microsoft. It's hard to beat that price. So, it won't cost you anything to give them a try. (For that matter, I think you can also download C++ Express edition for free too.)
You can then get XNA for C# express for free aswell. If you know what your doing you can use XNA in VB.net but its much harder becuase XNA gives loads of templates for C# express which don't appear in VB.net express and it also gives additional compile options which you will have to work out for yourself.

Personally I've just taken the plunge into XNA. My only previous graphics experience was using py-game but I never found and tutorials that worked for me. XNA I find just works, no faffing around.

I never learnt C# properly, I learnt VB.net but the XNA tutorial I've been going through is so good IMO that I've been able to make the switch easy. Play around with VB.net express, make a few console applications, even play with windows form applications, then when you really think your ready install C# express and XNA.

This topic is closed to new replies.

Advertisement