learning Julia
Predrag Punosevac
predragp at andrew.cmu.edu
Wed Oct 14 13:13:36 EDT 2020
Hi Kyle,
I am adding users as I don't want to type this ever again.
This is the best starter document for Julia programming language bar none
https://www.sas.upenn.edu/~jesusfv/Chapter_HPC_8_Julia.pdf
although some people find this useful
https://syl1.gitbook.io/julia-language-a-concise-tutorial/
Mandatory cheat sheet
https://juliadocs.github.io/Julia-Cheat-Sheet/
If you really start using Julia you actually have to go to the official
documentation. No ifs or buts
https://raw.githubusercontent.com/JuliaLang/docs.julialang.org/assets/julia-1.5.2.pdf
Start by reading Chapter 39 (page 399) Style Guide. To actually make true
use of Julia's features and really appreciate the language you have to
understand the types and scope of variables as well as methods and operator
polymorphism. The true benefit of Julia for an organization is the fact
that it is just in time compiled language. Arguably semi-literate scientist
could write a prototype code which could be turned into the robust and fast
(almost as fast as C) production code by a skillful software engineer. The
software engineer will just need to convert the code into the strongly
typed one and making sure functions use the correct methods. No reason to
use C or God forbid C++ (Rust) ever for scientific computing.
The language has only recently matured being actually usable for scientific
computing since the spring of the last year. There are problem domains
where it is already superior to any other programming language.
DifferentialEquations.jl, written by Chris Rackauckas comes to mind. That
is the software worth of the Wilkinson Prize.
Speaking of ML DataFrames are definitely less mature than Python Pandas.
Where Python still has a serious lead is the deep learning stack and
integration with GPU computing. Julia Flux
https://fluxml.ai/Flux.jl/stable/
is behind TensorFlow, PyTorch, and alike but we will see for how long will
remain that way. Yes matplotlib is probably more mature than any non Python
available backends for Julia
https://docs.juliaplots.org/latest/backends/
although Plotly(JS) is not too far behind.
Debugging and profiling are already on par with Python but not in the same
league with MATLAB which is to be expected. For individual users, JuliaPro
is free of charge
https://juliacomputing.com/products/juliapro.html
JuliaPro has fastly improving professional debugger and profiler.
Don't bother me with installing Julia modules onto the Auton Lab servers
until you are committed to witch to Julia. Julia has still some rough edges
when it comes to deploying in the distributed HPC environments as they are
working with major national laboratories to develop correct deployment
strategies.
My final recommendations:
1. If you are less than 10 years from the retirement age don't bother.
2. If you are a numerical analysis guy learn MATLAB first but add Julia as
needed for more complicated data structures than 2-dim double float arrays.
3. If you are an engineer doing control theory stick with MATLAB and
Symlink in particular.
4. If you are interested in scientific computing learn Julia at once unless
1 applies to you.
5. If you are ML/Big data guy start moving away from Python and R or at
least keep an eye on Julia. In particular, I am not a big fan of Python
programming language. It is just too big and feels like a cludge. My
favorite, object-oriented done wrong look no further than Python. For
system administration and scripting people who use Python should be sent to
Siberia (use UNIX toolbox + Perl when associative arrays are needed). That
being said my daughters are taking an online CMU course on Python through
their school based on the nice in-house graphics library. I LOVE it. It is
likely that by the time they come to college PYthon will be still the
programming language taught to freshmen so better start now through that
2000 pages manual since you didn't like your dad trying to teach you 60
pages worth of Forth and stacks.
Mandatory credits!
I would like to thank Professor Bard Ermentrout of the University of
Pittsburgh for bringing Julia to my attention many years ago and more
importantly for his vision for the future of scientific computing.
I would like to thank my former colleague Simon Heath for drugging me to
Jeff Bezanos lectures at the CMU school of computer science and explaining
to me what scoping and methods in computer language design are.
Cheers,
Predrag
On Wed, Oct 14, 2020 at 10:27 AM Kyle Miller <mille856 at andrew.cmu.edu>
wrote:
> Predrag,
> Do you have recommendations for how to go about learning Julia well?
> Thanks,
> Kyle
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.srv.cs.cmu.edu/pipermail/autonlab-users/attachments/20201014/4fc7a5a7/attachment.html>
More information about the Autonlab-users
mailing list