Hi Tom, As a budding game developer, I want to respond to your below email to paint what I feel is a more accurate picture of the python language. I think there are a few additional points everyone really should consider before jumping headfirst into C#.net as I tried to, especially when that jump can meet with some pretty spectacular failures. I will proceed our statements and responses with initials.
TW: On the plus side Python is easy to learn, is cross-platform, and there are a number of simple APIs like PyGame available to help you quickly get up and running with game programming. ... All of this makes Python look good on the surface. RS: This is exactly why Python *is* good, not just on the surface, but deeper down. Imagine being able to program a game right out of the box that will reach not only the Windows community, but the Mac community as well. How many of you out there are Mac users who lament the fact that you don't have any games to play on your computers because they've all been designed for windows? Python can fix that for you. Additionally, because Python is easier to learn, it's also easier to debug. It's a given that programmers spend far more time reading their code than they do writing it, and Python gives you the 1UP on that too. It's the difference between C# void main(string[args]) { System.Console.WriteLine("Hello world"); } And Python: print "Hello world." Even those of you who have never programmed a day in your life can see the difference. TW: On the down side Python is still a runtime language that requires an interpreter or runtime environment to run. RS: c# is compiled to MSIL, Microsoft Intermediate language. This is a type of Byte code. In other words, C# is also Interpreted. If you want more on the subject, check this out: http://en.wikipedia.org/wiki/Common_Intermediate_Language TW: ... if you are thinking about creating high performance games that have to update 40 to 60 times a second Python is going to exicute and run very slow. It was never designed to handle high performance applications like Shades of Doom, Mysteries of the Ancients, etc. For something like that you really need a triditional language like C++ to get the most performance out of your CPU power and memory. RS: Python was considered slow when it was first conceived nearly twenty years ago, back when engineers flatly rejected the idea that we could ever break the 1 gigahertz threshold on a computer's processor. Today our processors run far upwards of 1.0GHZ, and they often do it on multiple cores. While I will not dispute that there are speed advantages to running C-based languages, I also think it's important to point out that our accessible games will likely not reach the constraints of what Python is capable of any time in the near future. The boxing game I am currently developing updates its calculations 250 times a second with absolutely no slow-down. TW: Second, some of the APIs like PyGame aren't the best APIs available for game developers. PyGame is decent if you are going to produce a football game like Jim's NFL, Star Trek Final Conflict, or something like that ... RS: What about Sound RTS? That's far more advanced than either of those games. TW: but if you are thinking of something like Shades of Doom or Mysteries of the Ancients forget it. ... If you want only keyboard access PyGame is fine, but if you want advanced Joystick support like force feedback and things like that again no go. PyGame just doesn't have that kind of support yet. RS: PyGame does have joystick support. It has mouse support as well. And while the sound mixer may be lacking, there are other libraries that can pick up the slack. Libraries like those found at http://hg.qwitter-client.net. It's also worth pointing out that all of these libraries, like the Python language itself, are free to use. Developers don't have to shell out any expense for third party libraries or the development environment itself, for that matter. TW: Finally, there is the issue of using Python as a springboard to other programming languages. ... The problem is that you are going to have to start over from scratch if you use Python and switch to Java, C#, C++, whatever because you didn't learn much as it relates to other programming languages. In fact, it has been my personal opinion for a long time Python teaches programmers bad habits that make it difficult to adapt to other languages later on. RS: You're welcome to your personal opinion, but I want to give a few others for sake of balance: Peter Norvig is an American computer scientist. He is currently the Director of Research (formerly Director of Search Quality) at Google Inc. He writes: Several people have asked what programming language they should learn first. There is no one answer, but consider these points: Use your friends. When asked "what operating system should I use, Windows, Unix, or Mac?", my answer is usually: "use whatever your friends use." The advantage you get from learning from your friends will offset any intrinsic difference between OS, or between programming languages. Also consider your future friends: the community of programmers that you will be a part of if you continue. Does your chosen language have a large growing community or a small dying one? Are there books, web sites, and online forums to get answers from? Do you like the people in those forums? Keep it simple. Programming languages such as C++ and Java are designed for professional development by large teams of experienced programmers who are concerned about the run-time efficiency of their code. As a result, these languages have complicated parts designed for these circumstances. You're concerned with learning to program. You don't need that complication. You want a language that was designed to be easy to learn and remember by a single new programmer. Play. Which way would you rather learn to play the piano: the normal, interactive way, in which you hear each note as soon as you hit a key, or "batch" mode, in which you only hear the notes after you finish a whole song? Clearly, interactive mode makes learning easier for the piano, and also for programming. Insist on a language with an interactive mode and use it. Given these criteria, my recommendations for a first programming language would be Python or Scheme. But your circumstances may vary, and there are other good choices. If your age is a single-digit, you might prefer Alice or Squeak (older learners might also enjoy these). The important thing is that you choose and get started. With that in mind, here are 3 great articles Teach Yourself Programming in Ten Years: http://norvig.com/21-days.html Python as a First Language http://mcsp.wartburg.edu/zelle/python/python-first.html Why Python is a great language for teaching beginners in introductory programming classes http://www.stanford.edu/~pgbovine/python-teaching.htm TW: If you want to be an amateur game developer go with Python. However, ifyou want to be a pro, write really pro level games, then you have got to take the bull by the horns and learn something a bit more advanced than Python. RS: I'm going to come out directly and say that the previous statement is rather insulting. The language does not make the programmer, just as the tools don't make the carpenter. If you want to be a pro and write pro-level games, then learn to be a programmer and stick with what works for you. There are a number of languages out there, each with their own advantages and disadvantages. Saying that one can't be a professional developer unless one learns language X is wrong on so many levels. It's like saying you can't play chess properly if you can't speak Russian. And if anyone still needs more proof that Python can be a viable language, consider that Qwitter-client and the NVDA screen reader have both been developed in that language. Ryan --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org.