A review of the Julia programming language

I recently had a need to do some calculations for a circuit design. So I started a Jupyter notebook, as I’ve done many times before, but after starting and looking at the horrible XML file format, I remembered Julia, and fired up a Pluto notebook. Some things I really like about Julia/Pluto:

  • file format is sane – simply Julia, easily stored in Git, diff’d, etc.
  • output of expressions is always displayed, but you can hide or show the source equation – this makes sense
  • language is very simple, yet powerful – seems perfect for calculations.
  • package system seems very powerful as its built in, vs something like Python pip, which you have to run external to the notebook

Using Python as a numerical tool works pretty well (I still fire up Python any time I need a quick calculator), but anything past the basics seems a little clunky as external packages are needed to do about anything.

But back to the Julia language itself – here are some neat things I’ve discovered in reading the language docs:

Dumping bits of a number:

julia> bitstring(0xf5f)

Built in support for semantic versions:

julia> v"1.2"

julia> v"1.2" > v"1.3"

Rational numbers (fractions):

julia> 3//4 + 1//4

Dot operators:

julia> [1,2,3].*4
3-element Vector{Int64}:

Any unicode can be used for function names:

julia> ∑(x,y) = x + y
∑ (generic function with 1 method)

julia> ∑(1,3)

Most operators are just functions:

julia> 1+2+3

julia> +(1,2,3)

Array indices are 1-based, instead of 0-based like most languages:

julia> [1,2,3][1]

julia> [1,2,3][0]
ERROR: BoundsError: attempt to access 3-element Vector{Int64} at index [0]

Named tuples:

julia> x = (a="hi", b=3)
(a = "hi", b = 3)

julia> x[1]

julia> x.a

julia> x.b

This is not very far through the manual, so I’m sure there are a lot more interesting things to discover …

REPL is a good feature for a language i agree