Welcome to the world of dynamic programming, where everything from the languages to the players to the partnerships are anything but static. Dynamic languages are flexible languages that enable developers to write code quickly and easily.
"I initially set out to tell Microsoft how terrible .Net was for dynamic languages," said Hugunin, creator of the IronPython language and a development leader on Microsofts CLR (Common Language Runtime), in Redmond, Wash.
Hugunin said he began work on IronPython—an implementation of the Python language on .Net as an open-source project—only to find out the best way to complete the effort was to join Microsoft.
IBM is building out an EGL (Enterprise Generation Language) that generates COBOL and Java code.
Ruby on Rails leverages the Ruby language to create applications at prototype speed.
The goal of these acronym-laden languages: Simplify the software development process. The winner takes the loyalty of the next generation of developers.
On Sept. 9 at EclipseWorld in Boston, developers can expect to get an update on the Eclipse PHP IDE (integrated development environment) project, in which The Eclipse Foundation is working toward providing a PHP IDE framework for the Eclipse platform.
Like other tool platform providers, The Eclipse Foundation is rushing to support dynamic languages.
The appeal of dynamic languages is clear: As systems continue to grow more complex, developers seek simpler ways to get their work done.
One strong indication that developers are looking for simplicity is the emerging popularity of lightweight programming models such as LAMP (Linux, Apache, MySQL and PHP/Python/Perl) and Ruby on Rails, both of which are based on dynamic languages.
"LAMP is [something] of a backlash against the growing complexity in Java," said Wayne Duquaine, director of software development at Grandview Systems, in Sebastopol, Calif.
"J2EE [Java 2 Platform, Enterprise Edition] is starting to become a highly complex environment."
The languages are called dynamic because programs written in them can change their structure as they run. Moreover, dynamic languages are characterized by dynamic typing.
Typing is the process of classifying program variables by the kind of data they hold, such as a string, integer, floating point and so on.
Many of the popular static languages, such as Java, C/C++ and C#, tend to be strongly typed. Strong typing provides strict adherence to rules useful for detecting errors, proponents say.
Dynamic languages perform type checking at run-time, while static languages perform type checking at compile time.
The difference between the two is the time it takes to discover errors. If the language type checks at compile time, there wont be an error at run-time caused by a data type mismatch. If the language waits until run-time to type check, the developer may have to handle an unexpected error then.
However, although static languages reliance on strong typing enables compilers and interpreters to catch more errors early—before they become problems—proponents of dynamic languages say that less-rigorous typing results in smaller, simpler code.
And simpler code tends to attract developers. "I think that dynamic languages are really the next big thing," said John Lam, a principal consultant and partner at Toronto-based ObjectSharp Consulting.