CIO.com – The former second-class citizens of the programming world have leaped to the fore, changing the face of enterprise software development. With the rise of Web 2.0, scripting languages (also called dynamic languages) are now often considered important tools in a developer's arsenal. That's a far cry from than their old reputation as lesser tools for those who can't handle "real" programming.
However, like any other tool, dynamic languages are not necessarily interchangeable. Each has its place in a programmer's toolkit. We asked a group of luminaries in the scripting world for their perspectives on the current state of the scripting universe, and how it has changed since we last looked at the scripting language scene in 2005.
- Richard Dice is the president of the Perl Foundation, the organization which has responsibility for Perl's legal, organizational, technical and administrative infrastructure.
- Jeff Hobbs is director of languages and Tcl tech lead at ActiveState Software and a member of the Tcl core team.
- Steve Holden is chairman of the Python Software Foundation, and author of Python Web Programming.
- John Lam leads the IronRuby team at Microsoft.
- Rohan Pall, representing PHP, is a consultant who has been programming Web applications for almost a decade.
CIO.com: What place do scripting languages have in today's computing environment?
There's also been a lot of interest in Ruby, another dynamic language, spurred by the release and growth of Ruby on Rails. As a result of these changes, many developers are becoming more comfortable with dynamic languages.
Dice: Since 2005, there haven't been any singular events that changed the way scripting languages are used or their capabilities. They have evolved (more in perception than in real capability) from a place where they were used only for simple tasks or prototyping of new systems into much more general use. The general upward slope in their acceptance and capabilities in that time, though, means that CIOs definitely need to put them on their radar and develop "scripting language awareness." In late 2007, Forrester Research published its Forrester Dynamic Language Wave survey, so research on the topic is out there to work with.
Hobbs: Scripting languages are increasingly prevalent in Web applications, with PHP's growing popularity and the rise of Ruby on Rails, while maintaining their dominance in important daily tasks such as machine and test automation with Tcl and data manipulation with Perl. Python is finding increasing use in the scientific communities.
Holden: Scripting languages are being used in a wide range of application areas. Python has recently achieved increased visibility in many areas of science and engineering, particularly in bioinformatics. Three significant Web frameworks ( Django, TurboGears and Pylons) have reached maturity in the last three years.
Scripting languages have a place anywhere that a systems programming language (e.g., implementing an operating system) is not required. Otherwise they fit basically anywhere, whether it be on the server or the desktop. Python excels in all these areas!
Lam: In general, it's easier to create and change code written in a dynamic language. Much of the Web has traditionally been created using dynamic languages, from Ajax on the client to server code written in PHP, Perl, Python and Ruby. Ruby on Rails in particular has driven a lot of interest towards Ruby, and is one of the preferred platforms to build Web 2.0 startups on.
Pall: In the last three years, we've seen the adoption of very fast CPUs, namely the Intel Core 2 line. Breaking the 3GHz barrier on this architecture-and now pushing 4GHz-has sped up dynamic language code to the point where many algorithms that simply weren't feasible to implement in PHP are now possible on commodity hardware.
In the last year, I've participated in writing text analysis software for auto-classifying documents. Our initial plan was to use C to do the heavy processing and PHP for the rest. As it turned out, on midrange commodity hardware, we were able to use PHP throughout and maintain solid performance. Web applications are commonly scripted, but in my experience, even internal processing-intensive applications are now commonly being implemented in modern, dynamic, scripting programming languages. The bulwarks have been breached and progress is now ushered in.
CIO.com: What changes are you seeing in attitudes towards scripting (dynamic) languages?
Dice: I'm noticing changing attitudes from several angles. As I mentioned before, Forrester Research released a Wave survey paper last year regarding dynamic languages. This was motivated by their noticing that their customers were using more dynamic languages and requesting information on the competitive landscape in the field of dynamic languages.
Tools companies, including Eclipse and ActiveState, are offering more and better products for working with dynamic languages.
A segment of Java programmers seem to be embracing Ruby (and Rails) in particular. A new dynamic language, Groovy, is capitalizing on this trend by providing a dynamic language on the Java Virtual Machine (JVM) that incorporates elements of both Java and Ruby.
Support for independent software vendors (ISVs) with dynamic languages is also improving. The Linux Foundation's recently-released LSB 3.2 spec includes Perl and Python as first-class supported languages within the spec, so ISVs who target this spec for their software can depend on Perl and Python being present in regularized configurations.
Hobbs: The dynamic languages are becoming more accepted. This is in part through more acceptance of open-source software, which all the dominant dynamic languages are (versus Java and .Net, which are questionably open in their process and/or sources). It is also due to good frameworks being developed using newer languages such as Ruby on Rails. You also see larger organizations fostering support for the languages, such as Google's support of Python, which was made their primary development language for Google App Engine.
Holden: People seem more positive towards scripting languages. They have, over time, come to realize that their performance is such that they work for most problems and have also learned that the compilation step can be heavy-handed and a huge time sink in the development cycle.
There is now a more general appreciation of the advantages of dynamic languages, whose characteristics are well-suited to Agile test-driven development techniques that have also become more popular in the same time frame.
The last three years have seen increased uptake in dynamic languages in many application areas. For Python in particular, the IronPython (now a Microsoft open-source project) and Jython (whose primary developer was recently hired by Sun Microsystems) implementations have had a positive impact.
Lam: Compilation is orthogonal to static/dynamic. IronRuby is a compiled language (and an interpreted one too- we offer both options), yet it is clearly a dynamic language. So it's better to say that there are changes in attitude between static versus dynamic languages.
There is a "polyglot programmer" meme going around which roughly says that future systems will be built on a statically typed library foundation (e.g. BCL in .Net) with a dynamically typed language used in a dual role to both script those static types as well as define a domain-specific language (DSL) which will be used to implement the high level app logic.
Pall: For a large number of applications, when deciding what technology to use, it is no longer the case that the debate centers around dynamic languages versus compiled languages. Scripting is now considered real programming, and indeed most people don't even use the word "scripting" when describing what they do, but instead call it "programming." These days, it boils down to which dynamic programming language to use, not if you should use one.
Boyd: Other than a greater comfort with dynamic languages, I don't know of specific impacts of Ajax on other languages. The techniques of Ajax are really only applicable inside the browser.
The first scripting language to benefit from Ajax in a big way was Ruby, though this was much more an accident than anything else. A Ruby Web rapid application development framework called Ruby on Rails started gaining attention in 2005. It had three things in its favor: it was based on the Ruby language (which a lot of people find quite nice to program with), developers found it to be a significant boost to productivity, and it was the first framework to integrate with any Ajax library. So it quickly became identified with Ajax and vice versa. Nowadays, every major scripting language has decent integration with every major Ajax library.
In the Python world, the TurboGears framework in particular accommodates support for several well-known Ajax toolkits, but the emergence of Ajax is essentially orthogonal to the language used for Web development, and is as likely to be used in the ASP.Net environment as by Python users.