Motivation (non-programmers)

I have written two essays where I describe the motivation behind UnixObjects. This one is intended for non-programmers. I have another one that is written in more succinct and technical terms.

The Disney computer

My first introduction to computers came from Walt Disney comic books in the 1970s. The Disney computer was a huge machine that was communicated with by using paper slips. The operator wrote a question—any question—on a piece of paper and slid it in through an opening on the machine. The machine would then go about processing it. Depending on the difficulty of the question, it might make noises and take some time to ponder about the problem. But eventually an answer would pop out on a piece of paper from another opening on the side of the machine. How convenient, I thought.

ЕС ЭВМ

In 1982, I was introduced to my first real computer, a Soviet made clone of an IBM System/370 mainframe called ES EVM, affectionately known as Elvits. It was about the same size as the ones on Disney comics, and it made just as much noise if not more. But instead of writing to it on a piece of paper, you typed your words on a keyboard. The computer, however, answered mostly on paper.

Elvits wasn't nearly as capable as the Disney computer. It wouldn't accept a free form question. You had to tell it how to answer the question in the form of a COBOL or PL/1 program. And then you even had to tell it how to run that program by using something called Job Control Language (JCL).

Computers clearly weren't all that advanced yet, but I trusted that in no time they would be. And in any case, those cyrillic letters, switches and lights on Elvits' console looked cool (wish I had a photo!)

Rubbing the table

Fast forward all the way to year 2000. Computers are everywhere. They are small and quiet. But apparently they are not very efficient, judging from the fact that people spend most of their day in front of one—programmers in particular, whom you would expect to have mastered it by now.

Whereas the Disney computer provided an answer straight away, and Elvits did the same after getting some instructions, with today's computers it seems most of the work is done by a human. We rub a piece of plastic on the tabletop while graphical elements on the screen move in sync. This is called “using the computer.” But it is more like the computer is taking it easy while the user does the work.

But today's computers are used for communication, you say, we don't use them for “computing results,” we contact our friends. Perhaps, but how much of the e-mail, bulletin board messages, search results, news items and web pages that pass before our eyes is what we want? How much of it is life enhancing? There is no reason the computer couldn't do the skimming and negotiating for us, and only bother us with what we truly want. In many cases it could simply act on our behalf. This might even free enough time to inspire us to meet our friends in physical proximity.

Google engineers are doing their best to help us with this problem, but overall, results are mediocre because the computer at the user's end has been dumbed down. It is not that our PCs don't have the computing power either. Quite the opposite, the processor sits idle most the time. It is because the software doesn't even attempt to make proper use of it.

Today, people don't leave their computer to process tasks by itself as we did in Elvits' time. Instead, we sit in front of it, stare at it, keep rubbing the tabletop, and wait for the system to pop up a question on the screen, which we answer “OK.” The computer never learns. And, it seems, neither do we. For this using business is wasting our time ...

... and energy. In fact, so physical an activity has the use of a computer become that millions are spent on the research on repeated strain injuries resulting from whisking our hands back and forth on the table in the process of using a computer. Who knows we can soon power the whole computer from the energy of those hand movements.

The general idea with computers was that humans would need to do less, not more. The computer was supposed to increase our free time, not reduce it. What went wrong?

Computers are faster, they just take longer.
— Randy Pausch

We programmers seem to have led ourselves astray. Our work centers around reimplementing the same old ideas under new names that are in vogue for the season. We have not been able to raise the level of abstraction in computer programming at all for decades. The last major invention in our field, object-oriented programming, was introduced in 1967, and we are still struggling to get full benefit even out of that.

In the 1980s, the media touted the so called fourth-generation programming languages. The idea was that given a rough description about the problem domain, the computer would in essence write the programs itself. This, they said, was not only technically possible (back then) but an inevitable development because by the year 2000 the demand for new computer programs would be so high that it couldn't be satisfied “even if the entire population of the planet was recruited to write them.” Someone should ask the media how things are progressing. It has been awfully quiet in that front.

It seems to me that while the hardware engineers are living Moore's law, we software engineers are running in place. And even after decades of heavy use, the treadmill is showing no signs of wearing out.

Why is it drug addicts and computer afficionados are both called users?
— Clifford Stoll

It is a great day for a revolution

I wanted to do something about this and invented a programming architecture called UnixObjects. It does not give you a “Disney” computer, but it can exponentially increase programmer productivity. This is achieved by (1) taking a quantum leap in the level of abstraction in programming, and (2) liberally trading computer energy for human energy.

I originally came up with the concept for UnixOjects in 2003 because I desperately needed something like this for my own use. The idea worked so well that I no longer could imagine doing things any other way. I am publishing the concept here for the benefit of those programmers who might also find it useful.