<img src="../../Media/ideas.gif" width=440 height=45 usemap="#ideas" border=0>
 

Curl

Review of a new programming language developed at MIT that hopes to simplify the process of creating complex web pages.

 
Curl
02.08.01

What is it?
Curl is a language for creating web documents. It provides a seamless environment for presenting layout, handling interaction, performing computation and visualizing graphics.

Why is it interesting?
Curl addresses a serious issue within programming circles - how to provide a person with a single environment in which they can smoothly transition from being an author to a scripter to a programmer. Computational richness and control grow as one moves along this trajectory; unfortunately, so does complexity. In the web environment, these stages are identified with different languages - HTML is for authors, Javascript and CGI are for scripters, and Java is for programmers. Plus, they all feel and act differently from an implementation standpoint, and very little of what you learn concretely in one environment helps you in the others. It's as if we had to know French in order to do the shopping, Russian in order to read the recipe, and Chinese in order to operate the oven.

Curl approaches the issue by combining text formatting, scripting, and computational functionality into a single language existing in a single environment. Without getting too deeply into programming arcana, it seems to do this fairly elegantly in that it is forgiving of novice users while allowing them to add increasing rigor and power to their code as they learn more. It does all the things that a "modern" language should do - it's object oriented (for ease of reuse of code), highly encapsulated (for safety) and incrementaly compiled (for portability).

Why is it not as interesting as I had hoped?
Several things bother me.

The creators claim that performance doesn't suffer from things like incremental compilation, indirect memory management, and automatic garbage collection. At the beginning, Java's creators made the same claims. But Java turned out to be a pig, performance-wise, and will continue to be until processor speeds make the point moot. Curl may face the same issues, and adoption will depend in part on how accurate its creators' claims are and how fast processors speed up.

Curl is Lisp-like. Now, once you get a handle on Lisp, you love it. But it can take a long time for this to happen because of the alien prefix notation. I'm not so sure that this is the proper approach to take for a language expected to appeal to non-programmers.

Flash has shown that, given the opportunity to create a powerful user experience, authors will buckle down and learn a medium level language akin to Javascript (Flash ActionScript ver. 5.0+ is based on Javascript.) This is good news for Curl, in that it says that non-programmers are willing to invest in learning a moderately complex language. But it's also bad news for Curl, in that the experiences created by it (at least in the current version) are nowhere near as compelling as something that can be done in Flash.

Which brings us to another point, which is that Curl doesn't contain native support for vector graphics. Flash is in the process of proving that authors want to escape the clunkiness of raster based graphics for the elegance of vector based graphics.

Curl as a basis for a business
I find it difficult to believe that people will make money on Curl as Curl. Remember the fate of all the Java-centric companies which sprung up in the wake of its release? They slowly realized that they had to sell functionality, not a programming language. Curl won't be any different.

Curl.com's licensing scheme - charging clients for usage per GB of Curl-based content - is wacky. No, it's not just wacky, it's crazy. Customers don't care that their content is Curl-based, HTML-based or Flash-based. As long as some combination of HTML/Javascript/Flash/Java... can provide the content to them for free, well, they'll take that option over paying. What's worse, the licensing scheme will retard uptake. Java had a hard enough time gaining acceptance, and it was free to the user.

Bottom line
A Curl-like language could transform the web in the way that Flash has, creating a friendlier creative space (in both the design and engineering senses) . Having to juggle all the different existing languages and programming environments is time-consuming, complex and slows down innovation in the user experience. But I doubt that Curl, with it's Lisp-like syntax and (possibly) performance-sensitive structure is the answer. Until it's proven itself on the performance front and attained wide-spread adoption, it's just another programming language.

Links
Curl website - http://www.cag.lcs.mit.edu/curl/
Curl paper - http://www.cag.lcs.mit.edu/curl/wwwpaper.html
Curl.com - http://www.curl.com