Interlisp / medley

The main repo for the Medley Interlisp project. Wiki, Issues are here. Other repositories include maiko (the VM implementation) and Interlisp.github.io (web site sources)
https://Interlisp.org
MIT License
376 stars 19 forks source link

Mention the role of LOOPS among Lisp object systems #1850

Open pamoroso opened 1 month ago

pamoroso commented 1 month ago

As noted in PR #244, the Interlisp.org website should mention the role of LOOPS compared to other Lisp object systems like CLOS and CommonLoops. The mention may go under the Documentation page, or better yet somewhere under History such as History of Lisp or Development of Medley.

skaisler commented 1 month ago

Comments on CLOS and CommonLoops:

  1. CLOS is an object-based system (just like C++) and is pale shadow of the expressive power embedded in LOOPS.
  2. CommonLoops, as I understand it, is a CommonLisp based rwrite of LOOPS.
  3. Neither shoulld be mentioned in the same breadth as LOOPS since this is about Medley Interlisp.
  4. At best, a separate mention of CommonLoops re Medley could be maded although I have not yet worked with it.
Anzus commented 1 month ago

I think we can tell our story without slagging other systems. CLOS (like so much else in CL) is what it is due to the requirement to be portable and because one or two people drove the effort to implement that component and so drove that vision for what it would look like.

tfeb commented 1 month ago

I think things are a bit more complicated than this.  LOOPS (from distant memory, but the manual seems to agree with this) was message-based as an object-oriented system and thus was more restrictive than CLOS, as you can't have CLOS's dispatch on multiple arguments.  But LOOPS also had all the rule-based stuff which isn't in CLOS at all, as well as the active value things which CLOS sort-of can have, and probably other things I forget.CommonLoops had as one of its implementations (its only implementation?) PCL which essentially was CLOS.  Most early CLOS implementations were PCL-based I think, at least some still have major traces of PCL in them.  So CommonLoops was not an implementation of LOOPS for CL, I think, but rather its own thing which, really, was what became CLOS. One of the useless shards of information in my head is the name of the machine you fetched PCL from: arisia.xerox.com.  What was 'arisia'?  I've also realised I can reconstruct a list of all the PCL release names from the archive at CMU.--timOn 11 Oct 2024, at 11:53, skaisler @.***> wrote: Comments on CLOS and CommonLoops:

CLOS is an object-based system (just like C++) and is pale shadow of the expressive power embedded in LOOPS. CommonLoops, as I understand it, is a CommonLisp based rwrite of LOOPS. Neither shoulld be mentioned in the same breadth as LOOPS since this is about Medley Interlisp. At best, a separate mention of CommonLoops re Medley could be maded although I have not yet worked with it.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

skaisler commented 1 month ago

All:

Will need some more research in CLOS although I di use it years ago when I was writing in CommonLisp from Allegro (old Franz).

Need to find some good documentation on CommonLoops and play with it a bit.

My comments regarding being mentioned with LOOPS still stand since we are talking solely about Medley Interlisp. When we get to a point that we can discuss XCL better, then we can mention ClOS with it, and perhaps, CommonLOOPS.

Steve K.

On Fri, Oct 11, 2024 at 1:16 PM Tim Bradshaw @.***> wrote:

I think things are a bit more complicated than this. LOOPS (from distant memory, but the manual seems to agree with this) was message-based as an object-oriented system and thus was more restrictive than CLOS, as you can't have CLOS's dispatch on multiple arguments. But LOOPS also had all the rule-based stuff which isn't in CLOS at all, as well as the active value things which CLOS sort-of can have, and probably other things I forget.CommonLoops had as one of its implementations (its only implementation?) PCL which essentially was CLOS. Most early CLOS implementations were PCL-based I think, at least some still have major traces of PCL in them. So CommonLoops was not an implementation of LOOPS for CL, I think, but rather its own thing which, really, was what became CLOS. One of the useless shards of information in my head is the name of the machine you fetched PCL from: arisia.xerox.com. What was 'arisia'? I've also realised I can reconstruct a list of all the PCL release names from the archive at CMU.--timOn 11 Oct 2024, at 11:53, skaisler @.***> wrote: Comments on CLOS and CommonLoops:

CLOS is an object-based system (just like C++) and is pale shadow of the expressive power embedded in LOOPS. CommonLoops, as I understand it, is a CommonLisp based rwrite of LOOPS. Neither shoulld be mentioned in the same breadth as LOOPS since this is about Medley Interlisp. At best, a separate mention of CommonLoops re Medley could be maded although I have not yet worked with it.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/Interlisp/medley/issues/1850#issuecomment-2407827560, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARRPGX5NXDNLSXAZXJZWLJ3Z3ABYFAVCNFSM6AAAAABPYTFLYWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBXHAZDONJWGA . You are receiving this because you commented.Message ID: @.***>

Anzus commented 1 month ago

I don’t think there is a CommonLoops to play with. CommonLoops evolved into Portable CommonLoops, which evolved into CLOS (though Gregor repeatedly stated that PCL was not CLOS), which is already in Medley(*). The functionality described in the ’86 paper is quite different to what is currently in CLOS, and bears little resemblance to LOOPS.

Tim’s got it right. The various releases were named after holidays (Victoria day, Cinco de Mayo, etc). Most implementation (like ours) started with PCL, and then evolved it. Bob had a document that listed the differences between Medley and CLtL2 that he was using to implement. Moon had a document that described the differences between PCL’s MOP and CLOS that he sent to the X3J13 mailing list that all the various implementations were working through. Using the “two-working-implementations” rule, it was already in place in Lucid release 4.0 and Genera 8.0.

Loops is a message-based OOPL, and included data oriented and rules-based programming. CLOS is based on generic functions, you can do data-oriented programming with accessors on slot-value (or if you want to get really fancy via the MOP), and has no rules-based stuff at all. CLOS also has a MOP which is how you bootstrap it and then you can extend it in interesting ways.

Loops also included UI stuff like the class browser, inspector, language-specific editor functionality, and some added UI elements like gauges. The Medley implementation of CLOS includes the first 3, but none of the added UI elements. None of the UI stuff is portable across CL implementations, and is not part of the spec. Aria was supposed to implement that, but portability was not a goal and it was based on CLIM, which had its own set of issues.

Arisia was the PARC public FTP server. There was also a mailing list for discussions, which we gatewayed at OSU to usenet’s comp.lang.clos. Gregor initially ran the mailing list but eventually we moved that over to OSU too.

(*) The CLOS in Medley is really an interim state version, because Medley is CLtL1. The closer-to-final version requires CLtL2 and will not build in the current Medley.

On Oct 11, 2024, at 1:58 PM, skaisler @.***> wrote:

All:

Will need some more research in CLOS although I di use it years ago when I was writing in CommonLisp from Allegro (old Franz).

Need to find some good documentation on CommonLoops and play with it a bit.

My comments regarding being mentioned with LOOPS still stand since we are talking solely about Medley Interlisp. When we get to a point that we can discuss XCL better, then we can mention ClOS with it, and perhaps, CommonLOOPS.

Steve K.

On Fri, Oct 11, 2024 at 1:16 PM Tim Bradshaw @.***> wrote:

I think things are a bit more complicated than this. LOOPS (from distant memory, but the manual seems to agree with this) was message-based as an object-oriented system and thus was more restrictive than CLOS, as you can't have CLOS's dispatch on multiple arguments. But LOOPS also had all the rule-based stuff which isn't in CLOS at all, as well as the active value things which CLOS sort-of can have, and probably other things I forget.CommonLoops had as one of its implementations (its only implementation?) PCL which essentially was CLOS. Most early CLOS implementations were PCL-based I think, at least some still have major traces of PCL in them. So CommonLoops was not an implementation of LOOPS for CL, I think, but rather its own thing which, really, was what became CLOS. One of the useless shards of information in my head is the name of the machine you fetched PCL from: arisia.xerox.com. What was 'arisia'? I've also realised I can reconstruct a list of all the PCL release names from the archive at CMU.--timOn 11 Oct 2024, at 11:53, skaisler @.***> wrote: Comments on CLOS and CommonLoops:

CLOS is an object-based system (just like C++) and is pale shadow of the expressive power embedded in LOOPS. CommonLoops, as I understand it, is a CommonLisp based rwrite of LOOPS. Neither shoulld be mentioned in the same breadth as LOOPS since this is about Medley Interlisp. At best, a separate mention of CommonLoops re Medley could be maded although I have not yet worked with it.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/Interlisp/medley/issues/1850#issuecomment-2407827560, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARRPGX5NXDNLSXAZXJZWLJ3Z3ABYFAVCNFSM6AAAAABPYTFLYWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBXHAZDONJWGA . You are receiving this because you commented.Message ID: @.***>

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

tfeb commented 1 month ago

There's a paper linked from here which talks about the state of CommonLoops in 1986 (this is three years before I knew about PCL) which is recognisably CLOSoid in a way LOOPS isn't – it has multimethods for instance – but defmethod is defmeth and defclass is defstruct with extra options.  I'd really like to know what the history was from LOOPS to that and then from that to the PCL I knew.  Perhaps it's not really recoverable now.I just looked up 'arisia': it seems to be taken from the Lensman series.  I don't know what made me not look it up until now!--timOn 11 Oct 2024, at 22:14, Arun Welch @.**> wrote: I don’t think there is a CommonLoops to play with. CommonLoops evolved into Portable CommonLoops, which evolved into CLOS (though Gregor repeatedly stated that PCL was not CLOS), which is already in Medley(). The functionality described in the ’86 paper is quite different to what is currently in CLOS, and bears little resemblance to LOOPS.

Tim’s got it right. The various releases were named after holidays (Victoria day, Cinco de Mayo, etc). Most implementation (like ours) started with PCL, and then evolved it. Bob had a document that listed the differences between Medley and CLtL2 that he was using to implement. Moon had a document that described the differences between PCL’s MOP and CLOS that he sent to the X3J13 mailing list that all the various implementations were working through. Using the “two-working-implementations” rule, it was already in place in Lucid release 4.0 and Genera 8.0.

Loops is a message-based OOPL, and included data oriented and rules-based programming. CLOS is based on generic functions, you can do data-oriented programming with accessors on slot-value (or if you want to get really fancy via the MOP), and has no rules-based stuff at all. CLOS also has a MOP which is how you bootstrap it and then you can extend it in interesting ways.

Loops also included UI stuff like the class browser, inspector, language-specific editor functionality, and some added UI elements like gauges. The Medley implementation of CLOS includes the first 3, but none of the added UI elements. None of the UI stuff is portable across CL implementations, and is not part of the spec. Aria was supposed to implement that, but portability was not a goal and it was based on CLIM, which had its own set of issues.

Arisia was the PARC public FTP server. There was also a mailing list for discussions, which we gatewayed at OSU to usenet’s comp.lang.clos. Gregor initially ran the mailing list but eventually we moved that over to OSU too.

(*) The CLOS in Medley is really an interim state version, because Medley is CLtL1. The closer-to-final version requires CLtL2 and will not build in the current Medley.

On Oct 11, 2024, at 1:58 PM, skaisler @.***> wrote:

All:

Will need some more research in CLOS although I di use it years ago when I

was writing in CommonLisp from Allegro (old Franz).

Need to find some good documentation on CommonLoops and play with it a bit.

My comments regarding being mentioned with LOOPS still stand since we are

talking solely about Medley Interlisp.

When we get to a point that we can discuss XCL better, then we can mention

ClOS with it, and perhaps, CommonLOOPS.

Steve K.

On Fri, Oct 11, 2024 at 1:16 PM Tim Bradshaw @.***>

wrote:

I think things are a bit more complicated than this. LOOPS (from distant

memory, but the manual seems to agree with this) was message-based as an

object-oriented system and thus was more restrictive than CLOS, as you

can't have CLOS's dispatch on multiple arguments. But LOOPS also had all

the rule-based stuff which isn't in CLOS at all, as well as the active

value things which CLOS sort-of can have, and probably other things I

forget.CommonLoops had as one of its implementations (its only

implementation?) PCL which essentially was CLOS. Most early CLOS

implementations were PCL-based I think, at least some still have major

traces of PCL in them. So CommonLoops was not an implementation of LOOPS

for CL, I think, but rather its own thing which, really, was what became

CLOS. One of the useless shards of information in my head is the name of

the machine you fetched PCL from: arisia.xerox.com. What was 'arisia'?

I've also realised I can reconstruct a list of all the PCL release names

from the archive at CMU.--timOn 11 Oct 2024, at 11:53, skaisler

@.***> wrote:

Comments on CLOS and CommonLoops:

CLOS is an object-based system (just like C++) and is pale shadow of the

expressive power embedded in LOOPS.

CommonLoops, as I understand it, is a CommonLisp based rwrite of LOOPS.

Neither shoulld be mentioned in the same breadth as LOOPS since this is

about Medley Interlisp.

At best, a separate mention of CommonLoops re Medley could be maded

although I have not yet worked with it.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are

receiving this because you are subscribed to this thread.Message ID:

@.***>

Reply to this email directly, view it on GitHub

https://github.com/Interlisp/medley/issues/1850#issuecomment-2407827560,

or unsubscribe

https://github.com/notifications/unsubscribe-auth/ARRPGX5NXDNLSXAZXJZWLJ3Z3ABYFAVCNFSM6AAAAABPYTFLYWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBXHAZDONJWGA

.

You are receiving this because you commented.Message ID:

@.***>

Reply to this email directly, view it on GitHub, or unsubscribe.

You are receiving this because you commented.Message ID: @.***>

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>