News for hackers. Stuff that matters.
Re:Alan Kay on the misunderstanding of OOP (1998) by _asummers on Friday June 24, 2016 @08:33AM (#11969248)
What about e.g. HTTP? The dynamics of server to server communication are all about message passing (REST is just a message conveying state, if you ignore the other rules). Look at things like Erlang and Elixir processes. Akka and the actor model. Map/Reduce to a certain extent. These are all founded on the idea of giving a task out with enough information that the worker can reasonably go and work on the task without having to look around for state. Also look at things like FRP and more event driven architectures. While not ThingA sends message to ThingB, ThingA still broadcasts a message, possibly containing the relevant state.

Also almost forgot. Look at the wealth of message queues that exist (RabbitMQ, ActiveMQ, SQS, Kafka, ... the list goes on).

Re:Alan Kay on the misunderstanding of OOP (1998) by pacala on Friday June 24, 2016 @08:50AM (#11969387)
Message passing implies one way broadcast. Think GOTO. HTTP is a request / reply protocol, i.e. a function call. Map / Reduce is an implementation device for SQL-like collection-based processing, modern Map / Reduce systems [Google's Flume / Dataflow] offer directly the collection API, using Map / Reduce as an implementation detail. FRP is a device for adding a collection API on top of streams of events. Collection APIs are conceptually function calls over collections [duh].

Just because your compiler uses GOTO / messaging behind the scenes to implement function calls, it doesn't follow that GOTO / messaging is the right API level for designing applications. We know this since 1968.

Re:Alan Kay on the misunderstanding of OOP (1998) by protomyth on Friday June 24, 2016 @09:18AM (#11969550)
> Message passing implies one way broadcast.

Can you explain that since its contrary to my experience. PDO and normal Objective-C methods had a return and are not one way.

Re:Alan Kay on the misunderstanding of OOP (1998) by pacala on Saturday June 25, 2016 @12:01PM (#11976768)
There are two distinct meanings mushed together under the "messaging" umbrella:

A. One way communication, aka events, goto. Very useful as an implementation concept, but generally a poor idea for structuring applications, as it makes local reasoning about code harder than necessary.

B. Polymorphism, aka closures. This is a very useful device for modularizing code, albeit, in practice, vastly overused. It also happens to trivially fall out from the concept of "first class function". To have first class functions, we need to be able to create them at any point in the program, thus we need some form of variable capture to allow value capture, which was named "closure", in the example below "function g closes over variable x". Furthermore, we need to be able to return the function value we just created and invoke it later, in the example below the invocation of q(4) actually invokes the closure of g over 3. Once we have first class functions, we can add any number of concrete syntactic sugar constructs [classes, vtables, etc, etc, etc].

   def f(x) = {
     def g(y) = {
       x + y
     }
     g
   }
   val q = f(3)
   q(4)
IMHO, the "misunderstanding of OOP" is strongly attributable to a propensity in OOP community for using ambiguous terminology to pretend it possesses some sort of silver bullet, instead of recognizing the rather elementary computation constructs obscured by said terminology. In some alternate universe, we'd use "events" and "closures", and there will be very little misunderstanding. "messaging" is a false friend between computer languages and real world experience.
Re:Alan Kay on the misunderstanding of OOP (1998) by ivan_gammel on Friday June 24, 2016 @09:29AM (#11969612)
In modern enterprise programming message is very different concept (probably more widespread, if we'll look at popularity of Java and .Net, compared to Objective-C), which is not related to OOP. It's a pattern of integration, in which systems exchange with messages through a message broker, that abstracts them from each other. By their nature such messages are asynchronous and unidirectional.
Re:Alan Kay on the misunderstanding of OOP (1998) by infinite8s on Friday June 24, 2016 @10:50AM (#11970183)
That was also the original model of messaging in Smalltalk (well, without the necessity of a broker).
Re:Alan Kay on the misunderstanding of OOP (1998) by coldtea on Friday June 24, 2016 @08:58PM (#11974645)
Smalltalk receivers returned values to the senders of the message. Plus, they were synchronous.

So, while indeed still messaging, I'm not sure about the similarity to message queues/brokers in modern enterprise, where, as the parent said "By their nature such messages are asynchronous and unidirectional".

Re:Alan Kay on the misunderstanding of OOP (1998) by coldtea on Friday June 24, 2016 @08:55PM (#11974635)
>Message passing implies one way broadcast.

Where did you see that? That's not what the kind of messages we talk about are (e.g. in Smalltalk).

Perhaps (as some other commenter said) you have modern message queues in mind?

Re:Alan Kay on the misunderstanding of OOP (1998) by ivan_gammel on Friday June 24, 2016 @08:41AM (#11969304)
HTTP is closer to RPC. You always know the address of the routine to call, so it's not actually a message (except in HATEOAS, in which you first need to learn the next address from last API call).

Closest analogy is the message queue (e.g. ESB) like Active MQ or Rabbit MQ (and the whole JMS tech), in which you do actually send a message and infrastructure does actually figure out who will receive and process it.

Re:Alan Kay on the misunderstanding of OOP (1998) by specialist on Friday June 24, 2016 @01:39PM (#11971809)
HTTP(S) is the opposite of RPC (meaning: message-based). Both SOAP and XML-RPC tried to remedy that.
Re:Alan Kay on the misunderstanding of OOP (1998) by ivan_gammel on Saturday June 25, 2016 @03:54AM (#11975606)
How exactly it is opposite?
Re:Alan Kay on the misunderstanding of OOP (1998) by specialist on Saturday June 25, 2016 @11:01AM (#11976523)
Difference between document (message-passing) and RPC styles:

http://stackoverflow.com/questions/9062475/what-is-the-diffe...

Replace SOAP with HTTP, since SOAP is just an ill-advised, unnecessary, redundant obfuscation layer on top of HTTP, and so contrast still applies.

Re:Alan Kay on the misunderstanding of OOP (1998) by kmiroslav on Friday June 24, 2016 @08:41AM (#11969311)
I was talking about programming languages.

Obviously, message passing is alive and well for network protocols.