Julia: A Solution to the Two-Language Programming Problem

Image Courtesy of Wikimedia

Matt Shamshoian

Python. C++. C. R. This blur of programming languages can get a little confusing, even for the most seasoned computer scientists.

The confusion stems from the fact that easy to use languages like Python, which weren’t designed to process large amounts of information quickly, need to be written in harder to use languages like C for data heavy tasks. This costs programmers valuable time and effort, forcing them to translate back and forth between languages and therefore increasing the odds of mistakes.

Dissatisfied and eager for something better, UCSB alumni Viral Shah and Stefan Karpinski set out to solve this problem by designing a programming language that is both fast and easy to use. Their solution is Julia.

“You’re led to believe that it’s an immutable law of nature that you can either have a programming language that’s easy to use, or fast,” said Shah in an interview with The Bottom Line. “We don’t agree with that.”

Julia, which launched version 1.0 in August, was designed to bridge the gap between languages by allowing programmers to write in Julia instead of switching back and forth between languages.

Although Julia is the most recent attempt to solve the two-language problem, it is not the first. According to Karpinski, past attempts failed due to a combination of proprietary software behind a paywall and “unusual syntax” that made the languages difficult to use.

Julia avoids those pitfalls by cultivating an open source community of collaborators, and using syntax that is easy enough for programmers who are not computer scientists to understand.

Putting Julia behind a paywall “was never even a question,” said Shah. This enables the kind of interdisciplinary collaboration that makes Julia unique.

“Some of our best contributors are economists, neuroscientists, ecologists, and people from psychology,” said Shah. “I think that’s what makes Julia what it is … in the end, we all designed it because we wanted to use it ourselves.”

Interdisciplinary contribution has been key to Julia’s success from the beginning. The collaboration between Shah, an applied scientist, and Karpinski, a data scientist, set the stage for the communication across disciplines that characterizes Julia’s community.

The team expanded when Shah brought co-creator Jeff Bezanson on board for his computer science perspective. Bezanson then introduced the team to co-creator Alan Edelman, a mathematician who eventually funded Julia and established MIT as a home base for Julia research.

Once just an idea, Julia is now used by 250,000 to 500,000 people. The language also has 2,000 collaboratively built packages, which expand functionality for field-specific applications.

Julia’s rapid growth had led to its adoption in many data-heavy applications across the world. Aviva, the UK’s largest insurer, uses the language for calculating complex risk models, while the Boston Public School District used Julia to optimize school bus routes, saving over $5 million in tax funds, according to Shah.

Julia proved its power again when NASA ran it on one of the top five supercomputers in the world, cataloging every visible astronomical light source in the observable universe for the first time in a mere 15 minutes.

The code was written by a statistician who would have never otherwise been able to write a high performance program on this scale, said Shah.

Though Julia is flying high now, its beginnings were humble. Born at UCSB’s recreation center fields over tossed frisbees and conversations about shared programming frustrations, Julia started small. Originally starting with Karpinski and Shah, the Julia team expanded to include Bezanson and Edelman, and the language slowly started taking form.

“Google had hundreds of engineers,” said Shah. “It was just the three of us trying to play around with something new.

However, that was no obstacle for the team with no shortage of time or passion. In fact, it helped them solidify their vision for the language.

“If it didn’t succeed, that was fine,” said Shah. “We were not constrained by someone’s requirements of what it had to achieve, because all it had to achieve was what we wanted it to achieve — nothing more or less.”

The team built the language of their dreams over email, sending about 29,000 emails in total  all while Shah was in India, Karpinski in New York, and Bezanson and Edelman in Boston.

Karpinski and Shah hope to see Julia expand significantly outside of its current use in technical computing, to a point where it’s taught in schools, implemented in rockets, smartphones, self-driving cars, and virtually any internet connected device. But it is hard to predict where Julia’s path might lead.

“I think it would be best not to pretend to have an idea where it’s going to go, and let the users take it in directions we can’t imagine,” said Shah.

Though Julia aims to solve the two language problem once and for all, there will likely never be one ultimate programming language immune to the advancement of newer, better languages.

“I would consider us to have truly succeeded if 20 years from now there’s a new programming language, and their whole mission is to try to replace this old Julia thing that people are using that is no longer the best you could possibly do,” said Karpinski. “That would be true success.”