Comment by em-bee

1 year ago

you may want to read the whole discussion following the linked comment to understand what i learned. if you have any additional insights i'd appreciate your input.

What makes you think I didn't?

  • well, if you did, then can you please tell me what i am missing? i have written a decent amount if smalltalk code, and even held workshops teaching smalltalk to others. and i have written lots of code in many other languages.

    i did see differences. the most awesome was when i wrote some code to respond to an http request, the code failed, the http request stalled, i fixed the code live, and then the http request resumed.

    but i can do the same in pike if i tried, and i expect in lisp and other languages too.

    and if that is the case then it supports my understanding that most OO languages use message passing. where then is the great revelation that comes from smalltalk?

    • >> i can't tell the difference

      > i did see differences.

      Spot the difference. ;-)

      > but i can do the same in pike if i tried, and i expect in lisp and other languages too.

      Absolutely you can! You can even do it in C: write yourself a message-passing library in C. You might want to call it Objective-C. Or do a VM for Smalltalk.

      > where then is the great revelation that comes from smalltalk?

      The claim was not that the great revelation came from Smalltalk, but that it came from message passing:

      >>> Message passing belongs up there with lisp, forth and pure functional programming as paradigms that are worth learning for "the profound enlightenment experience you will have when you finally get it."

      Smalltalk isn't even mentioned in that little section about the enlightenment.

      And in fact, Smalltalk's form of message-passing is pretty limited, it only just extends beyond method invocation and it certainly can be (and is) frequently used just like method invocation. If you want to do more sophisticated things, you mostly have to go via the DNU handler, which is a bit hacky.

      And in fact, Alan Kay's famous OOPSLA '97 quip "I made up the term object oriented. And I can tell you I did not have C++ in mind." was followed immediately with the slightly less famous "So, the important thing here is: I have many of the same feelings about Smalltalk". https://www.youtube.com/watch?t=634&v=oKg1hTOQXoY&feature=yo...

      And even message-passing is much broader: for example, with Higher Order Messaging, you can control how messages are delivered: to collections, on different threads, delayed, distributed (combine distributed + delayed and you get TeaTime/Croquet), conditionally only if the receiver understands the message, etc.

      https://en.wikipedia.org/wiki/Higher_order_message

      https://www.youtube.com/watch?v=GBtqQwcJoN0

      And even that just scratches the surface. When you look at something like the Enterprise Integration Patterns, that's distributed asynchronous messaging, which opens up a whole other universe. Also: Erlang.

      https://www.enterpriseintegrationpatterns.com

      https://stackoverflow.com/questions/3431509/is-erlang-object...

      5 replies →