Breaking the code of Data Abstraction
Image credit: Creative Commons, Barbara Liskov MIT computer scientist by Kenneth C. Zirkel
Computer programmers today may take the idea of data abstraction — the structuring of code into discrete modules — for granted.
This modular structure makes code more manageable, and prevents changes made to one part of a programme from having unintended consequences on other parts.
But this method of programming didn’t always exist — and we have Barbara Liskov to thank for inventing it.
While at the Massachusetts Institute of Technology (MIT) in the 1970s, she developed the fundamental concepts of data abstraction and modular programming — ideas which have since influenced all mainstream programming languages in use today, including C, Java and Python.
Now an Institute Professor in the Department of Electrical Engineering and Computer Science at MIT, Prof Liskov was awarded the 2008 Turing Award — widely regarded as the Nobel Prize of the computer science world — for her fundamental contributions to programming languages and system design.
TechNews caught up with her while she was in Singapore to speak at the Global Young Scientists Summit 2017, organised by the National Research Foundation (NRF).
Q: Were you aware of the impact your work on data abstraction would have?
At the time it was just stuff I was interested in. The state of computer science was pretty chaotic [in the 1970s], but I found problems that I thought were interesting, and followed where they led me.
I knew my work on data abstraction was important, and it got a lot of interest. But I didn’t think about its impact until I got the Turing Award [in 2008]. I discovered that my students didn’t know there was a time when this stuff didn’t exist — they thought it had always been there.
So there was a huge impact, but I certainly wasn’t thinking about it.
Q: How do you think about code?
I used to envy electrical engineers who built circuits, because circuits have physical constraints—the fact that you can’t have very many wires forces you to think harder about how you interconnect things.
But software programming is totally plastic, there are no physical constraints to help programmers figure out how to organise things. You have to partition up code, or you wouldn’t be able to think about it at all; nobody can think about something millions of lines long.
If you’re implementing a data abstraction, you’re always thinking about what this piece of code is supposed to do and how to accomplish that efficiently and simply. That’s the easy part.
The hard part is — having identified that that was a module you wanted — to break up the system into modules; that’s the hard intellectual activity.
Q: What are you working on now?
After my work on data abstraction, I moved into distributed computing—looking at how to build programmes that have pieces running on different computers connected by a network. All the systems you use today are distributed — Google, for example, has millions of machines running their software. I did a lot of work inventing techniques to make sure you don’t lose your data even if machines fail.
Most recently I’ve been working on multicore computers, thinking about how to make programmes run efficiently on these kinds of parallel machines.
Q: Do you think there are still barriers for women in computer science? What can be done about it?
Yes, barriers definitely still exist. In the US, a lot of [the barriers] are societal. Computer science has a particular problem because it’s thought of as being a field for nerds.
This negative portrayal of people who work with computers reinforces the notion that it’s just not something that’s comfortable for girls.
On the other side, there’s both explicit and implicit bias [against women]. In the US you see these studies all the time, about how women don’t get paid as much as men, for example.
People in positions of power have to act to make it possible for people to succeed — at MIT for example, we pay a lot of attention to trying to make sure that there’s a level playing field
Q: What do you think are the biggest challenges in computer science today?
Security is a huge challenge. When I was doing this work [on data abstraction], we never thought about what was going to happen in the 1990s when all of a sudden there was the Internet. We were all friends.
There were no hackers, nobody malicious. The world has changed a lot, and dealing with these security problems is extremely important.
What happened with computers was a revolution, like the Industrial Revolution. When something that huge happens, it takes quite a long time for people to figure out how to cope with it.
Q: What is the future of computer science?
I worked in core computer science, with the real guts of the problem — how do you build systems that work? Today, computer science has become very interdisciplinary, and can become part of fields such as computational biology and computational physics.
Another huge difference is that artificial intelligence has made tremendous strides since the advent of new ways of doing machine learning. Computer science is a great career; if you have the proficiency and interest, your imagination is really the limit!