Thursday, April 18, 2013

a note on the unobtainable

There is a somewhat poetic account of Plato’s theory of knowledge in which universals (which today are generally associated with abstractions like numbers and relations and sets) exist in a separate universe of their own, distinct from the material universe. I've always liked that vision. I like to think of mathematicians and others who study abstractions as explorers in this Platonic universe. We are like early explorers of the Amazon basin, confronted with an immense system of ever branching routes, any one of which might lead to something remarkable.

We explorers of the Platonic Universe are motivated, I believe, by the same impulses that prompt a real explorer to navigate a river or follow a trail through a jungle --it is the lure of the unknown, the hope that something marvelous lies waiting there to be discovered, the challenge of overcoming the many difficulties that bar progress. The only real difference is that we explorers of the Platonic universe do not have to worry about curare-tipped darts and we get to take hot showers in the morning.

The Stuff

I write about a lot of computer topics such as
Mathematical curiosities 
User Interfaces 
Databases
but my primary motivation to start this site was to write about programming language features and my search for the ultimate programming language. For example:

And now I've initiated a software project to give scope to some of my ideas:
Classp--a classier way to parse

Ah, Youth

My love for formalism started with 7th-grade algebra. As the teacher showed a examples of solving simple algebraic equations I had an "AH HA!" moment. It was the first time that I had a glimmer of the power of formalism. When you write an algebraic equation describing abstractions like numbers, applied to a real-world situation and then solve it, it gives you a real-world answer.

This is a remarkable thing, is it not? That we can take such an abstract thing as a number or a set --a thing that exists outside of time and space, beyond nature, only accessible by the human mind, and represent this magical thing with complex stains on a surface, then follow a sort of game of re-drawing those stains according to a set of rules, and at the end we know something that we didn't know before.

Isn't that an awesome thing? Isn't it something that would be completely unexpected and almost magical to a person who had not grown up with formalism and had it introduced to him later in life? Formalism is, in fact, one of the greatest tools of mankind, right up there with things like the wheel and fire and money. It is one of the fundamental discoveries that made civilization possible.

Programming languages are a kind of formalism that is intended to provide an interface between human beings and computing machines. My love for programming languages began with CSc 227. I think the title of the course was something like Principles of Programming and it was taught in Pascal. I took the course, not because I wanted to learn any principles but because I wanted to learn Pascal which was supposedly the next big language.

Before that class I had programmed in FORTRAN and BASIC. I enjoyed the power of being able to control the computer, but neither language was particularly interesting. However Pascal was an eye-opener. I learned for the first time that a programming language could be elegant and that programs could be beautiful. Of course Pascal, lovely as it was, was imperfect.

The Great Disillusionment

In later semesters I was introduced to many other languages, all of which had interesting features but none of which were perfect. There was C with it's primitive control of machine instructions, Lisp with it's simple unified model of data and programs, APL with it's powerful set of array-processing primitives, SNOBOL with it's intricate string processing capabilities, COBOL with its support for persistent data stores, Algol --a more powerful Pascal-like language.

I spent years in graduate school studying many more programming languages: Icon, FP, Ada, SL5, Smalltalk, C++, Scheme, Prolog, and many others. They all had their own strengths and weaknesses. For a long time I had this idea in my head that you could take the best features of all of the languages and combined them into a single perfect language. Now I am older and wiser and I know that mortal men are not destined to create anything perfect. Still, the idea compels me.

And so, like the explorers of the fifteenth century searching for the ocean passage through the Americas, I continue my futile explorations. And I remind myself and my readers that the search is ultimately going to be futile by calling the language Unobtainabol --the unobtainable programming language. But that won’t stop me from looking.


Because, even if you know that there is nothing interesting in that old abandoned barn, you are itching to have a look around inside, aren’t you?

No comments:

Post a Comment