Babel guide
5 Languages in 13 Weeks
!
Sorami Hisamoto
Computational Linguistics Lab.
Nara Institute of Science & Technology
November 15, 2013
Bruegel - The tower of Babel
@
sorami
Slide 2
Slide 2 text
To casually introduce the languages
I played with this summer.
Slide 3
Slide 3 text
I N S P I R AT I O N S ݩ ωλ
Slide 4
Slide 4 text
Image: www.photo-ac.com/main/detail/44086
Slide 5
Slide 5 text
T O U R D E B A B E L
Image: www.ashinari.com/2013/09/11-381896.php
Steven Yegge
Slide 6
Slide 6 text
T O U R D E B A B E L
Image: www.ashinari.com/2013/09/11-381896.php
Python
Ruby
Java
Perl
C++
Lisp
C
Steven Yegge
Slide 7
Slide 7 text
T O U R D E B A B E L
Image: www.ashinari.com/2013/09/11-381896.php
Original Essay
⽇日本語訳
Python
Ruby
Java
Perl
C++
Lisp
C
Steven Yegge
Slide 8
Slide 8 text
Image source
Slide 9
Slide 9 text
“C++ is the dumbest language on earth”
C++は地上でもっともバカな⾔言語だ。
Image source
Slide 10
Slide 10 text
“The original brilliant guys and gals here only allowed two languages
in Amazon's hallowed source repository: C and Lisp”
初期にいたすばらしい⼈人たちは、Amazonの神聖なるソースリポジトリに
2種類の⾔言語しか⼊入れることを許さなかった。CとLispだ。
“C++ is the dumbest language on earth”
C++は地上でもっともバカな⾔言語だ。
Image source
Slide 11
Slide 11 text
“The original brilliant guys and gals here only allowed two languages
in Amazon's hallowed source repository: C and Lisp”
初期にいたすばらしい⼈人たちは、Amazonの神聖なるソースリポジトリに
2種類の⾔言語しか⼊入れることを許さなかった。CとLispだ。
“C++ is the dumbest language on earth”
C++は地上でもっともバカな⾔言語だ。
Image source
“Java is simultaneously the best and the worst thing that has
happened to computing in the past 10 years.”
Javaは過去10年においてコンピューティングの世界に起きた最良かつ最悪のことだ。
Slide 12
Slide 12 text
“The original brilliant guys and gals here only allowed two languages
in Amazon's hallowed source repository: C and Lisp”
初期にいたすばらしい⼈人たちは、Amazonの神聖なるソースリポジトリに
2種類の⾔言語しか⼊入れることを許さなかった。CとLispだ。
“C++ is the dumbest language on earth”
C++は地上でもっともバカな⾔言語だ。
“Java is simultaneously the best and the worst thing that has
happened to computing in the past 10 years.”
Javaは過去10年においてコンピューティングの世界に起きた最良かつ最悪のことだ。
“.. Sperm Whale that exploded in the streets of Taiwan over the summer.
Whale guts everywhere, covering cars, motorcycles, pedestrians.
That's Perl. It's charming, really.”
Perlは夏の台湾の通りの上で破裂したマッコウクジラだ。はらわたがそこら中に飛び
散って、⾞車や⾃自転⾞車や歩⾏行者を覆っている。それがPerlだ。本当にチャーミングだ 。
Image source
Slide 13
Slide 13 text
# 1 P Y T H O N
Slide 14
Slide 14 text
Image source
Slide 15
Slide 15 text
Productivity
Community
Image source
Slide 16
Slide 16 text
Productivity
Community
Speed
Image source
Slide 17
Slide 17 text
# 2 S C A L A
Slide 18
Slide 18 text
Programming Seminars @ NAIST Computational Linguistics Lab.
Slide 19
Slide 19 text
Programming Seminars @ NAIST Computational Linguistics Lab.
New language for Technical Computing
2012~. Started in MIT. Active community.
Slide 36
Slide 36 text
New language for Technical Computing
2012~. Started in MIT. Active community.
High-level & Dynamic
Sophisticated type system. Multiple dispatch.
Slide 37
Slide 37 text
New language for Technical Computing
2012~. Started in MIT. Active community.
High-level & Dynamic
Sophisticated type system. Multiple dispatch.
High Performance
JIT Compiler. Comparable to C and Fortran.
Slide 38
Slide 38 text
Why new language?
Slide 39
Slide 39 text
Why new language?
Two-tier Architectures
High-level logic in dynamic language e.g. Python
Heavy lifting in low-level language e.g. C, Fortran
Slide 40
Slide 40 text
Why new language?
Compromise between convenience & performance.
Two-tier Architectures
High-level logic in dynamic language e.g. Python
Heavy lifting in low-level language e.g. C, Fortran
Slide 41
Slide 41 text
Why new language?
Compromise between convenience & performance.
Two-tier Architectures
We want to do everything in
one productive language!
High-level logic in dynamic language e.g. Python
Heavy lifting in low-level language e.g. C, Fortran
Slide 42
Slide 42 text
Speed up
existing languages?
Slide 43
Slide 43 text
Speed up
existing languages?
Language design under assumption
it would be implemented as
an interpreter.
Slide 44
Slide 44 text
Speed up
existing languages?
Language design under assumption
it would be implemented as
an interpreter.
Sabotages ability to
generate efficient code.
C
github.com/JuliaLang/julia/blob/master/test/perf/micro/perf.c
Slide 49
Slide 49 text
C Julia
github.com/JuliaLang/julia/blob/master/test/perf/micro/perf.c julialang.org/
Slide 50
Slide 50 text
M U LT I P L E D I S PAT C H
code: docs.julialang.org/en/latest/manual/methods/
Slide 51
Slide 51 text
M U LT I P L E D I S PAT C H
code: docs.julialang.org/en/latest/manual/methods/
"The Design Impact of Multiple Dispatch"
Stefan Karpinski @ Strange Loop
Slide 52
Slide 52 text
H O M O I C O N I C I T Y
C O D E A S D ATA
Slide 53
Slide 53 text
H O M O I C O N I C I T Y
C O D E A S D ATA
Macros!
MCMC, Optimisations,
Linear Models, Text Analysis,
Time Series, OpenGL,
DataFrames, Arduino,
CUDA, Visualisation, etc…
docs.julialang.org/en/latest/packages/packagelist/
Slide 56
Slide 56 text
IJulia
Ipython for Julia
!
Powerful browser-based
graphical notebook
Image: julialang.org/
Slide 57
Slide 57 text
http://forio.com/julia/
Slide 58
Slide 58 text
?
Slide 59
Slide 59 text
cpplover.blogspot.jp/2012/04/pythonjulia.html
Slide 60
Slide 60 text
cpplover.blogspot.jp/2012/04/pythonjulia.html
“I believe Julia and Python is
a match made in heaven”
- Dag Sverre Seljebotn (Cython core developer)
Julia, Python and Cython - julia-dev | Google Groups
W H Y P Y T H O N I S T H E L A S T L A N G U A G E
Y O U ' L L H AV E T O L E A R N
Jake Vanderplas
jakevdp.github.io/blog/2012/09/20/why-python-is-the-last/
Slide 63
Slide 63 text
www.mit.edu/~mlubin/juliacomputing.pdf
Slide 64
Slide 64 text
ex.nicovideo.jp/denou/tournament/
Slide 65
Slide 65 text
ex.nicovideo.jp/denou/tournament/
Slide 66
Slide 66 text
ex.nicovideo.jp/denou/tournament/
Julia adpoted by a team at
the computer shogi (Japanse chess) tournament.
Slide 67
Slide 67 text
メカ⼥女⼦子将棋 アピール⽂文書☆
Slide 68
Slide 68 text
メカ⼥女⼦子将棋 アピール⽂文書☆
“Software re-implemented in Julia overwhelmed
existing one in C/C++, so we decided to use
the Julia-version for the tournament”
Slide 69
Slide 69 text
julialang.org
New language for Technical Computing
2012~. Started in MIT. Active community.
High-level & Dynamic
Sophisticated type system. Multiple dispatch.
High Performance
JIT Compiler. Comparable to C and Fortran.
Slide 70
Slide 70 text
‣ Julia: A Fast Dynamic Language for Technical Computing Academic paper
‣ An introductory presentation
‣ Learn X in Y minutes - where X=julia
‣ Videos from the Julia tutorial at MIT
‣ Julia tutorial @ DataGotham2013
‣ Forio Julia tutorial
‣ Project Euler with Julia
‣ Linear Models with Julia
‣ “Julia: A Fast Dynamic Language for Technical Computing” @ SciPy 2012
‣ “Julia and Python: a dynamic duo for scientific computing” @ SciPy 2013
G E T T I N G S TA R T E D …