What? In the world of web and desktop applications, frameworks for different software languages such as Rails for Ruby and Electron for JavaScript are popular. Analogous to Rails, Go uses the Wails framework and offers the benefits of Go’s reported processing speed. Wails also uses the native rendering engine unlike Electron which uses an embedded browser. Furthermore, Wails integrates user interface (UI) frameworks such as React, Vue and Svelte.
To demo Go’s frontend capabilities, two projects are implemented here using Wails and Svelte:
Image credit: R logo, Gopher Evaluating Go Unlike Python/R, Go is a compiled language that is more verbose but is said to run faster. For example, Uber, Amex and KhanAcademy find benefits with Go.
To benchmark Go’s performance and runtime against Python and/or R, here are various cases:
Performing least squares regression of the Anscombe Quartet (1973) Computing summary statistics of the California Housing Prices (Miller 2015) Web crawling and scraping of Wikipedia Identifying anomalies in the MNIST dataset Least squares regression with Python and R The Go implementation is benchmarked for runtime with a previous implementation by Miller (2015) in Python/R as a reference.
What? Concurrency or concurrent processing is breaking up a single process into independent components to coordinate compute. It is based on the idea of CSP or Communicating Sequential Processes (Brookes, Hoare, and Roscoe 1984). In contrast to parallel processing, the paradigm here is shifted towards communication and splitting of independent processes instead of sharing memory. To communicate between different processes, Go utilizes goroutines, which are similar to channels as described in CSP.