Nate Foster likes languages. "I did a Master's in the philosophy of language and have always enjoyed thinking about meaning, translation, and semantics," he said. "It's fun to take something complicated and understand it by breaking it down into things you understand. That's the bread and butter of what programming language researchers do."
But the languages Foster works with are for computers, not people. He likes the mix of theory and practice needed to create programming languages. "You need to have an understanding of the underlying principles, but it's not a purely theoretical field," he said. "I'm interested in building tools that will be useful to programmers, so my research also has a significant applied component."
Because programming languages are used in so many areas, much of Foster's research is collaborative. "Every computer scientist uses languages to express algorithms," he said. "I like to find problems that are difficult to solve using general-purpose languages, and design new features that make it easy to express solutions in an elegant way."
As a Ph.D student at Penn, he worked on the view-update problem, which is one of the "classic" problems in databases. It will be familiar to anyone who has ever tried to synchronize the calendar on their smart phone with the calendar on their computer. "To synchronize two replicas stored in different formats, you can convert them into a single format," Foster explained, "but then you need a way to translate the changes back to the original formats."
To describe conversions between data formats, Foster developed a language called Boomerang. Instead of having one program that translates data in one direction, and a second that translates back, a Boomerang program does both tasks. "You write one program but get two transformations, which eliminates the redundancy of writing two separate programs," he said.
Foster's work on such bidirectional languages has applications beyond synchronizing calendars. A developer at Red Hat Linux thought it might help with a tool he was building. "Red Hat supports a number of Linux applications on a variety of platforms so they have a huge configuration problem," said Foster. “They needed to convert between messy, low-level configuration files and more structured representations that could be easily manipulated by system administrators. The tool they’ve built based on Boomerang provides an easy way to bridge the gap between these representations."
Foster has recently started working on a new language that could help cloud computing by making networks more reliable and efficient. "Networks need to be resilient to everything from changing traffic loads to random failures," he explained. "Right now, most vendors only provide low-level languages for configuring networks, which makes them difficult to control. We're developing a new language that will make it easy for programmers to specify the behavior of the network, even under changing conditions."
Foster said he feels lucky to be joining Cornell's Computer Science department, which has been a leader for over 40 years. "It's one of the best departments in the country," he said. "It was an easy choice to come here."