# The Julia programming language On this page is provided a _curated_ (and git-clonable) list of links to useful Julia resources. Julia is a programming language/runtime which looks to be combining the best aspects of many other languages such as: i) __Python__ - e.g. first-class functions and lambda expressions, closures, Jupyter notebooks, open-source, 'pythonic' etc. ii) __Matlab/Octave__ - e.g. compact vector/matrix notation for Linear Algebra iii) __Lisp__ - e.g. REPL, code introspection, metaprogramming macros etc., and iv) __C/Fortran__ - fast, even for tight nested loops whilst Julia claims to combine these nice features _all into one package_: https://julialang.org/blog/2012/02/why-we-created-julia/ Like Matlab/Octave, Julia looks to be particularly promising for numerical computing applications, such as Linear Algebra. Some may be put off by the 1-based indexing - again like Matlab/Octave, but unlike Python which uses 0-based. However, Julia's designers insist that this is a deliberate and logical choice. Another Julia language feature that the designers make a big play of is the use of 'multiple dispatch' for functions, whereby a particular method for the function is chosen based upon the types of the input parameters. All in all, it seems that there's potentially a lot to like here, so Julia is definitely worth a look... ## General information and Learning Julia Main Julia website: https://julialang.org/ Learning Julia: https://julialang.org/learning/ Mastering the Julia REPL: https://blog.glcs.io/julia-repl/ Julia documentation: https://docs.julialang.org/en/v1/ More Julia documentation: http://web.mit.edu/julia_v0.6.2/julia/share/doc/julia/html/en/index.html Julia cheat sheet: https://juliadocs.github.io/Julia-Cheat-Sheet/ Another Julia cheet sheet: https://cheatsheets.quantecon.org/julia-cheatsheet.html Matlab-Julia-Python comparison cheat sheet: https://cheatsheets.quantecon.org/ Textbook 'Think Julia: How to Think Like a Computer Scientist': https://benlauwens.github.io/ThinkJulia.jl/latest/book.html Wikibook 'Introducing Julia': https://en.wikibooks.org/wiki/Introducing_Julia Julia discussion forum: https://discourse.julialang.org/ ## Useful videos How to install Julia and Pluto (~6 mins): https://www.youtube.com/watch?v=OOjKEgbt8AI Youtube Julia language videos: https://www.youtube.com/c/TheJuliaLanguage/videos Nick Eubank presentation - 'What Julia offers Academic Researchers' (~46 mins): https://www.youtube.com/watch?v=C4dMYHzW-SY Pluto interactive Julia notebooks: https://www.youtube.com/watch?v=IAF8DjrQSSk Using VSCode for Julia development: https://www.youtube.com/watch?v=IdhnP00Y1Ks MIT Fall2020 lecture course on 'Introduction to Computational Thinking' (using Julia): https://computationalthinking.mit.edu/Fall20/ Julia co-founder MIT Prof. Alan Edelman TEDx talk on rationale for the language's design (~10 mins): https://www.youtube.com/watch?v=qGW0GT1rCvs&feature=emb_logo Prof. Alan Edelman shows how to dissect floating-point numbers using Julia: https://www.youtube.com/watch?v=fL8vYG69EhE&feature=emb_logo ## Linear Algebra in Julia Linear Algebra in Julia: https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/ Applied Linear Algebra textbook companion: http://vmls-book.stanford.edu/vmls-julia-companion.pdf