ID:275312
 
I really want to have a professional time with programming, and someday program for my future job. BYOND is great, but I really want to know how the pros program. I just don't know where to start. Should I learn Pascal first or C or what? The other problem too is that any site where there is information about programming, like programmersheaven, all of the information is hard to understand for beginners like myself. Like I don't know what I need to even get started sometimes (and Delorie was just a mess of a website for such a novice as myself, just as always). I know that there are some really good pros on this community so it would be cool if they could point me in the right direction from some serious programming for a career. I mean, I don't even really know how commercial games are programmed these days, and that is bad because, well, I really want to know. Ok, I'm begenning to sound redundant, so please help me to get started any of you great programmers out there (like Lummox Jr or Garthor or Digitalmouse [I think he's the best one here]). Thanks for the help.(that is, if you help me)
The best way to learn is to take some computer programming courses at a community college(mainly C/C++). Once you have an understanding of these languages go out and buy some books on game programming. Go through them and practice, practice, then do some more practicing. After doing it enough and reading enough on the topic you should get it :).
The programming language that is getting used most these days, in the professional game programming industry, is C++. However, in other industries, the languages vary -- Java is used often for server architecture, and PHP, Perl, and all of those are used for website design.

Speaking from personal experience, learn BYOND, then learn a couple other game scripting languages -- just so the concept of syntax is stuck in your head -- and finally, start into C++ and take a C++ programming class as well. That's if you're targetting the game development industry, though.

I've been spending the last four or five weeks pondering whether I should start a simple C++ project just to brush up on my skills (I know how to use C++ very well -- I got top marks in my programming clasess -- but I don't know how to apply it to make a game).
In response to Spuzzum (#2)
I dare suggest the opposite.

I started with C, and went through college being told that people who start with BASIC are always stuck in the mindset of BASIC, which is generally bad coding in many ways.

I feel the same with BYOND. Yes, I will never be the best BYOND coder around, but I'm a computer scientist now. What I've learned from starting in C and C++ will help me in every language, and will help me keep my code more organized.

I agree, looking back... everyone I know who started in BASIC is stuck in the basic mindset, which is horrible
In response to Abraxas (#3)
I agree, looking back... everyone I know who started in BASIC is stuck in the basic mindset, which is horrible

Uhh I started with TI BASIC, then QBASIC, then Visual BASIC, and then finally on to C and I've had no problem with a basic mindset. BASIC might not be the program to build applications that require high frame rate multimedia or anything that requires data proccessing at high speeds, but it is an excellent tool for building tools and testing algorithms.

Also as a note to Spuzzum, learning C is very important if you get into console development since C++ generates too much overhead which you can't have when building games under tight constraints. This is also a pretty new thing for GBA development. For the GBC you generally work strictly in ASM.
In response to Abraxas (#3)
Abraxas wrote:
I started with C, and went through college being told that people who start with BASIC are always stuck in the mindset of BASIC, which is generally bad coding in many ways.

This was a favorite notion of my CompSci advisor in college. The most well-known expression of it comes from Edsger Dijkstra:

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

It is certainly true that BASIC doesn't teach good programming habits (see my Commodore 64 BASIC source code for "Collapse of the Federation", on BYONDscape.com, for a really grisly example). But "mutilated beyond hope" is just tongue-in-cheek hyperbole. It's possible to grow beyond the limitations of BASIC -- particularly when you have a language like BYOND's DM language, which provides plenty of opportunities to structure programs elegantly, and provides simple tools to handle most of the repetitive minutiae a programmer shouldn't have to worry about.

I know for a fact that it's possible, because it happened to me -- years after graduating from college, oddly enough. :)
In response to Abraxas (#3)
I disagree, it really depends. It's quite possible to build well-laid-out programs in QuickBasic (and QBasic to some degree as well); it just depends how you're taught it. I mostly taught myself, and learnt the merits of laying things out properly from experience. =)
In response to Crispy (#6)
I disagree, it really depends. It's quite possible to build well-laid-out programs in QuickBasic (and QBasic to some degree as well); it just depends how you're taught it. I mostly taught myself, and learnt the merits of laying things out properly from experience. =)

I taught myself and learned just about every wrong way to handle a situation and used a lot of poor programming practices. Of course it just took me one computer science course to set me straight.
In response to Theodis (#7)
You need good tutorials, obviously. And it helps if you experience first-hand the problems associated with bad programming practices, which I did.
In response to Crispy (#8)
You need good tutorials, obviously. And it helps if you experience first-hand the problems associated with bad programming practices, which I did.

I had no internet just an old TI computer(so old in fact that it had no hardrive and less RAM than my calculator). So the only resource I had at my disposal was the manual on TI BASIC. There was no nice GUI for the editor. The language required you to use line numbers since that's the only way to change a previous line was to overwite it by typing the line over with the same line number. QBASIC ruled for me when I started using it :).
One important concept of C/C++ programming is memory manipulation, especially in games. If you are really serious about game programming this is something that would be really good to learn. This is were the power of C as well as it's danger comes into play. You'll see a lot of memory manipulation in areas such as linked list (good for particle systems), Quadtrees/Octrees (good for 3D-space Object Culling), Vertex/Index Buffers, etc.

Here are some code samples of something I was creating for a 3D Modeller Object scheme.

http://www.ethereal-studios.com/node.h
http://www.ethereal-studios.com/node.cpp
http://www.ethereal-studios.com/node3.cpp

-- Maybe that's a bit too heavy, but it's just an example of how mem manipulation is used.

On another note, compilers (such as VS.Net,C++ Builder) are pretty optimized enough that if you're creating a game you won't need to learn (too much if any) ASM, unless something down the pipeline isn't quite optimized (a good example of this would be bitmap loading and swaping bytes from BGR to RGB--found on one of NeHe's examples) as well as some mathematical equations. Also, with today's high level shader languages you don't have to worry about writing nasty assembly for shaders!

In conclusion, "serious programming" will take a lot of effort on your part to learn design, concepts, and a bit of hacking your own code and making it better. As stated by Thoedis--- practice practice practice and you should be good. =)
In response to Abraxas (#3)
But DM is a C/C++-derivative, not a BASIC-derivative. Where are you getting the idea that DM is worse to learn than C/C++? It's easier to learn, and it uses the exact same programming principles, aside from a couple conventions designed to prevent programmer error (such as not allowing operator= to be used in a comparison), and a few things that the lazy C++ compilers could never have (disallowing usually-erroneous multiple includes, not necessitating a strict order of function definitions, etc.).

DM is C++'s baby brother. It's smart (a prodigial chess player) but it lacks the wisdom that makes it truly capable of producing high-end games. That's nothing to be ashamed of -- it's young.

I understood nothing about C++ or even about syntax until I learned DM. Now, if I wasn't spoiled by DM's ease of use, I'd gladly make a game in C++, because I understand it very well.
Do a web search and look for a man named Andre Lamothe. When you find his website, I think its extreme games 3d or something along those lines. Contact him through E-mail and within a few days he will reply to the best of his ability. He will tell you what programs you will need, what education you should have, and where you should go to apply. This man is an asset to all professional game developers in the United States and many other countries, there are few professional game developers who do not know his name.

If programming is truly for you he can be the way to it.It was through him that I realized that I don't want to program games for a living, I want to design them for the programmers. However, a game designer has a harder time of getting into the industry than programmers, but unlike programmers they cannot easily be replaced.

Understand that the entertainment industry is still merely at its' infant stages and already the competition is harsh. As a programmer in a game developing company you are either a great employee or you are fired.
In response to Spuzzum (#11)
So true. I see where DM is going. Over time it will become a very powerful game designing tool that could very well make professional games.
In response to Dareb (#12)
Hios books and the one's he edited are excellent and you should probably read those as well. Also it's Andre LaMothe. (no real difference except the capitalization :p)
In response to Exadv1 (#14)
Heh, I knew the name sounded familiar. I read a bit of a book on 3D game programming in C, and the book (creatively named "3D Game Programming in C") was pretty good. It didn't explain the math as much as I'd have liked, but its a programming book, not a math book, but still good.