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
stibear1996
April 24, 2013
Programming
0
280
Lispへの招待
Used at 新入部員初等教育プレゼン
stibear1996
April 24, 2013
Tweet
Share
More Decks by stibear1996
See All by stibear1996
菊の花
stibear
0
99
Other Decks in Programming
See All in Programming
Glue Studio Visual ETL実装時にハマったこと
kokitamura
0
100
Amazon CloudWatchの地味だけど強力な機能紹介!
itotsum
0
190
MCP調べてみました! / Exploring MCP
uhzz
2
2.3k
API for docs
soutaro
3
1.5k
Ruby on Railroad: The Power of Visualizing CFG
ydah
0
260
GitHub Copilot for Azureを使い倒したい
ymd65536
1
210
State of Namespace
tagomoris
5
2.2k
状態と共に暮らす:ステートフルへの挑戦
ypresto
3
990
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
1
220
Java 24まとめ / Java 24 summary
kishida
3
510
ComposeでのPicture in Picture
takathemax
0
120
2ヶ月で生産性2倍、お買い物アプリ「カウシェ」4チーム同時改善の取り組み
ike002jp
1
100
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
46
14k
GitHub's CSS Performance
jonrohan
1030
460k
Speed Design
sergeychernyshev
29
910
The Language of Interfaces
destraynor
157
25k
Done Done
chrislema
184
16k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Site-Speed That Sticks
csswizardry
6
510
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Automating Front-end Workflow
addyosmani
1370
200k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
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 (原著, 翻訳), 野田 開 (翻訳) ほか