Computer Science > Mathematical Software
[Submitted on 6 Nov 2014 (this version), latest version 19 Jul 2015 (v4)]
Title:Julia: A fresh approach to numerical computin
View PDFAbstract:The Julia programming language is gaining enormous popularity. Julia was designed to be easy and fast. Most importantly, Julia shatters deeply established notions widely held in the applied community:
1. High-level, dynamic code has to be slow by some sort of law of nature
2. It is sensible to prototype in one language and then recode in another language
3. There are parts of a system for the programmer, and other parts best left untouched as they are built by the experts.
Julia began with a deep understanding of the needs of the scientific programmer and the needs of the computer in mind. Bridging cultures that have often been distant, Julia combines expertise from computer science and computational science creating a new approach to scientific computing.
This note introduces the programmer to the language and the underlying design theory. It invites the reader to rethink the fundamental foundations of numerical computing systems.
In particular, there is the fascinating dance between specialization and abstraction. Specialization allows for custom treatment. We can pick just the right algorithm for the right circumstance and this can happen at runtime based on argument types (code selection via multiple dispatch). Abstraction recognizes what remains the same after differences are stripped away and ignored as irrelevant. The recognition of abstraction allows for code reuse (generic programming). A simple idea that yields incredible power.
The Julia design facilitates this interplay in many explicit and subtle ways for machine perfor- mance and, most importantly, human convenience.
Submission history
From: Alan Edelman [view email][v1] Thu, 6 Nov 2014 13:39:40 UTC (2,236 KB)
[v2] Fri, 7 Nov 2014 11:19:21 UTC (2,236 KB)
[v3] Fri, 12 Dec 2014 22:40:09 UTC (3,140 KB)
[v4] Sun, 19 Jul 2015 19:58:28 UTC (2,255 KB)
References & Citations
Bibliographic and Citation Tools
Bibliographic Explorer (What is the Explorer?)
Litmaps (What is Litmaps?)
scite Smart Citations (What are Smart Citations?)
Code, Data and Media Associated with this Article
CatalyzeX Code Finder for Papers (What is CatalyzeX?)
DagsHub (What is DagsHub?)
Gotit.pub (What is GotitPub?)
Papers with Code (What is Papers with Code?)
ScienceCast (What is ScienceCast?)
Demos
Recommenders and Search Tools
Influence Flower (What are Influence Flowers?)
Connected Papers (What is Connected Papers?)
CORE Recommender (What is CORE?)
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.