Anders Järleberg, Kim Nilsson

Go, F# and Erlang

Abstract

This report examines the three languages Erlang, F# and Go, which all have some form of inherent support for concurrency. The purpose was to determine the strengths of these three languages and in which situations they are suitable. We examine the performance and scaling of some parallel algorithms and compare it to a sequential version written in Java and discuss some factors relating to ease of implementation and maintainability.

We found that we could achieve a high degree of scaling on a multi-core platform, with relatively simple methods. In most practical scenarios, however, it is likely not the performance and scaling that determines what language is the best choice, but instead some combination of features within the language itself as well as external factors such as availability of standard libraries or platform dependence.