Why Julia?

  • Increase the programmer productivity.
  • Python is a very nice language to code a prototype but i had to use Cython to make it faster. And had to code in Fortran if the code had to be deployed on HPC cluster
  • High-level languages like python and R let one explore and experiment rapidly, but can run slow.
  • Low-level languages like Fortran/C++ tend to take longer to develop, but run fast.
  • This is sometimes called the “two language problem” and is something the Julia developers set out to eliminate.
  • My code runs much faster than Python, and typically similar to Fortran.

Julia provides a “best of both worlds” experience for programmers who need to develop novel algorithms and bring them into production environments with minimal effort.

Julia features

  • High-level language for numerical computing.
  • Born in 2009 and version 1.0 was released in August 2018.
  • Dynamically-typed with optional types, feels like a scripting language, and has good support for interactive use.
  • Easy to learn for people that comes from R and Python.
  • Designed from the beginning to be fast as Fortran and C
  • Julia programs compile to efficient native code via LLVM.
  • Designed for parallelism, and provides built-in primitives for parallel computing
  • can call C and Fortran libraries natively
  • can call Python libraries via PyCall package
  • can call R functions via RCall package

Julia is a language made for Science.

Mathematics

  • JuliaDiff – Differentiation tools
  • JuliaDiffEq – Differential equation solving and analysis
  • JuliaGeometry – Computational Geometry
  • JuliaGraphs – Graph Theory and Implementation
  • JuliaIntervals - Rigorous numerics with interval arithmetic & applications
  • JuliaMath – Mathematics made easy in Julia
  • JuliaOpt – Optimization (Gitter)
  • JuliaPolyhedra – Polyhedral computation
  • JuliaSparse – Sparse matrix solvers

Data Science

  • JuliaML – Machine Learning
  • JuliaStats – Statistics
  • JuliaImages – Image Processing
  • JuliaText – Natural Language Processing (NLP), Computational Linguistics and (textual) Information Retrieval
  • JuliaDatabases – Various database drivers for Julia
  • JuliaData – Data manipulation, storage, and I/O in Julia