Lispian Random meanderings on whatever catches my fancy


For the most part computers just aren’t that much fun anymore. I’ve come to this stark conclusion of late and realize that part of my general malaise regarding the industry is that my passion for and love affair with computers is over, or at least in the latter waning stages. When I first got into computers in 1978 I thought they were simply the neatest things I’d ever seen. The whole industry was still new back then, and personal computers were something few talked about and many dared not dream of. But that was more than 30 years ago!

I remember my first encounter with a computer via a batch card system while in high school. Mr. Lane, our computer and Functions and Relations teacher, introduced a large number of Grade 13 students — and a few Grade 12s — to computers. He had a passion for them and loved teaching the course. I think most people who took the course were taking it either out of sheer curiosity or from the need for one more math/science credit to complete their high school diploma. Regardless, I found the notion of algorithms and applying what I had learned in Algebra, Calculus, F&R, and Physics seductive. And, I seemed to have a knack for it. My programs usually ran the first time, something unusual I was to discover. It allowed me to try different programs, to see what would happen, and to read further into the Fortran manuals as Fortran was the language we were coding in. I went on to get a degree in Computer Science.

But those were heady times. Computers and their systems and software were understandable by a single individual. You just had the CLI and it felt exhilarating to be able to code up new solutions to emerging problems. One person teams weren’t unusual. One person could write some pretty cool stuff, and did in those early day. And then there were the super cool systems, like Symbolics Lisp Machines. That was one of the best environments I ever used for programming. In fact, I’d argue it was the best environment. The only other environments that held a candle to it were the ones based on Smalltalk. Coding on a Symbolics was being one with the machine. It was an incredible environment to do work in.

But everything changed. Slowly at first but then every more quickly. It soon became impossible for a single person to understand everything. Programs started to have millions of lines of code. Teams weren’t a few guys anymore but huge, hundred-plus person behemoths. It became less fun. And don’t get me started on “project management” which seems to be based on the notion of wild ass guessing how a piece of software will be written, guessing on technological changes, etc. all for 1+ years out. Absurdity. And then folks wonder why so many software projects fail when they’re drive by the inanity of “project management”. As if we were building something as simple as a house — and even then, house builders are notoriously late even though they’ve been building these things pretty much the same way for decades. Argh.

Anyway, as the industry changed I found myself quickly becoming an architect and software designer and, as many people later claimed, a visionary. I was more interested in the big picture of what you could do with computers and I coded less and less. Not because I wanted to code less but because the bandwidth had gotten so low that I required a hundred coders to make real my vision rather than trying to do it alone as was possible in days gone by. And each time I tried to do what I considered a small task it blew out of all proportions. Programs that I knew intuitively shouldn’t have been very large ballooned into tens of thousands of lines, more if it had a GUI. At first I thought it my fault. But others pointed out that the bloat was necessary to work in the existing environments. Programming in Java felt like COBOL — lots of preparatory work, very verbose, for very little gain. Whenever I had to code C++ or Java it was horrible. I had to prime myself, as if I was about to have a battle of wits with a brain damaged opponent. And I knew, if I wasn’t very careful, I’d lose because the addled compilers required precision that would make a lawyer blush.

I still code in LISP and fiddle with Python — languages that reward a little bit twiddling with immediate responses. I still hammer out a bit of C code now and again, but it’s just easier to do something in Scheme. I feel that my days of coding in C or Java or Smalltalk are long gone. Pascal isn’t even used by anyone anymore it seems even though it was the first language I learned at University. Nearly 50 I refuse to look at any new language unless it has a compelling reason. Most often the compelling reason is density. If it allows me to write a few lines that C, C++ or Java would require hundreds for, then I’ll take a look. A few functional languages provide this ability, as do some vector-based languages.

And I do use some of these languages and get that same tingle of joy when a few dozen lines does something amazing. All too often I wonder why is it still not done this way? Why aren’t languages smarter, denser? Why has coding gotten so verbose? Why do I have to do the same thing time and again, just to open a window so I can write text into it? Or do a whole slew of machinations re: text input instead of just sucking it into the structure in a logical, structured way via simple expressions such as regex? Why do we still have pointers? Why? Why? Why?

Mostly it’s simply not fun anymore. For the most part computers have become no more to me than a useful appliance or tool; something I use to get my job done. I know how it all works and fits together but the passion for developing any of it at the lowest levels, the love for coding it, are mostly gone. Can it return? Perhaps. Because, as I found out on my new job, the desire to code is pretty much still there, it’s just hidden under a blanket of disgust with how most software is written. My utilization of vector and functional languages shows that some language designers dislike verbosity as much as do I. They remember that the programmer should apply algorithms that the computer will run, and not put the programmer in the place of someone who has to meticulously outline his purpose so the stupid compiler has a clue what it is you want done.

I wonder how many others of my generation feel the same? I still love designing and architecting solutions but the desire to get down and dirty and code is gone if I have to do it in something like Java. I feel sad. I remember the joys I had. I remember the long nights, the pizza and pop, the insane meals at insane hours, and the crazy sessions scrawling designs onto blackboards and then running to get them coded. Perhaps I’ve simply outgrown it. But I think not. For in my new job I’ve started to code in an exotic language that is a mix of functional and vector. Sort of like a mathematically oriented Lisp. And it’s wonderful. It’s freeing, liberating. And the hardest part is figuring out how to do something efficiently because doing it sloppily is easy. Plus, the language is so new that I have to truly think about what it’s providing me so that I can complex things.

In way of example, just the other day I wrote a tokenizer. It was literally 1 line of code. In another line I was able to read in a file. If I slammed the two lines together I could literally read a file in and tokenize it. More or less the code looks like this:

file := read: ~/textfile.txt
tokenized := file tokenize across each keyword

where keyword literally were the keywords I wanted to tokenize. Going on to build a parser will now be easy!

And it’s fast. Stupid stupid fast. And it’s fully interactive, just like Lisp environments of old. It’s extremely seductive. And I hope more languages come out that are like this because the ability to sit in there with your code and data is what folks need to experience again. It’s not like our computers aren’t fast enough.

I do know that I get a kick out of solving complex problems but I can’t get it out of my head that I might be missing out on the joy I felt so long ago when I was a coder and the computer world was so much simpler. My new job shows that that joy is still there and that a proper programming environment can set it free. The problem is, how willing is the industry to embark on examining new languages? I know that Google is doing research in new languages, as epitomized by Go by Rob Pike. Are we on the cusp of a golden age of language design or will those who are mostly interested in pushing the status quo, demanding we code in C/C++ and Java win the day and thus make software worse, more buggy and longer? Time will tell. But I know what I’m hoping for. Let density win, it’ll be good for everyone, even if it means programmers will have to think a bit more and type a bit less!

Comments are closed.

October 2010
« Sep   Nov »