   Python or Ruby?
  I'm considering using Python or Ruby in development of a 2D MMO. Does anyone have experience with either or both? Which would you recommend?   
  I have no experience with Ruby, but I can say that it's easy to get something simple up and running rather quickly with python. The drawback to using a scripting language such as python is that as your application becomes more complex, it becomes very difficult to manage. Without static compilation I find that managing change is very tedious. Tracking down bugs and exceptions due to simple things like typos, name changes, and unbound variables is done at run time. With a compiled language like C++, Java or C# these problems are caught at build time and are easy to fix. Sure, with unit testing and pylint you can find most of these bugs, but it's not as simple as just clicking 'build.'   ;  Personally, I hate Ruby.  I had to use it for work and there is a ton of syntactic sugar, some of which is optional (which leads to inconsistent messy code), that just makes reading and writing Ruby more difficult.  I'd say go with Python.   ;  Personally, I love Ruby.But my recommendation?  Whichever one suits your needs best.  Cliche answer, but it is true.  Find the language with the libraries that make your task easier.  See which language has the better libraries for graphics rendering, database connectivity, and networking.  Set your goals, define your needs, and find the suitable tool.   ;  I think Python currently takes the win for game programming between the two. The existence of PyGame, Pyglet and Panda mean that no matter what your approach, you can get a good shot at your goal using Python.   ;Quote:Original post by OluseyiI think Python currently takes the win for game programming between the two. The existence of PyGame, Pyglet and Panda mean that no matter what your approach, you can get a good shot at your goal using Python.Oluseyi -- do you find that managing changes in python becomes difficult when the codebase grows beyond a few thousand lines and a few modules? Do you use some tool or anything? I recently ported a project I'm working on to Java because it was becoming too time consuming finding naming and binding mistakes at run time that could be found at compile time. I tried pylint but it wasn't doing the job.Fortunately my python code was a good prototype so porting only took about eight hours. I think I'll make those hours up with Eclipse's refactoring capabilities.   ;Quote:Original post by smrOluseyi -- do you find that managing changes in python becomes difficult when the codebase grows beyond a few thousand lines and a few modules?No, I don't. Or, more correctly, I find it no more difficult than managing a large JavaScript code base. Do you have good tools? What IDE do you use for Python?Python is susceptible to certain classes of errors that statically checked languages are not, but it also affords certain opportunities that statically typed languages don't. If static checking were added to Python, it would become a truly compelling, world class option - and less esoteric than, say, Haskell.   ;Quote:Original post by OluseyiI think Python currently takes the win for game programming between the two. The existence of PyGame, Pyglet and Panda mean that no matter what your approach, you can get a good shot at your goal using Python.Ruby isn't lacking, though.  Rubygame, Gosu, Ogre.rb.(Though it should be noted that most of these Ruby tools are just copies of pre-existing Python libraries, like pygame and python-ogre, which may be a bit more mature than their ruby counter-parts)   ;Quote:Original post by OluseyiQuote:Original post by smrOluseyi -- do you find that managing changes in python becomes difficult when the codebase grows beyond a few thousand lines and a few modules?No, I don't. Or, more correctly, I find it no more difficult than managing a large &#106avascript code base. Do you have good tools? What IDE do you use for Python?Agreed -- but I find managing large bases of any type of code difficult without static checking.I typically use Eclipse along with the pydev plugin. Pydev generally works really well excepting its pylint integration. I normally have to resort to running lint at the command line. It's a pain in the ass but it works, sorta. I've not tried Komodo. Quote:Python is susceptible to certain classes of errors that statically checked languages are not, but it also affords certain opportunities that statically typed languages don't. If static checking were added to Python, it would become a truly compelling, world class option - and less esoteric than, say, Haskell.Agreed. Saying nothing about the other benefits of python, the lack of static checking is really my only issue. There are advantages to that model, but for me they generally don't apply to large projects.[Edited by - smr on June 16, 2009 9:20:52 AM]