Abstract
High-level programming languages and their virtual machines have long aspired to erase operating systems from view. Starting from Dan Ingalls’ Smalltalk-inspired position that “an operating system is a collection of things that don’t fit inside a language; there shouldn’t be one”, I contrast the ambitions and trajectories of Smalltalk with those of Unix and its descendents, exploring why Ingalls’s vision appears not to have materialised. Firstly, I trace the trajectory of Unix’s “file” abstraction into Plan 9 and beyond, noting how its logical extrapolation suggests a surprisingly Smalltalk-like end-point. Secondly, I note how various reflection and debugging features of Smalltalk have many analogues in the fragmented world of Unix programming. Finally, I consider how these two directions of change may yet be convergent within future Unix-derived systems, and what this might mean for programming languages.