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

You're pretty spot on with the io.Reader/Writer idea. In Plan9 everything is a file, thus meaning that - potentially - everything implements a read/write capacity. If everything implements a read/write capacity and is designed to be interacted with as such over a unified protocol, such as 9P in Plan9, you end with a system that is interactive via files alone, leading to a high level of abstraction where the only concern is reading and writing, leaving communication concerns an afterthought. Go and Plan9 both operate with the network in mind. Plan9 can leverage namespacing and its file servers to export more or less all of the system, or import however much is desired of another. Go adopts this simplicity in mind, providing ways to operate logically to leave communication between things (network, channels, etc) as some form of a lesser concern.

As I mentioned in another comment, a lot of nomenclature and idiomaticism is derived from Plan9 in Go.

http://man.cat-v.org/plan_9/2/dial

http://man.cat-v.org/plan_9/2/thread

http://man.cat-v.org/plan_9/2/print




You know, I've always loved the "everything is a file" religion. That is, until I tried to actually create it in an environment[0].

Files, network connections, program interfaces, local IPC, and hardware are completely different, and that difference is important on about any interaction you make. They do have some common behavior, but one can't just make they look alike without losing a lot.

[0] http://hackage.haskell.org/package/uniform-io




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: