狠狠撸

狠狠撸Share a Scribd company logo
厂滨颁笔の绍介
~SICPについて全く知らない僕が社内の人とSICPの勉強会をせんがために色々調べてみた~
このプレゼンの目的
____
/ \
/ _ノ ヽ?_ \
/ o?((●)) ((●))?o \ SICPやりたいんだお…
| (__人__) |
\ ` ⌒? /
このプレゼンの目的
____
/ \
/ _ノ ヽ?_ \
/ o?⌒ ⌒?o \ でもド文系だし一人で
| (__人__) | SICPやるのこわいお…
\ ` ⌒? /
このプレゼンの目的
____
/⌒ ⌒\
/( ●) (●)\
/::::⌒(__人__)⌒:: \ だから他の人巻き込んでやるお!
| |r┬-| |
\ `ー'? /
自己紹介
Twitter: @irration
Blog: http://kinokoru.jp/
厂滨颁笔の概要と実绩
SICPとは
Structure and Interpretation of Computer Programs
( 日本語版は『計算機プログラムの構造と解釈』 )
またの名を「魔術師本」。
1985年に出版された計算機科学の教科書。
実績
?コンピュータサイエンスの入門書として
MIT(マサチューセッツ工科大学)の一年次講義で使用。
?約30年間にわたり絶版になることなく
現在も生き残り続けている。
Amazon.comにおけるレビュー(1)
?Peter Norvig( 人工知能のウィザード的な人 )
?「例えばもしSICPが自動車について書かれた本だとしたら、”それがどうして動くのか、
どのようにできているのか、そして21世紀の乗り物をどうやって設計していくか”を知
りたい人向けの本といった所かな」
To use an analogy, if SICP were about automobiles, it would be for the person who
wants to know how cars work, how they are built, and how one might design fuel-
efficient, safe, reliable vehicles for the 21st century.
?「SICPは原則に基づいた素晴らしいアプローチを提供してくれるよ」
SICP gives you an approach that will succeed, but it is an approach based on principles
and wisdom, not on a checklist.
Amazon.comにおけるレビュー(2)
?Paul Graham( 「ハッカーと画家」著者 )
?「コンピュータ科学の最高の古典の一つだよ」
This is one of the great classics of computer science.
なんで厂滨颁笔を学ぶの?
より効率的に考えるため
コード書く量を減らして
よりパフォーマンスの良いコードを
書くための考え方を提供してくれる。
(ただしSICPはプログラミングや
アルゴリズムを勉強するための本ではない)
良い仮説をたてるため
「過去に似たような原理を取り入れた技術があったけど、
それに基づいて考えると、これってこういうことなのかな?」
普遍的な原理?原則がわかれば
裏でどういうことをしているかわかる。
車の例で言うと、
例えば車が故障した時に、その内部構造を知っていれば
なぜ故障したのか ある程度の仮説をつけられる。
新しい技術を生み出すため
1985年に生まれて、技術が目まぐるしく
変化していく中でも絶版にならず生き残っており、
現在でも広くSICPの愛読者が存在する。
↓
激動する技術の中でも変わらない
普遍的な体系が存在しており、
その習得に適している
↓
新しい技術を生み出す上でのベースとなる思考を育む
純粋な「考え方」を教えてくれる
言語にはSchemeを使用しているけれど、
使用している文法はほんのちょっとだけ。
進めていくうちに、日本語を書くように
自然とプログラムを組めるようになってくる。
プログラミングが持つ固有のクセ等が混ざらず
本質的な問題にのみフォーカスすることができる。
長所だけ紹介するのもアレなので
短所も紹介しておきます
具体的な効果が見えにくい
「SICPを学んだことで具体的にどんなメリットがあったか」
「SICPで学んだことがどんなシーンで役に立ったか」
を定量化しづらい。
(実際にWebでSICPを終えた人の記事を見ても
「以前より効率的なコードが書けるようになった」
など、その成果が漠然としている)
数学の勉強も必要
微積とかシグマ計算とか。
しかも章を追うごとに段々難しくなり、
2章までで脱落する人が大半を占める印象。
「SICPをやる」と心に決めた際には
複雑な数式に立ち向かう覚悟が必要。
それなりの期間を投資する必要がある
個人のブログを見ていると、
全て終えるまでに約半年~一年ぐらい。
モチベーションを維持しにくい
?成果が見えにくい
?数学的な複雑さ
?長期間の投資が必要
などの要因が相まって、
個人でSICPに立ち向かうと
闇に葬り去られる可能性がある。
(実際に葬られた人間の数は数知れず)
実用面での技術体系の学習とは別軸で考える必要がありそう。
例 特徴
実用面に
おける技
術体系
?特定のプログラミング言
語
?フレームワーク
?○○駆動開発
?○○指向
?目的がはっきりしている
?導入したことによる成果が見えやすい
?時代によって移り変わるため、マスターしている技術体系が
別の技術体系にシフトすると実用として使えなくなる
?導入して効果を実感するまでそんなに時間がかからない
SICP - ?時代を超えた普遍的な技術体系を身に着けることができる
?新しい技術やパラダイムを習得する上での助けになる
?新しい技術やパラダイムを考える上での助けになる
?良い仮説を立てる力を育む
?学習したことによる具体的?定量的な成果が見えにくい
?学習に時間がかかる
普通に勉強して具体的な成果が見えにくいのであれば
SICPまるまるやった所で時間的なムダも多いだろうし、
原理的な部分も「遅延評価勉強法」で学べばよくね?
Q1
遅延評価勉強法
問題が発生した時、または必要になった時
初めて深く勉強する方法。
「何かを解決する」という目的が先行するため
効率が良くスンナリ頭に入りやすい。
良いハッカーがよくやっているという声がWeb上でちらほら。
勉強が苦手な人向けの「遅延評価勉強法」 - nanapi社長日記
http://blog.livedoor.jp/kensuu/archives/50555054.html
(遅延評価勉強法で)何より得難いものというのは、異なるものを学ぶことによって得ら
れる、普遍的な知識です。複数の異なるタイプの言語を学ぶことで得られる「プログ
ラミング 言語というもの」に関する知識、様々な仮想化技術を学ぶことで得られる
「コンピュータ?OSとはなんなのか」という感覚、組み込み?スマホ?ブラウザ?
サーバサイドと見ることで身につく「ソフトウェアを提供する」という仕事、webア
プリ?APIサーバ?バッチ処理?ジョブキューといった「コンピュータ に仕事をさせ
る」方法論、ステートレスなアプリケーションやデータをロスしてはいけないデータ
ベースを通じて学ぶ「データやプロセスのライフサイクル」などなど。
遅延評価勉強法だと得られなかったもの – As a Futurist… からの引用
http://blog.riywo.com/2014/01/08/233316
遅延评価勉强法も银の弾丸じゃなさそう。
始めたいとは思うけど
SICPってお高いんでしょう?
Q2
本で買えば5000円近くするけど、
最近SICPの日本語訳(非公式)がPDFで出たらしい!
↓
非公式PDF版SICPの全訳を公開しました
http://d.hatena.ne.jp/minghai/20140402/p1
以上です
ありがとうございました

More Related Content

厂滨颁笔の绍介