Why call it Bound Variable?


The title of this site has several intertwined meanings, or perhaps contexts, regarding how I see the future content evolving. The first of these begins with Quine’s 1948 paper “On what there is” where he describes our ontological commitment to be the range over which our bound variables extend in order for our assertions to be true. If my explanation is insufficient the paper itself is clearer and worth a read for those so inclined.

At the time of reading Quine’s paper I was simultaneously studying programming and philosophy. My programming education, however, was concerned with languages that more closely matched the way computers worked (assembly, C) or the way computer programs are modeled and architected (Java, C++). As I look back upon it now I find it an unfortunate occurrence that the programming education I got (either forced by curriculum or by my own fault) was deeply lacking in functional programming.

I saw this is an unfortunate occurrence because, despite (eventually) grasping the reasoning behind the classical OO paradigm, I don’t think the why of that programming paradigm ever really managed to sink in… usually I found that despite all the architecture that programming felt rather dead and sterile.

If only I’d known then that there were other ways of doing and thinking about programming.

My eventual exposure to functional programming came through an unlikely and circuitous route. As a web developer I needed to learn JavaScript and like many people I found the language deceptively familiar and simultaneously annoying due to what seemed like a backwards or incomplete object system. Eventually though, learning the language properly brought me to a realisation that I think has been common among possibly an entire generation of programmers. That realisation was that JavaScript and I, in some ways, shared a common heritage in that we both had curly braces and classical OO imposed upon us as being the only way. For me, the one-sided view was so strongly embedded that I can remember reeling in horror when I first had to work with the no-braces Python and then disdain when working with TCL.

So it was through learning JavaScript and hence functional programming that I finally had that cliché light-bulb moment where my solely classical OO view of the programming universe dissolved and the whole universe of code finally came to life. To me, functional programming has more to do with how I think (as opposed to how memory registers work or system modeling diagrams work) so it makes sense as a programming paradigm.

In a way, I’ve actually come full circle back to a way of thinking that had always made more sense mathematically and philosophically. To look at the elegance (or inelegance) of Quine implementations in various languages brings a smile to my face.

So, I picked Bound Variable as the title of this site, partly as homage to Quine and partly as a reference to the lambda calculus that I actually had been aware of from several logic courses but had never been exposed to for programming until I got there via JavaScript.

As an extension, the prototypal nature of JavaScript’s object system also makes a great deal of sense and I find myself increasingly uncomfortable with the ontological implications of a class-based object system. I like the protypal nature that JavaScript borrowed from Self as it seems closer to the way things actually are. We retrospectively impose class systems onto the universe as part of our language. It always seemed to me that by starting with a system of classes that I ended up with a universe full of platypuses and unicorns - which doesn’t sit well with me and, I suspect, would not have sat well with Quine.



CoffeeScript in Action


CoffeeScript in Action book cover

I'm the author. Get it from Manning.