News for hackers. Stuff that matters.
Re:Alan Kay on the Meaning of “Object-Oriented Programming” ... by archagon on Sunday November 30, 2014 @03:32PM (#8677976)
It seems to me that you can't really do message passing in most languages with high efficiency? (Objective-C and Swift being the exceptions.)
Re:Alan Kay on the Meaning of “Object-Oriented Programming” ... by rurban on Sunday November 30, 2014 @05:43PM (#8678496)
Rather the opposite. Almost all HPC (high-performance computing) systems use message passing and not shared memory. The fastest and imho best unix-like kernel L4 is entirely MP based.

So if you want to embrace high performance (and concurrent), go message passing. Alan Kay's favor of late binding does not help performance, as method lookup at run-time dominates the cost then, but the fast systems are early bound, i.e. typed.

Re:Alan Kay on the Meaning of “Object-Oriented Programming” ... by seanmcdirmid on Sunday November 30, 2014 @06:59PM (#8678783)
Well, you are discounting CUDA, which has been seen as suited for many tasks when compared to MPI. Of course, you can use MPI and CUDA together (people are working on that), which you then have messaging between nodes and shared memory (via GPU-style SIMD) within.

Of course, you are probably referring to NUMA, but people still actually use that.

Pure OO isn't very much desired in the HPC world, but then neither is pure FP.

Re:Alan Kay on the Meaning of “Object-Oriented Programming” ... by Joeri on Sunday November 30, 2014 @04:25PM (#8678160)
I think it's a bit charitable to call what Objective C does to be "message passing". The messages are not asynchronous and have only a single recipient, so in practice I would say they're method calls with late binding.
Re:Alan Kay on the Meaning of “Object-Oriented Programming” ... by mpweiher on Monday December 01, 2014 @12:11AM (#8679615)
However, they can easily be made asynchronous and address multiple recipients. See Higher Order Messaging[1][2], first implemented in Objective-C[3]. So for example:

    [[myView onMainThread] setNeedsDisplay:YES];

    result = [[someObject future] someMessage:arg];

    combined = [[prefixes collect] stringByAppendingString:[suffixes each]];
The reason this is easy in Objective-C is because its brand of message passing is just (barely) powerful enough to qualify as message passing. In fact, if you squint just a little, you can see it as fully reified message passing with the common-case (a synchronous method is invoked) optimized.

[1] http://en.wikipedia.org/wiki/Higher_order_message

[2] http://www.metaobject.com/papers/Higher_Order_Messaging_OOPS...

[3] https://github.com/mpw/MPWFoundation

Re:Alan Kay on the Meaning of “Object-Oriented Programming” ... by xsmasher on Monday December 01, 2014 @12:39AM (#8679689)
At least you can redirect messages to another recipient, and write a handler for "unhandled messages." Impossible with c++, at least with standard method calls.
Re:Alan Kay on the Meaning of “Object-Oriented Programming” ... by archagon on Sunday November 30, 2014 @05:45PM (#8678505)
You can do one-to-many messages via notifications, though it's less elegant.