News

Dynamic Language Limbo

Platform leaders like Microsoft and Sun are placing bets on hot dynamic languages.

When most people think of dynamically typed programming languages, the image is more counter-culture than corporate culture. Why, then, are Microsoft Corp., Sun Microsystems Inc. and Google hiring some of the key developers who work on these languages and their various implementations?

"Companies like Microsoft got burnt by Java and got left behind," says Greg DeMichillie, lead analyst at Directions on Microsoft. "They don't want to play catch up again if one of these technologies takes off."

Outside of the enterprise, Perl, Python and other dynamic languages play a key role in Web development. The "P" languages sit at the bottom of the open source LAMP (Linux, Apache Web server, mySQL) stack. Ruby, the pure object-oriented, dynamic language from Japan, is attracting Web developers as a new ecosystem of tools and applications makes it useful for quickly building applications.

"Now Perl is starting to look like a somewhat behind-the-times instance of a dynamic language and things like Ruby and Python are seen as the more modern choices," says Tim Bray, director of Web Technology for Sun and one of the authors of the XML specification. The use of dynamic languages in the enterprise may not be as new as some people think it is; Perl, for example, is widely used in enterprise infrastructure.

Rewriting the Scripts
One thing is certain: Microsoft, Sun and other platform vendors have recognized dynamic languages growing in popularity among developers.

In September, Sun hired Charles O. Nutter and Thomas Enebo, aka "the JRuby guys," to work full time on the Java implementation of the Ruby interpreter. A month later, Microsoft hired John Lam, the creator of RubyCLR, a Ruby bridge to the .NET Framework. Lam is scheduled to join the .NET Developer Platform team in January 2007, according to a blog post by Soma Somasegar, Microsoft corporate vice president of development.

At Sun, Bray championed the hire of Nutter and Enebo, acknowledging in his blog that it happened even as Sun is "slashing some of its engineering groups." The goal is to get JRuby to release 1.0 while ensuring it supports popular Ruby apps and that developers have the right tools to use it effectively.

In August, Microsoft released 1.0 of its IronPython implementation for the .NET Framework's CLR 2.0. The company hired IronPython creator Jim Hugunin to work with the .NET 2.0 development team in July 2004, just one day after he released IronPython to developers as an open source project. Hugunin also created the Java implementation of Python called Jython. He says his team's charter in Redmond "is to make the CLR a better platform for all dynamic languages."

Google, which uses the Python language for offline production, brought Python's creator Guido van Rossum into the fold in December 2005 to work "half time" on Python 3000, the next iteration. "Google has been using Python since the beginning for offline work," explains Ray Valdes, research director for Internet Platforms and Web Services at research firm Gartner. "They do their online production system in C and C++ for efficiency and for maximum performance."

Ruby in the Rough
Smalltalk, Lisp and even Python have been around for years, but "Ruby is the fresh face on the block and it's making people look at dynamic languages," Valdes says. "Leading-edge Web developers outside the enterprise are very excited about Ruby, both the language and the framework. It's a very dynamic language with characteristics similar to Python and to Smalltalk."

But what's really making a difference with Ruby, he says, is the Ruby on Rails framework, which accelerates Web development. People are copying aspects and features of the framework, so there are already half a dozen Rails clones in Java and other languages-Grails, Trails, Sails and some others that do not use the "ails" suffix.

Tim Bray
"Now Pearl is starting to look like a somewhat behind-the-times instance of a dynamic language and things like Ruby and Python are seen as the more modern choices."
Tim Bray, Director of Web Technology, Sun Microsystems Inc.

As an enterprise Java developer, Nutter became attracted to Ruby after spending a short time in the community and tracking applications, like Rails, that people were starting to use. "I saw that there was a lot of potential for this language to enable Java developers-just as it enables Ruby developers-to write better applications more quickly," says the new Sun senior staff engineer.

At Sun, Nutter and Enebo are working toward a JRuby 1.0 release in the next six months. "We're focusing on making it as correct as possible and as equivalent to the standard Ruby implementation as we can, improving performance as much as possible as we go," says Nutter. "A year ago nobody thought Rails would be possible on JRuby, and now it runs quite a few Rails apps pretty well."

Microsoft is not "officially" sponsoring any Ruby projects for .NET, according to Somasegar, who heads the Developer Division. But the company has a close affiliation with Dr. Wayne Kelly of Queensland University of Technology in Australia, whose team released a Gardens Point Ruby.NET compiler beta in June. The project is still in the early stages.

Dr. Kelly also makes reference in his blog to a separate Microsoft-sponsored project that he describes as a "simple managed framework for integrating third-party languages such as Ruby into Visual Studio."

Gartner's Valdes says, "Microsoft, Sun, IBM and BEA see that there are limitations in their platforms to support dynamic languages and they're taking steps."

Platform Play

Grassroots Management

Dynamic languages captured the interest of coders from the start, and it's no wonder. The feeling among folks in the Ruby community, for example, is that large-scale enterprise development has adopted more restrictive specifications and frameworks over time. "And they have started rejecting that in larger and larger numbers," says Sun Microsystems Inc.'s Charles O. Nutter. "They want to have the control that they used to have over development and how they make applications work."

Sun's Tim Bray agrees. "If you look at the history of corporate development, a lot of the important new technologies have been brought in at the grassroots level," he says. "Developers started using them because they liked them." Examples include Unix, Linux and Web technologies.

That creates a real challenge for development managers, who face a choice: Learn about and accept the newcomer frameworks or treat the efforts to adopt them as an insurrection. No surprise-Bray advises managers to accept that their programmers are looking at these new languages.

"Don't try and fight it," he says. "You need to be able to trust your developers and they're already making the decisions to move in this direction."

Bray urges managers to become participants in the communities surrounding these languages. That way, enterprise shops can understand what the hot issues are and identify critical best practices that are emerging within these initiatives.

There's also the opportunity to pick up some extra productivity. "It's good to have languages that get developers motivated," says Microsoft's Jim Hugunin, noting the higher productivity you can get out of developers when they're completely excited about what they're doing and having fun.

But he admits, "There's also value in strategic direction and having everybody unified. IronPython fills one niche, and Microsoft has a lot of things that fill the strategic top-down approach."

-- K.R.
Valdes expects Web platforms from major vendors like Microsoft, IBM and others to start to incorporate some of the Ruby on Rails rapid application-development features. "You'll have the same languages and existing frameworks, but they will freshen them up a bit with these new concepts," he says. Unlike the Rails clones, these are large, complex frameworks that need to be modified, so the work will take a bit longer.

In the next two to three years, the major vendors will also make changes to their development platforms' runtime foundations so that dynamic languages run as smoothly as possible and developers can take advantage of each platform's respective libraries and APIs. "That's going to take a while," says Valdes.

Microsoft's Hugunin, the lead developer of IronPython, says there were already a lot of things under development that were useful for dynamic languages when he joined Microsoft about a year before .NET 2.0 shipped. "These are the features of dynamic methods, the way we did generics and some of the delegate performance stuff that happens in .NET 2.0," he recalls. "I was making sure that they came together well and were effective."

Today IronPython 1.0 is available under a BSD-style license, which lets people do what they want with the source code. "We want people to build lots of dynamic languages for .NET and by making the source code very freely available, it makes it easy for folks to use the ideas that are in Python itself for their own implementations," says Hugunin. There's no official Visual Studio support for IronPython, but an SDK provides a sample of IronPython integration with Visual Studio.

According to Bray, Sun pursued the JRuby guys because the underlying (Ruby) technology is good and it has outstanding documentation, as well as a flagship Web framework in Rails. The J2EE is entrenched all over the world along with a huge expanse of libraries and APIs, he observes. "The Java language is the most flexible and easy to replace."

Nutter likes to compare the uptake of scripting languages on virtual machines and platforms like Java to their use in a typical Unix environment: "You have a core kernel, which might represent a JVM and a large set of libraries generally written in C or some other language like it," he says. "For years, Unix administrators have been accustomed to tying together all those different pieces of functionality with various scripting languages, like Ruby or Python or Perl. They would never claim to be able to build and run such a system without using scripting languages and I believe the same applies to a platform like Java. There's too much capability in the platform and JVM to bind it only to one language."

Slower performance of the interpreted languages and security issues are subject to debate. "I absolutely don't buy into security," says Bray. "I don't think there's any material difference at all between Java, Python and Ruby."

Observes Nutter: "In recent months, it's been proven again and again that there's no reason that these languages should be any slower than their statically typed equivalents, so that's not going to be an issue long term. It may be for certain implementations right now."

Tooling is another matter. "The developer toolkits, things like Visual Eclipse and Visual Studio, are highly tuned for Java and C#, respectively," says Bray. "And so, the support for non-metal languages isn't quite as good, but a lot of people are working on that, so I'm assuming it'll catch up."

About the Author

Kathleen Richards is the editor of RedDevNews.com and executive editor of Visual Studio Magazine.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube