• Re: logically weird loop

    From Tim Rentsch@21:1/5 to Janis Papanagnou on Wed Dec 4 17:07:20 2024
    Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:

    On 21.11.2024 00:53, Lawrence D'Oliveiro wrote:

    On Wed, 20 Nov 2024 17:34:34 +0100, Janis Papanagnou wrote:

    [*] A friend of mine just recently implemented the code frame for a
    roguelike and followed the suggestion of an event based object-oriented
    implementation; it worked well, he told me.

    The next step would be to use coroutines so the logic of a longer-running
    task, which has to wait for other events at multiple points, can be
    written in a single linear stream without having to be fragmented into
    multiple callbacks.

    Yes, indeed.

    Actually, if you know Simula, coroutines are inherent part of that
    language, and they based their yet more advanced process-oriented
    model on these. I find it amazing what Simula provided (in 1967!)
    to support such things. Object orientation[*], coroutines, etc.,
    all fit together, powerful, and in a neat syntactical form. - But
    "no one" is using Simula, and my friend was using C++; don't know
    what C++ supports in that respect today. I know that he implemented
    the "simulation" parts (queuing, time-model, etc.) in C++ himself.


    [*] It was the language who invented Object Orientation [...]

    No, it wasn't. First, programming in a language with classes and
    objects does not imply object-oriented programming. Second, the
    underlying ideas of object-oriented programming pre-date Simula 67
    by five years or more. That history has been pointed out by
    Alan Kay, who is the originator of the term and is responsible
    for pioneering the concept.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Michael S on Wed Dec 4 19:53:38 2024
    Michael S <already5chosen@yahoo.com> writes:

    On Fri, 22 Nov 2024 00:04:32 -0000 (UTC)
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:

    Yes, Simula pioneered OO. But the concept has gone in different
    directions since then. For example, multiple inheritance, metaclasses
    and classes as objects -- all things that Python supports.

    What I read seems to suggest that Smalltalk had bigger influence on
    modern twists of OOP. But then, may be Simula influenced Smalltalk?

    There is no question that Simula had an influence on the development
    of Smalltalk; Alan Kay has said as much -

    https://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en

    But the ideas of object-oriented programming came before Smalltalk
    (and also before Simula). It was the ideas underlying object-oriented programming that influenced the Smalltalk language, not the other way
    around. (To be fair here I should add that other factors undoubtedly influenced Smalltalk as well.)


    Anyway, I don't like OOP very much, esp. so the version of it that was
    pushed down our throats in late 80s and early 90s.

    Almost everyone who took Simula and C++ as the archetype for OOP
    never understood it.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Tim Rentsch on Thu Dec 5 12:41:35 2024
    On 05.12.2024 02:07, Tim Rentsch wrote:
    Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:

    Actually, if you know Simula, coroutines are inherent part of that
    language, and they based their yet more advanced process-oriented
    model on these. I find it amazing what Simula provided (in 1967!)
    to support such things. Object orientation[*], coroutines, etc.,
    all fit together, powerful, and in a neat syntactical form. - But
    "no one" is using Simula, and my friend was using C++; don't know
    what C++ supports in that respect today. I know that he implemented
    the "simulation" parts (queuing, time-model, etc.) in C++ himself.

    [*] It was the language who invented Object Orientation [...]

    No, it wasn't. First, programming in a language with classes and
    objects does not imply object-oriented programming.

    It does not necessarily imply it. But if you'd know some more about
    it you might understand that it's the natural way of thinking when
    simulating systems' objects, and modeling object structures. Simula
    in a natural way provided the platform to program object oriented.
    (As said, without coining the term or speaking about "OO".)

    Second, the
    underlying ideas of object-oriented programming pre-date Simula 67
    by five years or more.

    Of course the ideas were there before Simula was released in 1967;
    the inventors (also publicly) presented their ideas five years ago.

    That history has been pointed out by
    Alan Kay, who is the originator of the term and is responsible
    for pioneering the concept.

    Yes, the Simula "OO" pioneers didn't invent the *term* "OO", but they
    were (amongst) the first who spread the ideas and the first inventing
    a language to model OO and work with the OO concepts that are still
    used and implemented in many other OO languages nowadays.

    (All the rest is [IMO] no more than dogmatic or marketing.)

    If you have some substance on the topic I'm always interested to hear.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Tim Rentsch on Thu Dec 5 12:21:50 2024
    On 05.12.2024 04:53, Tim Rentsch wrote:

    Almost everyone who took Simula and C++ as the archetype for OOP
    never understood it.

    LOL.

    (Funny [dogmatic] statement, without any substance again.)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Brown@21:1/5 to Janis Papanagnou on Thu Dec 5 16:06:22 2024
    On 05/12/2024 12:21, Janis Papanagnou wrote:
    On 05.12.2024 04:53, Tim Rentsch wrote:

    Almost everyone who took Simula and C++ as the archetype for OOP
    never understood it.

    LOL.

    (Funny [dogmatic] statement, without any substance again.)


    If you take the position that Alan Key, as the person who is credited
    with inventing the term "object oriented programming", gets to make the definition of what OOP is, then Tim's statement is accurate. Originally
    OOP meant something very different from how it is interpreted in C++.
    (I don't know Simula except by reputation, so I can't comment on that.)

    The original idea of OOP was to have self-contained "objects" that
    communicated only by passing messages. If object A wanted object B to
    do "foo", it would not call "B.foo()" in its own context, as is done in
    C++. Instead, it would pass a message "foo" to B. What B does with it,
    and when, is up to B. If a return value is expected, then B will send a message with the answer back to A.

    This is, I think, akin to the modern "actor" programming paradigm, and
    it has connections back to Hoare's CSP (which has inspired many systems
    and languages, most recently Golang). It gives you a robust, modular
    system with great scalability - objects can run on different cores or
    threads, or different computers connected by a network. Data races and
    other concurrency issues are pretty much impossible. Different parts of
    the program could be changed at run-time.

    Of course, all this has significant overheads - it is not suitable for a low-level high efficiency language. The rather different idea of OOP represented by languages like C++ can be very much more efficient, which
    is why it caught on.

    Perhaps the language that is most true to the original idea is Erlang,
    with its "write once, run forever" motto.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to David Brown on Thu Dec 5 17:14:43 2024
    On 05.12.2024 16:06, David Brown wrote:
    On 05.12.2024 04:53, Tim Rentsch wrote:

    Almost everyone who took Simula and C++ as the archetype for OOP
    never understood it.

    If you take the position that Alan Key, as the person who is credited
    with inventing the term "object oriented programming", gets to make the definition of what OOP is, then Tim's statement is accurate. Originally
    OOP meant something very different from how it is interpreted in C++. (I don't know Simula except by reputation, so I can't comment on that.)

    (For the topic discussed here I think it would be necessary, or at
    least helpful, to know Simula, though.)


    The original idea of OOP was to have self-contained "objects" that communicated only by passing messages. If object A wanted object B to
    do "foo", it would not call "B.foo()" in its own context, as is done in
    C++. Instead, it would pass a message "foo" to B. What B does with it,
    and when, is up to B. If a return value is expected, then B will send a message with the answer back to A.

    (see below)

    This is, I think, akin to the modern "actor" programming paradigm, [...]

    Of course, all this has significant overheads - it is not suitable for a low-level high efficiency language. The rather different idea of OOP represented by languages like C++ can be very much more efficient, which
    is why it caught on.

    Right.


    Perhaps the language that is most true to the original idea is Erlang,
    with its "write once, run forever" motto.

    To open the knot, concerning this statement and the paragraph above
    where you formulate "original idea of OOP", is to make clear what
    each of us thinks would be crucial for "OOP".

    If the "OO properties" are what at the time the term "OO" was coined
    and associated with - which was rather late, as I think - is meant
    then it would be a very limited view, focused by the inventor of the
    *term* "OO". But the "OO" concepts - AFAICT - existed before the term.

    If I look up various Wikipedia entries I find the properties
    * Inheritance
    * Polymorphism
    * Encapsulation
    * Abstraction
    All of which have (for example) been implemented (besides some other
    features that support Object Oriented Programming) already by Simula.

    We find statements about separate, collaborating, communicating,
    objects, about objects having attributes and "methods" (functions).

    We also find statements like:
    "Simula introduced important concepts that are today an essential
    part of object-oriented programming, such as class and object,
    inheritance, and dynamic binding."

    Yet I haven't seen anyone who would dissent that Simula had been the
    first implemented OO language (released 1967).

    My (historic) experience with OO is that most people heard about OO
    only in context of Smalltalk (1972) [Alan Kay]. Their specific (but
    mostly unnecessarily introduced) terminology became common speech in
    that context. And the long existing Simula wasn't even known widely.

    As an anecdote: Decades ago there was an "OO expert" (B. Oestereich)
    who gave (in the upcoming flourishing OO days of C++) speeches at IT
    boards, he wrote books about the topic, gave interviews, and so on.
    His first book started with on overview of the OO languages (with
    Smalltalk as the root), and its descendants, and where it influenced
    other languages. - I sent him a mail pointing to Simula (as being,
    if not the root of all, at least the first OO language). Cautiously
    he asked me about its features and conceded that his picture was
    wrong. - The next edition of his book had that corrected.

    And the whole discussion about OO had always mostly been done with
    the worn blinkers. B. Stroustrup's mention of Simula in his books
    somewhat contributed to get a more open minded view on OO, what it
    is, and who has its most merits.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Rentsch@21:1/5 to Janis Papanagnou on Sat Dec 7 10:18:53 2024
    Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:

    On 05.12.2024 02:07, Tim Rentsch wrote:

    Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:

    Actually, if you know Simula, coroutines are inherent part of that
    language, and they based their yet more advanced process-oriented
    model on these. I find it amazing what Simula provided (in 1967!)
    to support such things. Object orientation[*], coroutines, etc.,
    all fit together, powerful, and in a neat syntactical form. - But
    "no one" is using Simula, and my friend was using C++; don't know
    what C++ supports in that respect today. I know that he implemented
    the "simulation" parts (queuing, time-model, etc.) in C++ himself.

    [*] It was the language who invented Object Orientation [...]

    No, it wasn't. First, programming in a language with classes and
    objects does not imply object-oriented programming.

    It does not necessarily imply it. But if you'd know some more about
    it you might understand that it's the natural way of thinking when
    simulating systems' objects, and modeling object structures. Simula
    in a natural way provided the platform to program object oriented.
    (As said, without coining the term or speaking about "OO".)

    I've been doing object-oriented programming, as explained by Alan
    Kay, since the late 1970s. I've written code in Simula 67, three
    different versions of Smalltalk, and C++. C++ is a pale shadow
    of Simula, and Simula is a pale shadow of Alan Kay's vision of
    object-oriented programming. People who think programming in C++
    or Simula encourages object-oriented programming don't understand
    the term.

    Second, the
    underlying ideas of object-oriented programming pre-date Simula 67
    by five years or more.

    Of course the ideas were there before Simula was released in 1967;
    the inventors (also publicly) presented their ideas five years ago.

    The key ideas underlying object-oriented programming were not done
    by the people who developed Simula.

    That history has been pointed out by
    Alan Kay, who is the originator of the term and is responsible
    for pioneering the concept.

    Yes, the Simula "OO" pioneers didn't invent the *term* "OO", but they
    were (amongst) the first who spread the ideas and the first inventing
    a language to model OO and work with the OO concepts that are still
    used and implemented in many other OO languages nowadays.

    You are confusing programming with classes and objects as being
    the same as object-oriented programming. It isn't.

    (All the rest is [IMO] no more than dogmatic or marketing.)

    If you have some substance on the topic I'm always interested to hear.

    Let me offer some stories out of my own experiences.

    In the mid 1970s, I listened to Alan Kay teach his class, over two
    years, officially titled Philosophy of Computing but unofficially
    titled The Alan Kay Mystery Hour. A lot of times I was baffled by
    why he was talking about what he was saying, but I understood what
    he was saying. At least that's what I thought at the time. I might
    add that there was no direct explanation of either the Smalltalk
    language or object-oriented programming -- both were mentioned but
    pretty much only in passing. My reaction then was mostly that here
    is another guy with a favorite language but programming languages
    are all basically the same. (I had already been exposed to Simula
    before taking Alan's class.)

    A year or so after finishing Alan's class, I took a class titled
    (IIRC) "Object Oriented Programming", taught by three graduate
    students who had worked in Smalltalk (which at the time must have
    been Smalltalk 76). The course was basically how to program in
    Simula as though it were Smalltalk. I was already proficient in
    Simula before starting the class, and had no trouble following
    what they were saying, programming-wise. But in one class hour
    something interesting happened. Someone asked a question, and
    the answer blew my mind. It was an epiphany. Suddenly lots of
    the things that Alan had said fell into place; my perspective
    had changed. For two years Alan had been talking over my head,
    and in fact so far over that I hadn't even realized it.

    Later, in the early-to-mid 1980s, I went to graduate school at
    the University of North Carolina. While there I had some
    conversations with Fred Brooks about (among other things)
    object-oriented programming. I tried to give an example that
    would let him understand the idea I was trying to explain. I
    could see by his reaction that it didn't help; the idea hadn't
    gotten across. A year or two later one of the groups in Fred
    Brooks's programming projects course (I don't remember the
    official title) chose to do their project in Smalltalk. During
    the end-of-course review/demonstration, a question about was
    asked about changing the behavior of one part of the program
    (which had a visual representation so it could be seen as soon as
    the change was done). The person demonstrating said the change
    could be made in two minutes. When Brooks prompted with "Let's
    see", the demonstrator made the change on the spot. That made a
    strong impression on Fred Brooks; he looked over at me with an
    expression that said "there really is something to what you've
    been saying".

    That demonstration was possible not because of classes and
    objects but because Smalltalk embodies the principles of
    object-oriented programming.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Keith Thompson on Sun Dec 8 03:52:52 2024
    On 2024-12-07, Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:
    Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
    [...]
    People who think programming in C++
    or Simula encourages object-oriented programming don't understand
    the term.

    Or they use the term differently than you do. Language is not static.

    Obviously, the term they don't understand is "encourages", not "object-oriented".

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)