-
Notifications
You must be signed in to change notification settings - Fork 25
/
abstract.tex
46 lines (36 loc) · 2.13 KB
/
abstract.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Array-based programming environments are popular for scientific and
technical computing.
These systems consist of built-in function libraries paired with high-level
languages for interaction.
Although the libraries perform well, it is widely believed that scripting in these
languages is necessarily slow, and that only heroic feats of engineering can at
best partially ameliorate this problem.
This thesis argues that what is really needed is a more coherent
structure for this functionality.
To find one, we must ask what technical computing is really about.
This thesis suggests that this kind of programming is characterized by an emphasis on operator
complexity and code specialization, and that a language can be designed to
better fit these requirements.
The key idea is to integrate code \emph{selection} with code \emph{specialization},
using generic functions and data-flow type inference.
Systems like these can suffer from inefficient compilation, or from
uncertainty about what to specialize on.
We show that sufficiently powerful type-based dispatch addresses these problems.
The resulting language, Julia, achieves a Quine-style
``explication by elimination'' of many of the productive features
technical computing users expect.
% we show how this can be use to greatly simplify code for demanding
% scientific applications that require a mixture of binding times.
% thesis stmt: integrating code selection and specialization with
% type-based dynamic dispatch captures both the performance and
% productivity requirements of technical computing.
% leads to a simpler system which leads to consistent better performance
% something about working for both domain experts and speed freaks
%For this role I propose an abstraction based on an extended version of
%generic functions.
%The novelty of this mechanism is that it is both flexible enough to describe
%the wide variety of behaviors users need in practice, while also providing
%enough information to a compiler to yield good performance.
% integration of selection and specialization
% making data-flow and specialization-based languages practical
% answers the question of what to specialize on