
I'm currently working on a scientific project with a client-server architecture, which includes clients in Java and Python at the moment (server-side is Java). The motivation behind those two languages were, that they're both cross-platform. Python was also chosen, due to the popularity of NumPy and SciPy in the scientific community. A note before I start to rant: I'm still relatively new to Python, but with experience in other OO languages for 10+ years. Yes, the most appealing thing about Python is, that it is really easy to hack something together that works. The development time in Java (especially thinking of the pain in the ... that Swing is) is definitely longer. But, having no compiler that checks for syntactic errors, you just end up with really old bugs further down the road that you just never came across. Code coverage is a real problem here and unit tests can only test a certain amount of your code as well. Also, multi-threading seems to be more mature in Java, where it is an integral part of the language. It may not be a perfect implementation, but at least it seems easier to me (forget about acquiring locks and releasing them, ending in potential dead-locks, etc.). Java on the other hand doesn't come with any scientific libraries bundled. Though COLT (http://dsd.lbl.gov/~hoschek/colt/) or the simple JAMA (http://math.nist.gov/javanumerics/jama/) can help there. Coming from strongly-typed languages (http://en.wikipedia.org/wiki/Strongly-typed_programming_language) like Pascal and Java, I really don't like this uncertainty about parameter types (which disallows the overloading of methods, of course). It makes it really hard, what types are expected. If the documentation is not good, well, have fun trying things! As a closing remark: I quite like certain aspects of Python, but there are also others that I hate. Cheers, Peter -- Peter Reutemann, Dept. of Computer Science, University of Waikato, NZ http://www.cs.waikato.ac.nz/~fracpete/ +64 (7) 838-4466 Ext. 5174