I read through this article on LWN and it brings up some nice points about packaging, perhaps something for go, rust, npm ecosystem to learn
A lot of neat ideas in Julia. I like the tight integration with Git – we are seeing this more and more in various tools. Also reminds me some of the Go modules – you can have multiple versions of modules installed. You can even have multiple major versions of a module used in the same application.
In an article from a year ago, I traced Julia’s popularity in the sciences in part to its unique ability to allow users to combine features from multiple third-party modules. This is enabled by Julia’s type system, its use of multiple dispatch, and its optimizing just-ahead-of-time compiler. But it is made convenient by the package system, which removes the pain from managing a diverse library of software; it is similar to the way that Git revolutionized painless branching and merging, which encouraged programmers to be more willing to experiment with features.
Package management is an important feature in a modern language. As much as we don’t like dependencies (and the various problems they can cause), we can’t write everything from scratch, so they are a fact of life.
So I gave the Pluto interactive notebook a try … very impressive!
I also like the notebooks are saved in pure Julia
*.jl files – much cleaner than the XML used by Jupyter notebook and enables efficient storage and review in Git. I will definitely check this out next time I need to do a math notebook …
Another interesting article about Julia:
Nowadays, most data scientists use either Python or R as their main programming language. That was also my case until I met Julia earlier this year. Julia promises performance comparable to statically typed compiled languages (like C) while keeping the rapid development features of interpreted languages (like Python, R or Matlab). This performance is achieved by just-in-time (JIT) compilation. Instead of interpreting code, Julia compiles code in runtime. While JIT compilation has been around for sometime now (e.g. Matlab introduced it in 2002), Julia was designed for performance with JIT compilation in mind. Type stability and multiple-dispatch are key design concepts in Julia that put it apart from the competition. There is a very nice notebook by the Data Science Initiative at the University of California that explains these concepts if you want to learn more.
So many good tools, so little time …