I will present Julia to a small audience of experienced developers. I already know some of the things I want to talk about (workflows, things that I like about Julia). I also want to hear what others have to say on the subject. What do you, an experienced developer, find especially nice about Julia?
Bonjour et bienvenue !
I have to say that experienced developers have a very wide spectrum of expectations. Having been in your place a few times, my experience is that:
-
people spending 95% of their time coding in Python/R/Matlab are often attracted by a promise of performance. But they tend to dislike the Julia workflow (at least at first) and they often rely on tons of 3rd-party package that may or may not be present in the ecosystem.
-
on the other hand, people spending 95% of their time coding in C/C++/Fortran tend to very much like the very fact that there is a package ecosystem at all.
-
only developers who have experienced first hand the 2-language problem tend to really understand what Julia has to offer here.
Now to my answer to your specific question, what I personally like about Julia is:
-
that it offers a wide palette of features that make it useful at all stages of a project: fast prototyping at the beginning, optimization of performance bottlenecks (and only those; no need to translate 100% of your code to C++ in order for the 5% which matter to be fast)
-
that it makes it possible for packages to interact and cooperate in totally new ways : there is in my experience far less “glue code” (if any) needed to make 2 packages work together in Julia than in Python for example.
-
that it allows writing very concise and readable code; I find it takes less stack space in my brain to keep track of my code, which frees up some stack to actually think about the problems I want to solve. Incidentally, this also makes it easier to get inspiration from what other experienced developers write (try to read a C++ STL implementation vs the Julia Base library), and easier to contribute to Open Source projects.
- Being much more concise than C++ while not sacrifying performance
- (for my particular field of work) Leveraging automatic differentiation via multiple dispatch
- The package ecosystem supporting reusability and easy deployment to less experienced users
May be you can steal some ideas from a talk I gave in a similar setting: TIB AV-Portal
Check my blog post: Why am I using Julia? | Julia programming notes
In my experience a key challenge is to communicate effectively how multiple dispatch gives real benefits. I liked this talk which makes references to other languages as well: JuliaCon 2019 | The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski - YouTube
There are some more pedestrian reasons that can be important:
- The package manager.
- The integration with the documentation (both doc strings/REPL and Documenter)
- The workflow with Revise (except that cases where it fails, it is the best development workflow IMO)
- Benchmarking small functions quickly and effectively with BenchmarkTools and the REPL.