Lispian Random meanderings on whatever catches my fancy

How About noOS?

We have NoSQL but maybe it’s time for noOS.

I’ve talked about this with colleagues for a while. Many are old enough to realize why we have operating systems, but some of the younger crowd don’t. The reason for an operating system is to equitably share the resources of a computer. This made sense when the systems were large, hulking brutes sitting in air conditioned rooms. It makes no sense today when one core of an average computer is faster than any mainframe of 40 years ago — or even a roomful of them.

It’s why I’ve had discussions asking why we even need an OS anymore.

Perhaps it’s time to revisit anotherĀ  idea that came out of the great CS labs, namely machines that only ran a language. I’m talking about Lisp Machines, Smalltalk Machines, APL Vector Machines, etc.

These machines had the beauty of allowing you to program extensions into their core via well-defined languages all within a fully interactive environment. It was bliss programming these types of systems. And it’s not like computers aren’t fast enough to allow for fully interactive, dynamic environments as the way to build applications. Today’s hardware makes those old Smalltalk, Lisp and APL systems seem so slow as to be laughable. And yet, those systems were wonderful environments to program in. Each one allowed massive improvements in productivity with some people experiencing an order of magnitude improvement. One team I know was able to do the work of 300 programmers with merely 30. The fact they were so productive was due to the dynamic nature of the environment and interpretive/iterative nature of developing the software. Throw in the fact that the teams were small and few and the software also came out with much higher quality. And by using a dense language there were fewer lines of code and thus fewer errors/bugs.

So I wonder if it isn’t time for a change. Especially as we see custom hardware such as the iPhone, iPad, etc. come out that are designed with utterly different operating environments. Can we finally see a focus on providing an environment within which we can program that doesn’t require an entire complex system below in order for us to get to the hardware? Can we simply abstract that into a class library that is then invoked as needed by a programming environment which is extended through the programming languages themselves.

Some may wonder if this means only providing a single language. I don’t believe so. Looking at the original vision for .NET from Microsoft shows that the use of a language VM would allow for any interactive, dynamic language to sit atop the VM. This is also what IBM did with their Visual/Age systems of yore. The VM interacts with the hardware and developers work in languages that interact with the VM. The VMs can be small and tightly defined and consistent across hardware types and no intermediate operating system is necessary.

Purists might say that the VM becomes the de facto operating system. Perhaps. But it’s more a proper hardware abstraction, providing a unified (read global) hardware to which any given language can talk. Thus, writing a program in any VM-enabled language means it will run on any affiliated VM-system.

And it’s not like we don’t have examples that we can examine. Those old Lisp and Smalltalk systems easily show what can be done. And when one looks at the work at Xerox PARC one can quickly realize how flexible those environments are and what is possible. Especially since we really don’t have much more to show for our efforts in the past 30 years than what I saw at Xerox back in the 80s.

I think it’d be worth at least a long discussion. And if nothing other than improved productivity, security and denser code was the result, the savings in errors and bugs would be well worth the transition.

Comments are closed.

October 2010
« Sep   Nov »