5. “Why we created Julia ?”
says
• まず、ゆるいライセンスのオープンソースで、Cの速度と
Rubyの動的さが欲しい。Lispのような真のマクロが使え
る同図象性のある言語で、Matlabのように分かりやすい
数学の記述をしたい。Pythonのように汎用的に使いたい
し、Rの統計処理、Perlの文字列処理、Matlabの線形代
数計算も要る。シェルのように簡単にいくつかのパーツを
つなぎ合わせたい。チョー簡単に習えて、超上級ハッカー
も満足する言語。インタラクティブに使えて、かつコンパ
イルできる言語が欲しい。
6. “Why we created Julia ?”
says
• まず、ゆるいライセンスのオープンソースで、Cの速度と
Rubyの動的さが欲しい。Lispのような真のマクロが使え
る同図象性のある言語で、Matlabのように分かりやすい
数学の記述をしたい。Pythonのように汎用的に使いたい
し、Rの統計処理、Perlの文字列処理、Matlabの線形代
数計算も要る。シェルのように簡単にいくつかのパーツを
つなぎ合わせたい。チョー簡単に習えて、超上級ハッカー
も満足する言語。インタラクティブに使えて、かつコンパ
イルできる言語が欲しい。
7. “Why we created Julia ?”
says
• まず、ゆるいライセンスのオープンソースで、Cの速度と
Rubyの動的さが欲しい。Lispのような真のマクロが使え
る同図象性のある言語で、Matlabのように分かりやすい
数学の記述をしたい。Pythonのように汎用的に使いたい
し、Rの統計処理、Perlの文字列処理、Matlabの線形代
数計算も要る。シェルのように簡単にいくつかのパーツを
つなぎ合わせたい。チョー簡単に習えて、超上級ハッカー
も満足する言語。インタラクティブに使えて、かつコンパ
イルできる言語が欲しい。
Common Lisp使ったら?
10. fibo in julia & C
function fibo(n)
if n < 2
return n
else
return fibo(n - 1) + fibo(n - 2)
end
end
long long fibo(long long n){
if (n < 2) {
return n;
} else {
return fibo(n - 1) + fibo(n - 2);
}
}
型推論+LLVM JITコンパイラ
スクリプト
静的に型を宣言+GCC
コンパイル
11. fibo in cl/scheme
(defun fibo(n)
(if (< 2 n)
n
(+ (fibo (- n 1) (fibo (- n 2))))
(define (fibo n)
(if (< 2 n)
n
(+ (fibo (- n 1)) (fibo (- n 2)))))
sbcl (common lisp)
コンパイル
chez scheme (scheme)
+ JIT コンパイラ
12. speed of fibo(50)
compiler/interpreter seconds
gcc with -O3 [v6.3] 39.317
gcc with -O2 [v6.3] 46.095
julia [v1.0.1] 60.066
gcc with -O0 [v6.3] 77.021
chez scheme [v9.5] 111.660
sbcl [v1.3.14] 252.521