Home> Blog> Why I Am Not Excited About Julia

Why I Am Not Excited About Julia

This post originally appeared on the Software Carpentry website.

If you hang out in scientific programming circles, you're probably heard of Julia by now. If you don't, or you haven't, it is:

...a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library...

Last month, the Moore Foundation announced that they would support six summer intern projects on Julia this year. A lot of other people are excited about too, so why am I not?

The answer is that I see Julia (and other new languages like Rust, Go, and Scala) as a huge missed opportunity. Andreas Stefik and his colleagues have shown that we can design programming languages scientifically, using techniques borrowed from studies of human-computer interaction and user interface design, and that doing so increases usability in novice hands. Julia is still young enough and malleable enough that its designers could fill in the potholes it already has without disrupting the lives of hundreds of thousands of people, and avoid creating other potholes entirely. Doing this wouldn't just improve Julia: it would also show the designers of the next thousand programming languages that better is possible.

Beneath all this lies the same frustration I feel watching university faculty ignore or brush aside research in education. I desperately want politicians, business leaders, and the general public to act on what we know about climate change, drug resistant diseases, habitat destruction, better teaching practices, and a long list of other things. It's hypocritical of us to ask for that and then ignore research that might require us to change our minds. If scientists really want people to act on what they are discovering, I think they—we—need to lead by example.