I know Chris isn’t implying dynamic languages are only for hobbyists, but any discussion of languages quickly starts to sort them for their attractiveness to developers on a scale from “hobbyist” to “professional developer”. Why?
This is a deep subject, fraught with ideology and emotion. It is also an old subject. To pick an arbitrary point in history, it goes back to LISP versus Fortran…with LISP offering a high level of abstraction and interactive development style, with obvious performance implications; and Fortran being very close to the underlying computer architecture, much more static in development style and promising (and often delivering) speed equal to hand-tuned machine code. In fact, many of the ongoing debates over languages still revolve around basic design decisions found in LISP and Fortran: compilation, static typing and garbage collection being obvious examples.
With all the intervening languages, development tools, and paradigm shifts, I think a lot of the debate still comes down to these two points:
Quickness of development versus Scale
Interactivity of development experience versus Performance of deployed code
At this point, the two sides start to set up their camps and fortify them (on a similar topic, see Stephenson’s essay “In the Beginning was the Command line” about the debate between the “professional-oriented” command line versus the GUI). Which is unfortunate, because in the end I believe this will be a false dichotomy. This is not about “Languages for Smart People” versus “Languages for the Masses” (which by the way, reverses the hobbyist stereotype, claiming C++ is for the masses, while LISP is the smart people language), and its not even about choosing the right tool for the right job. It seems to me the proper solution is to keep advancing the art, and get the best of both worlds.
It almost makes me want to go work in the language business.