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
|