Recs.
Updated
Julia is a high-level, high-performance dynamic programming language for technical computing. See comparison between Julia and Go.
SpecsUpdate
Pros
Pro Fast computation
Certain benchmarks suggest it is capable of outperforming Python and even C (in certain situations where FORTRAN libraries can be utilized).
Pro Nice regular syntax
Julia code is easy to read and avoid a lot of unnecessary special symbols and fluff. It uses newline to end statements and "end" to end blocks so there is no need for lots of semicolons and curly braces. It is regular in that unless it is a variable assignment, function name always comes first. No need to be confused about whether something is a method on an object or a free function.
Unlike Python and Ruby, since you can annotate the types a function operates on, you can overload function names, so that you can use the same function name for many data types. So you can keep simple descriptive function names and not have to invent artificial function names to separate them from the type they operate on.
Pro Though dynamically typed, can use type annotations to improve performance and make some errors easier to catch
Pro Written in itself
The Julia language is written in itself to a much larger extent than most other languages, so a budding programmer can read through the depths of the standard library and learn exactly how things work all the way down to the low-level bit-twiddling details, which can be englightening.
Cons
Con Young language with limited support
Julia was released in 2012. Due to its short existence, there is a limited amount of support for the language. Very few libraries exist as of yet, and the community is still quite small (though growing quickly).
Con Tooling & libs not yet up to par with others like R or Python
Lacks tools like R's Shiny for easy web applications/dashboards. The library ecosystem also doesn't have the breadth yet of R or Python (which is normal). The dataframe/datatable in Julia & data wrangling isn't also up to par yet with R data.frame/data.table/tibble & dplyr.
Con Slow startup of programs due to compilation of the programs & (some of) its libs at startup
Con Multiplication of packages may be unnecessary
Instead of building a stack with core libraries like the numpy/scipy/matplotlib stack in Python, multiple packages are needed to extend Julia base language possibilities. This may be meant to ease development, but it is a problem for users as you have to know that you need this tiny package to do one simple operation that is simply integrated into Scipy for instance.
Con 1-based array and column major
This design probably comes from Matlab, but makes it unnatural to interface C and C++ and Python. However, arbitrary indexing is possible with later versions of Julia (but the norm is still 1-based indexing).