Evolve or die.
That’s the immutable law of nature that says organisms have to adjust to new conditions or disappear. When it comes to computer systems, however, the evolution part of the equation hasn’t often existed. When changes come, systems often get thrown out and replaced with entirely new ones that might use ideas from an older iteration but aren’t easily adapted to a new reality.
Sam Tobin-Hochstadt hopes to give programmers that “evolve” option that has been missing.
Tobin-Hochstadt, an assistant professor in the School of Informatics and Computing, has spent his career studying programming and programming languages, and he has been developing the tools to allow future programmers to better evolve with the times. Using a system he created called Typed Racket, Tobin-Hochstadt is allowing programmers to build on the past and has influenced the design of new systems used by companies such as Facebook and Microsoft.
“What I’m most interested in is how we can evolve software over time to be better,” Tobin-Hochstadt says. “We have all these existing systems that do just about everything, and they have tons of problems. People, unfortunately, are in the position where they often have to throw these systems away in order to make progress. I want to give programmers and software developers the tools to evolve those systems over time incrementally. That’s part of what Typed Racket is about. It’s about enabling people to evolve their systems over time to become more reliable, more robust, more maintainable using type systems.”
Although Tobin-Hochstadt enjoys the challenge programming presents, he also knows that programming can grow at a much faster rate if programmers aren’t forced to return to Square One every time they look to develop a new system. Using Typed Racket, Tobin-Hochstadt will allow programmers to make their own work more efficient by offering help as the program is being written.
“Right now we’re looking at a project on how to enable people to make their systems more performant over time by giving them recommendations about what aspects of their program could run faster based on the knowledge that the systems has about your program when you’re executing it,” Tobin-Hochstadt says. “That’s a project called optimization coaching that we were awarded a National Science Foundation grant in 2014 to pursue.”
By optimizing what has already been programmed, Tobin-Hochstadt and his colleagues will help accelerate advances in programming.
By helping programmers evolve their systems over time using a number of different tools, Tobin-Hochstadt is ensuring a brighter, more efficient future for programming.