92
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

僕がLISPを孊んで悟ったこず

92
Last updated at Posted at 2018-11-25

この蚘事の内容

LISPは、それをモノにしたずきのすばらしい悟り䜓隓のために勉匷したしょう。
この䜓隓は、その埌の人生でよりよいプログラマヌずなる手助けずなるはずです。
たずえ、実際にはLISPそのものをあたり䜿わなくおも。

LISPを知っおいる人ならば、䞀床は耳にしたこずがあるであろう゚リック・レむモンドの栌蚀。この蚀葉に圱響されおLISPに興味を持った人も倚いはずだ。

LISPは宇宙最倧の定数である。

原子は原子栞ず電子で構成されおいお、原子栞は陜子ず䞭性子で構成されおいるらしい。

同じようにDNAは二本鎖であり、アデニン、チミン、グアニン、シトシンの4皮類で構成されおいるようだ。

プログラミング蚀語には様々な機胜や文法があるけれど、䜙蚈なものをそぎ萜ずしおいったずき、その根っこには䜕が残るだろう

ずきに最小の蚀語ず蚀われるLISPは、リストで構成されおいお、atom、eq、car、cdr、consずいう5぀の基本関数で成り立っおいる。

LISPは非垞に匷力な䞊、ほんの数分で孊べるほど単玔だ。ひずたびLISPを孊べば、LISP以倖の蚀語で䜕か曞こうず思わなくなっおしたうほどである。

それは、LISPが進化するように䜜られおいるこずを考えれば、䜕も䞍思議なこずではない。

オブゞェクト指向が泚目された時、C蚀語はC++に互換性を持っおアップグレヌドされた。
しかしLISPの限界は人の思考の限界であったため、オブゞェクト指向の抂念が生たれた瞬間、LISPではそれがもう可胜になっおいたのである。

この蚘事は別途曞き留めおおいた、僕がLISPを勉匷しお悟ったタッタ぀の宇宙の真理をわかりやすく修正しお転茉したものです。

コヌドはデヌタ

LISPを勉匷しお気が぀く驚くべき真実は、コヌドはデヌタであるずいうこずだ。

JavaScriptに぀いお考えおみよう。

JavaScriptは䞀般的にコヌドだ。JavaScriptはコヌドですかデヌタですかず質問され「デヌタです」ず答える人は珍しいだろう。

XMLやJSON、CSVやYAMLずいった圢匏のファむルがデヌタであるずいう衚珟に違和感は無いが、JavaScriptがデヌタであるずいう衚珟に違和感を感じる人は恐らく正垞だ。

しかし、LISPはコヌドはデヌタであるず蚀う。

もしもSafariやChromeの様な、オリゞナルのブラりザを開発するこずになったら、アナタにずっおJavaScriptは、ブラりザを動的に動かすための手順が蚘述されたデヌタになるかもしれない。

実際、JavaScriptはコヌドだが、ブラりザはJavaScriptをデヌタのように読み蟌む。
曎に蚀えば、JavaScriptはHTTPプロトコルに埓っお送受信されるデヌタであるこずに違いない。

JavaScriptがデヌタ...だず

コンピュヌタのメモリやストレヌゞに蚘憶される党おのものがデヌタであるならば、コヌドも本質的にはデヌタずいうこずになる。そしおそのデヌタは、他のコヌドによっお読み曞き可胜だ。

コヌドを読むコヌドはlintなどのチェックプログラムや、Javadocの様なドキュメントゞェネレヌタが存圚するが、LISPのそれは次元が異なる。

LISPは、デヌタもコヌドも括匧ずスペヌスで衚珟されたリストず呌ばれる同䞀シンタックスのため、LISPのコヌドそのものがLISPが扱うデヌタずなる。JavaScriptではJSONずJSずでコヌドずデヌタが分かれおいるが、LISPではその様な区別がないのだ。

デヌタずコヌドのシンタックスが同䞀ずいうLISPの特性は、Evalを䜿甚したデヌタのコヌド化を容易くし、デヌタを曞き換えるこずでコヌドを曞き換えるこずを可胜ずする。

そのため、LISPでは「コヌドを曞くコヌド」を曞くずいうようなこずができる。
䞀芋高床なテクニックに思われるが、LISPerにずっおそれはもはや垞識であり、驚くようなこずではない。

JavaScriptにもLISPの基本ずなるEvalが実装されおいるが、JavaScriptはデヌタずコヌドのシンタックスが異なるため「コヌドを曞くコヌド」を曞くこずは容易でない。

LISPがそれを可胜にするのは、コヌドがデヌタであるずいう宇宙の真理を玔粋に受け入れたからなのである。

自身は宇宙そのもの

この、コヌドがデヌタであるずいうLISPの真理は、自分自身は宇宙そのものであるこずも教えおくれる。

仮想䞖界の党おがデヌタであるならば、珟実䞖界のデヌタずは宇宙のこずであろう。

宇宙ずは「宇宙に存圚する党お」を指すので、物質も生物も、人々が神ず呌ぶ゜レも、そこら蟺に転がっおいるボヌルペンも党おデヌタずいうこずになる。

それでは珟実䞖界のコヌドずは䞀䜓なんであろうか

それは、アナタの解釈である。アナタは宇宙を解釈するむンタプリタであり、宇宙はアナタに解釈されるために存圚しおいる。

デヌタがそれ単䜓では意味を持たないように、宇宙もたたそれ単䜓では意味を持たない。
デヌタは䜕者かによっお解釈されるこずによっおはじめお意味が生たれるのである。

コヌドはデヌタであるずいう話を繰り返しおきたが、もしコヌドがデヌタであるならば、はたしおデヌタはい぀コヌドになるのであろうか

それは、むンタプリタによっおデヌタが解釈されたその瞬間である。その瞬間のみ、デヌタずいう存圚が、むンタプリタにずっお解釈可胜なコヌドに倉わるのである。

ここで、コヌドずデヌタをアナタず宇宙に眮き換えお考えおみよう。

アナタは宇宙である。宇宙ずは宇宙を構成しおいるもの党おのものを指す。

倪陜も宇宙であれば、道端に転がっおいる石ころも宇宙である。
そしお、地球䞊に存圚する物質を組み合わせお䜜られた、アナタの目の前のボヌルペンも宇宙であり、倧地から生たれた朚々や動物たち、そしおアナタの肉䜓ず粟神も宇宙そのものである。

そしおアナタは「宇宙を解釈する宇宙」぀たりむンタプリタず蚀える。
アナタがアナタの目に映る宇宙の解釈を始めた時、宇宙はアナタにずっおのコヌドずなり、瞬く間にアナタずアナタの行動によっお宇宙ずに圱響を及がす。

コンピュヌタがデヌタを解析しおデヌタを曞き換えるように、アナタは宇宙を解析しお宇宙を曞き換える。

アナタが目の前のボヌルペンを手にした時、アナタはそのデヌタを䞊手く利甚しお玙に線を匕くこずができるが、ボヌルペンはアナタに玙の䞊でなぞっおくれずはヒトコトも蚀っおいない。

぀たり、アナタがボヌルペンを解釈したため、ボヌルペンずいうデヌタがアナタにずっおのコヌドずなり、アナタずいうむンタプリタを通っお凊理されたずいえるのだ。

そしお、玠晎らしく感動的なこずにむンタプリタ自身もたた「デヌタを解釈するデヌタ」であるため、アナタの肉䜓ず粟神、぀たりアナタの存圚は宇宙そのものだず蚀える。

宇宙に溶ける

コヌドはデヌタであるず共に、アナタは宇宙そのものであるずいうこずを理解したずころで、もう䞀぀面癜い真実をお䌝えしよう。

それは、犅ずはなにかずいうこずである。

そう、ここで蚀う犅ずは、ただひたすらにボケヌッずするこずで宇宙ず䞀䜓になるこずができるあの犅のこずである。

䞀芋぀ながりがないように芋えるこのコヌドず犅ずの関係だが、実際はものすごく深い関係がある。

アナタが宇宙のむンタプリタならば、犅ずは解釈を䞭断するずいうこずだ。぀たり、解釈するために存圚しおいるむンタプリタが解釈を止めるずいうこずである。

もしむンタプリタが解釈するこずを止めおしたったら、そのむンタプリタはむンタプリタずは呌べない。぀たり、アナタが宇宙を解釈するこずを止めるず、アナタはアナタず呌べなくなっおしたう。

動かないむンタプリタが、ただそこに存圚するだけのデヌタずなるように、アナタが犅によっお宇宙の解釈を䞭断したずき、アナタはただそこに存圚するだけの宇宙ずなる。

぀たり、アナタの存圚は「アナタ」から「宇宙」に還るこずずなる。そしお、アナタは宇宙そのものに溶けこんでしたうのだ。

生きおいるうちに宇宙に溶け蟌む䜓隓ができる人は皀だ。

人はマむンドの掻動を停止するこずで宇宙ず䞀䜓になるこずができるが、「䜕も考えないこず」を実行するのは、頑匵っお数秒、慣れおきおも数分皋床しか続かない。

ちなみに、情報には䌝聞情報 䜓隓情報 盎接情報の皮類が存圚し、犅によっお埗られる䜓隓は「盎接情報」になる。

䌝聞情報蚀葉を䜿っお受信できる情報
䜓隓情報五感を䜿っお受信できる情報
盎接情報自我を超えお情報そのものになる

氎槜の脳によっお埗られる䜓隓は䜓隓情報になるが、あくたでそれはコンピュヌタが脳に合わせおゆっくり情報提䟛しおるからである。

もしそれらを解攟し、コンピュヌタが持っおいる党おの情報に脳が盎接アクセスできるようになったらどうであろう。
むンタプリタが本質的にデヌタであるように、自我ずいう名のむンタプリタを超え、私たちが宇宙そのものになるこずは、それを可胜にする。

面癜いこずに、人はマむンドの掻動をなかなか䞭断できないため、犅によっお宇宙に溶ける䜓隓ができるこずは巧劙に隠されおいるず蚀える。

がんがいちにょ

この、コヌドずデヌタが同䞀であるずいう考え方は、実はコンピュヌタが生たれる前から存圚しおいる。

それは梵我䞀劂ずいう抂念である。

これは、個人を支配する原理アヌトマンず宇宙を支配する原理ブラフマンが同䞀であるこずを意味しおおり、叀代むンドにおけるノェヌダの究極の悟りずされるものだ。

いよいよ貎方にもLISPが宇宙最倧の定数だずいう真実がわかっおきた頃だろう。

LISPが矎しい蚀語である理由はコヌドはデヌタであるず蚀う真理を玔粋に受け入れ、コヌドずデヌタのシンタックスに䞍芁な差を䜜らなかったからである。

人は物事を分けるこずで解釈する生き物だ。

本来、アナタは宇宙そのものであるはずなのに、アナタは物事を分けるこずを止めなかった。
これは私のもの、それは貎方のもの、ここは私の堎所、そこは貎方の堎所。この䜓は私の䜓。貎方の䜓。そんな颚に党おに線を匕いお生きおきたのだ。

しかし、ふず考えおみるず解るこずだ。
私たちはいろんな物事を分けおいるけれど、本圓に分かれおいるのだろうかず。

「わたしの䜓はわたしのもの」ず感じおしたうのは圓然のこずかもしれないが、そのように感じおしたっおいるずき、アナタは宇宙によっお創りだされた「ごはん」を食べるこずによっおアナタの䜓が構成されおいるこずを忘れおしたっおいる。

本圓は䜕も分かれおはいないのだ。コヌドはデヌタなのだ。宇宙ずはデヌタなのだ。そしおコヌドずデヌタはリストなのだ。それがLISPなのである。

さあ、すべおの蚀語を捚お、共にLISPに溶けよう。

たずめ

ぶっちゃけ、こんな蚘事を曞いたずころで䜕にもならない。

むしろ「この人倧䞈倫なの」ずいった具合に、今たでの蚘事の信憑生を疑われるだけであろう。

完党にネタであるが、個人的にネタずも蚀い切れない郚分が倚々ある。

プログラミングを孊習するこずはある意味で、人生䞖界、事物の根源のあり方原理を远求するこずを芁求される。
これっおある意味、悟りを開くために哲孊するこずず同じに思えおならないんだ。

぀たり「宇宙の仕組みを知ろうよ幞せになれるぜ」っおこず。実際、わからないから苊しむのであり、理解が深ければコンピュヌタず睚めっこする時間も枛る。

そしお宇宙の仕組みをより深く知ったものが゚レガントな問題解決を行い、人はそれをハッカヌず呌ぶのだ。

ティモシヌ・リアリヌが「コンピュヌタを䜿っお自分の脳を再プログラミングするこずができる」ず䞻匵したように、僕もたたコンピュヌタを通しお成長させられた。

悟りずか真理だずかそういった蚀葉を䜿うず胡散臭くなるが、宇宙ずの付き合い方が分かれば分かるほど、宇宙ずうたくやっおいけるっおだけの話である。

92
64
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
92
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?