Since he was a college student, Damian Rouson has been fascinated by the intersection of science and computing. Computers have transformed scientific research, yet the fields still exist on separate planes. He takes on the challenge of rendering computer languages, so vital to scientific advancements, more expressive and easier to read in a new book Scientific Software Design: The Object-Oriented Way, published by Cambridge University Press this spring.
Everyone is familiar with old black-and-white photographs of physicists working out difficult theories at a blackboard. To the layperson, those cryptic equations strewn across the board look like gibberish, but to fellow scientists it is a perfectly understandable code. These scientists used common mathematical expressions that provided a concise, expressive, and clear way of communicating the intricacies of their abstract theories.
The 21st-century equivalent of the blackboard could be the computer screens that are so much a part of today’s world. Complex computer programs are used in most of today’s scientific research. However, the commonly understood mathematical symbols from 50 years ago have given way to incredibly complex computer languages that often look like gibberish even to fellow scientists. Most computer languages such as Fortran and C++ are not expressive: code written in these languages is hard to decipher even to fellow researchers.
“This book comes out of my experience as a graduate student, 15 years ago,” Damian explains. “I took a class in software engineering from the computer science department, and none of the examples used in the class had any relationship to science. By contrast, if you take scientists, even those who are computationally oriented, they really don’t talk about the writing of the program. They talk about the mathematical algorithms and it’s assumed that the translation of the basic algorithm into code—into a program—is straightforward and doesn’t deserve much discussion. They don’t get down to the practices for writing the code.”
The expressive style of programming outlined in the book provides a way to shorten the development time dramatically, because researchers can use familiar expressions, what they’d write on the blackboard. “That can be translated directly into code that runs on these massive platforms,” says Damian. “Our hypothesis is that you ultimately can get the same level of speed and scalability with the code, but you can shorten the development cycle—the time it takes you to get there.” With this book, he hopes to introduce design by way of diagramming in a way that most scientific programmers don’t currently use; a very up-to-date version of Fortran, also not yet in use by most scientific programmers; and the expressive style of programming. “The idea is to go behind the curtain and see how, by using some nice features of modern programming languages, you can give your own code the same level of expressiveness that is currently attainable with some proprietary solutions, but do so in a more open, scalable manner,” he says.
Now that the book is published, Damian is moving into a new phase of research. The first was developing the style of programming itself. The second was demonstrating that it can produce publishable science—in other words, papers that focus on the science, not the code. “This third phase is showing that we can get it to scale; that we can write, not just pretty code, but fast code; and that some of what makes it pretty also makes it fast,” he says.