Live data from Hacker News

The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

cs.cmu.edu

1–10 of 45 posts

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#2
While there has unquestionably been some hype about objects over the years, I have too much respect for the many brilliant developers I have met in industry to believe they have been hoodwinked

A careful student of psychology and history will soon realize that almost everyone is at least partly hoodwinked about something.

http://www.paulgraham.com/say.html

That said, what's popular most often has at least some merit.

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

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#3
html version http://webcache.googleusercontent.com/search?q=cache%3Ahttp%...

I'd almost forgotten this trick, just google cache:http://www.cs.cmu.edu/~aldrich/papers/objects-essay.pdf

request: could HN do this automatically pls? (similar to how it used to provide a second link to scribd for pdf) I always prefer a html version, to assess it. If it's interesting, and diagrams/formulae are garbled, I can always get the pdf later.

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#4
post #3

html version http://webcache.googleusercontent.com/search?q=cache%3Ahttp%... I'd almost forgotten this trick, just google cache: http://www.cs.cmu.edu/~aldrich/papers/objects-essay.pdf request: could HN do this automatically pls? (similar to how it used to provide a second link to scribd for pdf) I always prefer a html version, to assess it. If it's interesting, and diagrams/formulae are garbled, I can always get the…

Didnt we just move beyond scribd?

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#5
The author contrasts "objects" and "ADTs" (abstract data types), but uses - to my mind - an improvished definition of ADTs. I've always thought of On the criteria to be used in decomposingsystems into modules (Parnas) as the key paper for ADTs, which the author cites (at [26]) but doesn't use for this purpose. Of course, different definitions are available.

The distinction the author uses is that objects can have different implementations, but ADTs can't.

From this follows a streams of motherhoods of the advantages of having different implementations.

Curiously, from my scan, he doesn't seem to mention evolution of interfaces. That is, instead of evolution being just a different implementation of an identical interface, it is much more common for something to be added: extra data, extra services, extra features. The typical approach is to leave everything the same (so that old clients still work with this new API), and strcitly only add new methods (and/or types with superset values).

My reasonably involved studies of the evolution of Java classes in the standard packages for the purposes of serialization (which must store and recreate them), showed me that in practice, it's pretty rare for an implementation to change without the interface also changing. That is, I'm claiming:

  Interface evolution is more common than implementation evolution alone.
To be clear: although implemenation evolution can and does occur (e.g. intern aspects of String recently), it's pretty rare to occur without the interface also changing. Not counting simple bug-fixes, which don't substantially change the implementation, and also not taking into account interfaces that were initially designed to have multiple implementation (e.g. collections, swing/awt, some networking classes etc), as these aren't evolution. (Though, I suppose adding a new implementation of existing interfaces e.g. LinkedHashMap (ordered map) counts as "evolution".)

This higher frequency of interface evolution may be a reflection that we get paid for features, not refactoring.

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#6
The author is accidentally promoting functional programming, without realizing it. He emphasizes "interoperable extensions" and "service abstractions" but what he's really describing are functional type signatures and interfaces.

His writes: "I now propose a candidate for the leverage provided by object-oriented service abstractions in design: The key design leverage provided by objects is the ability to define nontrivial abstractions that are modularly extensible, where instances of those extensions can interoperate in a first-class way." But he describes is not "object-oriented" in any sense of encapsulated data, internal state, and methods. Instead he describes the fold function, map function, and higher order functions.

The author touches on Alan Kay. Kay wrote this: "I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea. The big idea is "messaging" ... The Japanese have a small word -- ma -- for "that which is in between" -- perhaps the nearest English equivalent is "interstitial". The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be."

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#7
post #3

html version http://webcache.googleusercontent.com/search?q=cache%3Ahttp%... I'd almost forgotten this trick, just google cache: http://www.cs.cmu.edu/~aldrich/papers/objects-essay.pdf request: could HN do this automatically pls? (similar to how it used to provide a second link to scribd for pdf) I always prefer a html version, to assess it. If it's interesting, and diagrams/formulae are garbled, I can always get the…

Didnt we just move beyond scribd?

Sorry, I don't understand what you mean. I'm not suggesting scribd...

Google cache is not scribd; it's plain html and not heavy javascript. I only referenced scribd as an additional link automatically added that had been done before, so it's not a biggie implementation-wise (maybe the old code is even still there), although I wouldn't expect it to be difficult anyway.

There wouldn't even need to be a check for if google had cached it yet - if nothing there, no harm done; and if popular, it quickly will be cached.

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#8
post #6

The author is accidentally promoting functional programming, without realizing it. He emphasizes "interoperable extensions" and "service abstractions" but what he's really describing are functional type signatures and interfaces. His writes: "I now propose a candidate for the leverage provided by object-oriented service abstractions in design: The key design leverage provided by objects is the ability to define nontr…

Do you really believe the author of a paper explicitly about investigating the technical advantages of OO which also happens to touch on Haskell and ML is simply clueless about functional programming? And this ignoramus has somehow faked his way to the position of director of CMUs Software Engineering PhD program.

This seems like a stubbornly obtuse way to not engage in the paper's arguments.

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#9
From a discussion we had about this paper, in the context of the relational logic language we are working on:

Data abstraction is an interesting topic in a language that doesn't really have data structures. ADTs are usually used to describe the allowable operations on either a data structure or some side-effectful system.

For describing data models, we have tables and (soon) integrity constraints. An integrity constraint is a rule which aborts the transaction if it produces any output. Simple integrity constraints like column types and foreign keys can potentially be removed when the compiler can prove that they will not be violated.

For derived data, rather than providing a method which returns the desired information, we define a view on the data eg instead of a getTotalSalary method we would define a rule that inserts data into the totalSalary table which is then either lazily evaluated on query or materialised and incrementally updated.

For modifying data we currently have no alternatives to directly working on the base data. There is some amount of work on bidirectional relational views but it seems like it adds a large amount of complexity for a problem we don't currently have.

We do intend to make scalar values and functions extensible, similar to http://www.postgresql.org/docs/8.3/static/xtypes.html

For side effects, we request actions by adding a row to a table that has a watcher attached. The interface is described by the set of tables available eg

    jobs started (id, input data...)
    jobs to be cancelled (id)
    jobs completed (id, output data...)
http://db.cs.berkeley.edu/papers/eurosys10-boom.pdf and http://db.cs.berkeley.edu/papers/vldb14-edelweiss.pdf describe variations on this approach. Our current editor prototype uses the Edelweiss model, which is my preferred choice if we can make it work smoothly. The main difficulty so far is in constructing stable ids to ensure that actions are idempotent.

In any case, for most protocols you need to constrain not just the types of individual messages but the allowable sequences. ADTs don't help here. Where the protocol can be described by a state machine we can simply encode that state machine in a table and have a rule that verifies message histories and provides a list of currently allowable actions.

Re: The Power of Interoperability: Why Objects Are Inevitable (2013) [pdf]

#10
post #3

html version http://webcache.googleusercontent.com/search?q=cache%3Ahttp%... I'd almost forgotten this trick, just google cache: http://www.cs.cmu.edu/~aldrich/papers/objects-essay.pdf request: could HN do this automatically pls? (similar to how it used to provide a second link to scribd for pdf) I always prefer a html version, to assess it. If it's interesting, and diagrams/formulae are garbled, I can always get the…

PDFs render inline wonderfully for me in both browsers I use without plugins.
Post reply on HN