JavaScript, Perl, PHP, Python and Ruby all have a lot of momentum right now. No doubt, they each have strong following, and dynamic languages as a whole are stronger than ever. How far can these languages go? eWeek has a good article discussing this question here. Most experts think there are serious limits to how far they can go in overtaking languages like C#, Java or C++ for large scale development.
Anders Hejlsberg says they lack scale. "Dynamic typing only scales so far," he said. "When you get into really big projects, it's problematic."
Historically, he's right. The eWeek article goes on to quote John Lam, a principal consultant and partner at Toronto-based ObjectSharp Consulting.
Lam said it's too early to know how dynamic languages will scale. "We just don't have enough experience in building large systems on these things," he said.
When I originally wrote this post, I was not aware that John Lam is the creator of RubyCLR. This update corrects my oversight. Check out John's blog for more about dynamic languages on the CLR.
If you haven't read eWeek's article, I'll steal their thunder by sharing what I feel are the most important points. First, it is important to recognize the very serious momentum dynamic languages have. This momentum is only going to become stronger. However, let's not forget the basic computer science issues that dynamic languages face. These issues are summarized well by these quotes from eWeek's article.
Cedric Beust, an engineer at Google, in Mountain View, Calif., said, "Dynamic languages suffer from some inherent limitations that make them inadequate for 'large software.' So I definitely see them as gaining momentum, but they will never displace 'enterprise' languages such as Java, C# or C++. Some of their features are slowly percolating into enterprise languages, though, which is a good thing."
Sridhar Iyengar, an IBM distinguished engineer, in Durham, N.C., offered more questions regarding large-scale deployment of applications built with dynamic languages.
"One of the challenges of dynamic languages is how do you test it, how do you debug it and how do you make sure that your application is secure," Iyengar said. "All of this is tough to do with static languages. It's incredibly harder in dynamic languages."
However, as BenForta pointed out in his comment on the eWeek article, dynamic languages running on the JVM or the CLR enjoy the best of both worlds to some extent. But do they (or will they) enjoy all the advantages of the CLR? No, because not even C# and VB provide all the power of the CLR. C++ make some strong claims to be the most powerful .NET language. However, probably only IL provides all the power of the CLR. All languages are not equal on the CLR. I look forward to finding out more about how dynamic languages running on the CLR scale. It seems to me that dynamic languages on the CLR (or JVM) may be more scalable than dynamic languages not on these platforms, but we still may need to see more innovations before the limit is raised enough to make dynamic languages suitable for the largest projects.