Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Julia: : A Fresh Approach to Numerical Computing

Published: 01 January 2017 Publication History

Abstract

Bridging cultures that have often been distant, Julia combines expertise from the diverse fields of computer science and computational science to create a new approach to numerical computing. Julia is designed to be easy and fast and questions notions generally held to be “laws of nature" by practitioners of numerical computing: \beginlist \item High-level dynamic programs have to be slow. \item One must prototype in one language and then rewrite in another language for speed or deployment. \item There are parts of a system appropriate for the programmer, and other parts that are best left untouched as they have been built by the experts. \endlist We introduce the Julia programming language and its design---a dance between specialization and abstraction. Specialization allows for custom treatment. Multiple dispatch, a technique from computer science, picks the right algorithm for the right circumstance. Abstraction, which is what good computation is really about, recognizes what remains the same after differences are stripped away. Abstractions in mathematics are captured as code through another technique from computer science, generic programming. Julia shows that one can achieve machine performance without sacrificing human convenience.

References

[1]
E. Anderson, Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK Users' Guide, 3rd ed., SIAM, Philadelphia, PA, 1999.
[2]
J. Bezanson, Abstraction in Technical Computing, Ph.D. thesis, Massachusetts Institute of Technology, MA, 2015.
[3]
J. Bezanson, J. Chen, S. Karpinski, V. B. Shah, and A. Edelman, Array operators using multiple dispatch, in ARRAY'14: Proceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming, ACM, New York, 2014, pp. 56:56--56:61.
[4]
J. Bezanson, S. Karpinski, V. B. Shah, and A. Edelman, Julia: A Fast Dynamic Language for Technical Computing, preprint, arXiv:1209.5145 [cs.PL], 2012.
[5]
R. Choy and A. Edelman, Parallel MATLAB: Doing it right, Proc. IEEE, 93 (2005), pp. 331--341.
[6]
Clang: A C Language Family Frontend for LLVM, http://clang.llvm.org/.
[7]
J. W. Demmel, J. J. Dongarra, B. N. Parlett, W. Kahan, M. Gu, D. S. Bindel, Y. Hida, X. S. Li, O. A. Marques, E. J. Riedy, C. Vomel, J. Langou, P. Luszczek, J. Kurzak, A. Buttari, J. Langou, and S. Tomov, Prospectus for the Next LAPACK and ScaLAPACK Libraries, Tech. report 181, LAPACK Working Note, 2007, http://www.netlib.org/lapack/lawnspdf/lawn181.pdf.
[8]
A. Edelman and B. Sutton, From Random Matrices to Stochastic Operators, J. Statist. Phys., 127 (2007), pp. 1121--1165.
[9]
The GNU MPFR Library, http://www.mpfr.org/.
[10]
C. Gomez, ed., Engineering and Scientific Computing with Scilab, Birkhäuser, Boston, 1999.
[11]
G. Hoare, Technicalities: Interactive Scientific Computing \#1 of 2: Pythonic Parts, http://graydon2.dreamwidth.org/3186.html, 2014.
[12]
R. Ihaka and R. Gentleman, R: A language for data analysis and graphics, J. Comput. Graph. Statist., 5 (1996), pp. 299--314.
[13]
[14]
Interactive Supercomputing, Getting Started with Star-P: Taking Your First Test-Drive, http://www-math.mit.edu/~edelman/publications.php, 2006.
[15]
The Jupyter Project, http://jupyter.org/.
[16]
W. Kahan, How Futile Are Mindless Assessments of Roundoff in Floating-Point Computation?, http://www.cs.berkeley.edu/~wkahan/Mindless.pdf, 2006.
[17]
M. A. Kaplan and J. D. Ullman, A scheme for the automatic inference of variable types, J. ACM, 27 (1980), pp. 128--145, https://doi.org/10.1145/322169.322181.
[18]
C. Lattner and V. Adve, LLVM: A compilation framework for lifelong program analysis and transformation, in Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04), Palo Alto, CA, 2004, ACM, New York, 2004, pp. 75--86.
[19]
C. L. Lawson, R. J. Hanson, D. R. Kincaid, and F. T. Krogh, Basic linear algebra subprograms for Fortran usage, ACM Trans. Math. Softw., 5 (1979), pp. 308--323, https://doi.org/10.1145/355841.355847.
[20]
M. Lubin and I. Dunning, Computing in Operations Research using Julia, INFORMS J. Comput., 27 (2015), pp. 238--248, https://doi.org/10.1287/ijoc.2014.0623; arXiv preprint: http://dx.doi.org/10.1287/ijoc.2014.0623.
[24]
M. Mohnen, A graph-free approach to data-flow analysis, in Compiler Construction, R. Horspool, ed., Lecture Notes in Comput. Sci. 2304, Springer, Berlin, Heidelberg, 2002, pp. 185--213.
[25]
M. Murphy, Octave: A free, high-level language for mathematics, Linux J., 1997 (1997), 326884, http://dl.acm.org/citation.cfm?id=326876.326884.
[26]
R. Muschevici, A. Potanin, E. Tempero, and J. Noble, Multiple dispatch in practice, in Proceedings of the 23rd ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications, OOPSLA '08, ACM, New York, 2008, pp. 563--582, https://doi.org/10.1145/1449764.1449808.
[27]
A. Noack, Fast and Generic Linear Algebra in Julia, Tech. report, MIT, Cambridge, MA, 2015.
[28]
J. Regier, K. Pamnany, R. Giordano, R. Thomas, D. Schlegel, J. McAuliffe, and Prabhat, Learning an Astronomical Catalog of the Visible Universe through Scalable Bayesian Inference, preprint, arXiv:1611.03404 [cs.DC], 2016.
[30]
H. Shen, Interactive notebooks: Sharing the code, Nature Toolbox, 515 (2014), pp. 151--152, http://www.nature.com/news/interactive-notebooks-sharing-the-code-1.16261.
[31]
G. Strang, Introduction to Linear Algebra, Wellesley-Cambridge Press, Wellesley, MA, 2003, https://books.google.com/books?id=Gv4pCVyoUVYC.
[33]
M. Udell, K. Mohan, D. Zeng, J. Hong, S. Diamond, and S. Boyd, Convex optimization in Julia, in SC14 Workshop on High Performance Technical Computing in Dynamic Languages, 2014; preprint, arXiv:1410.4821 [math.OC], 2014.
[34]
S. van der Walt, S. C. Colbert, and G. Varoquaux, The NumPy Array: A Structure for Efficient Numerical Computation, CoRR, abs/1102.1523, 2011.
[35]
H. Wickham, ggplot2, http://ggplot2.org/.
[36]
L. Wilkinson, The Grammar of Graphics (Statistics and Computing), Springer-Verlag, New York, 2005.

Cited By

View all

Index Terms

  1. Julia: A Fresh Approach to Numerical Computing
    Index terms have been assigned to the content through auto-classification.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image SIAM Review
    SIAM Review  Volume 59, Issue 1
    DOI:10.1137/siread.59.1
    Issue’s Table of Contents

    Publisher

    Society for Industrial and Applied Mathematics

    United States

    Publication History

    Published: 01 January 2017

    Author Tags

    1. Julia
    2. numerical
    3. scientific computing
    4. parallel

    Author Tags

    1. 68N15
    2. 65Y05
    3. 97P40

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 27 Jan 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2025)Lax-Wendroff flux reconstruction on adaptive curvilinear meshes with error based time stepping for hyperbolic conservation lawsJournal of Computational Physics10.1016/j.jcp.2024.113622522:COnline publication date: 1-Feb-2025
    • (2025)Discretize first, filter nextJournal of Computational Physics10.1016/j.jcp.2024.113577522:COnline publication date: 1-Feb-2025
    • (2025)The VC dimension of quadratic residues in finite fieldsDiscrete Mathematics10.1016/j.disc.2024.114192348:1Online publication date: 1-Jan-2025
    • (2025)A mathematical model for the role of vaccination and treatment in measles transmission in TurkeyJournal of Computational and Applied Mathematics10.1016/j.cam.2024.116308457:COnline publication date: 7-Jan-2025
    • (2025)Sharp volume and multiplicity bounds for Fano simplicesJournal of Algebraic Combinatorics: An International Journal10.1007/s10801-024-01366-361:1Online publication date: 1-Feb-2025
    • (2024)Analysis of bootstrap and subsampling in high-dimensional regularized regressionProceedings of the Fortieth Conference on Uncertainty in Artificial Intelligence10.5555/3702676.3702714(787-819)Online publication date: 15-Jul-2024
    • (2024)Provably scalable black-box variational inference with structured variational familiesProceedings of the 41st International Conference on Machine Learning10.5555/3692070.3693068(24896-24931)Online publication date: 21-Jul-2024
    • (2024)ΦFlowProceedings of the 41st International Conference on Machine Learning10.5555/3692070.3692815(18515-18546)Online publication date: 21-Jul-2024
    • (2024)Diffusion tempering improves parameter estimation with probabilistic integrators for ordinary differential equationsProceedings of the 41st International Conference on Machine Learning10.5555/3692070.3692202(3305-3326)Online publication date: 21-Jul-2024
    • (2024)Exact and Heuristic Methods for the Split Delivery Vehicle Routing ProblemTransportation Science10.1287/trsc.2022.035358:4(741-760)Online publication date: 1-Jul-2024
    • Show More Cited By

    View Options

    View options

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media