Julia: A Fresh Approach to Numerical Computing

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 pr...

Full description

Bibliographic Details
Main Authors: Karpinski, Stefan, Shah, Viral B., Bezanson, Jeffrey Werner, Edelman, Alan
Other Authors: Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Format: Article
Language:en_US
Published: Society for Industrial and Applied Mathematics 2017
Online Access:http://hdl.handle.net/1721.1/110125
https://orcid.org/0000-0001-7676-3133
_version_ 1811081001197109248
author Karpinski, Stefan
Shah, Viral B.
Bezanson, Jeffrey Werner
Edelman, Alan
author2 Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
author_facet Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Karpinski, Stefan
Shah, Viral B.
Bezanson, Jeffrey Werner
Edelman, Alan
author_sort Karpinski, Stefan
collection MIT
description 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.
first_indexed 2024-09-23T11:40:13Z
format Article
id mit-1721.1/110125
institution Massachusetts Institute of Technology
language en_US
last_indexed 2024-09-23T11:40:13Z
publishDate 2017
publisher Society for Industrial and Applied Mathematics
record_format dspace
spelling mit-1721.1/1101252022-09-27T21:07:33Z Julia: A Fresh Approach to Numerical Computing Karpinski, Stefan Shah, Viral B. Bezanson, Jeffrey Werner Edelman, Alan Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science Massachusetts Institute of Technology. Department of Mathematics Bezanson, Jeffrey Werner Edelman, Alan 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. National Science Foundation (U.S.) (CCF-0832997) National Science Foundation (U.S.) (DMS-1016125) National Science Foundation (U.S.) (DMS-1312831) 2017-06-21T15:54:49Z 2017-06-21T15:54:49Z 2017-02 2014-12 Article http://purl.org/eprint/type/JournalArticle 0036-1445 1095-7200 http://hdl.handle.net/1721.1/110125 Bezanson, Jeff; Edelman, Alan; Karpinski, Stefan and Shah, Viral B. “Julia: A Fresh Approach to Numerical Computing.” SIAM Review 59, no. 1 (January 2017): 65–98 © 2017 Society for Industrial and Applied Mathematics https://orcid.org/0000-0001-7676-3133 en_US http://dx.doi.org/10.1137/141000671 SIAM Review Article is made available in accordance with the publisher's policy and may be subject to US copyright law. Please refer to the publisher's site for terms of use. application/pdf Society for Industrial and Applied Mathematics SIAM
spellingShingle Karpinski, Stefan
Shah, Viral B.
Bezanson, Jeffrey Werner
Edelman, Alan
Julia: A Fresh Approach to Numerical Computing
title Julia: A Fresh Approach to Numerical Computing
title_full Julia: A Fresh Approach to Numerical Computing
title_fullStr Julia: A Fresh Approach to Numerical Computing
title_full_unstemmed Julia: A Fresh Approach to Numerical Computing
title_short Julia: A Fresh Approach to Numerical Computing
title_sort julia a fresh approach to numerical computing
url http://hdl.handle.net/1721.1/110125
https://orcid.org/0000-0001-7676-3133
work_keys_str_mv AT karpinskistefan juliaafreshapproachtonumericalcomputing
AT shahviralb juliaafreshapproachtonumericalcomputing
AT bezansonjeffreywerner juliaafreshapproachtonumericalcomputing
AT edelmanalan juliaafreshapproachtonumericalcomputing