From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <3087a093bf5a46b8d6caeef137aaf5a8@vitanuova.com> Date: Sat, 10 Jun 2006 13:43:37 +0100 From: rog@vitanuova.com To: 9fans@cse.psu.edu Subject: Re: [9fans] gcc on plan9 In-Reply-To: <20060609212715.AA129294C3@mail.bitblocks.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: 674b5b9a-ead1-11e9-9d60-3106f5b1d025 > Lisp machines/environments did this 25+ years ago. > Everything is an s-expression is even more fun than > everything is a file! the advantage that the file metaphor has is that it has a small fixed number of entities (at one level). all the operations on those entities have intuitive and well-defined meanings. this means you can write useful software that operates only in terms of those operations. if i'm writing a service, it is *not* usually expressed most naturally as a set of file operations. if one is providing an API within a given framework (e.g. C, Java RMI, Lisp, TCP/IP) then the natural tendency is to map one-for-one operations on the service to entities in the API. for instance a Java RMI interface will tend to have one method for each operation on the service; a TCP/IP interface will define a protocol where each message corresponds similarly. by forcing developers to express a service in terms of a small number of primitive operations, we automatically gain compatibility with anything else that uses those operations. of course the danger with doing this is that it becomes too hard to express important parts of the service's interface; that there's no easy and obvious way of setting up the mapping. the beauty with 9p, as i see it, is that the operations provided by many kinds of service can be mapped quite closely and intuitively into 9p operations. and that those operations themselves naturally provide multiplexing at several different levels, and are efficiently implementable. Lisp provides a very expressive framework, but it's too rich. its very richness is an obstacle to the problem that 9p solves - the component-level connection of software components.