An interview with Barbara Liskov
quantamagazine.org
quantamagazine.org
Love the way she put this. Good software design is a process of coming up with layers of vocabularies that most expressively describe what needs to be described, until you hit the bedrock of something that already exists that you can hand the rest off to.
You have to consider the hardware if you want any amount of efficiency. You should consider your 'wishful thinking', because those wishes sometimes come true (not always, but often enough that its worthwhile to think about the ideal)
"An interview with Barbara Liskov. Accept no substitutes."
But the pedants like me would have crept up to say "but Liskov tells us we can accept substitutes".
Basic explanation of this claim: she invented CLU, the first language without goto statements.
Related to CLU: It introduced a lot of concepts together in one language. "Key contributions include abstract data types,[6] call-by-sharing, iterators, multiple return values (a form of parallel assignment), type-safe parameterized types, and type-safe variant types." [1]
Liskov also has other contributions[2]. Per the article, she says herself in the early days there were a lot of big problems to solve, so it was somewhat easier to make a "big" contribution.
It's interesting to look at where many modern concepts came from. It would be interesting to dig in to these a little more. Time is the one resource that's hard to come by though.
[1] https://en.wikipedia.org/wiki/CLU_(programming_language) [2] https://en.wikipedia.org/wiki/Barbara_Liskov
"FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES WITHOUT KNOWING IT." - https://web.archive.org/web/20151128004108/http://www.object...
https://news.ycombinator.com/newsguidelines.html
https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
Fun to see liskov mention that when so few, if at all, of the oo World thought this way.
https://dl.acm.org/citation.cfm?doid=62139.62141
And later developed into the Liskov Substitution Principle (`94): https://www.cs.cmu.edu/~wing/publications/LiskovWing94.pdf
Over the next 20 years, people would be writing about bad examples like "Class Car extends class transportation", but the fundamentals of good OO-programming were laid out by Liskov pretty early on...
Like some of the other comments, I loved how she expresses her thoughts about computing in this article, e.g: "In my version of computational thinking, I imagine an abstract machine with just the data types and operations that I want..." (reminds me of Norvig/Graham talking about Lisp). But I don't like this article overall because I think it takes cheap shots at men in computing.
"I’m worried about the divorced couple in which the husband publishes slander about the wife, including information about where she lives." When I first encountered this statement, I thought it was being unnecessarily specific but didn't think anything else of it. After finishing the rest of the article, I think it was a purposeful choice, and in the current environment, I don't think it's a fair statement to make. A male making the opposite statement would likely be called out, so I'm calling her out here.
"At Berkeley, I was one of one or two women in classes of 100. No one ever said, “Gee, you’re doing well, why don’t you work with me?” I didn’t know such things went on. I went to graduate school at Stanford. When I graduated, nobody talked to me about jobs. I did notice that male colleagues, like Raj Reddy, who was a friend of mine, were recruited for academic positions. Nobody recruited me." She didn't say this explicitly, but my interpretation is that she's using this as evidence of a gender bias in recruiting. Clearly, gender bias is one possibility, but what about giving people the benefit of the doubt? There are other more charitable explanations (somebody who understands conditional probability better than me could comment on this situation from a probabilistic perspective).
"Back then, advisers placed graduates through deals with departments around the country.
Yes, but nobody made deals for me. In the ’90s, I went back to Stanford for a department celebration. A panel of the old professors, without knowing what they were doing, described the old boy network. They said, “Oh, my friend over there told me that I’ve got this nice young guy you should hire.” It was just how it was. They were clueless. They talked about a young woman who did so well because she married a professor! Clueless. Another colleague had a pinup in his office. I asked him, “What’s that pinup in your office?” Clueless." I love her directness here, but on the other hand her choice of words suggests to me that she has a chip on her shoulder, something I wasn't expecting from somebody so accomplished!
This reminds me of how greatly our beliefs affect our perception of the world, like in the beginning of a relationship when everything seems perfect, but after a fight, suddenly even the smallest things about your partner start to annoy you. The quirkyness of their laugh, or the way they chew their food – how did I miss how annoying that was before? But in reality they didn't change at all – only my perceptions did, because I no longer liked them.
"Even so, is it correct that there were approximately 1,000 faculty members when you started at MIT, only 10 of whom were women?
That was my recollection.
So there was progress, but …" I don't like the use of the word "progress" here, but I realize that is potentially another highly flammatory discussion. Here, it's just more evidence that this discussion is politically charged.
"My sense is that all scientific fields have failed to recognize some foundational contributions by women.
In the 10 years before I was head of computer science at MIT, the department identified only one woman worth hiring. When I was the head [from 2001 to 2004], I hired seven women. We didn’t scrape the bottom of the barrel. All three junior women I hired are outstanding. There was a long period of time where women were not considered at all." Is that last sentence meant to be taken literally? I would be surprised if it were true. I'm ignorant of the goings-on at these levels, but I have faith that the majority of people involved in these decisions (around the time that she's referring to) were not sexist (the mere fact that she became the department head is evidence of this). I would also be interested in more details about why she was successful in hiring women compared to the previous head.
The big tech companies are making an effort to hire more women. One way they do this is by recruiting heavily at events where there are a preponderance of women. Somehow, this is seen as not being discriminatory, but I disagree. It's like there's two separate lines of applicants, and by choosing to focus on one, the people in the other line are hurt (and to be clear, my position is that I'd rather gender not be part of the equation at all, at least for tech jobs).
I could go on about the article, but I think I've made my basic point.
I also realize that I'm subject to the same biases that I allude to above. I too have a chip on my shoulder because I believe I was unfairly accused of being a sexist at work. As a result, I've become highly sensitive around this topic (e.g. I followed the James Damore events very closely) and I too view things through an (even more) distorted lens.
I thought this was interesting, because like 10 years ago I had never really heard of her distributed systems work, and kindof thought of Liskov as a one-hit-wonder. But now in the last few years PBFT is suddenly pretty hyped, because it's a key part of a bunch of new blockchains, so maybe she was far ahead of the curve...
Perhaps re-title this to "An interview with Barbara Liskov, The Architect of Modern Algorithms"
Among other reasons, it interrupts the reflexive circuits and gives time for the reflective ones to kick in. https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
I don't know who half the people are who are mentioned on the HN front page. On the one hand, I'd like it if every person mentioned in a title had a description of who they are. On the other hand, that's overkill for a lot of famous people, so you've gotta draw a line somewhere.
The root cause probably is that the author does not understand the ideas well enough, so he/she is urged to overblown the implications...
With that background I wouldn't expect expectise in programming or programming language history. It seems like the latter is actually sort of an actual academic field, albeit a bit small.
https://www.amazon.com/History-Programming-Languages-Thomas-... (including a chapter on CLU/Barbara Liskov) is a fantastic collection of papers from the "ACM/SIGPLAN Second History of Programming Languages Conference".). It was my first purchase from Mr Bezos' UK online book store some time in 1999 or so; I think.
This is her paper from that book:
"The language, CLU (short for “cluster”), relied on an approach she invented — data abstraction — that organized code into modules."
Let's ignore how preposterous it is to claim you invented data abstraction and move to the module claim... that a simple search for "who discovered programming modules" shows:
"The Modula programming language ... by Niklaus Wirth, the same person who designed Pascal. The main innovation of Modula over Pascal is a module system, "
And it seems others were thinking the same way: 'After you won the Turing Award, a comment appeared online saying, “Why did she get this award? She didn’t do anything that we didn’t already know.”'
Not sure what to think here but I never heard CLU was the first to add modules. I'll just leave it at that.
It's not exactly fair to blame a researcher for the overhyped claims made on their behalf by a popular science writer.
This is not only distasteful but false.
First, modules in Modula were primarily about scope not abstraction.
Liskov pioneered a core aspect of abstraction which, among other things, allows modules to rely on abstract interfaces rather than their implementations (or a type or class rather than its subtypes or subclasses).
Abstraction only works reliably if any provably true property of a type is also provably true about its subtype.
Want to learn more? You’ll find it referenced in the literature as the Liskov Substitution Principle.
Much more important than CLU itself — groundbreaking as it was — was Liskov’s formalization of substitutability as a rigorous principle one can use to reason about the quality or correctness of an arbitrary abstraction (or model thereof).
Unfortunately the SML-Family doesn't have links to these in it's history section afaict. But ML languages didn't get modules until the standardization effort that produced standard ML.
Please let's be careful to distinguish anything Liskov claims about her own work from claims made on her behalf by a non-specialist author. Most times the latter happens, the actual subject ends up wincing over the inaccuracy. To get that wrong as a reader is to repeat the error.
It doesn't preclude others inventing before, after or at the same time. Nor the same ideas being explored in other fields earlier with other terminology or focus.
I'm sure there is some field of human endeavour that has explored and documented the same ideas in a different context much earlier.
And as others have already point out, the word "modules" is the same, but not the semantics.
> I encountered the language Mesa [… which] allowed to develop parts of a system – called modules – independently
Mesa was first released to the public in 1976, so CLU might have been slightly earlier.
Modules as a concept predate both Mesa and CLU. David L Parnas was one of the popularizers of the concept, and in one of his early papers on the subject [https://www.win.tue.nl/~wstomv/edu/2ip30/references/criteria...] his quotes show that the term was well established by 1970.
But CLU was one of the first programming language to feature abstract data types, iterators, classes, and templates. Even in the mid-80s, when I first heard about it, it seemed shockingly modern.