Julia: A Fresh Approach to Numerical Computing

@article{Bezanson2017JuliaAF,
title={Julia: A Fresh Approach to Numerical Computing},
author={Jeff Bezanson and Alan Edelman and Stefan Karpinski and Viral B. Shah},
journal={ArXiv},
year={2017},
volume={abs/1411.1607}
}
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…
2,554 Citations
Julia Language in Computational Mechanics: A New Competitor
• Computer Science
Archives of Computational Methods in Engineering
• 2021
A comprehensive survey on the use of the Julia language in computational mechanics is presented and the existing numerical computing packages developed in the Julialanguage and their relevant applications are introduced.
Julia for Biologists
An analogy to a more standard tool of a biologist – a pipettor – is used to develop some intuition for the important role of abstraction in an abstract programming language.
Computer Algebra in JULIA
• Computer Science
Program. Comput. Softw.
• 2021
The aim of this paper is to combine the usage of Julia framework for numerical computations and for symbolic computations in mathematical modeling problems and to conclude that it is possible (and even convenient) to use computer algebra systems within the Julia framework.
Fast Flexible Function Dispatch in Julia
• Computer Science
ArXiv
• 2018
The Julia language attempts to provide a more effective structure for technical computing by allowing programmers to express complex polymorphic behaviors using dynamic multiple dispatch over parametric types, and is reported on how this approach has allowed domain experts to express useful abstractions while simultaneously providing a natural path to better performance for high-level technical code.
Interval Computations in Julia programming language
The general-purpose Julia programming language [5] was designed for speed, efficiency, and high performance. It is a flexible, optionally-typed, and dynamic computing language for scientific,
LazySets.jl: Scalable Symbolic-Numeric Set Computations
• Computer Science, Mathematics
JuliaCon Proceedings
• 2021
The basic functionality of LazySets is showcased, highlighting some of the key design choices and its scope goes beyond reachability and formal verification to include computations that mix symbolics and numerics.
High-performance symbolic-numerics via multiple dispatch
This work details an underlying abstract term interface which allows for speed without sacrificing generality, and shows that by formalizing a generic API on actions independent of implementation, it can retroactively add optimized data structures to the system without changing the pre-existing term rewriters.
Probabilistic Programming in Julia New Inference Algorithms
In this thesis we look at the design and development of a Probabilistic Programming Language (PPL) in Julia named Turing and the challenges of implementing the Hamiltonian Monte Carlo (HMC) sampler
The Linear Algebra Mapping Problem
• Computer Science
ArXiv
• 2019
The aim of this study is to give concrete guidelines for the development of languages and libraries that support linear algebra computations by investigating how effectively a benchmark of test problems is solved by popular high-level programming languages.
Chapel Comes of Age : Making Scalable Programming Productive
Chapel is a programming language whose goal is to support productive, general-purpose parallel computing at scale. Chapel’s approach can be thought of as combining the strengths of Python, Fortran,

References

SHOWING 1-10 OF 53 REFERENCES
Computing in Operations Research Using Julia
• Computer Science, Mathematics
INFORMS J. Comput.
• 2015
This paper explores how Julia, a modern programming language for numerical computing that claims to bridge this divide by incorporating recent advances in language and compiler design, can be used for implementing software and algorithms fundamental to the field of operations research, with a focus on mathematical optimization.
Julia: A Fast Dynamic Language for Technical Computing
• Computer Science
ArXiv
• 2012
Julia is presented, a new dynamic language for technical computing, designed for performance from the beginning by adapting and extending modern programming language techniques, which enables an expressive programming model and successful type inference, leading to good performance for a wide range of programs.
Array Operators Using Multiple Dispatch: A design methodology for array implementations in dynamic languages
• Computer Science
ARRAY@PLDI
• 2014
This work has come to believe that while multiple dispatch has not been especially popular in most kinds of programming, technical computing is its killer application, and has developed an approach that yields a novel trade-off between flexibility and compile-time analysis.
Interactive Supercomputing’s Star-P Platform
• Computer Science
• 2006
A classroom productivity study involving 29 students who have written a homework exercise in a low level language (MPI message passing) and a highlevel language (Star-P with MATLAB client), which indicates what perhaps should be of little surprise: the high level language is always far easier on the students than the lowlevel language.
Star-P: High Productivity Parallel Computing
• Computer Science
• 2004
The focus of Star-P is to improve user productivity in parallel programming, and it is believed that it can dramatically reduce the difficulty of programming parallel computers by reducing the time needed for development and debugging.
Parallel programming and code selection in fortress
This work discusses ideas for using a rich parameterized polymorphic type system to organize multithreading and data distribution on large parallel machines.
Parallel MATLAB: Doing it Right
• Computer Science
Proceedings of the IEEE
• 2005
This work discusses the approaches the projects have taken to parallelize MATLAB, and describes innovative features in some of the parallel MATLAB projects, and gives an example of what it thinks is a "right" parallel MATLab.
Abstraction in technical computing
Aion in Technical Computing by Jeffrey Werner Bezanson A.B., Harvard University (2004) S.M., Massachusetts Institute of Technology (2012) andsubmitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degree of Doctor of Philosophy.
X10: an object-oriented approach to non-uniform cluster computing
A modern object-oriented programming language, X10, is designed for high performance, high productivity programming of NUCC systems and an overview of the X10 programming model and language, experience with the reference implementation, and results from some initial productivity comparisons between the X 10 and Java™ languages are presented.
Convex Optimization in Julia
• Computer Science, Mathematics
2014 First Workshop for High Performance Technical Computing in Dynamic Languages
• 2014
Convex translates problems from a user-friendly functional language into an abstract syntax tree describing the problem, which allows Convex to infer whether the problem complies with the rules of disciplined convex programming (DCP), and to pass the problem to a suitable solver.