Slide 1

Slide 1 text

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.

Slide 20

Slide 20 text

Good, but …

Slide 21

Slide 21 text

Complex! Good, but …

Slide 22

Slide 22 text

# 3 G O

Slide 23

Slide 23 text

www.meetup.com/nyhackr/events/132413222/

Slide 24

Slide 24 text

www.meetup.com/nyhackr/events/132413222/

Slide 25

Slide 25 text

Slide Video Image: golang.org/doc/gopher/

Slide 26

Slide 26 text

# 4 C L O J U R E

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Image: en.wikipedia.org/wiki/Rich_Hickey

Slide 29

Slide 29 text

Image: en.wikipedia.org/wiki/Rich_Hickey Rich Hickey's Greatest Hits

Slide 30

Slide 30 text

Image: arcweb.archives.gov/arc/action/ExternalIdSearch?id=548253 logic programming library core.logic

Slide 31

Slide 31 text

http://www.lighttable.com/

Slide 32

Slide 32 text

http://getprismatic.com/

Slide 33

Slide 33 text

# 5

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

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.

Slide 45

Slide 45 text

Table: julialang.org/

Slide 46

Slide 46 text

Graph: github.com/ViralBShah/julia-presentations/raw/master/Fifth-Elephant-2013/Fifth-Elephant-2013.pdf

Slide 47

Slide 47 text

Code: julialang.org/

Slide 48

Slide 48 text

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!

Slide 54

Slide 54 text

docs.julialang.org/en/latest/packages/packagelist/

Slide 55

Slide 55 text

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

Slide 61

Slide 61 text

conference.scipy.org/scipy2013/presentation_detail.php?id=203

Slide 62

Slide 62 text

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 …