Advanced Book Recommendation to Learn Julia

I am looking for a technical book about Julia that, if possible, also explains all the intricacies of why Julia is designed the way it is, aspects of high performance, technical tricks, etc. I am a mathematician, but I have many years of experience working as a developer and have theoretical and practical knowledge in compiler and programming language aspects.

2 Likes

You should check out Julia: Dynamism and Performance Reconciled by Design. It sounds like what you’re looking for with respect to why it was designed the way that it is.

Another commonly recommended book which is more intermediate is Hands-On Design Patterns and Best Practices with Julia which goes over the basics, and then common design patterns for performance and robustness.

8 Likes

To learn Julia and many other technologies, I recommend checking out Packt. It was one of the few places where I found a lot of content about Julia. It’s great and with the free trial you can read an eBook or two and cancel if you prefer.

2 Likes

Asking for all the details of Julia’s design may be a lot. Julia has been around for 14 years now, and quite a few design details were accidental, motivated by a constraint that is no longer binding, or are left in place because changing them would be breaking. Also, a lot of those details, especially the internals which can change without breaking compatibility are not necessarily final, and are just waiting for someone to come up with a better solution.

It would be better to focus on something, eg how Julia is lowered and compiled (still a huge topic), how the GC works, current perfomance gotchas and future developments, etc. Even digging into one of these will take a lot of time for most people. A lot of it is not compiled in a book form, but you may find the following breadcrumbs helpful:

  1. issue and PR labels on Github,
  2. git blame for tracking down history and discussion related to a change,
  3. Juleps, which are mostly no longer in the Juleps repo but you can find them with issue labels.

Even PRs/Juleps which are not merged/implemented in the end frequently contain a lot of enlightening dicussion.

1 Like

As far as performance is concerned, @jakobnissen’s blog is by far my favorite resource, and it also goes deep into the lore and history of Julia: https://viralinstruction.com/

4 Likes

The PhD thesis of Jeff Bezanson is a nice read, particularly the introduction: phdthesis/main.pdf at master · JeffBezanson/phdthesis · GitHub

2 Likes