techmix2014 温故知新

57
温故知新 2014/12/6 Techmix Hokkaido 沼田 一哉 @kaznum http://www.flickr.com/photos/75905404@N00/5074611208

Upload: kazuya-numata

Post on 15-Apr-2017

5.604 views

Category:

Engineering


0 download

TRANSCRIPT

温故知新2014/12/6 Techmix Hokkaido

沼田 一哉 @kaznum

http://www.flickr.com/photos/75905404@N00/5074611208

こんにちは

•ぬまた かずや( @kaznum )

•札幌の平凡なプログラマ

•妻と息子(3歳)の3人暮らし

家計簿 さな太郎https://github.com/kaznum/sanataro

見積もっ太郎https://github.com/estcosmo/mitsumottaro

僕のお題

温故知新

温故知新

http://dictionary.goo.ne.jp/leaf/idiom/%E6%B8%A9%E6%95%85%E7%9F%A5%E6%96%B0/m0u/

“前に学んだことや昔の事柄をもう一度調べたり考えたりして、新たな道理や知識を見出し自分のものにする

こと。”

古代の力学

•アリストテレス

古典力学・電磁気学

•コペルニクス !

•ガリレオ・ガリレイ •ティコ・ブラーエ、ケプラー •ニュートン

!

•ファラデー、マクスウェル

量子力学

•ド・ブロイ •ハイゼンベルグ •シュレーディンガー •プランク •ボーア •ディラック •フォン・ノイマン

量子力学・相対性理論の 融合

•ファインマン、朝永振一郎 •ダイソン、シュウィンガー •湯川、南部、益川、小林、小柴

量子力学の応用

•半導体 •トランジスタ •バーディーン、ブラッテン、ショックレー •トンネルダイオード:江崎 •発光ダイオード(青色):赤崎、天野、中村 •量子コンピュータ

物理学に限らず、科学の進歩は

「先人の経験と知恵」 を拠り所としている

Ruby

Rubyとの出会い(2000)

•オブジェクト指向 •動的言語 •メタプログラミング •関数型

理解が足りない もっと知りたい

•オブジェクト指向 •動的言語 •メタプログラミング •関数型

ref. 静的型付き関数型言語のススメ by tmaeda https://speakerdeck.com/tmaedax/jing-de-xing-fu-kiguan-shu-xing-yan-yu-falsesusume

Haskell

純粋関数型プログラミング言語

Programming in Haskell (2007)

写経&練習問題

記録を残して公開

https://github.com/kaznum/Programming-in-Haskell

写経と練習問題の解答を Githubで公開

• Referential Transparency(参照透過性)

• Type Inference(型推論)

• Functor

• Applicative Functor

• Monad

ぼくの想像を はるかに超えて

深かった

@tmaedaの 罠に

嵌められた

プログラミング in OCaml

(2007)

https://github.com/kaznum/programming_in_ocaml_exercise

写経と練習問題の解答を Githubで公開

MatzLisp

“Lispはいつも時代の最先端に 位置している”

まつもとゆきひろ

http://www.itmedia.co.jp/enterprise/articles/0801/29/news010_2.html

じゃあ Lisp について勉強してみ

よう!

• Common Lisp

• Scheme

• Emacs Lisp

• Closure

• などなど

“いまRubyがブームだが、Rubyは要するにカッコのないLisp。XMLもぶ厚いカッコのあるLisp。いろいろなプログラミング技法を見ますが、『Lispにあった』ということが多いです”

竹内郁雄

出典: @IT「Lispの仏さま 竹内郁雄の目力」

http://www.atmarkit.co.jp/ait/articles/0807/23/news141.html

13年間も熟成した

積読本https://www.flickr.com/photos/foolstopzanet/151936713/

Structure and Interpretation of Computer Programs (1996)

MITの新入生向けのプログラミングの

教科書

Structure and Interpretation of Computer Programs (SICP)

あくまでも プログラミング言語

の教科書

Structure and Interpretation of Computer Programs (SICP)

説明用の言語として Scheme

が採用されている

Structure and Interpretation of Computer Programs (SICP)

Gerald Sussman Schemeの生みの親

Harold Abelson MIT/GNU Schemeの生みの親

Structure and Interpretation of Computer Programs (SICP)

世界的に高評価 世界中の多くの大学で教

科書として採用

Structure and Interpretation of Computer Programs (SICP)

MIT150年の歴史の中で最も重要な発明の一つ (Boston Globe紙)

“Harold Abelson and Gerald Jay Sussman, a pair of MIT computer science professors, wrote “Structure and Interpretation of Computer Programs,” which remains a classic for encouraging the teaching of not one specific programming

language, but big-picture themes students could apply across a range of programming scenarios.”

Structure and Interpretation of Computer Programs (SICP)

“MITのCSの教授であるAbelsonとSussmanはSICPを書いた。これは特定のプログラミング言語ではなく、学生が様々なプログラミングのシナリオに適用できる大局的なテーマを

教えることを促す古典であり続けている。”

(Boston Globe紙)

写経&練習問題を始めた

MITが作成した新入生向けのプログラミ

ングの教科書

Structure and Interpretation of Computer Programs (SICP)

新入生向け

Structure and Interpretation of Computer Programs (SICP)

新入生向け

Structure and Interpretation of Computer Programs (SICP)

ウソすぎ!

内容が濃厚

Structure and Interpretation of Computer Programs (SICP)

オブジェクト指向

関数型

メタプログラミング、DSL

遅延評価

論理プログラミング

ガベージコレクション

Structure and Interpretation of Computer Programs (SICP)

Lispが常に時代の最先端 であることがよくわかった

Structure and Interpretation of Computer Programs (SICP)

https://github.com/kaznum/SICP

写経と練習問題の解答を Githubで公開

[まだ第4章の途中(全5章)]

最近、そんなことしてます。

再認識したこと

“職人”

IT系のテクノロジーは 急速に進歩

いろいろな技術の •生まれた経緯 •根本をなす概念・文化 •他との違い について、とても詳しい

進歩についていける人の共通点

歴史(先人の経験と知恵) を学ぶのが

!

一番の近道(?)

その先・・・

“『既に創られた物理学』を学ぶことと、その物理学が創られた当時に創った本人が考えたことは全く違うんです。” !

出典: 湯川秀樹著 「物理講義 」1977