Ada Lovelace Day: Barbara Liskov

It’s [Ada Lovelace Day](http://findingada.com/). Here’s my post:

[[wiki:Barbara Liskov]] is a pioneering computer scientist and winner of the ACM Turing Award for 2008. She’s currently head of the Programming Methodology Group in MIT’s Computer Science and Artificial Intelligence Lab.

Barbara Liskov in 1975] Back in the 70s, she designed a programming language called [[wiki:CLU (programming language)|CLU]], which established fundamental concepts about data abstraction that influence every object-oriented programming language (which, honestly, means pretty much every programming language–you heard me, Lisp weenies) being used today. Ruby, C++, C#, Java… they were all built on her work.

*I* know about Barbara Liskov mostly from the [Liskov Substitution Principle](http://www.oreillynet.com/onlamp/blog/2008/02/the_liskov_substitution_princi.html):

> Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T.

Put another way (and you probably need to know a little bit about object-oriented design to appreciate this), subtypes must always be able to be substituted for a supertype. Programmers mess this up all the time, and it makes for god-awful messes in code, which is why we need Barbara Liskov to set us straight.

[Barbara Liskov]

* [Recent NPR interview](http://www.sciencefriday.com/program/archives/200903135)
* [Dr. Dobbs interview](http://www.ddj.com/hpc-high-performance-computing/215801518)
* [Faculty homepage](http://www.pmg.lcs.mit.edu/~liskov/)
* [MIT computer science brochure from 1975](http://groups.csail.mit.edu/medg/people/psz/LCS-75/languages.html)
* [Other Babara Liskov posts for Ada Lovelace Day](http://ada.pint.org.uk/subject.php?subject=Barbara%20Liskov)