The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.
Hello, this will be my first post to the forums so here goes .
I've been interested in learning to program for a while now and finally have some time to actually do so. My goal is that eventually I'd like to be able to make simple to slightly advanced 2d games and create a type of auto-process for some ridiculously repetitive and time consuming tasks at work. From looking through some other threads on this topic it seems that good beginner languages would be Python and/or C#. I plan on just going to a book store and buying a couple books for beginners but any suggestions on what books to buy, or websites to look into, or maybe I should start with a different language to learn, any help would be really appreciated. I understand that it will probably take a while of learning before I can really reach my goals but I've got time so not a problem.
For Python, I used the book Learning Python. It's an O'reilly book by Mark Lutz. It's good for new programmers as well as more experienced ones just learning a new language. There's also Dive Into Python which is a free online book. The site also has links you download the whole thing from to work offline.
2 caveats:
1. Getting to the point where you can make even simple 2d games will be quite a while.
2. DO NOT attempt to download Python from Python.com. Use Python.org. Python.com is a porn site. I nearly got myself fired accidentally going there at work.
What kind of tasks and what environment (ie: windows) do you use at work?
I use Windows Vista at work, I basically have to manage and go through 4000-6000+ event reservations and change variables depending on event type, time, and the number of people attending, I know the program for that uses SQL.
ptlsbntr on
0
admanbunionize your workplaceSeattle, WARegistered Userregular
For Python, I used the book Learning Python. It's an O'reilly book by Mark Lutz. It's good for new programmers as well as more experienced ones just learning a new language. There's also Dive Into Python which is a free online book. The site also has links you download the whole thing from to work offline.
Stick to the O'Reilly book. Dive Into Python hasn't aged well.
What kind of tasks and what environment (ie: windows) do you use at work?
I use Windows Vista at work, I basically have to manage and go through 4000-6000+ event reservations and change variables depending on event type, time, and the number of people attending, I know the program for that uses SQL.
Can't speak for Python, but C# does everything you mention. For game development look at XNA and for the SQL stuff you'll want to look at ADO.NET. Don't expect to do this stuff overnight though.
For Python, I used the book Learning Python. It's an O'reilly book by Mark Lutz. It's good for new programmers as well as more experienced ones just learning a new language. There's also Dive Into Python which is a free online book. The site also has links you download the whole thing from to work offline.
Stick to the O'Reilly book. Dive Into Python hasn't aged well.
I was taken aback by that, but it seems I'd forgotten that the new version has a different domain name. http://diveintopython3.org/
Python has shit in it. Lots of quirks and stuff that are unique to python that can throw new guys for a loop when they switch to another language.
C# is wholesome. Regardless of your opinion of Microsoft, C#.NET is a robust framework and a very sound language and it will open the doors to anything you want to do*
*in Windows
Also, C# being strongly typed, it will teach you some good habits.
I find people who start with dynamic languages like Python tend to get frustrated and pissed of when they have to jump into something stricter like C#. Whereas people who start off with the tough stuff can move at will between the two.
You almost can't go wrong with any language as a starting point, as long as you're willing to learn. Once you have the basics of the language though, it will take a little while to understand the concepts behind making a game. Make no mistake - it's definitely way fun and rewarding, but you'll need a little dedication.
Python is nice because it has very little syntax to memorize, but I'm gonna second the notion that starting there and moving to a more persnickety language will be frustrating for you. Better to start with C#, Java or C++. Hell, I started with C++ - arguably the most difficult language in wide use - and didn't really have any problems, and there was a huge upside in that it was all downhill from there.
Sorry, I can't recommend any good books because all my books were comp sci textbooks and I hated them but never bothered to replace them with something readable, but I've found a little searching and reading of reviews on Amazon to be enormously helpful. That method found me some gems (though nothing you would care about).
As you may have read, once you know one language, learning another is not very hard. You are able to define the new language in terms of differences from the old, which reduces the amount of stuff to memorize, and eventually, the more languages you learn, you will just have a core set of concepts in your head and only need to get a quick overview of how they are executed in a new language before you are ready to go.
2. DO NOT attempt to download Python from Python.com. Use Python.org. Python.com is a porn site. I nearly got myself fired accidentally going there at work.
Wow, seriously? Your superior/HR dept was that retarded?
I'd recommend C# as well. It's pretty neat, especially for a first language. I don't have any specific book recommendations but Deitel & Deitel's C++ stuff was pretty solid. I'd check out their stuff on Amazon.
I'll third the recommendation for C#. It's one of the most modern languages that comes with almost all of the libraries you could need by default. Java would be a close second, but as Jasc said, stay with a strongly typed language at first.
bowen on
not a doctor, not a lawyer, examples I use may not be fully researched so don't take out of context plz, don't @ me
2. DO NOT attempt to download Python from Python.com. Use Python.org. Python.com is a porn site. I nearly got myself fired accidentally going there at work.
Wow, seriously? Your superior/HR dept was that retarded?
Well no one saw it, but I was reading my python book after typing in the URL, so I didn't notice I'd just had this hardcore porn page up on my screen for like 5 minutes. I don't have an office either. My desk is in a highly trafficked area with my monitor facing the doors. There have been sexual harassment charges for less.
If you really want to make a game at some point, start with C# or something like that. But definitely learn python for your work task.
Simple data manipulation programs from scratch in literally 5 minutes with that language (or perl, which is what I use, despite its many idiosyncrasies).
Can't recommend a book but I can't recommend C# any more highly. It's great. Visual Studio is great. And the online XNA tutorials are glorious, once you learn (via book, internet) the basics of Object Oriented Programming.
I haven't used C#. I learned Python, Java, C, and C++ in that order.
Rather than making the other languages frustrating, Python was fun to use and got me writing programs. Then, when learning other languages, I was able to focus much more on their semantics and the reasons behind them. I was able to transfer most of the actual programming idioms, with varying degrees of modification.
Python isn't just a learning language either, I still use it for a lot of day to day stuff, and I think it's especially handy for "some ridiculously repetitive and time consuming tasks at work". String manipulation is king for that type of work, and Python gives you some tools that can go a long way.
You'll probably be fine starting with either, but I like to recommend Python because it worked out well for me - I learned a lot, in a relatively short amount of time, and I had fun even when just starting out with other languages because I had a good foundation to build from.
Java or C# are good choices if you're just starting out
then, if you want to get serious, move to c++
If you want to get more serious, move to C, not C++. These days, the managed environments are good enough that you're better off staying there and then integrating down to the C level only where necessary.
Specific libraries and applications may push you towards C++, but the reliance on that has been dropping steadily the past few years (I'm thinking mainly of the maturity of the language bindings on the cross-platform windowing toolkits mainly).
These days knowledge of a high-level language or two and how to make those languages interact with raw C code will let you do pretty much anything you'd ever want to do with a computer - I'd advise avoiding C++ unless strictly necessary (and definitely not as part of any learning programming exercise) - if you do need to stray there, having the grounding in simple C programming will serve you very very well.
I think you'd be perfectly well served by learning a very high-level language such as python or ruby (I'd recommend the later, but they're both perfectly fine), or C# if you're looking at making some small gui tools.
For game programming, I'd advise starting in either ruby or python to get an understanding of the mechanics of how your game will run in an abstract sense and once you have those fundamentals, start moving into lower level languages as your desire for more graphical interactions grow. (Python has the better gaming library integration, but I prefer ruby as a whole).
1) Understand that there are many things you have to learn, and they fall into three main categories:
1a) You have to learn whatever language or languages you're going to be working with. A language comes with certain concepts that describe how it wants you to think about programming. It also has a grammar, a way it wants you to communicate those concepts. Some languages let you directly manipulate memory addresses. Some languages never let you touch memory addresses but give you references. That kind of thing.
1b) You have to learn the function of the machine you're working with, and the operating system it uses. Most beginning programming textbooks teach you about keyboard, screen, files, maybe even network sockets, because those are universal. If you're writing a game how do you interact with the graphics device, or the sound device? What kind of shader programs can your graphics card support?
1c) You have to learn some "computer science" -- a bunch of concepts and recipes and already-solved problems for how to make a machine manipulate information. A great man once said calling what we do "computer science" is like calling what a surgeon does "knife science." It's not about the computer, it's about solving problems.
2) You have to NEVER fear failure. It's just like playing a game, in that a good game is an environment that's structured to provide rapid low-cost failure for the player. Whoops that didn't work, try again. That failed but in a different way, try again. There, you got it, on to the next challenge! Problem is, when you play "learning to program" it's not a particularly well-designed game. You have to WANT to win. You have to be prepared for an environment that doesn't always show you why something didn't work; an environment that would love to chew up your resolve and spit you out as a discouraged quitter. Don't let it. Go the extra mile and learn to debug, learn to use watch points, learn to structure your code so it makes it known where things are failing. Realize that any code you write can cause you problems at any time, and be prepared for weird stuff.
3) Don't be afraid to buy books, lots and lots of books. Buy redundant books. If you need to learn XNA 3.1, go buy three or four introductory books on XNA 3.1, and consume them all. You will find a lot of material covered redundantly, but it will be covered from different viewpoints and different perspectives. Things will make better sense. Don't look at it as "only the best book author deserves my money" -- look at it as "sure it sucks spending $200 instead of $50 to learn this one subject, but my time is worth more than that. It'll be worth it to learn faster and learn well." Don't obsess over finding the perfect book, because then you never buy any of them.
4) Making games is hard. Making a fun game is nearly impossible. It's really easy to get discouraged and quit. Avoid some common pitfalls by starting with a small project. Make Tetris. Or make a game with zombies in it. (!!1!1) When you're done, be proud that you made something that's roughly game-like and includes all the required features that a game must have. It may not be fun to play, but don't feel bad. Fun is difficult to create, hard to pin down, and requires a ton of iterative design, throwing away and redoing and retesting.
5) Even if you don't see yourself as a "game designer" someday -- even if all you want to do is join the industry and be a programmer -- learn about game design. Read books that talk about fun and learning and feedback. Any employee will tend to do a better job at work if they understand what their boss needs. It's OK to study game design as an amateur, just to gain that understanding. That doesn't mean you're a game designer wannabe, that just means you're curious about how to create fun.
I agree about starting with C#. There are many languages out there and they each have pros and cons. Here's me justifying my recommendation to the rest of the thread, using language that may not make sense to a new programmer: A new programmer who plans on someday becoming an expert SHOULD start with a language that's got conceptual depth and a richness of features, but which is also type safe and type inferencing. Lack of type safety complicates the debugging process, and lack of type inferencing forces a programmer to spend more brain cycles clarifying things that should have been obvious to the language's type system. That doesn't mean C# is the best language, just that it's one of many excellent languages for a new programmer.
As I said above, when you get frustrated don't quit. Seek help here, buy books, enroll in classes, ask a friend. And if you can find a chunk of time in your life for it, consider enrolling in a computer science degree program. It'll help.
mspencer on
MEMBER OF THE PARANOIA GM GUILD
XBL Michael Spencer || Wii 6007 6812 1605 7315 || PSN MichaelSpencerJr || Steam Michael_Spencer || Ham NOØK QRZ || My last known GPS coordinates: FindU or APRS.fi (Car antenna feed line busted -- no ham radio for me X__X )
Java or C# are good choices if you're just starting out
then, if you want to get serious, move to c++
If you want to get more serious, move to C, not C++. These days, the managed environments are good enough that you're better off staying there and then integrating down to the C level only where necessary.
Specific libraries and applications may push you towards C++, but the reliance on that has been dropping steadily the past few years (I'm thinking mainly of the maturity of the language bindings on the cross-platform windowing toolkits mainly).
These days knowledge of a high-level language or two and how to make those languages interact with raw C code will let you do pretty much anything you'd ever want to do with a computer - I'd advise avoiding C++ unless strictly necessary (and definitely not as part of any learning programming exercise) - if you do need to stray there, having the grounding in simple C programming will serve you very very well.
I think you'd be perfectly well served by learning a very high-level language such as python or ruby (I'd recommend the later, but they're both perfectly fine), or C# if you're looking at making some small gui tools.
For game programming, I'd advise starting in either ruby or python to get an understanding of the mechanics of how your game will run in an abstract sense and once you have those fundamentals, start moving into lower level languages as your desire for more graphical interactions grow. (Python has the better gaming library integration, but I prefer ruby as a whole).
Something smells like poo.
Don't use C unless it's required by design (small,light,fast -- basically an embedded environment). The whole point of modern languages is OOP/OOD. You can mimic it half-assed in C, but it's a real pain in the ass unless you're just amazing at programming in general.
I'd rather the OP pick up Obj-C than flat C if he's serious about programming. The only people I hear contest that C is the best ever are old *nix farts who learned programming in the 70-80s or some linux nerds that believed their hype, and loved the smell of their own farts, on USENET. C was a godsend coming from COBOL and FORTRAN I'd imagine.
bowen on
not a doctor, not a lawyer, examples I use may not be fully researched so don't take out of context plz, don't @ me
I was advocating C as something to understand more than something to ever really program in. Most languages are written in C and will also let you drop down into C if you ever really truly need that level of control. I've never really programmed much in C, but I know HOW to program in C and can read and understand C programs and I really appreciate the understand of fundamentals that gave me.
I was advocating C as something to understand more than something to ever really program in. Most languages are written in C and will also let you drop down into C if you ever really truly need that level of control. I've never really programmed much in C, but I know HOW to program in C and can read and understand C programs and I really appreciate the understand of fundamentals that gave me.
"Learn C" is good advice for someone who asked something like "I've been learning Python/C# for a while and would like a new challenge that would teach me something different about computing" but it's not such great advice for someone who has never programmed before. It's best to start with a friendlier language so that you don't get discouraged from early lack of results.
Learning C++ first (particularly from lame web resources or textbooks) tends to have the hilarious side effect of making the would-be programmer learn a lot of C. It's very easy to get caught up using a ton of C libraries in your first C++ game, for example, to the point where you don't actually learn to use the OOP facilities in C++ very effectively. (SDL, FMOD, etc.)
You'll even see loads of examples of simple things, such as reading a file, that completely forgo the C++ methodology. (not that I blame anyone for using stdio over iostream; I have yet to see a compelling case for iostream not being horrible in every way)
"Learn C" is good advice for someone who asked something like "I've been learning Python/C# for a while and would like a new challenge that would teach me something different about computing" but it's not such great advice for someone who has never programmed before. It's best to start with a friendlier language so that you don't get discouraged from early lack of results.
I don't think anyone was suggesting that the OP learn C first
managed languages are good for learning but once you are more advanced, if you want performance you have to go closer to the metal
Not sure if I should really jump into this thread, but programming has kind of been an on-going background thing for me. I'd really like to get more seriously into programming, though it hasn't exactly happened for me. That part is my fault though, really.
Way back in high school I first got into some programming and we learned Turbo Pascal... on like Apple IIe's or something, this was only 14 years ago but public school funding is what it is.
I didn't really do anything else programming wise until 2001 when I took a local community college certificate course on 'e-business' and one of the parts of it was Java programming. This was interesting and I did end up playing around with it a little more on my own time, wrote up a text-based Blackjack game first and later I wrote a text-based version of the weird card mini-game from the Might and Magic 7 and 8 games called Arcomage, if anyone's familiar with that. It worked really well and I actually played it a decent amount for fun, the CPU could be a bit tough to beat at times. Granted, it was all hard coded, I wasn't using external data files or anything, mostly just matrix arrays which kept the data of what each card did and such.
Through a contact in one of those classes I ended up getting a job at the local newspaper's web department, which I worked at part-time for 5 years, learning HTML and CSS on the job. I also got into PHP which we started using pretty heavily. I do like PHP for the server side language it is, not needing to compile and such. I even began working on converting my Java Arcomage program to a server-side PHP script using HTML/CSS to provide a frontend to it, though I never got around to finishing it.
I ended up getting laid off from the newspaper as they were trying to find places to make cuts, the guy that was my manager in the department left a few months later, having seen the writing on the wall and he had issues with how they were incorrectly utilizing the web resources we were capable of providing them. At any rate, after a long unemployment stint, I managed to get another part-time job as a 'web developer' on a way too small team for what's expected.
I think I'm just coming to the realization that I'm not much for the creativity and design (as in layout and such) that is frequently expected of me. Which has gotten me back to thinking that what I'd much prefer to do is work more as a programmer... having a problem and needing to work out how to solve it. I'm much more of a logical thinker than a creative one, I guess.
I'm rambling a bit at this point, but threads like this on here make me think I just need to get on Amazon and start getting some programming books and begin learning some more concrete stuff. I remember glancing at C# back around when it first started coming into use and realizing that, wow, it looks a *lot* like Java code. I don't really remember much Java at all at this point, so I don't think that would hamper me much if I wanted to go ahead and start with C#.
Ultimately I *would* like to be a game programmer, but I'm not totally hung up on that idea really. I just really need to *do* something and start working towards it I think. C# seems like a good start to me though!
Take something you're interested in and run with it. If you're not interested, you won't go anywhere really. C# is a very good language and a very good choice, except for the platform lock-in. (Sort of like Java if Sun had actually bothered to improve on it, though it has some different ways of doing things that remind me a little of C++.)
Since you're already in web programming, you might want to consider learning some MVC frameworks for PHP (not Cake, god I hate Cake), and the big ones for other languages - Rails, Django, etc. Doing tutorials is always fun. Django, in particular, has a delightful tendency to just make sense.
Yeah, if I could get just into the programming side of the web work I'd probably be alright. If a department comes to me and says they need something to look this way, I can figure out how to do the HTML and CSS to get it looking that way. If they come to me with vague concepts of just 'whatever', that's when I get kind of screwed. It'd be nice if we had a designer to do that part and let me do the coding part, but like I said, super small team.
Aaanyway, I just need to figure out some useful C# books to look into and dive into it I suppose.
"Learn C" is good advice for someone who asked something like "I've been learning Python/C# for a while and would like a new challenge that would teach me something different about computing" but it's not such great advice for someone who has never programmed before. It's best to start with a friendlier language so that you don't get discouraged from early lack of results.
I don't think anyone was suggesting that the OP learn C first
managed languages are good for learning but once you are more advanced, if you want performance you have to go closer to the metal
For what it's worth I agree with this in theory but I feel it should be expanded:
Start with a safe language with a smart type system. (Safe as in it's difficult to create code that makes the machine do something invalid, like resolve an invalid pointer, and smart in terms of strong type enforcement with type inferencing.)
Once you are more advanced, you should learn exemplar languages of all types. My picks would be: C, Assembler for both a simple machine and a complex one, Perl, Python, ML or Smalltalk for a functional language, and even Prolog for some logic programming. Find out what you prefer, and learn that in depth.
mspencer on
MEMBER OF THE PARANOIA GM GUILD
XBL Michael Spencer || Wii 6007 6812 1605 7315 || PSN MichaelSpencerJr || Steam Michael_Spencer || Ham NOØK QRZ || My last known GPS coordinates: FindU or APRS.fi (Car antenna feed line busted -- no ham radio for me X__X )
Regardless, I already know some PHP! And it isn't the issue here, I'm talking about C#. Not to mention it could be neat to transition into XNA with that if I do want to mess around with game programming.
Friend of mine does some neat doodles and such, I really should get him to figure out how to digitize his stuff... that would probably help. But that's a ways down the road regardless.
Anyway, anyone have any other C# book recommendations?
PHP is one of those languages that at first is like "holy shit dynamic web pages are so easy!" and then when you get into it it's just a mess. The devil is in the details, and PHP's details are horrid.
For starters, the standard library is almost entirely procedural, and barely has any consistency with function naming. Array operations are not intuitive at all.
Having to type "->" all over the place when working with actual objects is enough to drive anyone insane.
Typing "<?php echo (some statement) ?>" gets old fast. Most other page-generation languages are much more terse, expressive and readable, with the notable exception of JSP.
I've only ever used C# In a Nutshell, which is a good language reference if you can already program. I don't think you can teach yourself C# by reading that book cover to cover and doing the examples, because chapters mix simple and complex things freely. The learning curve would be too steep.
Guys, help? As a matter of principle I'd recommend buying two or three "learning" type books, maybe a "recipes" type book, and the In A Nutshell reference. But what books in those categories are good?
mspencer on
MEMBER OF THE PARANOIA GM GUILD
XBL Michael Spencer || Wii 6007 6812 1605 7315 || PSN MichaelSpencerJr || Steam Michael_Spencer || Ham NOØK QRZ || My last known GPS coordinates: FindU or APRS.fi (Car antenna feed line busted -- no ham radio for me X__X )
Posts
What kind of tasks and what environment (ie: windows) do you use at work?
I'd recommend you start here, the Visual Basic, Visual C++ and Visual C# areas have links to some learning articles and tutorials.
2 caveats:
1. Getting to the point where you can make even simple 2d games will be quite a while.
2. DO NOT attempt to download Python from Python.com. Use Python.org. Python.com is a porn site. I nearly got myself fired accidentally going there at work.
Stick to the O'Reilly book. Dive Into Python hasn't aged well.
Can't speak for Python, but C# does everything you mention. For game development look at XNA and for the SQL stuff you'll want to look at ADO.NET. Don't expect to do this stuff overnight though.
Python has shit in it. Lots of quirks and stuff that are unique to python that can throw new guys for a loop when they switch to another language.
C# is wholesome. Regardless of your opinion of Microsoft, C#.NET is a robust framework and a very sound language and it will open the doors to anything you want to do*
*in Windows
Also, C# being strongly typed, it will teach you some good habits.
I find people who start with dynamic languages like Python tend to get frustrated and pissed of when they have to jump into something stricter like C#. Whereas people who start off with the tough stuff can move at will between the two.
we also talk about other random shit and clown upon each other
then, if you want to get serious, move to c++
Python is nice because it has very little syntax to memorize, but I'm gonna second the notion that starting there and moving to a more persnickety language will be frustrating for you. Better to start with C#, Java or C++. Hell, I started with C++ - arguably the most difficult language in wide use - and didn't really have any problems, and there was a huge upside in that it was all downhill from there.
Sorry, I can't recommend any good books because all my books were comp sci textbooks and I hated them but never bothered to replace them with something readable, but I've found a little searching and reading of reviews on Amazon to be enormously helpful. That method found me some gems (though nothing you would care about).
As you may have read, once you know one language, learning another is not very hard. You are able to define the new language in terms of differences from the old, which reduces the amount of stuff to memorize, and eventually, the more languages you learn, you will just have a core set of concepts in your head and only need to get a quick overview of how they are executed in a new language before you are ready to go.
Wow, seriously? Your superior/HR dept was that retarded?
Well no one saw it, but I was reading my python book after typing in the URL, so I didn't notice I'd just had this hardcore porn page up on my screen for like 5 minutes. I don't have an office either. My desk is in a highly trafficked area with my monitor facing the doors. There have been sexual harassment charges for less.
Simple data manipulation programs from scratch in literally 5 minutes with that language (or perl, which is what I use, despite its many idiosyncrasies).
i've been following this book:
http://www.amazon.ca/Microsoft-XNA-Game-Studio-3-0/dp/0735626588
I've never coded before and it's super easy to follow and understand the structure.
Plus you can use it to makes games for Windows or even put them on your Xbox if you have one.
*I think i made this exact same post last week.
edit: for grammar
Can't recommend a book but I can't recommend C# any more highly. It's great. Visual Studio is great. And the online XNA tutorials are glorious, once you learn (via book, internet) the basics of Object Oriented Programming.
Rather than making the other languages frustrating, Python was fun to use and got me writing programs. Then, when learning other languages, I was able to focus much more on their semantics and the reasons behind them. I was able to transfer most of the actual programming idioms, with varying degrees of modification.
Python isn't just a learning language either, I still use it for a lot of day to day stuff, and I think it's especially handy for "some ridiculously repetitive and time consuming tasks at work". String manipulation is king for that type of work, and Python gives you some tools that can go a long way.
You'll probably be fine starting with either, but I like to recommend Python because it worked out well for me - I learned a lot, in a relatively short amount of time, and I had fun even when just starting out with other languages because I had a good foundation to build from.
If you want to get more serious, move to C, not C++. These days, the managed environments are good enough that you're better off staying there and then integrating down to the C level only where necessary.
Specific libraries and applications may push you towards C++, but the reliance on that has been dropping steadily the past few years (I'm thinking mainly of the maturity of the language bindings on the cross-platform windowing toolkits mainly).
These days knowledge of a high-level language or two and how to make those languages interact with raw C code will let you do pretty much anything you'd ever want to do with a computer - I'd advise avoiding C++ unless strictly necessary (and definitely not as part of any learning programming exercise) - if you do need to stray there, having the grounding in simple C programming will serve you very very well.
I think you'd be perfectly well served by learning a very high-level language such as python or ruby (I'd recommend the later, but they're both perfectly fine), or C# if you're looking at making some small gui tools.
For game programming, I'd advise starting in either ruby or python to get an understanding of the mechanics of how your game will run in an abstract sense and once you have those fundamentals, start moving into lower level languages as your desire for more graphical interactions grow. (Python has the better gaming library integration, but I prefer ruby as a whole).
Play with me on Steam
I agree about starting with C#. There are many languages out there and they each have pros and cons. Here's me justifying my recommendation to the rest of the thread, using language that may not make sense to a new programmer: A new programmer who plans on someday becoming an expert SHOULD start with a language that's got conceptual depth and a richness of features, but which is also type safe and type inferencing. Lack of type safety complicates the debugging process, and lack of type inferencing forces a programmer to spend more brain cycles clarifying things that should have been obvious to the language's type system. That doesn't mean C# is the best language, just that it's one of many excellent languages for a new programmer.
As I said above, when you get frustrated don't quit. Seek help here, buy books, enroll in classes, ask a friend. And if you can find a chunk of time in your life for it, consider enrolling in a computer science degree program. It'll help.
XBL Michael Spencer || Wii 6007 6812 1605 7315 || PSN MichaelSpencerJr || Steam Michael_Spencer || Ham NOØK
QRZ || My last known GPS coordinates: FindU or APRS.fi (Car antenna feed line busted -- no ham radio for me X__X )
Something smells like poo.
Don't use C unless it's required by design (small,light,fast -- basically an embedded environment). The whole point of modern languages is OOP/OOD. You can mimic it half-assed in C, but it's a real pain in the ass unless you're just amazing at programming in general.
I'd rather the OP pick up Obj-C than flat C if he's serious about programming. The only people I hear contest that C is the best ever are old *nix farts who learned programming in the 70-80s or some linux nerds that believed their hype, and loved the smell of their own farts, on USENET. C was a godsend coming from COBOL and FORTRAN I'd imagine.
Play with me on Steam
"Learn C" is good advice for someone who asked something like "I've been learning Python/C# for a while and would like a new challenge that would teach me something different about computing" but it's not such great advice for someone who has never programmed before. It's best to start with a friendlier language so that you don't get discouraged from early lack of results.
You'll even see loads of examples of simple things, such as reading a file, that completely forgo the C++ methodology. (not that I blame anyone for using stdio over iostream; I have yet to see a compelling case for iostream not being horrible in every way)
managed languages are good for learning but once you are more advanced, if you want performance you have to go closer to the metal
Way back in high school I first got into some programming and we learned Turbo Pascal... on like Apple IIe's or something, this was only 14 years ago but public school funding is what it is.
I didn't really do anything else programming wise until 2001 when I took a local community college certificate course on 'e-business' and one of the parts of it was Java programming. This was interesting and I did end up playing around with it a little more on my own time, wrote up a text-based Blackjack game first and later I wrote a text-based version of the weird card mini-game from the Might and Magic 7 and 8 games called Arcomage, if anyone's familiar with that. It worked really well and I actually played it a decent amount for fun, the CPU could be a bit tough to beat at times. Granted, it was all hard coded, I wasn't using external data files or anything, mostly just matrix arrays which kept the data of what each card did and such.
Through a contact in one of those classes I ended up getting a job at the local newspaper's web department, which I worked at part-time for 5 years, learning HTML and CSS on the job. I also got into PHP which we started using pretty heavily. I do like PHP for the server side language it is, not needing to compile and such. I even began working on converting my Java Arcomage program to a server-side PHP script using HTML/CSS to provide a frontend to it, though I never got around to finishing it.
I ended up getting laid off from the newspaper as they were trying to find places to make cuts, the guy that was my manager in the department left a few months later, having seen the writing on the wall and he had issues with how they were incorrectly utilizing the web resources we were capable of providing them. At any rate, after a long unemployment stint, I managed to get another part-time job as a 'web developer' on a way too small team for what's expected.
I think I'm just coming to the realization that I'm not much for the creativity and design (as in layout and such) that is frequently expected of me. Which has gotten me back to thinking that what I'd much prefer to do is work more as a programmer... having a problem and needing to work out how to solve it. I'm much more of a logical thinker than a creative one, I guess.
I'm rambling a bit at this point, but threads like this on here make me think I just need to get on Amazon and start getting some programming books and begin learning some more concrete stuff. I remember glancing at C# back around when it first started coming into use and realizing that, wow, it looks a *lot* like Java code. I don't really remember much Java at all at this point, so I don't think that would hamper me much if I wanted to go ahead and start with C#.
Ultimately I *would* like to be a game programmer, but I'm not totally hung up on that idea really. I just really need to *do* something and start working towards it I think. C# seems like a good start to me though!
Since you're already in web programming, you might want to consider learning some MVC frameworks for PHP (not Cake, god I hate Cake), and the big ones for other languages - Rails, Django, etc. Doing tutorials is always fun. Django, in particular, has a delightful tendency to just make sense.
Aaanyway, I just need to figure out some useful C# books to look into and dive into it I suppose.
For what it's worth I agree with this in theory but I feel it should be expanded:
Start with a safe language with a smart type system. (Safe as in it's difficult to create code that makes the machine do something invalid, like resolve an invalid pointer, and smart in terms of strong type enforcement with type inferencing.)
Once you are more advanced, you should learn exemplar languages of all types. My picks would be: C, Assembler for both a simple machine and a complex one, Perl, Python, ML or Smalltalk for a functional language, and even Prolog for some logic programming. Find out what you prefer, and learn that in depth.
XBL Michael Spencer || Wii 6007 6812 1605 7315 || PSN MichaelSpencerJr || Steam Michael_Spencer || Ham NOØK
QRZ || My last known GPS coordinates: FindU or APRS.fi (Car antenna feed line busted -- no ham radio for me X__X )
we also talk about other random shit and clown upon each other
we also talk about other random shit and clown upon each other
I was in college in PHP got support for classes/objects/namespaces.
That's a damn shame.
we also talk about other random shit and clown upon each other
Friend of mine does some neat doodles and such, I really should get him to figure out how to digitize his stuff... that would probably help. But that's a ways down the road regardless.
Anyway, anyone have any other C# book recommendations?
For starters, the standard library is almost entirely procedural, and barely has any consistency with function naming. Array operations are not intuitive at all.
Having to type "->" all over the place when working with actual objects is enough to drive anyone insane.
Typing "<?php echo (some statement) ?>" gets old fast. Most other page-generation languages are much more terse, expressive and readable, with the notable exception of JSP.
Guys, help? As a matter of principle I'd recommend buying two or three "learning" type books, maybe a "recipes" type book, and the In A Nutshell reference. But what books in those categories are good?
XBL Michael Spencer || Wii 6007 6812 1605 7315 || PSN MichaelSpencerJr || Steam Michael_Spencer || Ham NOØK
QRZ || My last known GPS coordinates: FindU or APRS.fi (Car antenna feed line busted -- no ham radio for me X__X )