Archive for April 30, 2012
What do scientists want in a programming language? New Julia language seeks to be the C for scientists
What I liked best about this interview was the exploration of the (implicit) question, “What do scientists want in a programming language?” It sounds like the answers are (explicitly) performance and broad applicability, for the applications that scientists care about (e.g., numeric processing, linear algebra, and statistics), but also (implicitly) ease of reading/writing. On the Julia Language page, there is discussion about how much easier it is to read and write Julia compared to similar C++. The language looks surprisingly Python-like.
InfoWorld: When you say technical computing, to what type of applications are you specifically referring?
Karpinski: It’s a broad category, but it’s pretty much anything that involves a lot of number-crunching. In my own background, I’ve done a lot of linear algebra but a fair amount of statistics as well. The tool of choice for linear algebra tends to be Matlab. The tool of choice for statistics tends to be R, and I’ve used both of those a great deal. But they’re not really interchangeable. If you want to do statistics in Matlab, it’s frustrating. If you want to do linear algebra in R, it’s frustrating.
InfoWorld: So you developed Julia with the intent to make it easier to build technical applications?
Karpinski: Yes. The idea is that it should be extremely high productivity. To that end, it’s a dynamic language, so it’s relatively easy to program, and it’s got a very simple programming model. But it has extremely high performance, which cuts out [the need for] a third language [C], which is often [used] to get performance in any of these other languages. I should also mention NumPy, which is a contender for these areas. For Matlab, R, and NumPy, for all of these options, you need to at some point drop down into C to get performance. One of our goals explicitly is to have sufficiently good performance in Julia that you’d never have to drop down into C.