I Am the Only Person in the World Who Still Loves Classic ASP
Classic ASP. Microsoft’s lofty first vehicle to try and corner the market web application development tools and technologies. It plateaued in November 2000 with it’s final release version, 3.0, and was superseded by ASP.net in January 2002.
And the world was largely happy to be done with it.
Today, 9 years later, it is by all reasonable accounts a washed up technology. Any mention you hear of it these days in blogs or tweets is most likely from some poor soul lamenting being saddled with doing maintenance work on a legacy system.
Yet here I am, in 2011, and I find myself oddly capable of doing substantial projects in in still, and it DOESN’T feel like pulling teeth. Between that and my profound distaste for the new-fangled ASP.net which technically I should love by now, I stopped to wonder why.
It’s true that VBScript, the language that predominantly powers ASP, is a not a great language. And ASP, with it’s very loose and tumble style of negligible structure and convention, makes possible ridiculously sloppy form. Its simplicity means a low barrier to entry, so there’s a lot of terrible code out there banged out by highly mediocre programmers. So ASP as a relatively immature environment got a bad rap for some good reasons.
But that’s all part of why I love it. Rather than a lot of rules, conventions, strict object oriented paradigms, and so forth that prevent poor programmers from doing terrible things, the wild, wild west nature of little structure makes possible defining your own. And when you know what you’re doing with that kind of freedom you can mold the language into something that suits your style and the way you think. While the prevailing wisdom/complaint about Classic ASP is that it takes 9 lines of code to fetch a value from the database, like so:
Dim oConn, rsUsers Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("DB.mdb") Set rsUsers = Server.CreateObject("ADODB.Recordset") rsUsers.Open "SELECT firstName FROM tblUsers WHERE ID=4", oConn,1,3 Dim firstName : firstName = rsUsers("firstName") Set rsUsers = nothingoConn.Close() Set oConn = nothing
I find programming remarkably tolerable with some well crafted, low level extensions to the language, which makes my work look more like this:
Dim firstName : firstName = GetDatabaseField("tblUsers", "firstName", 4)
So-called “bottom up” programming is nothing new, but I seldom see it done well in the ASP code of others. The intersection between people using such an obscure and primitive language and people able enough to lend real ingenuity to a programming environment appears to be pretty sparse.
But that’s just it.
That’s one of the things that I credit my current overall ability of web programming to: I cut my teeth on classic ASP when it was relevant and did some substantial projects in it, and needing to “roll my own” in a sparse programming environment as opposed to waiting for some .NET package to solve a problem for me has made me intimately familiar with the low level workings of browsers, databases and so on. Its like training at altitude: make something work in unfavorable conditions, and you can really excel everywhere else.
So here’s to you, classic ASP. I am a better programmer for your out-of-the-box crudeness, and accordingly you haven’t been that bad to work with anyway.
Next: Programming at the Speed of Trust
This is Programmer for Hire, a series of essays and explorations on the art of being a great programmer doing on-demand custom software development.