# 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 ScienceArchives 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

- Biology
- 2021

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 ScienceProgram. 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 ScienceArXiv
- 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

- 2019

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, MathematicsJuliaCon 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

- Computer ScienceACM Communications in Computer Algebra
- 2021

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

- 2016

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 ScienceArXiv
- 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

- 2018

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, MathematicsINFORMS 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 ScienceArXiv
- 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 ScienceARRAY@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

- Computer SciencePPoPP '06
- 2006

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 ScienceProceedings 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

- Computer Science
- 2015

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

- Computer ScienceOOPSLA '05
- 2005

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, Mathematics2014 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.