3 comments

[ 3.0 ms ] story [ 18.2 ms ] thread
I should point out that many of these techniques are not specific to Julia, although many of them are not so familiar to users of high-level languages since one doesn't, for example, need to think about ordering of matrix iterations when writing vectorized code. Those who write high-performance C and Fortran array code will already be familiar with much of this advice.
It is remarkable to me that these kind of considerations can even come up in a language with the high-level expressiveness of Julia.

As I work with Julia (and read code in the base and packages), I am continually impressed by the capability to work at so many different levels, and the smoothness of the integration. From clean, readable, Python-like "executable pseudocode"; to type annotations and generic code; to code-generation with macros; to efficient data structures in-language --- and all the way down into bit-fiddling, pointer arithmetic, and inspection of IR and assembly.

As the blog post details, this layering allows a smooth transition from "making it right" to "making it fast" within a single language, and I think we are only seeing glimmers of the cohesiveness and network effects that this enables.