The Tower of Babel
I’ve been working a bit more on my weblog over the past few days, trying to clean up and remodularize the templates that I’ve been working on. As a result, I’ve got a stack of books on my desk regarding the various bits of web technology that I use. And it started me thinking. And as so often happens when I think, I feel the need to rant.
Why in the world do we have to know so much to make an attractive, interesting web page?
It’s really quite simple. None of the existing web technologies really get at the heart of what you (or at least I) want to do on the web.
First, let’s look at the list of technologies that someone needs to understand to be a saavy web designer:
HTML
: HTML had a noble idea behind it: to be a simple markup language to allow the display of information in a reasonable way. Unfortunately, unlike other successful markup languages like TeX or troff, HTML was not programmable, hence ultimately there were severe limitaitons on what HTMLcould do.
CSS</p>
: CSS was designed with the idea that the presentation of data should be separated from
its presentation. Unfortunately, CSS is also not programmable, so many of the transformations that you would like to make are similarly impossible to create using CSS.</p>
JavaScript</p>
: JavaScript is an attempt to make the objects which appear on webpages subject to program
control via a simple scripting language. It isn’t actually all that bad, but it isn’t well suited to writing
large applications.</p>
Java</p>
: Java is a real programming language, and actually, not a bad one, but it isn’t really targeted
toward the needs of creating content. Various libraries help a great deal, but that puts an even
greater mental load on programmers.</p>
Perl</p>
: Perl suffers from the same ills as Java, with the additional one that it is an exceptionally ugly
programming language.</p>
XML</p>
: XML finally implements an extensible parser at least for structured text. The problem is that
it implements very little else, so it is of marginal utility for solving the truly difficult problems of
application development.</p>
XSLT</p>
: XSLT finally adds some measure of programmability to the transformations that normally
would have been done with CSS. But it is a far cry from a pleasant language to use, and is in no
sense a general programming language.</p>
MySQL</p>
: You really need a database to do anything at all, don’t you? </dl>
The combination of all of these things actually allows some fairly pleasant applications to be written, but it isn’t a very pleasant experience for the programmer. Why does it take so _much work_ and so _many different tools_ to make reasonable applications like this one?