"When you design a programming language, you need to give semantics to it, you need to explain how the language is going to work. For that we use mathematics. We explain the behavior of the language using a mathematical formula."
Assistant professor of computer science
How many languages do you speak? Chances are, the desktop, laptop, smartphone or other device you are using to view this article understands more. Just as there are many human languages, each suited to the culture in which it was developed, so there are more than 1,000 programming languages today, each developed for and best suited to a specific task. In fact, each piece of software on your computer may have been written in a different language.
Figuring out the best way to design a new programming language is the theoretical realm of computer scientist Benoit Razet. "There are so many design choices involved in programming languages, and that is why in class we study different families of programming languages," Razet says. Working at the intersection of logic, mathematics and computer science, Razet studies the models of computation that underlie the code used to give computers instructions. "When you design a programming language, you need to give semantics to it, you need to explain how the language is going to work," Razet says. "For that we use mathematics. We explain the behavior of the language using a mathematical formula."
Razet has worked on one such model of computation originally developed by Samuel Eilenberg in the 1970s, before computers were in such widespread use. Today Razet uses a type of software called a proof assistant to elaborate on the model.
"I translated this model of computation described in a book into this proof assistant, which was checking that the proof was correct and that the mathematical definitions are sound," Razet says. "This brings a high level of confidence in the result, because the proofs are not checked by humans, they are checked by computer."
Proof assistants are not only free from human error, but they also can do more complex computations faster than people can. "With these tools you can reach mathematical results that are not accessible otherwise, because you can do bigger proofs," Razet says.
Combine those advantages with the ability to readily share work digitally, and the scope of possibility is huge. Razet draws a parallel with a popular online encyclopedia: "Wikipedia is great because it is not one person writing it; people all over the world write and enrich the library of knowledge," he says. "The goal of this software is to develop libraries all over the world, building on what other people have done."
Posted October 2012