   New to programming, what to learn first?
  As the title says, I have basically 0 experience with any programming language.  I'm looking for advice on what people would recommend I learn first, and if possible recommendations for educational materials for that language.  I'll list some goals of mine that may help in formulating any advice.My main goal is to work as a level designer, so firstly I'm looking for a language for scripting use in level design.  I'm leaning towards python right now, but I don't have much of a basis for that decision.Second, is something to piddle on the side with to try to make some small scale games like you'd see on xbox live arcade.Third, I'm not looking to create an entire mmo, but I am interested in trying to develop aspects of one, specifically a crafting system.I have a decent background in math and physics if that makes any difference.Thanks   
Quote:Original post by XoEnder... I'm looking for a language for scripting use in level design.  I'm leaning towards python right now, but I don't have much of a basis for that decision...I can vouch for Python as a suitable first language - it's code is arguably more natural and easily human-readable than the average language.The most important thing to know is that programming/scripting is a skill hugely transferable between languages - once you understand how to use Python, it will generally not be a massive task to apply this knowledge to another language. Do not get hung up on choosing the language you want to learn with - really any will do, so you might as well go ahead with Python (Python also has some fairly simple and intuitive tools for creating 2D games, such as PyGame).There are a few fundamentals (which apply to almost all languages) that you will need to learn. In a university course, these are often covered in just a couple of lectures:Variables and assignmentUsing what is basically algebraic notation to perform calculations and store values.e.g. attackDamage = playerStrength * 50Conditional statementsPerforming checks and taking different action depending on the outcomee.g.if playerHealth < 0 then    print "You are dead"else    print "You are alive""Looping" constructsAllowing you to repeat parts of your game code several timese.g. (this is how many games are set up in the most basic sense)do this    update player character and enemies based on input and AI    draw player and enemies to screen  until (player pressed the ESC key)There are of course a few more basic concepts, but this is the stuff that makes up the majority of programming.http://www.sthurlow.com/python/ looks like a decent beginners tutorial which assumes no experience - after taking a couple of hours to work through that, you should have the basics you need to begin thinking about games.PyGame will then allow you to load an image from a file and position it on the screen using coordinates - from there you can combine the techniques you have learned to create interactive programs. Consider this example (like all the examples here, this isn't actual Python code, but shows the logical flow of programs and scripts):player_x_coordinate = 100player_y_coordinate = 100do this   if left_arrow_key_is_currently_held_down then   player_x_coordinate = player_x_coordinate - 1   if right_arrow_key_is_currently_held_down then   player_x_coordinate = player_x_coordinate + 1    draw player ship at location (player_x_coordinate, player_y_coordinate)until ESC key is pressed;  Thanks, just have a couple more questions now.Would you recommend spending some extra time learning non-language specifics of programming in general, or to start programming with python off the bat and learn programming basics as I go using practical application?What version of python would you recommend?  python.org says "If you don't know which version to use, start with Python 2.6.3; more existing third party software is compatible with Python 2 than Python 3 right now."  Since I don't have any idea what I may need in the future I'm thinking of 2, but at the same time I prefer to use more up to date programs when available, as long as they're stable.One more I just thought of, do you know if there's any issues concerning compatibility or stability on 64bit platforms since that's what I'm using now?   ;Quote:Original post by XoEnderWould you recommend spending some extra time learning non-language specifics of programming in general, or to start programming with python off the bat and learn programming basics as I go using practical application?I would say that learning Python (or any other language) will always involve learning the non language-specific parts of programming anyway - for example, the tutorial I linked to focuses on fundamentals largely applicable to any programming language with only superficial changes in the way the code looks. It only mentions a couple of things that are really specific to Python.I wouldn't suggest learning these basics in a totally abstract way outside of a language - Python is as readable and easy to understand as any pseudo-language that might be used in teaching these concepts. The main benefit of learning with a real language is that it allows you to try and check things for yourself.Quote:Original post by XoEnderWhat version of python would you recommend?  python.org says "If you don't know which version to use, start with Python 2.6.3; more existing third party software is compatible with Python 2 than Python 3 right now."Python 2.6 should be perfectly acceptable - it has perhaps slightly better compatibility than 3.1 at the moment with things like PyGameQuote:Original post by XoEnderOne more I just thought of, do you know if there's any issues concerning compatibility or stability on 64bit platforms since that's what I'm using now?AFAIK Python has had 64-bit support since before version 2.5 and was generally considered to have strong/reliable support since 2.5   ;Quote:Original post by XoEnderWhat version of python would you recommend?  python.org says "If you don't know which version to use, start with Python 2.6.3; more existing third party software is compatible with Python 2 than Python 3 right now."I remember reading somewhere that using version 2.5.* over 2.6.* can often save you some headaches, especially when using third-party libraries. Can someone confirm this?   ;  Hi XoEnder, I'd just like to suggest that once you decide upon a language you should go out and buy a book on the language. Learning a language is much easier when you have the details on paper in front of you, and an index you can easily search through without losing your page.Personally, I'd recommend C# or C++ since those are commonly used in the games industry. C++ has been the professional standard in the industry for the longest time. Besides, I'd say that once you get the grasp of one language it would do you well to learn at least one other. :) Different languages operate in very different ways and you can learn a lot about programming from the variety that's out there.   ;Quote:Original post by BravepowerHi XoEnder, I'd just like to suggest that once you decide upon a language you should go out and buy a book on the language. Learning a language is much easier when you have the details on paper in front of you, and an index you can easily search through without losing your page.I agree with this entirely - a language book is really an invaluable resource. Online tutorials are normally perfectly OK for Programming 101 type work, but there are always things to be learned and a deeper understanding to be gained from a good book.Quote:Original post by Bravepower Personally, I'd recommend C# or C++ since those are commonly used in the games industry. C++ has been the professional standard in the industry for the longest time.I'm not so sure about this for a complete novice - it is hard to deny that C++ introduces complications such as memory management, pointers, static typing etc. which can be very confusing when learning the basics and are certainly less applicable to scripting languages (which is what the OP expressed interest in learning about). I am in the camp that thinks that eventually gaining an understanding of C/C++ pointers is pretty much a requirement for a professional level programmer, but learning should start at a high level before delving into more complicated underpinnings.C# alleviates the memory management burden but is more strongly tied to a specific platform, is less lightweight and it is generally much harder do things like set up a window to draw graphics (when the learning programmer wants to focus on slightly higher-level program logic at this stage), for example. As a compiled language there can also be more non code-related complications with project dependencies etc. It is certainly something I'd consider moving onto after learning the very basics of programming, especially if the OP is interested in XNA/XBLA stuff. Quote:Original post by BravepowerDifferent languages operate in very different ways and you can learn a lot about programming from the variety that's out there.While there are more esoteric languages available with wildly different paradigms, the vast majority of commonly used languages feature extremely similar procedural imperative/OO paradigms and there are relatively minor intricacies unique to specific languages. For a more experienced programmer I think it can be refreshing and even enlightening to dabble with reflective and functional programming in Ruby, Smalltalk or even Python.   ;Quote:Original post by Gage64Quote:Original post by XoEnderWhat version of python would you recommend?  python.org says "If you don't know which version to use, start with Python 2.6.3; more existing third party software is compatible with Python 2 than Python 3 right now."I remember reading somewhere that using version 2.5.* over 2.6.* can often save you some headaches, especially when using third-party libraries. Can someone confirm this?This might be true in some cases - I often use Python+PyGame for prototyping game ideas and held off on the move from 2.5 to 2.6 for a long time, but after moving haven't really encountered issues.I've also used PyOpenGL and TKinter with 2.6, but can't speak for many other libraries   ;  unrealscript thats my vote but python would work   ;  unrealscript is awesome, I remember making mutators for UT1 back in the day   