Hacker News new | ask | show | jobs
by mpweiher 3912 days ago
I see where you're coming from, and in a very, very abstract sense it might be true. However, I think there are two different kinds of "abstraction" at play here. The more common is where you have a basic set of building blocks and build abstractions with them. The second is where you adjust the building blocks. That's the one that's profound...and profoundly difficult, I found.

For example, I believe to have discovered that we need a slightly more complex notion of identifier/reference/variable (I call them Polymorphic Identifiers [1][2][3]). Smalltalk says that we only need messages (procedural abstraction) to be polymorphic, identifiers and things like assignment are simple/monomorphic. SELF (another "Power of Simplicity" [4]) essentially said that you don't really need separate identifiers for things at all, all the things that look like identifiers are really message-sends. This makes a lot of sense at first glance, and at second and third. However, there are subtle problems related to the Uniform Access Principle [5], and my contention is that to solve these problems you can't layer abstractions on top, you actually have to go against the grain and make one of the fundamental building blocks (variable access, both read and write) slightly more complicated. And that you actually need the concept "variable access" :-)

Having worked with PIs for a bit now, it looks like this slightly more complicated primitive really does help solve/reduce a lot of complexities in real world systems. As far as I can tell, a lot of these complexities are fundamentally "storage" related, but that unifying abstraction is lost because the mechanisms we have available are procedural. Once you have it, you get building blocks similar to shell filters that you can combine to create variations as one-liners that would otherwise be many pages of code, similar to McIlroy's shell solution to Jon Bentley's word count challenge (6 lines of shell vs. Knuth's 12 pages of Pascal/Web) [6]

However, communicating this appears to be nearly impossible. For example, David Ungar (of Self fame) reviewed my paper and just tore it to shreds, misunderstanding not just the solution, but also the problem, and completely incorrectly claiming that Self already solves those problems. He stopped responding when I showed him the (very simple) examples demonstrating the problem in Self.

[1] http://dl.acm.org/citation.cfm?id=2508169

[2] https://www.hpi.uni-potsdam.de/hirschfeld/publications/media...

[3] http://objective.st/URIs/

[4] http://bibliography.selflanguage.org/_static/self-power.pdf

[5] https://en.wikipedia.org/wiki/Uniform_access_principle

[6] http://www.leancrew.com/all-this/2011/12/more-shell-less-egg...