Dan Sugalski wrote: > John Porter wrote: > >I assume (but I'm open to correction) that it is *not* to simulate > >the vm of other language environments, so as to execute faithfully > >bytecode produced in those environments. (That is, taking object > >code from a python compiler (e.g.) and executing it in our own vm.) > > Actually, that's one of the purposes.
Not to beat on Dan (or anyone else), but for the sake of those few out there who may be unfamiliar with it: The general tendency is to overdesign the second system, using all the ideas and frills that were cautiously side-tracked on the first one. The result, as Ovid says, is a "big pile" (1). For example, consider the IBM 709 architecture... This is an upgrade, a second system for the very successful and clean 704. The operation set is so rich and profuse that only about half of it was ever used. Consider [also] the Stretch computer, an outlet for the pent-up inventive desires of many people, and a second system for most of them. As Strachey says in a review: [Stretch] is immensely ingenious, immensely complicated, and extremely effective, but somehow at the same time crude, wasteful, and inelegant, and one feels that there must be a better way. (1) "Adde parvum parvo magnus acervus erit." - Ovid (Add little to little and there will be a big pile.) Fred Brooks, "The Mythical Man-Month", chapter 5, verses 14-16. Brooks' illustrative example is, perhaps, a bit too simple for our case (or most others), since the architect of the first system is not the same one designing the second system; so in many important respects parrot seems to be a first system. However, it is a collaborative design effort (a type that Brooks warns against in chapter 3), and clearly too much knowledge is being carried over from the first system to allow parrot to escape the shadow of second-system-hood. -- John Douglas Porter __________________________________________________ Do You Yahoo!? Sign up for SBC Yahoo! Dial - First Month Free http://sbc.yahoo.com