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.
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.