Wednesday, October 3, 2007

Recalcitrant Polyglots

"Web developers". Sheesh. I've done my share of "web development" as a programmer (haven't we all?) No one would argue developing programs to be accessed with your web browser is very rewarding... if, for no other reason than the possibility that people might surf over to your site and accidentally use your software. Accidentally seems to be the way most software features get used these days.

Did you ever wonder what goes into making a "web application"? In most cases, there's a web browser on one end, and a relational database on the other. What comes between? Ay, there's the rub!

Usually, it's a framework. Java J2EE, PHP (LAMP), Ruby on Rails... and a whole lost more. Most of these make some attempt to implement a model-view-controller (MVC) architecture, where the concerns of visualizing data, storing data, and processing data are separated. Some also attempt to be object-oriented, often mapping relational-database concepts to programmatic "objects". As a programmer, you usually have one of two options at this point... specialize in one aspect of the MVC and/or object-oriented/relational programming paradigms, or embrace the fact that you suck at most of them, and work on a complete web site.

As a running theme in this blog, you can probably guess I've chosen to remain blissfully ignorant of the finer points of most web development in favor of generality. As such, I have to know something about several programming languages, including (but not limited to) HTML, JavaScript, Java and SQL. When I work on my UtahFeat.org website on Rails, substitute Ruby for Java. Often, these languages appear in sections in the same source code file. It gets pretty confusing, and the Ajax/Web 2.0 movement in web development frankly doesn't help.

As with many things in life, the strength of the internet is also it's weakness. Many standards, many (ahem...) disparate technologies and techniques and the bending of all these to many different purposes have produced a development platform only a recalcitrant polyglot could love.

No comments: