神が山から降りて人々に語りかける・cross 2014・言語cross

24
山から降りて 人々語りかける esehara shigeo

Upload: esehara-shigeo

Post on 22-May-2015

677 views

Category:

Documents


0 download

DESCRIPTION

元々のプレゼンでちょっと煽ったところを削り、手直ししてアップロード

TRANSCRIPT

Page 1: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

神が山から降りて人々に語りかける

esehara shigeo

Page 2: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

お前誰だ

Page 3: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

esehara shigeo (30)twitter: @eseharanana music, Inc.

Pythonista // Clojuren

Page 4: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS
Page 5: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

(25歳過ぎの)誰かの心を変えて今からLispを勉強させることができるとは思っていない。

普通のやつらの上を行け──ポール・グラハム

Page 6: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

そもそもLisp

http://xkcd.com/224/

Page 7: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

しかしLisp

『Land of Lisp』より

Page 8: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

Lisperとは

『Land of Lisp』より

Page 9: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

人間には神の言語は手に負えないピーテル・ブリューゲル『バベルの塔』より(1563年)

Page 10: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

人間界で勝利したもの

Page 11: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

私は贈り与え、分かち与えたいのだ、プログラムでのJavaがその括弧を喜び、Lispがその富を喜ぶようにしたいと願っている。

ツァラツストラかく語りき・ニーチェの改変

Page 12: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

 そのために私は底へ降りていかなければならない、まるでLisperが夕べにプロジェクトへと光をもたらそうとJavaへ沈んでいく時のように、あああまりに豊かなLambdaよ。

 私もおまえと同じように降りていかなくて

はならない。わたしがそこに降りていこうと

している人々がそれを「没落」と名づけ

た。

ツァラツストラかく語りき・ニーチェの改変

※Rich Hickeyはこんなこと言ってはいない

Page 13: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

かくしてLispの没落ははじまった

HOW A COMMON LISP PROGRAMMER VIEWS USERS OF OTHER LANGUAGESより

Page 14: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

古い慣習の撤廃

Car・Cdrが無い

Page 15: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

ClojureにはCar・Cdrがない

● CarとCdrはWikipediaによれば、そもそも機械語の"Contents of the Address part of Register number"といった命令から来ている

● しかし、時代は既に機械語とか低レベルとかそういうのを基礎教養とするものではない

● 結果、「意味がわからない!」● 代わりにfirstとrestという親しみやすい単語へ

Page 16: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

人は未知なるものに対して恐怖を抱く(小林銅虫・「寿司・虚空編」絶賛連載中!より)

Page 17: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

可読性の向上()が全てではない

Page 18: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

Clojureの括弧たち

● 「[]」の参入(Vector)○ 例えばローカルスコープを作りたいときの変数宣言に使

う○ また関数の引数宣言のときに使う

● 「{}」の参入(連想配列)○ {:foo “bar”}みたいに宣言すると、(hoge :foo)みたいにと

れる

● 実はコンマが使える○ (def foo {:hoge “foo”, :bar “fuga”}) とすると見やすい

Page 19: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

利便性それJVMでやればいいじゃん

Page 20: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

Clojureとライブラリ

● leiningenというライブラリ管理ツールが結構優秀(自動的にパッケージ、repl立ち上げ、依存性解消、Devops、テスト色々)

● Lisp処理系ってたいていライブラリがないよね→JVM呼び出せればいいじゃん

● Clojure覚えても、JVM上だけでしょ.NETもあるし、JavaScriptにもできるよ

Page 21: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

非Lisperへのリーチ

Page 22: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

If Clojure disappeared tomorrow, what language(s) might you use as a “replacement”? http:

//cemerick.com/2012/08/06/results-of-the-2012-state-of-clojure-survey/

Page 23: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

かくして人間に神の言語が与えられた

Page 24: 神が山から降りて人々に語りかける・CROSS 2014・言語CROSS

https://github.com/esehara/ClojureBiyori興味があったら上のレポジトリにLet’sアクセス