Future of Coding • Episode 58 Richard P. Gabriel •...
# share-your-work
i
Future of Coding • Episode 58 Richard P. Gabriel • Structure of a Programming Language Revolution 🔗 https://futureofcoding.org/episodes/058 Today we’re discussing the so-called “incommensurability” paper: The Structure of a Programming Language Revolution by Richard P. Gabriel. In the pre-show, Jimmy demands that Ivan come right out and explain himself, and so he does, to a certain extent at least. In the post-show, Jimmy draws such a thick line between programming and philosophy that it wouldn’t even look out of place on Groucho Marx’s face. Next episode, we will be covering the Worse is Better family of thought products, so take 15 minutes to read these three absolute bangers if you’d like to be ahead of the game: • The Rise of Worse is Better by Richard P. Gabriel • Worse is Better is Worse, definitely not by Richard P. Gabriel • Is Worse Really Better? by Richard P. Gabriel Also, note that I'm taking this episode as an opportunity to start a little community fundraiser for St. Jude Children's Research Hospital. They're doing unbelievable work to end childhood cancer, including offering free treatment and covering the travel, food, and housing costs of the families who come to St. Jude for care. Their research has helped raise the survival rate of childhood cancer from 20% to 80% over the past 50 years. If you'd like to support this fantastic cause, donate here to be part of the FoC campaign. Thank you.
j
I was excited to listen to you interview with rpg, and especially looking forward to the part where you two talked guitars (he's an avid player), but then...
i
My newfound asceticism means I will only interview someone who plays bulbul tarang in a CoffeeScript gang. Perhaps, in a moment of weakness, I might interview an autoharpist / Rubyist, or a hurdy-gurdy-er / AppleScripter. But that's as far as I can be stretched.
w
The difference between programming system and programming language cultures is one we see come up here on FoC frequently since live programming people are overrepresented niche here. It's a deeper difference than say, the difference between static typing and dynamic typing, since liveness has a bigger influence on the practice, on what you do while you're working, and on what artifacts you're working on. There seems to be an awkward spot where people think they're in the same culture when in fact there are fundamentally different assumptions. Bigger differences would be more obviously incommensurable. The way a data analyst works, even as programming comes up as part their job, is radically different than a software developer. With smaller differences people can directly compare the tradeoffs. An IDE helps with this, but a generic text editor is more flexible like that. Incommensurability comes when there are significant, hidden differences in focus.
k
Something that the philosophical parts of the episode have hinted at but not named is perspectival realism, which I think is the most up-to-date approach to the philosophy of science.
I really enjoyed this episode, with its in-depth analysis of a paper that I vaguely remembered, having read it many years ago. An aspect I have never really seen discussed in the language-vs.-system debate is the fact that any "program" written in a "language" is necessarily embedded into a computing "system". A PC running Linux is as much a computing system as a Lisp or Smalltalk environment, just designed with very different priorities in mind. I'd love to see "systems" people acknowledge that well-defined subsystems with provable properties can be very useful to have. And "language" people acknowledge that their language necessarily has an interface to the outside world, and depends on support tools that live in an embedding system. From that point of view, they could perhaps even talk to each other.
k
Yeah, I had a similar reaction. The systems vs languages divide or OS vs compiler people divide has existed long before 1990, so treating it as an instance of a Kuhnian revolution is likely to lead one astray. One side didn't come after the other.
I think the claim of incommensurability is a bit overblown. Here's a random PhD thesis from 2002 (so a decade before RPG's paper) about mixins that I just happen to be aware of because I sat in the cubicle next door and helped proofread it and attend practice talks: https://www.cs.utexas.edu/~lin/papers/richcar.pdf Here's what it says about mixins in Section 2.3.2:
The term mixin was first used to describe a style of LISP programming that combines classes using multiple inheritance [Moon, OO with Flavors]. Since then, however, mixins have been more commonly defined as types whose supertypes are declared parametrically [Bracha and Cook, Mixin-based inheritance], and it is in this sense that we use the term.
Here's Bracha and Cook, "Mixin-based inheritance": http://www.bracha.org/oopsla90.pdf I don't see any occurrence of the word "science" or "scientific". So I'm not sure what RPG meant by "immediately laid claim to being the first scientific paper on mixins," but the paper doesn't say that anyway. It would be kind of a weird thing to say in an academic paper. The groupthink and class warfare in academia RPG mentions is seldom written out in black and white in a paper. It's implicit in the way people characterize each other in hallways of conferences, papers chosen for publication, research projects funded, etc.
Alternative explanation for why conferences changed their names and the mix of papers in OOPSLA shifted: the AI winter. Before the winter there was a strong revolving door between academia and industry as researchers went off to create startups like Symbolics, then returned to academia. Such a revolving door has many benefits. It also has a tendency for practitioners to hype their research outside of academia, which leads to inflated expectations and, inevitably, a crash in funding. The word "Lisp" had to do some penance for a decade due to this dynamic before it was rehabilitated. It's not that different from companies changing their name after a big scandal.
Here's how Bracha and Cook defended ignoring
before
and
after
auxiliary methods:
The more complex method combination mechanisms of CLOS can also be modeled in this framework. For example, if
before
and
after
methods were distinguished then the base class, whose methods would be called after all other methods, could arrange for the last
before
method to call the primary method, and the last primary method to call the
after
method.
I think they understand CLOS just fine, even if they don't quite appreciate what it allows. Bottomline: I find the distinction between auxiliary methods and superclass parameters to be fairly minor. In either case you have some primitives that ideally include a single concern, and combination mechanisms for composing them. Both rely on programmer taste to ensure the universe of concerns is orthogonal. Yes, Bracha and Cook seem to care more about "encapsulation", something I personally don't care about. But this is more an example of Steve Yegge's liberal vs conservative programmers than two sides that speak different languages using the same words. Conservatives typically tend to have experienced larger scales where it's easier for poor abstractions to slip through into code.
Returning to the podcast, a short story recommendation on the reality of numbers: "Division by zero" by Ted Chiang.
k
I agree with @Kartik Agaram that "incommensurability" is an exaggeration. What happened is more a shift of popularity in academia than a scientific revolution. Which is also why I hope that we can come back to peaceful coexistence of the two perspectives. However, RPG is right about people talking past each other because of differences in perspective. That happens all the time, probably not just in academia, but everywhere specialization has gone a bit too far.
e
I love the new paper reading and commentary format for the show!
i
I, in turn, love all the thoughts feedback that folks (especially @Konrad Hinsen and @Kartik Agaram) are sharing. I'm reading it all and mulling it over. I don't have much to add, but I really value having other perspectives in this discussion that point to new things I can consider and learn about. That's what I enjoy about this new format — it's cause for me to up my study practice. (And, yes, fine, it's also an opportunity for me to be silly in public, and I do love that, but… carts and horses and such.)