+ - 0:00:00
Notes for current slide
Notes for next slide

チュートリアル講演

Julia 入門 ( Why I use Julia )

Satoshi Terasaki @ AtelierArith

1 / 17

この資料について

更新日: 2023-07-10T03:59:49.436

お勉強会資料はこちら TODO 後で追記

2 / 17

ここでの Julia とは

  • プログラミング言語の一つ
  • 2012 年 Why We Created Julia に発表. 開発は 2009 年ごろから.

  • 個人的に好きな箇所

    • We want the speed of C with the dynamism of Ruby
    • We want something as usable for general programming as Python
    • Something that is dirt simple to learn, yet keeps the most serious hackers happy.
    • (Did we mention it should be as fast as C?)
  • 要するに

    • 高級言語のように使いやすく計算機の上で高速に動作する
    • 素早く速いコードを書くことができる
3 / 17

Why We Use Julia, 10 Years Later

  • 2022 年は 10 周年記念 🎉 Why We Use Julia, 10 Years Later が公開

  • Julia というプログラミング言語に出会ったきっかけが紹介されている

    • Why We Created Julia を読んでソースをビルドした
    • 同僚,職場,講義で出会った
    • C/C++/Fortran は難しい..., Python は簡単に使えるけれど遅い...
    • 気づいたら特定のパッケージのメンテナになっていた
4 / 17

Star History

Star History Chart

5 / 17

Why 私 Use Julia, 10 Years Later (1)

  • 子供の時から式は立てられるんだけれど,代入の時点で計算をミスる.字が汚かったの.許して.
  • 線形代数の講義で nnnn列の行列 XMatn,n(R)X\in\mathrm{Mat}_{n, n}(\mathbb{R}) の行列式 detX\det X where n=2,3,4n=2,3,4 が手計算できず泣いた.

    • 対称群 Sn\frak{S}_n を使った定義式と余因子による方法しか教えてくれなかった鬼
  • どうやらコンピュータで計算ができるらしいぞ?大学の夏の集中講義 で C++ (実質 C 言語) を履修

    • 手元の Windows でビルドってどうするんだ?

    • コンパイルエラーが出て辛い.時間が溶ける.なんとか単位は取れた
    • あれ?💡 コード書く時間で数学できるじゃん?
    • 将来は絶対プログラムを書く仕事をしない!!! と誓う (Remark: 学生時代の話です)
6 / 17

Why 私 Use Julia, 10 Years Later (2)

  • 専門課程に入って抽象論を扱う講義が増えていく

    • あれ ? 💡 講義で必要な知識身につけて演習の時間で証明をあーだこーだと考えればいいのでは?
    • 紙と鉛筆さえ持っていれば生活できるんじゃない ?
    • GRAPES で印刷したグラフをレポートに書いたら TA から「これぐらい手でかけ」と怒られる
    • え?! LaTeX\LaTeX ってのがあるの? 最高じゃん! これだけ知ってればいいや♪ (堕落への道)
  • ベンチャー企業の就職説明会へ参加

    • 私: 「色々あって人生が疲れていて就活しています.プログラムわからないんですけれどいいですか? 」
    • 社長:「いいよ!」私: 「やった!」
  • 社会人の私

    • 会社の先輩「こんにちは,あなたはソフトウェア技術者として働いてもらいます.これは C++ のコードです.設計書はありません.高速化してください.」
    • 私「どーーーーーしてだよぉぉぉぉぉぉぉ」
7 / 17

Why 私 Use Julia, 10 Years Later (3)

  • 社会人の私

    • 読めない.そして何が書いてあるのかわからない(つらい)
    • 動かせない.どこか間違っているとビルドができない(つらい)
    • 自分が書いたものが理解できない.式とコードの対応ができない(つらい)
    • どう実装すればいいのかわからない(つらい)
    • もうダメかもしれない(つらい)
  • 機械学習ってのが流行ってるらしい.

    • Python ってのがあるらしい.ライブラリってのがあるらしい.
    • ファイルからデータを読み込んでグラフも書けるらしい.
    • ITエンジニアのための機械学習理論入門 をする.

      • 社員「ごめん, 最小二乗法の時点で数式わからない」
      • 私「わかりました.勉強会中止します(どーーーーーしてだよぉぉぉぉぉぉぉ)」
8 / 17

Why 私 Use Julia, 10 Years Later (4)

  • 人生,辛さしかない.それでも生きていくしかない
  • (2016 年の時点で)自分にとって快適な仕事道具を探したい. こんな感じのものはないのか?

    • インストールが簡単にできて
    • 自分そして他人(未来の自分)にも読みやすく
    • データを読み込む操作が簡単で,分析,データの可視化ができて
    • ベクトル,行列,もっと一般に多次元配列を簡単にセットアップできて
    • 大学の数学で学んだ話を元に数学的な概念を表記でき
    • Windows, macOS, Linux で動作し
    • 趣味に限らず本業での使用に耐えうる汎用性を持っていて
    • 事前にコンパイルせず動作し,試行錯誤しやすい
    • Jupyter Notebook ってやつで動かせる
    • そして高速に実行できる
  • Python かな? 速度は Cython, Numba ってやつでなんとかなるかも!
9 / 17

Why 私 Use Julia, 10 Years Later (5)

  • SNS で Julia を知る

  • 円周率 π\pi\pi + <TAB> で入力できる
  • ゼータ関数 ζ(s)s=2\zeta(s)\vert_{s=2}julia> using SpecialFunctions; ζ(s) = zeta(s); ζ(2) で表記できる
  • 自分が求めたものはこれでは???
  • 開発者に数学や物理のバックグラウンドの方が多くいらっしゃる
  • 仕事で使えないだろうか?(やる気が出る)
10 / 17

Why 私 Use Julia, 10 Years Later (6)

  • Announcing the release of Julia 1.0
  • 当時の感想

    • Jupyter は使える(よっしゃ)
    • どうやらオブジェクト指向じゃないっぽい. 多重ディスパッチってなんで必要なんだ?
    • ライブラリのインストールに失敗する
    • Python にあったあの機能が欲しい
    • using Plots とか using Flux がすごい時間がかかる (TTFX 問題)

      • カーネルの再起動で試行錯誤で思考が止まる.
      • 確かに速いけれど Python で書いた方が早い.
    • 辛くて.諦めた. Back to the Python を宣言. とはいえ Julia は気になる
11 / 17

Why 私 Use Julia, 10 Years Later (7)

  • なんとか少なくとも自分が快適に使えるようにしよう
  • 懸念点を突っ込まれたらコレですと指し示すリソースを作っていった
  • 環境構築を簡単にしたい
  • 他言語との連携
  • 簡単な数学をプログラミングで表現する方法から作っていこう
  • Issue にバグレポートを投稿,同じ現象で困ってる人がいたら助言する
  • 知見を個人の技術ブログを書いていく

    • 職場ではどうせ自分以外使ってないんだし,公開しても知財に影響はないだろう.
    • 今後数年間生きれる保証がどこにもなかったためもある
  • グラフや画像データを表示するのが楽しくなってくる
  • Julia 1.6 が出てインストールが作業が快適になった
  • Franklin.jl が楽しい
12 / 17

Why 私 Use Julia, 10 Years Later (8)

  • なんとなく Julia がわかってきた
  • 今までは人様のライブラリを使うだけだったが,作る側に回れた
  • 作る側の大変さを知る
  • 日本語の解説書が出てくるようになった
  • 仕事で使いたい.でも使う機会が無い (´・ω・`)
  • 物理的な近さで同じ境遇の人(=価値観を理解する人)がいない (´・ω・`)
  • PyCall.jl でもなんでもいいから Python のライブラリを Julia で使えるように整備するツールを書く
  • 仕事で使おうとしても TTFX 問題で自分自身がストレス溜まる
  • ここまでで何回か心が折れる
13 / 17

Why 私 Use Julia, 10 Years Later (9)

  • Julia 1.8 が出て使いやすくなってきた
  • GomalizingFlow.jl のデビュー
  • 研究者の楽しさ辛さがなんとなくわかってきた
  • Julia なんとなくわかってきた
  • 一方でお生活できる程度に金も欲しい(´・ω・`)
  • PythonCall.jl が便利
14 / 17

Why 私 Use Julia, 10 Years Later (10)

  • Juila 1.9 からリリース

    • TTFX 問題が改善される !!!
  • Pluto.jl が使いやすくなった
  • デバッグまわりのツールが増えてきた
  • 鈍器と呼ばれる 実践Julia入門, Julia大全が登場してきた
  • いろんな本が今年は出版されるらしい
15 / 17

時代は Julia なのでは?

そこでチュートリアル講演 です

概要: ライトユースにも使いたい、けれどもそれで高速性を犠牲にしたくない。総合的に開発できるものにしたい。超初心者にも習得は容易でありながら、ハッカーの満足にも応えられるものがほしい。」そういった願いからプログラミング言語 Julia が誕生しました。直近では v1.9 がリリースされ、長年課題であったパッケージの読み込み時間の短縮など、開発体験の改善が行われました。さらに和書の入門書も充実してきており、学習を始めるには絶好のタイミングといえるでしょう。本チュートリアル講演では Julia の入門として

  1. インストールと基本的な使い方 (<– このスライドの担当箇所)
  2. 型と多重ディスパッチ
  3. スレッド並列の基礎

3 つのトピックを解説します。この機会に Julia に入門し、新しい体験を始めてみませんか。

16 / 17

以上

17 / 17

この資料について

更新日: 2023-07-10T03:59:49.436

お勉強会資料はこちら TODO 後で追記

2 / 17
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow