Posted on April 1, 2017 by Troels Henriksen

Futhark lives in a strange no-mans land. Compared to highly tuned low-level code written by experts, Futhark programs are slower, but much more convenient. Compared to libraries like Numpy, Futhark is much faster and more powerful, but less convenient. Futhark’s niche is thus problems that do not already have some finely tuned existing solution, and which are too complicated to solve just by composing a few simple linear algebra operations. If we want Futhark to gain adoption, we have to be pro-active in searching out domains with this class of problems, and add features that cater to their special circumstances. This post describes one such effort.

“Computational History” is a field I did not know actually existed, but there is kind of a Wikipedia page about it. Its practitioners (if they exist) would probably be predisposed to like Futhark by the name alone. Apart from easy parallel performance, what would a computational historian need in a programming language? As all programmers know, it’s important to be able to program close to the domain. Imagine you’re a computational historian studying ancient Rome, and you’re typing in data about Trajan’s Column. Wouldn’t you prefer to keep in the ancient frame of mind and describe the year of construction as CXIII instead of 113? Just as a bit-fiddler wants to be able to use hexadecimal or binary literals in their code, so would a computational classicist clearly wish to use Roman numbers. As a result, we have added Roman numeric literals to Futhark.