An article authored by a group including Sam Tobin-Hochstadt, an assistant professor at the School of Informatics, Computing, and Engineering, landed on the cover of a recent edition of Communications of the Association for Computing Machinery magazine.
Tobin-Hochstadt is an expert in the Racket programming language, a general-purpose language that allows users to, on a per-component basis in their system, select a language in which a program will be written. Racket lets users create domain-specific languages without the trouble of creating an entirely new language for each use. The cover article, “A Programmable Programming Language,” was co-authored by Matthias Felleisen (a 1987 alum of the computer science program at SICE), Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, and Jay McCarthy.
“It’s great,” said Tobin-Hochstadt, whose article graced the March edition of CACM. “There’s not an opportunity in other parts of computer science to have your work on the cover of a journal, so it’s definitely a nice honor. It demonstrates that the discipline recognizes the importance of this work, and that’s a significant trend. It shows the significant impact that we’ve had on the field.”
The article spells out how, in an ideal world, “software developers would analyze each problem in the language of its domain and then articulate solutions in matching terms,” allowing them to communicate with domain experts and separate problem-specific ideas from the details of general-purpose languages and specific program design decisions. Unfortunately, in a real-world setting, programmers are forced to use a mainstream programming language that doesn’t always fulfill their needs, and they often resort to building their own domain-specific languages that are embedded into the chosen programming language.
The process is tedious—programmers must do the legwork of stepping outside of the chosen language to set up configuration files, run compilation tools, and link in the resulting object-code files. Racket eliminates the need for much of the creation process of new languages and helps the domain-specific language efficiently run in the chose language.
“You can make writing systems easier by customizing your programming language to make individual pieces easier,” Tobin-Hochstadt said. “A new programming language doesn’t have to be created because you think a million people are going to use it for 10 million different programs. It’s because you’re going to use it for one program. If it can make your one program easier or faster or more maintainable, than it’s totally worth it to invest in the creation of that new abstraction in the form of a new language. That’s enabled if you can make creating new languages really, really easy, which is what we’ve tried to do with Racket.”
Racket was first developed in the mid-1990s, and it has gained importance recently with the rise of big data.
“Every single program or business has its own customized data that it uses,” said Amr Sabry, chair of the Department of Computer Science at SICE. “You can’t write a different programming language for every one of those. (Racket) is a programmable programming language. It’s a language you can program to design other languages quickly to match the domain that fits your data. It’s an abstract idea, but it has huge potential.”
The CACM article will create exposure for Racket, which can lead to wider usage and more developments.
“To be accepted to the magazine is an honor, and we’re thrilled with the work Sam has done in the area,” Sabry said. “This is a publication everybody in computer science sees, and to be on the cover is huge. One of the germs of this idea 20-plus years ago arose out of our program, and we teach the philosophy behind Racket in our classes. It’s wonderful to see the recognition the concept is receiving in such a prestigious publication.”
For more information on programming languages at SICE, visit our website.