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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.2k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
CSC307 Lecture 07
javiergs
PRO
0
550
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
370
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
170
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
170
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
AgentCoreとHuman in the Loop
har1101
5
230
dchart: charts from deck markup
ajstarks
3
990
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Agile that works and the tools we love
rasmusluckow
331
21k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
200
Building Applications with DynamoDB
mza
96
6.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
The untapped power of vector embeddings
frankvandijk
1
1.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
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 (原著, 翻訳), 野田 開 (翻訳) ほか