350 likes | 910 Views
Julia. A fast dynamic language for technical computing. Tim Besard 2013-06-18. Scientific programming is done inefficiently. Over 40 domain-specific computing environments Low program interoperability High programmer learning effort A general-purpose language could subsume these projects
E N D
Julia A fast dynamic languagefor technical computing Tim Besard 2013-06-18
Scientific programmingis done inefficiently • Over 40 domain-specific computing environments • Low program interoperability • High programmer learning effort • A general-purpose languagecould subsume these projects • Has happened before
Julia is a fresh approachto technical computing • Free and Open-Source • Code at GitHub • MIT licensed • Actively developed • 147 core contributors • 141 accepted packages • > 1000 mailing list-subscribers
Vision behind Juliamakes it stand out • Familiar yet flexible • Performance without compromises • Easily extensible • High interoperability
Familiar yet flexible • Resembles other technicalcomputing environments function randmatstat(t) n = 5 v = zeros(t) w = zeros(t) for i = 1:t a = randn(n,n); b = randn(n,n) c = randn(n,n); d = randn(n,n) P = [a b c d] Q = [a b; c d] v[i] = trace((P'*P)^4) w[i] = trace((Q'*Q)^4) end std(v)/mean(v), std(w)/mean(w) end
Familiar yet flexible • Resembles other technicalcomputing environments • Most functionality isolatedin the standard library • Unobtrusive • General-purpose core
Performance without compromises • Typical compromise:use of low-level languages • Creates development barriers • Julia offers high code-efficiency • Design decisions • LLVM JIT-compiler
Performance without compromises Execution timerelative to C MATLAB Python Fortran Julia Take this with a grain of salt:real-life performance can still let down
Julia is extensible • Standard library written in Julia • Dynamic environment • Integrated package manager
High interoperability • No boilerplate philosophy t = ccall( (:clock, “libc”), Int32, () )
High interoperability • No boilerplate philosophy • Reuse is easy • BLAS, LAPACK, SuiteSparse, … • Built-in: C, Fortran • Contributed: Python, MATLAB
Try it out! • Binaries available athttp://julialang.org • Source available athttp://github.com/JuliaLang
Julia A step towardsgeneral-purpose scientific computing Tim Besard 2013-06-18