Xref: utzoo comp.lang.lisp:897 comp.sys.mac.programmer:880 Path: utzoo!attcan!uunet!lll-winken!lll-tis!ames!zodiac!mcconnel From: mcconnel@zodiac.ads.com (Chris McConnell) Newsgroups: comp.lang.lisp,comp.sys.mac.programmer Subject: Re: Anyone using pcl (clos) under Allegro Common Lisp? Message-ID: <3978@zodiac.UUCP> Date: 19 May 88 17:43:22 GMT References: <24158@ucbvax.BERKELEY.EDU> Sender: news@zodiac.UUCP Reply-To: mcconnel@ads.com (Chris McConnell) Organization: Advanced Decision Systems, Mt. View, CA (415) 960-7300 Lines: 30 The current version of PCL is implementing most of the Common Lisp Object System (CLOS). This will be the Object Oriented Programming standard for Common Lisp. I believe it will be officially approved sometime in June. PCL is fairly portable. I plan to bring it up in Allegro in the next month. If you accept the most generic implementation, it should already run in Allegro. (In fact, it may even have optimizations already since Allegro is really Franz and it already runs in Franz.) There are numerous ways to get it to run faster on a given implementation, but modifying the PCL code requires a very good knowledge of Lisp. I have done a lot of it fixing bugs and adding features, and I can tell you that it is no picnic. I ran some benchmarks a while ago on a Symbolics and a Sun running Lucid. The speed was better than I thought it would be for an early and portable implementation. Creation is slow, but execution speed of generic functions is very good. (Some of this is due to the caching mechanism that makes more recent methods faster.) We developed an image understanding environment using it, so the speed can't be too slow! I have been working in CLOS for a year (> 25,000 lines), and I have to say that even in its presently incomplete state that I love it. I have worked extensively in Flavors, an in house system called SOPE and some in Smalltalk. CLOS is far and away my favorite. Multiple specializers are great, especially on normal Lisp objects. The spec takes great pains to make all of the hooks that are needed available and public while still allowing implementations to do all of the things that are required to make things run fast.