Many people say developing in Python, Ruby, PHP …etc is much faster than Java.
Question is, why? In terms of coding, IDEs, available libraries… etc. Or is the speed in making the first prototype only?
I’m interested in answers from people who worked long time on Java and long time on other languages.
Note: I have developed for .Net before Java and yes it was faster to make some apps, but on the long run (large web projects) it will become like Java.
I think the main advantage of the rapid development languages is dynamic typing, where you do not have to put in any effort for static types, as e.g. in Java’s
… and later on think about type erasure.
With dynamically typed languages, you do not have that concern, but can quickly duck-type away. That’s faster and often results in more readable code (less type information/noise, see example above). You do need thorough tests, though, but with TDD & documentations via tests, they are nowadays usually written anyways.
And now to some historical examples about statically vs. dynamically typed languages 😉
When the discontent with C++ grew, the dynamically typed language Smalltalk was getting more popular. But then Java came along. Although Smalltalk had good testing techniques already (xUnit was born in the Smalltalk field), thorough testing got popular only later. I think that is the reason for the rise of dynamic languages now. You do need very thorough tests there because e.g. a simple typo in a message call is only detected at runtime.
But maybe now that type inference gets better, we’ll have a similar situation again and Scala will thwart the second rise of dynamic languages 😉
Update: I found this thorough programmers.stackexchange post about static vs. dynamic typing. It lists a lot of papers to read, and also considers productivity.