Git Product home page Git Product logo

juliatalk-limerick's Introduction

So you're interested in Julia?

The Julia language is a young programming language designed to provide the abstraction and ease of use of languages like Python, R or Matlab, while offering performance on par with C or Fortran. In this talk, I go through my experience learning Julia over the last 6 months, the design behind Julia's performance and give an overview of Julia's current package ecosystem. This talk is meant as an introduction for people curious about Julia.

Slides and code from my March 2020 Julia talk

The slides were made with Marp.

All code examples were made in Julia 1.3.1, but they should work on 1.2.0 as well.

Links and Resources

The latest version of Julia can be downloaded on the official website. The creators of Julia have also started a company called Julia Computing, that provides various services around Julia, including editor support and curated packages.

Sales pitch

Here are some links for those looking for more arguments in favour of Julia.

Benchmarks

One of Julia's main selling points is the ability to have the performance of C with the flexibility of Python. Here are a few benchmarks to back that up with numbers. Some of those are pretty old and/or may not be entirely up to snuff.

Workflow

Julia can be used from the command line in REPL form, much like R, but the JuliaPro editor, which is based on Atom, provides a workflow analogous to Rstudio or Matlab. Alternatively, one can use Jupyter Notebooks with the IJulia package. Other editors, such as VS Code, Vim or IDEA are also supported, but nowhere near the level of polish of JuliaPro. Weave.jl allows you to generate reports with a markup language à la Rmarkdown.

Learning Julia

Given the amount of interest (and funding) Julia is getting, it's no surprise that there are plenty of learning resources. I found the manual and the occasional visit to stackoverflow to be all I need, but your mileage may vary. Users coming to Julia from another language should check out this page

Packages

Although Julia's package ecosystem is not quite mature yet compared to Python or R, contributing to packages and publishing new ones is extremely easy, as the majority of them are hosted on github under an open source license. In addition, some important packages are curated by JuliaComputing, meaning you can expect them to be well maintained and documented... for the most part.

Some packages include

  • Networks: LightGraphs.jl is an excellent package for network analysis, including generators for a wide array of static and random network models and a plethora of network algorithms. It is the core of the wider JuliaGraphs ecosystem.

  • Numerical integration and Dynamical Systems: DifferentialEquations.jl is a massive suite of solvers for differential equations. If you believe this blog post by the main author of the package, it is the most comprehensive suite of solvers on the market today. DynamicalSystems.jl is a suite of packages that builds on top of DifferentialEquations.jl to provide tools for analysing general dynamical systems.

  • Statistics: While I haven't looked much into it myself, there seems to be a fair few packages dedicated to statistics, most of them in the JuliaStats ecosystem.

  • Machine Learning: As you would expect, this is a major focus of the language, so there are a ton of packages, including the pure Julia Flux.jl as well as wrappers like TensorFlow.jl or ScikitLearn.jl. Again, this isn't really my domain, so I can't tell you much.

  • Plotting: Your first stop should be Plots.jl, which provides an interface over multiple plotting backends, meaning you can switch to pyplot with a single call, and all your plotting code will work without modifications. Statistics people should look into StatsPlots.jl and Gadfly.jl. Note that Plots.jl is mostly intended for creating static plots without interactivity. Makie.jl is a package currently under development that aims to bring the ideas from Plots.jl to the next level in an interactive way. I can't quite recommend it yet, however, since I couldn't get it to work.

  • Interfacing with other languages: Switching to Julia doesn't mean you have to throw away your old code. You can natively call C and Fortran functions and there are bindings for C++, Python, R and many more.

Miscellaneous

Some talks and blog post worth checking once you are more familiar with Julia

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.