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
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
130
Oxlintはいいぞ
yug1224
5
1.3k
dchart: charts from deck markup
ajstarks
3
990
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
並行開発のためのコードレビュー
miyukiw
0
130
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
690
Package Management Learnings from Homebrew
mikemcquaid
0
220
CSC307 Lecture 07
javiergs
PRO
0
550
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
CSC307 Lecture 01
javiergs
PRO
0
690
CSC307 Lecture 04
javiergs
PRO
0
660
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
620
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
Un-Boring Meetings
codingconduct
0
200
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
65
The Curious Case for Waylosing
cassininazir
0
240
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
85
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
Side Projects
sachag
455
43k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Unsuck your backbone
ammeep
671
58k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
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 (原著, 翻訳), 野田 開 (翻訳) ほか