Recently, the register, a British technology website, interviewed Barbara Liskov, a professor at MIT. Barbara won the Turing Award for her contribution to programming language and system design in 2009. In this interview, Barbara summarized and reviewed her early work in creating clu programming language in the 1970s and published some latest opinions on clu programming language.
Barbara will also deliver a speech as a special guest at the upcoming cncc2021 (China Computer Conference). In order to help participants better understand Barbara’s latest research and Thinking on programming ideas,Ozmca review hereby compiles the article of the register.
It has been 12 years since Barbara Liskov won the Turing Award for her contribution to programming language and system design. Recently, she published some new insights on clu programming language: why is programming still cool? Liskov, now in his 80s, is leading the programming methodology group at MIT. Recently, she has been studying parallel computing.
In the 1990s, she developed Byzantine fault tolerance with a student. Now she says it is of great significance to a world full of blockchains. In recent years, with the emergence of clu on GitHub, people’s attention has turned to the early work of Liskov master and apprentice when they created the language in the early 1970s. Today, let’s talk in detail about why programming is still important today.
Traditional programming does not trace back to error, nor does it have generics
When clu started, the state of the whole programming language was too poor, and many things needed innovation. For example, we have to face the problem of generics. Before the concept of abstract data types, generics were actually needed. If you write a sort routine, you don’t want to rewrite it when replacing different types of arrays.
Then exception handling. Liskov recalled the debate about the recovery model and alternatives: “the question is, after the exception is thrown, does control then return to the code that raises the exception, or just end the code? “If there is no way to separate a single exception from the mainstream, the more difficult it is to track the bugs that often appear far away from the error source. Unfortunately, this situation still happens today, and you need to debug one by one.
Data abstraction is a big thing, and everything else comes with it. Liskov said, “if you look back at what happened in Java in the 1990s, they wanted to use parameter polymorphism, but they didn’t do it and never wanted to optimize exception handling.”.
Invent a new computer language
Liskov felt that the modern programming language lacked foundation and could not support the whole modern application software industry, so he focused on the research of clu and led the students to participate in it. However, by the end of the 1970s, there was a fork in the road of scientific research: either try to commercialize the language or stick to research. Liskov chose research, “In my group, no student wants to start a business“
Until now, Liskov has been praising her students Russ Atkinson, Alan Snyder, Craig schaffert and Stephen zilles. The latter was also at MIT and worked with her to improve the basic concepts of clu in 1973. Bob scheifler, Eliot moss and Toby bloom also appeared in the clu reference manual in October 1979.
She pointed out that what is happening now is the same. Now it is a relatively simple process to put things online and establish a think-tank community. But in the 1970s, you had to be affiliated with a company, but even so, it was difficult to get start-up funds. It didn’t get better until the early 1990s. In other words, the essence of clu is that it didn’t accept everything, which has plagued it for many years Once a language runs, it begins to generate legacy problems, so you have to continue to support all the code you have written. This creates a burden“
In the past 20 years, most of the development work Liskov has participated in is related to C + +. She said, “program development is no longer completed in machine language. This is a great progress. Just by raising the level of abstraction, the principle of modularity has been well understood“
However, until today, what Liskov has always wanted to change is that the language is forced to implement encapsulation. However, when people build some low-level platforms, they must violate encapsulation. Liskov believes that encapsulation is the key work of programming methods – modularization, that is, binding data and data processing methods into a single unit, and limiting internal access to data in these methods. This is different from having the compiler enforce it.
However, other aspects have also improved. Today’s huge storage capacity means that “compactness” can put “elegance” in the second line when designing modules compared with the storage capacity available in the 1970s. We always want it to be available, but as simple as possible.
Liskov is still passionate about programming and technology. She said: “programming and software engineering are still an exciting profession. I think we should remember the difference between interface and implementation and define behavior and implementation separately.” if you don’t use mandatory encapsulation language (unfortunately, most languages are mandatory encapsulation) , then you must force encapsulation by yourself, which helps to maintain the integrity of the blockchain system. Broadly speaking, objects of superclasses should be replaced by objects of subclasses without damaging the application. “