Programmers: You Probably Don’t Know What a Computer Is
Reprinted from my blog.
When car buffs debate the relative merits of say a Ferrari vs. a Lamborghini, they obviously discuss the most salient features — like which mine the iron ore in the chassis came from, the gauge of the wires connecting the interior lighting, and the polymerization reactions used to make the plastic parts.
The folly of the above argument is so obvious because we are intimately familiar with the purpose of a luxury race car — to perform well on the road (and looking cool doesn’t hurt either!). In the context of the purpose of the machine, the importance of those implementation details fades into the background.
And yet, this dramatic irony repeats ad infinitum as one of the programming world’s favorite pastimes… Debating Smalltalk. Why did it never become widely popular? How “pure” is the language? Is it still relevant?
Smalltalk is weighed against languages like Ruby, Java, C.
But sit down. Are you sitting? Are you sure? Don’t hate me on reddit if you fall over and hurt yourself after reading the next part…
Programming languages are the-wires-connecting-the interior-lighting, but Smalltalk is the car.
That’s right — the car — the computer itself. Smalltalk is a 1980 answer to what a computer could be. Namely, a world of living objects, simulating the user’s mental model, which each provide the full power of the computer itself.
Okay, okay. So the car is a 1980 Ferrari. It’s aging. But here’s the thing — for the most part, the programming world stopped building cars after that. They keep putting cooler, faster, smaller parts (i.e. programming languages) into the same pre-1980 Yugo — the computer in which isolated applications cut the user off from the full power of the computer, which are themselves boxed in by the operating system, of which Dan Ingalls famously remarked:
An operating system is a collection of things that don’t fit into a language. There shouldn’t be one.
While we take this “operating system plus applications” paradigm for granted, it’s not a particularly powerful idea. As Alan Kay would say, it’s “reinventing the flat tire”. And, it doesn’t have to be this way. Let me take you on a little journey. But first…
Disclaimer: The point of all this is not how great Smalltalk is, or why you should use it. The point is to answer Dr. Kay’s challenge to “obsolete the damn thing” , to pick up where Smalltalk left off — creating a uniform, dynamic, fun system that “provide[s] computer support for the creative spirit in everyone” , instead of smearing more cool icing on top of the “operating system plus applications” mud pie, the impenetrable layers of which have grown well beyond the possibility of human understanding.
The following is an introduction I wrote to some Smalltalk GSoC students…
Congratulations on finding Smalltalk. I doubt you have any idea how important this could be for you.
You may not realize it, but you have opened a portal to some of the greatest minds in the history of our industry. In the beginning, for many of our heroes — Doug Engelbart, Alan Kay, Seymour Papert — computing was about the possibility of evolving the general level of human thought for the benefit of mankind. Effective critical thinking is vital to modern life e.g. the proper functioning of democratic governments. Yet traditional media have been ineffective at improving our thought on a large scale. Today, we’re mostly glorified “caveman with briefcases”, reacting to the same human universals as our distant ancestors — Fantasies, Stories, Superstition, Religion/Magic, Vendetta.
So what does this have to do with computing?!
I’m glad you asked ☺ In 1972, Alan Kay envisioned a “dynamic medium for creative thought” which he called a Dynabook. It was an answer to the problem described above — a computer to support and guide minds to the level required to overcome our uglier instincts, and replace them with our highest ideas, like Equal Rights, Democracy, Slow Deep Thinking, Legal System over Vendetta, Theory of Harmony — ideas which do not take seed on their own, but must be actively nurtured.
So what does this have to do with programming?!
I’m glad you asked that, too ☺ Smalltalk is interim Dynabook software! You have in your hands, not a programming language, but a live, dynamic, turtles-all-the-way-down environment designed to provide “support for the creative spirit in everyone”.
More practically, Smalltalk is a programming tool that allows productivity unimaginable in most systems. And, if you put in enough time and effort to actually think in it, it will help you program better in any language you use. But, I think it would be a great waste if you left Smalltalk “a better programmer”, when the questions before you are:
- What really matters?
- How can computers fulfill on that?
- How can I, as a programmer, contribute to that?
Ideas for research
- Afterword: What is a Dynabook
- Personal Dynamic Media
- Smalltalk: Design Principles Behind Smalltalk
- Ivan Sutherland’s Sketchpad
- Doug Engelbart & “The Mother of All Demos”
- Self’s Morphic papers