Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lispへの招待
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
stibear1996
April 24, 2013
Programming
0
330
Lispへの招待
Used at 新入部員初等教育プレゼン
stibear1996
April 24, 2013
Tweet
Share
More Decks by stibear1996
See All by stibear1996
菊の花
stibear
0
100
Other Decks in Programming
See All in Programming
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
460
CSC307 Lecture 02
javiergs
PRO
1
780
AI & Enginnering
codelynx
0
110
高速開発のためのコード整理術
sutetotanuki
1
400
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6.1k
dchart: charts from deck markup
ajstarks
3
990
Basic Architectures
denyspoltorak
0
670
Architectural Extensions
denyspoltorak
0
280
CSC307 Lecture 05
javiergs
PRO
0
500
Oxlintはいいぞ
yug1224
5
1.3k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
Google's AI Overviews - The New Search
badams
0
900
The World Runs on Bad Software
bkeepers
PRO
72
12k
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
Building AI with AI
inesmontani
PRO
1
690
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
WENDY [Excerpt]
tessaabrams
9
36k
Between Models and Reality
mayunak
1
190
Music & Morning Musume
bryan
47
7.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
Transcript
~唯一無二の言語を学ぶ~
まずは自己紹介から stibear (@stibear1996) NPCAでは希少種であるLisper 真人間
ようこそ、NPCAへ! 皆さんには、今後我が部で精力的に活動して いってもらうために、基礎的な知識を養ってもら います。 具体的には、プログラミングに使用する人工言 語、つまりプログラミング言語について、学習し てもらうことになります。 その一つの候補として、私の教える、Lispという 言語について説明します。 質問があれば、いつでもしてもらって結構です。
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
関数型言語? プログラミング言語には、 命令型言語 宣言型言語 があり、関数型言語は宣言型言語に属する 関数型言語は最近(特にLLerの間で)流行
バグを少なくすることができる (あまり意識する必要はない。複数の言語を 扱うようになれば、自然と理解できるようにな る)
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
S式? symbolic expression Lispでは全てが式 S式という構文を使ってそれを表現 これによって後述の高度なメタプログラミン
グを実現 ちなみにM式というものもあったが、今は使 われない
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化した 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化した 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
人工知能? コンピュータに人間と同様の知能を持たせ ようという試み 人間の脳の働きを真似ることを本質とした場 合、その研究は、上手く行っているとは言い 難い しかし、それらの研究成果は確実に私たち
の身の回りで役立っている
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
Lispとは? 関数型プログラミング言語の原初 S式を使って式指向のプログラミング(そのため 非常にシンプル) 人工知能ブームのメイン言語となり、流行した 1958年にJohn
McCarthyによって「発見」される。 それ以来、たくさんの方言に分化 現在主流となっているのは、 Common Lisp Scheme Clojure Emacs Lisp の4つ
今回の新入部員初等教育では、 そのうちの、Common Lispという方言 を主に教えます (方言間の差異はそれほど大きくはないので、どれか一つ 習得すれば、他は比較的簡単に習得できます) ※方言というのは、日本語に関西 弁、東京弁などあるように、基本的 にはその言語の文法に従っている が、細部において差異の見受けら
れるもののこと
Common Lispとは? 数多あるLisp方言を統一する目的で開発され た それまでに培われてきたLisp文化を受け継い でいる ANSIで標準化
NASAでもCommon Lispによって作られたプロ グラムが認められた GoogleにもITAというCommon Lispでのプロジェ クトで成功した会社が買収された(つまりGoogle もその価値を認めている) 抽象度の高いところから低いところまでカバー
Common Lispとは? 数多あるLisp方言を統一する目的で開発され た それまでに培われてきたLisp文化を受け継い でいる ANSIで標準化
NASAでもCommon Lispによって作られたプロ グラムが認められた GoogleにもITAというCommon Lispでのプロジェ クトで成功した会社が買収された(つまりGoogle もその価値を認めている) 抽象度の高いところから低いところまでカバー
標準化? ANSI(アメリカの標準化団体)によって標準化 標準化とは、要は文書によってそれが統一され ているということ。標準化されていることは、その 仕様が固まっており、より可搬性が高くなる 時代は移りゆくもの
特定の企業体や、財団法人などが開発する言 語なども多くありますが、仕様が簡単に変わりう る
Common Lispとは? 数多あるLisp方言を統一する目的で開発され た それまでに培われてきたLisp文化を受け継い でいる ANSIで標準化
NASAでもCommon Lispによって作られたプロ グラムが認められた GoogleにもITAというCommon Lispでのプロジェ クトで成功した会社が買収された(つまりGoogle もその価値を認めている) 抽象度の高いところから低いところまでカバー
Common Lispとは? 数多あるLisp方言を統一する目的で開発され た それまでに培われてきたLisp文化を受け継い でいる ANSIで標準化
NASAでもCommon Lispによって作られたプロ グラムが認められた GoogleにもITAというCommon Lispでのプロジェ クトで成功した会社が買収された(つまりGoogle もその価値を認めている) 抽象度の高いところから低いところまでカバー
抽象度? 抽象度が低いとハードに近いが、記述性は 下がる(つまり記述量が増えたりなど複雑化 する) 抽象度が高いと記述性が上がるが、ハード より遠い(つまり性能が確保しにくい) Common
Lispはその点で、抽象度の高いと ころ・低いところを広くカバーしており、強み である
ところで、なぜLispか?
Lispの成立 1958年、MITのJohn McCarthy教授によっ て「発見」される 当初、アルゴリズムの数学的記法であった のをコンピュータで実行可能なものにした よって、その血筋は数学からである
Lispの強み S式を使い、式のみで(=文を使わず)シン プルかつエレガントなプログラミング マクロによる強力なメタプログラミング(=プ ログラムによるプログラミング) 動的型付けのため、型をあまり意識せずプ ログラミングすることができる
言語の核がシンプルなため、すぐに理解し、 実用することができる
すべての言語はLispに漸近する かのLispハッカー、P. Grahamは言う、 「各言語は次第にLispに近付いてきている。」 どうして漸近するのか?(してるといえるのか?) → Lispが最良であるため、プログラミング言語がより良 くなりつつあると仮定するなら、そこに漸近すると考えら
れます Lispがもしあらゆるプログラミング言語の先を行って いるとしたら、それらの中で最も強力だとしたら、そ れを使わない理由があろうか?
すべての言語はLispに漸近する かのLispハッカー、P. Grahamは言う、 「各言語は次第にLispに近付いてきている。」 どうして漸近するのか?(してるといえるのか?) → Lispが最良であるため、プログラミング言語がより良 くなりつつあると仮定するなら、そこに漸近すると考えら
れます Lispがもしあらゆるプログラミング言語の先を行って いるとしたら、それらの中で最も強力だとしたら、そ れを使わない理由があろうか?
いえ、ありません。
根拠は? Lispが最も先を行っているという根拠はなんだ ろう? → 複数の言語を勉強してみると分かるようになる のだが、プログラミング言語の中にも流行というも のがあり、その中心をゆく言語は、どんどんとLisp に近づいていっています
最強のものがはっきりしているなら、それを使う べきだろう?
とりあえず実演? 質問等に答えつつ、適当に実演し たいと思います
参考にすべき文献 「ハッカーと画家」 Paul Graham (原著), 川合 史朗 (翻訳)
「Land of Lisp」 M.D. Conrad Barski (著), 川 合 史朗 (翻訳) 「実践Common Lisp」 Peter Seibel (著), 佐野 匡俊 (翻訳), 水丸淳 (翻訳), 園城雅之 (翻訳), 金子祐介 (翻訳) 「On Lisp」 Paul Graham (原著, 翻訳), 野田 開 (翻訳) ほか