American vision

How do Go, Scala and Julia compare with each other?

Answer by Eric Talevich:

Go is a systems programming language. Google created it to safely solve three specific problems that C++ was biting them with: concurrency, memory management and compilation time on large systems. It's concise and readable, like Scala and Julia, but a bit fussy and low-level, unlike Julia. You would use it to write safe, well-performing services that your main application might call to. It would certainly be possible to write scientific software in Go, much as you would with C or C++, but it doesn't have the same flexibility and interactivity as, say, Python or Julia, or even Scala. If you're trying to use Go for data analysis, the fussiness and lack of interactivity will disappoint you.

Julia is a scientific applications programming language, designed to be a good replacement for Matlab and Python+SciPy. It's very new, so I won't attempt to predict which specific features it will or won't pick up, but the underlying motivations should drive it to be a very good programming language for scientific software — not syntactically optimized for statistical operations on data arrays like R, but good to write a computationally intensive program that uses multiple CPUs and generates pretty graphics.

Scala is a general-purpose language that sits between the other two, capable of dealing with either end of the spectrum. Twitter uses it for services. Scientists use it for aligning protein structures. It's a good language, a few years older than the other two, and is built on the JVM, which has its own pros and cons. If you want your code to be something other programmers can use and/or build on, Scala is your best choice at the moment — it creates .jar files which can be used directly from plain Java, whereas Go doesn't seem to be capable of creating reusable shared object (.so) files yet.

How do Go, Scala and Julia compare with each other?

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s