Page 1
温故知新2014/12/6 Techmix Hokkaido
沼田 一哉 @kaznum
http://www.flickr.com/photos/75905404@N00/5074611208
Page 2
こんにちは
•ぬまた かずや( @kaznum )
•札幌の平凡なプログラマ
•妻と息子(3歳)の3人暮らし
Page 3
家計簿 さな太郎https://github.com/kaznum/sanataro
Page 4
見積もっ太郎https://github.com/estcosmo/mitsumottaro
Page 6
温故知新
http://dictionary.goo.ne.jp/leaf/idiom/%E6%B8%A9%E6%95%85%E7%9F%A5%E6%96%B0/m0u/
“前に学んだことや昔の事柄をもう一度調べたり考えたりして、新たな道理や知識を見出し自分のものにする
こと。”
Page 8
古典力学・電磁気学
•コペルニクス !
•ガリレオ・ガリレイ •ティコ・ブラーエ、ケプラー •ニュートン
!
•ファラデー、マクスウェル
Page 9
量子力学
•ド・ブロイ •ハイゼンベルグ •シュレーディンガー •プランク •ボーア •ディラック •フォン・ノイマン
Page 10
量子力学・相対性理論の 融合
•ファインマン、朝永振一郎 •ダイソン、シュウィンガー •湯川、南部、益川、小林、小柴
Page 11
量子力学の応用
•半導体 •トランジスタ •バーディーン、ブラッテン、ショックレー •トンネルダイオード:江崎 •発光ダイオード(青色):赤崎、天野、中村 •量子コンピュータ
Page 12
物理学に限らず、科学の進歩は
「先人の経験と知恵」 を拠り所としている
Page 13
Ruby
Rubyとの出会い(2000)
Page 14
•オブジェクト指向 •動的言語 •メタプログラミング •関数型
Page 16
•オブジェクト指向 •動的言語 •メタプログラミング •関数型
Page 17
ref. 静的型付き関数型言語のススメ by tmaeda https://speakerdeck.com/tmaedax/jing-de-xing-fu-kiguan-shu-xing-yan-yu-falsesusume
Page 18
Haskell
純粋関数型プログラミング言語
Page 19
Programming in Haskell (2007)
Page 22
https://github.com/kaznum/Programming-in-Haskell
写経と練習問題の解答を Githubで公開
Page 23
• Referential Transparency(参照透過性)
• Type Inference(型推論)
• Functor
• Applicative Functor
• Monad
Page 24
ぼくの想像を はるかに超えて
深かった
Page 26
@tmaedaの 罠に
嵌められた
Page 27
プログラミング in OCaml
(2007)
Page 28
https://github.com/kaznum/programming_in_ocaml_exercise
写経と練習問題の解答を Githubで公開
Page 30
“Lispはいつも時代の最先端に 位置している”
まつもとゆきひろ
http://www.itmedia.co.jp/enterprise/articles/0801/29/news010_2.html
Page 31
じゃあ Lisp について勉強してみ
よう!
Page 32
• Common Lisp
• Scheme
• Emacs Lisp
• Closure
• などなど
Page 33
“いまRubyがブームだが、Rubyは要するにカッコのないLisp。XMLもぶ厚いカッコのあるLisp。いろいろなプログラミング技法を見ますが、『Lispにあった』ということが多いです”
竹内郁雄
出典: @IT「Lispの仏さま 竹内郁雄の目力」
http://www.atmarkit.co.jp/ait/articles/0807/23/news141.html
Page 34
13年間も熟成した
積読本https://www.flickr.com/photos/foolstopzanet/151936713/
Page 35
Structure and Interpretation of Computer Programs (1996)
Page 36
MITの新入生向けのプログラミングの
教科書
Structure and Interpretation of Computer Programs (SICP)
Page 37
あくまでも プログラミング言語
の教科書
Structure and Interpretation of Computer Programs (SICP)
Page 38
説明用の言語として Scheme
が採用されている
Structure and Interpretation of Computer Programs (SICP)
Page 39
Gerald Sussman Schemeの生みの親
Harold Abelson MIT/GNU Schemeの生みの親
Structure and Interpretation of Computer Programs (SICP)
Page 40
世界的に高評価 世界中の多くの大学で教
科書として採用
Structure and Interpretation of Computer Programs (SICP)
MIT150年の歴史の中で最も重要な発明の一つ (Boston Globe紙)
Page 41
“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紙)
Page 43
MITが作成した新入生向けのプログラミ
ングの教科書
Structure and Interpretation of Computer Programs (SICP)
Page 44
新入生向け
Structure and Interpretation of Computer Programs (SICP)
Page 45
新入生向け
Structure and Interpretation of Computer Programs (SICP)
ウソすぎ!
Page 46
内容が濃厚
Structure and Interpretation of Computer Programs (SICP)
Page 47
オブジェクト指向
関数型
メタプログラミング、DSL
遅延評価
論理プログラミング
ガベージコレクション
Structure and Interpretation of Computer Programs (SICP)
Page 48
Lispが常に時代の最先端 であることがよくわかった
Structure and Interpretation of Computer Programs (SICP)
Page 49
https://github.com/kaznum/SICP
写経と練習問題の解答を Githubで公開
[まだ第4章の途中(全5章)]
Page 53
IT系のテクノロジーは 急速に進歩
Page 54
いろいろな技術の •生まれた経緯 •根本をなす概念・文化 •他との違い について、とても詳しい
進歩についていける人の共通点
Page 55
歴史(先人の経験と知恵) を学ぶのが
!
一番の近道(?)
Page 57
“『既に創られた物理学』を学ぶことと、その物理学が創られた当時に創った本人が考えたことは全く違うんです。” !
出典: 湯川秀樹著 「物理講義 」1977