[HN Gopher] Medley Loops: The Basic System (Lisp Object-Oriented...
       ___________________________________________________________________
        
       Medley Loops: The Basic System (Lisp Object-Oriented Programming
       System) [pdf]
        
       Author : pamoroso
       Score  : 45 points
       Date   : 2024-10-16 14:42 UTC (3 days ago)
        
 (HTM) web link (interlisp.org)
 (TXT) w3m dump (interlisp.org)
        
       | pamoroso wrote:
       | Volume I of the Medley LOOPS series about the Lisp Object-
       | Oriented Programming System, an Interlisp object extension.
       | Volume II is coming in the late fall of 2024, Volume III in the
       | fall of 2025.
        
         | Rochus wrote:
         | Thanks for sharing. I didn't realize it was available, but the
         | version is 1.2 and date is July 2024, so it must have been
         | around for some time.
        
       | lispm wrote:
       | LOOPS was one of the early frameworks for AI programming (-> for
       | Knowledge-based Systems -> especially Expert Systems) in Lisp,
       | which also made use of the new graphical user interface of the
       | Interlisp-D Lisp Machine from Xerox. Interlisp-D was a
       | combination of operating system and development environment, and
       | was developed for the same computers, which also ran Smalltalk.
       | Both were image-based and managed the source code in the
       | development environment.
       | 
       | Remarkable is the fully interactive way of working in the REPL
       | (Lisp's Read Eval Print Loop) and through the GUI, including live
       | editing all classes/etc. via menus. LOOPS extended Interlisp with
       | various ways to do object-oriented programming and a rule-system.
       | 
       | There is also a "friendly primer" for Xerox LOOPS, from mid
       | 1980s.
       | https://bitsavers.org/pdf/xerox/interlisp-d/198510_Koto/3102...
       | 
       | Note that LOOPS is an early OOP System, it's not a about
       | iteration in a loop.
        
         | rjsw wrote:
         | I was at a presentation on LOOPS in London given by Dan Bobrow
         | and Mark Stefik, they were pitching it as an equivalent
         | framework to KEE or ART as you describe. They had a good
         | showcase application called Truckin' [1] that made good use of
         | all the features of LOOPS.
         | 
         | [1] https://www.markstefik.com/?page_id=359
        
           | lispm wrote:
           | Some more background https://larrymasinter.net/stefik-
           | loops.pdf and https://www.markstefik.com/?page_id=334
           | 
           | I think LOOPS was limited by only being available on
           | Interlisp-D related systems. Common LOOPS was supposed to be
           | portable, but I remember it only in the context of the CLOS
           | development as a stepping stone, but not as a product or
           | environment like LOOPS.
        
             | rjsw wrote:
             | I ran Common LOOPS in AKCL on a 386 PC. It was just an
             | object system for programming, it didn't have a Frame
             | System or Rule Engine as well like LOOPS.
             | 
             | My previous environment had been Franz Lisp on the Atari
             | ST. My copy of the Franz sources was missing flavors so I
             | wrote my own object system for it that looked a bit like
             | New Flavors but with a frame system built in as well. My
             | binding to GEM from Lisp made use of the object system as
             | well and the repl was in a GEM window.
        
       | Rochus wrote:
       | What are the major differences to CLOS?
        
         | lispm wrote:
         | The answer is mostly about CLOS and not about LOOPS.
         | 
         | Update: my remark was about an earlier posted content, which
         | had an "AI" generated answer. That text has been removed.
        
           | Rochus wrote:
           | The book unfortunately doesn't mention CLOS, nor does it give
           | any hints about the differences. But the focus of the book is
           | obviously on Lisp Object-Oriented Programming, not on Expert
           | Systems. A comparison with CLOS is therefore apparent.
        
             | mepian wrote:
             | The only way to improve GenAI-slop comments is to delete
             | them, please stop polluting HN.
             | 
             | EDIT: The comments I was referring to got sneakily edited.
             | Another thing that is not nice to do.
        
               | Rochus wrote:
               | Providing an answer would have been more helpful.
               | 
               | EDIT: still no helpful contribution, just nagging.
        
         | Rochus wrote:
         | And what are the major differences between LOOPS and
         | CommonLOOPS (besides Interlisp vs CL)?
        
           | multjoy wrote:
           | Also, y tho.
        
         | multjoy wrote:
         | y tho
        
         | lispm wrote:
         | LOOPS (Lisp object-oriented programming systems) is written in
         | Interlisp for the Interlisp-D environment, was a Xerox product
         | and is from around 1981.
         | 
         | CLOS (Common Lisp Object System) is a general OOP standard
         | extension for Common Lisp. A specification was proposed in
         | 1987/88. CLOS was included in the Common Lisp standard and
         | widely implemented by various implementations.
         | 
         | Both were a "system" -> meaning that it is available and
         | programmable also at runtime.
         | 
         | LOOPS is an actual piece of software with a GUI, which
         | integrates into the Interlisp-D development environment.
         | 
         | LOOPS was based on message sending, classes, methods,
         | interactive changes to the object system.
         | 
         | CLOS does not use message sending, but calling generic
         | functions with multi-methods and multiple dispatch.
         | 
         | LOOPS supports Access-oriented Programming with Active Values.
         | Demons can act based on access to objects. CLOS has no direct
         | support for that. Maybe partial (-> :before & :around &:after
         | methods in CLOS).
         | 
         | LOOPS includes a rule-system. CLOS systems have that as
         | extensions. It's not a part of CLOS itself.
         | 
         | LOOPS includes graphical & menu tools to browse and edit
         | objects. CLOS systems have some of that as extensions,
         | depending on the implementation.
         | 
         | LOOPS was a programming system for knowledge-based systems,
         | like Expert Systems. CLOS was not designed for that, but such
         | programming systems were also developed for Common Lisp, some
         | using CLOS. Example: KnowledgeWorks from LispWorks.
         | 
         | LOOPS was later rewritten as CommonLOOPS for Common Lisp. The
         | software "Portable Common LOOPS" (PCL) then was further
         | developed into a portable (and widely ported) and complete
         | prototype implementation of CLOS + MOP.
        
           | Rochus wrote:
           | Thanks. I'm mostly interested in OO features. I assumed that
           | LOOPS was essentially an OO extension of Interlisp (and thus
           | a precursor of CLOS) due to the title. Does it really do
           | "message sending", or is it rather like Smalltalk, which does
           | "normal" method dispatch and call, but where the term
           | "message sending" is use for this?
        
             | lispm wrote:
             | The answer would depend on what you think "message sending"
             | is and why you think Smalltalk does not support "message
             | sending".
        
               | Rochus wrote:
               | Meanwhile I have had a chance to skim the book and I have
               | reason to believe that OO in LOOPS is solved very
               | similarly to how it is in ST-76 and 80, i.e. virtual
               | method dispatch via selector and calling a compiled
               | method. A selector is simply the method signature, even
               | if some people in the Smalltalk community refer to it as
               | a "message". In contrast, there was actually something
               | like message passing in Smalltalk-72, albeit synchronous.
        
       ___________________________________________________________________
       (page generated 2024-10-19 23:00 UTC)