Hacker News new | past | comments | ask | show | jobs | submit login

It's interesting to note how so many of the innovative research OS of the 80s and 90s were based on firmly object oriented architectures that enabled their features. This is in spite of OO being much maligned by contemporary FP evangelists. I'm not aware of what research has been done on FP (pure or impure) operating systems. I know of House, but it doesn't actually have any interesting features per se beyond the novelty of being written in Haskell.



The much-maligned 286 MMU was object based: segments were referred to by handle and had a byte-granular length, so out-of-bounds accesses were impossible.

I once saw a Smalltalk which used the 286 MMU like this. Each Smalltalk object had its own segment descriptor, effectively exploiting the MMU as a fast and cheap way to implement the object pointer table. The Smalltalk garbage collector could move things around behind the scenes and everything still worked, there being no pointers to update.

Of course, with segment sizes limited to 64kB and a limit of (I think?) 2^13 different segments it wouldn't scale to modern machines, but it was still pretty nifty for a 16-bit system. It's a shame it never got used to its full potential.


System 38 is object based which is slightly different from what we tend to associate with object orientation in that there is no inheritance mechanism by which objects can be extended with additional or different functionality.


The Lisp machine OSes were pretty amazing. Everything is dynamically updatable, stuff printed to the consoles remained live and interactive, and the user could configure or modify the OS or programs interactively and easily.

While industrial Lisps may or may not be "functional" compared to today's view of the topic, these implementations were at least based around first-class functions.


Many of those anti-OOP evangelists kind of forget all successful FP languages are actually hybrid and there is more than one way of doing OOP.

Haskell type classes are no different than interfaces, at least conceptually.

Lisp had FLAVOURS, CLOS.

The O in OCaml is actually Objective to imply its support for objects, as its predecessor Caml Light did not have it.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: