Julia for the Win

In updating a paper to prepare for journal submission I needed to revisit the accompanying Julia code. I chose Julia at the time because this was a mostly self-contained project and I wanted to give Julia a trial run on something of moderate complexity (see first impressions). I cleaned up the code, added some capabilities, and really tried to improve performance. I read all the primary documentation on Julia, including the sections on performance, updated to 0.4.x, explicitly declared all types, and profiled quite a bit. This made some difference, but my code was still about an order of magnitude slower than a Python/Fortran version.

Writing Scientific Papers

Below is some advice on writing scientific papers. It is written in bullet form with the main point at the beginning of each bullet, so that you can skip over things you are familiar with and read only paragraphs that you want an elaboration on.

Julia First Impressions

I’m primarily a Python user, and my primary use is scientific computing. Over the last few years, I’ve followed Julia’s development and looked through documentation and various benchmarks multiple times. I was intrigued by the potential. However, it’s one thing to read about a programming language, and another to use it for yourself. I asked a couple of my undergraduate students to use it for an exploratory project on aircraft design. These students had some programming experience, and seemed to be able to complete the tasks just fine. However, those problems were relatively simple and I needed to take Julia for a test drive myself on a larger problem to evaluate whether or not it was something worth switching to, for at least some of our lab projects.

Scientific Programming Languages

I’ve used a number of scientific programming languages over the past 16 years: C++, C, Matlab, Java, Fortran, Python, and Julia, and I wouldn’t name any one as the “best” (I’ve also used Objective-C, JavaScript, and PHP quite a bit, but not for scientific computing). Usually I try to pick the right tool for the job, not necessarily just the tool I happen to know best (as they say: if all you have is a hammer, everything looks like a nail). However, my usage has evolved over the years from Matlab-centric, to Python-centric, and I’m contemplating a move to Julia-centric. Before explaining why, let’s discuss some of the reasons why I might choose one language over the others.