Java – Python productivity VS Java Productivity

javaproductivityprogramming-languagespython

Over on SO I came across a question regarding which platform, Java or Python is best for developing on Google AppEngine. Many people were boasting of the increased productivity gained from using Python over Java. One thing I would say about the Python vs Java productivity argument, is Java has excellent IDE's to speed up development whereas Python is really lacking in this area because of its dynamic nature.

So even though I prefer to use Python as a language, I don't believe it gives quite the productivity boost compared to Java especially when using a new framework. Obviously if it were Java vs Python and the only editor you could use was VIM then Python would give you a huge productivity boost but when IDE's are brought into the equation its not as clear cut.

I think Java's merits are often solely evaluated on a language level and often on out dated assumptions but Java has many benefits external to the language itself, e.g the JVM (often criticized but offers huge potential), excellent IDE's and tools, huge numbers of third party libraries, platforms etc..

Question: Does Python, or related dynamic languages, really give the huge productivity boosts often talked about (with consideration given to using new frameworks and working with medium to large applications)?

Best Answer

One of Python's major advantages is its "batteries included" philosophy: an extensive and simple to use standard library. In Java, just reading a text file requires several lines of code, nested readers and such. In Python it's f.read(). This will definitely be a huge productivity boost especially in quick prototyping. Python the language is also generally less verbose, which is not a bad thing (although I think the importance of verbosity vs. conciseness is often overemphasized).

However, if you're already working on some framework, such as GAE, then I would expect the differences to be much smaller, and mainly up to one's personal fluency in the language. You'll be mostly just wiring the framework together with the syntax of your choice, and there Python's great standard library helps little.