見出し画像

【禅】プログラミングにおける「論理的思考は重要だ」思想の罠【ととのい】

「エンジニアリングやプログラミングには論理的思考力・数学的思考力が必要だ!」「ロジカル・シンキング!」などの文言は、とても良く見かけますよね。昨今はプログラミング教育必修化やそれに伴うスクールやSEOの都合もあってか尚更よく見ますよね。

ところで、IPAこと情報処理推進機構から天才プログラマーに認定された、登 大遊 氏(現・筑波大学国際産学連携本部准教授)は、「論理的思考の放棄」がプログラミング領域において重要だと説きます。彼は1日最低3000行、最高1日1万行(C言語らしい)書けたりする自身の能力の根源を探り、「論理的思考は厳禁」、「徹底して、感覚的思考でやる」ことが必要だという答えに辿り着かれたようです。これは12年前に局所的にバズったらしい記事です。

論理的思考の放棄

論理的思考の放棄2

論理的思考の放棄3

論理的思考の放棄の具体的方法


はい。この記事、すごいんですよ。もう読み終わりましたか?コメント欄も必ず読んでくださいね。読み終わって内容に共感して腑に落ちたのならば、もうこのnoteを読む必要は、ありません!せいぜい下の目次の最後である紀元前版「論理的思考の放棄」にある古典の引用に、上記記事の内容に近い話が記されているくらいです。

画像2

布教と信仰告白

登氏の記事は本当にすごい。本当にありがたい。私みたいな計算機科学や情報科学を修めたわけでもないニワカの凡才にも多大な恩恵・生産性を授けてくれる、聖書なんですね。

何がすごいかというと、教育効果がすごい。どのくらいすごいかというと、自宅警備キャリア10年、産廃扱いや門前払いを受けがちな未経験ニートに、「600時間の労働で、会社の業務時間を年あたり1万時間削減した実績」を与えるくらい凄いんですね。(もちろん、聖書以上に周りの方々や環境の恩恵が大きいことは忘れてはなりませんが。)

その教育効果のすごさを、布教したくなってしまいました。それはサウナー(サウナ愛好者)がサウナの効用を「神秘」的な表現を用いて布教したり叙述することと同じようなものです。そもそもこの登氏の記事は、サウナで言う「ととのい」を示しているようなものですから…(※終盤で言及します)

ということで、布教します。(条件さえ問題なければ)論理的思考を控えてほしいという意図を、論理的思考をする事によって示してみます。多分、あちこちに綻びが出るでしょうけれど、その綻びこそが論理的思考の危うさを示しているという事にして、綻びがある点については何卒ご容赦頂きたいです。ほら、下手の考え休むに似たり、って言うじゃないですか?

論理的思考で行き詰まっている人が論理的思考をやめる手助けと慣れば幸いです。新興宗教じみていますね。

っとその前に、この『論理的思考の放棄』は、あまりにも偉大すぎる記事なので、以後、

『登子』

と表記します。諸子百家の思想家に倣い、著者名に先生の意を表す「子」を付けさせて頂き、書名と著者名を同一化せざるを得ませんでした。これは最後の紀元前版「論理的思考の放棄」で示すように、諸子百家の道家に近いと考えています。で、先生という意味では実際に筑波大の准教授(『登子』執筆時は学部卒業したて?)ですから大先生です。いやーこの内容で無料。やべえ。00年代の記事はいいぞ。

注意

例えば、車のモーター制御などの分野であったら、人々の安全のために様々な策を講じなければなりませんが、それは論理的に行われると同時に、監査的な立ち位置からも論理的に評価されなければなりません。(そういう工学分野がいかに重要かは、日本に占める自動車関連の市場規模を見れば即理解できます)。しかし必ずしも厳密な論理的思考が必要が無くてもリリース出来てしまう分野もあるでしょうから(塗装業やソフトウェアの一部など)、登子はそういう面では役立つことかもしれません。

この記事の要約

・ド素人が論理的思考とやらをしてもたかが知れてるし、クソを撒き散らすだけで終わりかねない。なぜド素人の論理的思考はクソになりがちなのか?これを我が身(糞袋)を以て示す。

つまり、「論理とは何か?」を20世紀の言語哲学の聞きかじりで説明し、論理的思考の定義を「論理的な感じ」でド素人が行なう事の愚かしさを示す。

これには2つの含意がある。
1.「こんな事をしなくても実務的な設計、コーディングやアルゴリズムは組めるだろう」
2,「論理的思考が必要なのはプログラミングよりかは人間を相手にして(形容詞まみれの)自然言語で行なう要件定義だろう」
といったあたりである(私はコードも書いてます)。

このようなことは紀元前の東洋の思想においても説かれているから、彼らの示す境地を紹介する(ソースは岩波文庫)


・『登子』は聖書であるとしたが、なぜ「聖書」か。それは『登子』において、どうやったら人間は上手くプログラミングができるのか?という問いについての答え=最終到達地点が、端的かつ普遍的に語られているからである。そして聖書として示す内容が、ある点において禅に似ているから、宗教に似ている(宗教的または求道的)としている。証明できないし、方法も内観だから科学的とは言えない。
(※サウナで例えるならば、『登子』には、「ととのい」が示されている。しかしその地点は言語を絶している、「ととのい」も結局は自分の身を以てして最適を見つけなければならない)
※この聖書の段落は後半の紀元前の東洋の思想についての前振りとして存在している。

・プログラミングは、論理的思考は放棄するか、最小限に留めて、感覚的思考で行うと、上手くいく。即ち生産性が向上し、エラーが少なくなり、スピードが向上する。なぜそれらが実現されるのか?要は「論理的思考そのものが、そもそも人間のアーキテクチャに適していないから」「余計に疲れなくて済むから」。しかし当記事は布教であるから、論理的思考の放棄がいかに素晴らしいかを示すために、「凡夫による論理的思考」という非効率極まりないやり方を行う。そこでは、登子がその圧倒的賢さ故に定義しなかった「論理的思考」を定義する。

「論理とは真理値を扱うための根底条件である」から出発し、論理的思考について定義などなどする。ここでは述語論理等の参考文献をいくつか記載している。

論理的思考をしようとしなかろうと、コードは書いたとおりにしか動かない。設計したりコードを書くにあたって、論理的思考をする義務は(分野によっては)ない。(※他者に示す際は論理的である義務はあるだろう)

・「論理的思考の放棄」には極端な側面もある。登子本人は絶対に論理的思考はするなと述べる一方で、下記のようにも述べている。

登子、曰く

論理的思考は完全にゼロということにはできないけれども、可能な限りゼロに近づける、これがコツです 

「論理的思考の放棄」 コメント欄

つまり人間は論理的思考を最小限にすることも肝要ではないか。そこで、この「最小限」とは具体的にどういう状態なのか。『登子』中の内容から導くと「対象物への関数ポインタの獲得と保持」がなされた状態となる。これは「最小限」と同様に必要な「感覚的思考」の獲得にも必要と思われる。有用である事に加え、プログラマーの3大美徳に通ずる。

・どのようにして、関数ポインタは獲得・保持されるのか。一定の数をこなし、手続き記憶的に記憶する、定期的に行う、といったような、一言か二言で終わるレベルの至極当然のことが必要ではないか。

・ところで、くどすぎる。こうやって原典をこねくり回して良い気になっている人間を、臨済宗の開祖である臨済義玄禅師は手厳しく批判している。彼の言を借りればこの記事は「口にクソを含んで撒き散らしているようなもの」であるから、この行為を(言葉の上で)戒めることによって、脱言語野…すなわち禅と紀元前の東洋の師匠もとい老荘思想の話へのつなぎとしている。

・「論理的思考の放棄」「最小限の論理的思考」「感覚的思考」によるプログラミング(情報処理)の実例は、唐代の禅や、2000年前即ち紀元前の天才たちが記した中国古典に既に示されている。これはプログラミングと同じようなものであるから、実例として紹介(岩波文庫の引用)する。そこで本記事は終わる。

『登子』の要約


さて、この『登子』。内容を抽出しますと

・論理的に考える、頭を使う、ことについては、否定的


・人間のアーキテクチャはフォン・ノイマン型のアーキテクチャとは全く違う

・設計は、絶対に論理的思考で行ってはならない。徹底して、感覚的思考をもって行う必要がある


・論理的思考をやめろ、感覚的思考でやれ、その事によって高速・高品質・低エラーの実装が可能。1日1万行書けるときもある。設計に変更が出ることもなくなる

・エラーが起こる理由は、論理的思考をしていないのだから、論理的にはわからない

・経験量や向き不向きの差ではない(コメント欄)
・対象への関数ポインタの獲得が必要(コメント欄)

このような事が書いてあります。コメント欄を見ても、天才は違うなあとか、経験だよなあ、結局論理じゃね?のような反応が多いですし、確かにそれらには頷けます。1日1万行とかわけがわかりませんからね。しかし、ここで注目したいのは、この『登子』が、私のような、別に計算機科学や情報科学を履修したわけでもなければ、特別興味があったわけでもない、単なるニワカに対しても、恩恵をもたらしてしまう、という点です。

『登子』の性質 宗教的または求道的

なぜ『登子』は私のようなニワカの凡夫にも恩恵をもたらしてしまうのか?RPA実装は深層学習のような高度なアルゴリズム理解と実装能力を必要とはしないから?エクセルの延長が多いから?……後者2つはかなりあるかもしれませんが、もっと良い理由があります。

登子には、どうやったら人間は上手くプログラミングができるのか、という問についての答えが、普遍的な在り方・方法論として示されているからこそ、私のようなニワカの凡夫にも恩恵を与えてくれるのでしょう。普遍的であるのならば、それは多くの人に普く受容される在り方や方法論とも成り得ます。つまり、私以外のヒトにも受容されるかもしれません。だからこそ布教しているのです。ただしその内容は、科学的である!!とは言えないので、なぜ科学的とは言えないか、なぜ宗教的または求道的(宗教や求道に似ている、の意)なのか、なぜ偉大なる聖書たり得ているかを示しておきます。

・『登子』は、どうやったら人間は上手くプログラミングができるのか、についての方法論を示した記述である。その内容には普遍性があると思う。

登子、曰く

恐らくプログラミングだけでなく、色々な物事の設計や、文章の執筆、自動車等の運転などおおよそほとんどの作業で活用することができるのではないかと思う

「論理的思考の放棄」


・普遍性がある記述といえば、科学が挙げられる。科学ならば、適切な仮定設定、厳密な統計、仮説に適した実験手法、再現可能性・信頼性・妥当性の評価、記述される義務などなどを満たしている必要がある。

・しかし、『登子』は、科学ではなく、宗教的(または求道的)思想であると思う。なぜ「宗教的または求道的」か?


宗教とは、何でだろう?を繰り返してしまう人間という生物に、「何でだろう?の最終到達地点」を、生活に根差して提示している。その提示形式が記述である義務はない。
※信仰とは、その最終到達地点を決して疑わず(それ以外にないとすること)、それを絶対的だとして信じること。


・登子は、人間はどうやったら上手くプログラミングができるのか、即ちプログラミング領域における「高速・高品質・低エラーの実装」が実現できるか?という方法論の最終到達地点として、「論理的思考の放棄」を提示している。

・しかしコメント欄で登子本人が言っているように、この方法は言語にすることが難しい


登子、曰く

「普通の人が諦めずに、同じくらいのことができるようになる方法を伝えたいと思って、論理的な言語を使った表現方法である文章としてこれを書いたのですが、その時点で情報量が削減されてしまう」

「論理的思考の放棄」 コメント欄


方法を知ることでそういう効率的な方法で仕事ができるようになるのだが、その方法を他人に伝えるというのは、難しいことである。なぜならば、その方法は理論的でない為である。
頭の中の、理論的でない部分を最適化しないといけないためで、そのための方法を、「言葉」という理論的な表現方法で記述することは、極めて困難だと思う。

論理的思考の放棄2

・登子はコメント欄において、直下の引用のように、「脳内でどのように言語変換をすればよいか知っている」、としている。脳は身体のうちに含まれるとすると、実際に論理的思考の放棄に至っている登子は、論理的思考の放棄を身体において実現している。

登子、曰く

プログラミングのとき ”脳内で、どのように言語変換すればいいか” を知っていますが、現時点で、論理的記述言語である言葉を用いて文章化することが困難です。だからプログラミングの分厚い良書というのは何十冊もあるが、それを読んだからといって、なかなかわからないわけです

論理的思考の放棄

参考(引用元記載あり):わずか一尋(ひとひろ)のこの身のなかに 『赤馬経』| 光華女子学園

・『登子』中では「論理的思考の放棄」の実例を示している節で「ひたすら何も考えない」ことを要請しているが、これは禅的ではないか。


登子、曰く

実際のプログラミング作業を例にして、解説する。
まず、だいたいこういうソフトウェアがあればいいなあとか、このような機能を付ける必要があるなとかいった、とても抽象的なことを思い浮かべる。この際、「絶対に論理的に考えないこと」が必要である。論理的に少しでも考えてしまうと、途中までうまくいっても、それが壊れてしまい、最初からやり直しになるので注意する。

論理的思考の放棄
自動的に手がキーボードを打ち、プログラムを入力して完成させてくれる。この処理は一切、論理的思考では行われていないので、途中で論理的思考を行うことは厳禁である (作業の邪魔になる)。ひたすら何も考えない。

論理的思考の放棄

・「何も考えない」とは、言語を使わないことを意味する。(※ここの詳細が次節の内容です)


・禅は宗教であり、その言わんとする所、即ち「最終到達地点」とは「悟り」「苦が終わった永遠の安息の領域に至る事(死ぬわけじゃない)」である。その上で「不立文字」をスローガンに掲げているが、これは「悟りの領域には言葉だけでは辿り着けない」という意味が含まれている。同様に、「言語道断」という言葉もあるが、これは「言語」が迷いや苦の根源である事を示唆している。

参考:言語道断|大谷大学

・登子は、人間による論理的思考という、コンピューターを模した言語的行為こそが、我々凡夫のコーディング量の相対的な少なさの原因ではないか、としている。

人間の感覚的思考機能の上でエミュレーションされた論理的処理機能は、所詮エミュレータ上のようなものなので、実マシン (人間本体) と比較すると、とても処理が遅い。オーバーヘッドが大きすぎるのである。あらゆる方式の処理を瞬時に同時実行することができる人間の頭脳がせっかくあるのに、論理的処理用の仮想環境を脳の中で構築し、その上で物事を考えるから、効率が悪くなる。

これが、普通のソフトウェア開発者が 1 ヶ月にわずか数百行 〜 3,000 行程度しかプログラムを書くことができないという原因になっている。人間の中に構築することができる仮想の論理的処理エミュレータは、性能が低すぎる

論理的思考の放棄

・どうやったら人間はプログラミングが上手くできるのか、についての登子の示す最終到達地点は「論理的思考の放棄」であるが、それは言語で表しきれない。禅における最終到達地点も、言語で表しきれないとされる。

・『登子』における最終到達地点は、身体的である。仏教・禅的な悟りについても、身体的である。

・『登子』には宗教と似ている点があるのかもしれない。(単に私の書き方がそのようであるだけかもしれないし、「最終到達地点へ到達するには修練が必要」という意味では、求道的といったほうが正しいかも知れないし、スポーツ的かもしれない。ただし布教と言うからには、宗教と類似しているほうが都合が良い。つまりはそう言いたかっただけなんだよ!なんだよ似てるって!曖昧すぎだろ!プログラミングでこんなことやったら刺されますよね!コード上の条件分岐で「似てる」もクソもねえだろ!真理値にしろ!それはそうと論理的思考の放棄3のコメント欄に新興宗教みたいとか書かれてしまっています(小声))

以上の理由により、「聖書」と形容しました。こち亀にこんな話があるように、ここまでグダグダグダグダ言う必要はないと思いますし、実務においてはグダグダグダグダ言う必要のない「設計」をすべきなのは言うまでもありませんが、論理的思考を行う事を重要視して単なる小手先のプログラミングしようとすると、このようにグダグダ言うことになりかねない、という事を示す魂胆があります。バイアスも絡んでしまいますし。

もちろんプログラミング上であれば、最終到達地点は0か1かとなる(量子とかNAND型フラッシュメモリの多値論理とか言わないで)ので、それらを余計な解釈を一切発生させずに一切誤らずに国語的に読み取れているのならば、論理的思考は有用となりうるかもしれません。しかしそれは後述するような、既に獲得された「感覚」には及ばないと思います(プログラミング領域)。
なお、上記の箇条書きの後半については、これから書く内容と重複します。なお、禅については、「なぜ「論理的思考の放棄」で、プログラミングはうまくいくのか」の内容を踏まえた上で、終盤で更に発展的に述べられます。

なぜ「論理的思考の放棄」で、プログラミングはうまくいくのか


ここからは、「論理的思考は放棄するか、最小限に留めると、生産性が向上し、エラーが少なくなり、スピードが向上する」のは何故か、に入ります。これはあくまで、設計とプログラミングの話であって、実務上の(包括的な)エンジニアリングの話を言っているのではありません、と予防線を張ります。

今更過ぎ感満載ですが、「論理的思考の放棄」なんていう人目を引く逆説は、実績ある人が言うからこそ説得力があるものと思われます。したがって、本来私ごときの虫ケラが言うべきではないのでしょう。当然ながら私には未踏系の画期的な実績はありませんし、周りの方々の協力という聖書以上の恩恵のもとで、自宅警備10年ニート未経験からの週3~4、計600時間労働で1万時間くらいの削減(今後もっと増えますが)をやっと実現した程度の実績しかありません。そして部分的には論理的思考が放棄されてきているとはいえ、論理的思考がまだまだ必要な段階でもあります。

さて本題。簡単に言うと、

人間への処理の負荷がオーバーする事が減る。

慣れはすごい

となります。文字数に釣り合っていませんが、ほんとそれだけの話です。オーバーヒートしなければ、そりゃ早くできます。いちいち筆算なんかしなくてもいいよね(場合による)。

ところで、登子は、論理的思考の厳密な定義付けをしておらず、そんなことを定義しようとすることのナンセンスさすら示唆している本当に賢い人物です。賢い!天才!でも私はそうではありませんね。なぜナンセンスって、言葉をつかって定義なんてしたら、言葉を使うことによって真理値が発生してしまって、扱える対象が増えてしまうからです。

登子、曰く

複雑で難易度の高い作業においては、例えコンピュータプログラミングなどの超論理的な結果を得るための作業でも、「論理的な思考」はほとんど不要である。

ここで「論理的な思考」の定義を細かくすることはしない。そもそも、細かく定義しようとすること自体がすなわち「論理的な思考」である (論理的に、厳密に定義しないので、あなたの頭の中で、「論理的な思考」というイメージを自在に思い浮かべれば良い)。

僕は脳科学について詳しくない (今勉強を始めようとしている) ので、以下に書くようなことは、論理的・(既存の) 科学的には間違っているかも知れない。だが、論理的な思考をしないで欲しいという意図を説明するために書くのだから、論理的に間違っている点については目をつぶって欲しい。

論理的思考の放棄

登子、曰く

現在のコンピュータは、論理的な処理しかできないが、人間には感覚的な思考処理が行える。人間のアーキテクチャと、現在のコンピュータのアーキテクチャは、全然効率が違う。

人間の感覚的思考機能の上でエミュレーションされた論理的処理機能は、所詮エミュレータ上のようなものなので、実マシン (人間本体) と比較すると、とても処理が遅い。オーバーヘッドが大きすぎるのである。あらゆる方式の処理を瞬時に同時実行することができる人間の頭脳がせっかくあるのに、論理的処理用の仮想環境を脳の中で構築し、その上で物事を考えるから、効率が悪くなる。

論理的思考の放棄

登子、曰く


コンピュータの前に座って、キーボードの上に両手を置けば、後はあまり考える必要はない。自動的に手がキーボードを打ち、プログラムを入力して完成させてくれる。この処理は一切、論理的思考では行われていないので、途中で論理的思考を行うことは厳禁である (作業の邪魔になる)。ひたすら何も考えない。

論理的思考の放棄

はい。論理的思考が作業の邪魔である理由を知ったところでプログラミングが上手くいくわけではありませんし、それが作業の邪魔である理由は言語化されていないだけで、実はなんとなーく知っているのかもしれません。しかし一方で、この『登子』を読んだ後に「論理的思考の定義づけというナンセンス」を行うと、(設計を間違えた)「論理的思考」がいかに非効率でエラーが多そうであるか、そして如何にプログラマーの三大美徳・怠惰に反するか、という事が自分でわかりましたから、自分への戒めも含み、論理的思考によって、論理的思考の放棄の素晴らしさを説きます

ということで、論理的思考の定義の前に、論理とはなにか?から入ります。「下手の考え休むに似たり」という格言がありますが、それをこの身を以て示します。

論理とはなにか、論理的思考とはなにか(こんな事を問うた所で、設計もプログラミングもうまくはならない)

・論理とは真理値を扱うための根底条件である。これがあってこそ、我々は言葉を扱える。

・論理的思考には、主語(対象)と述語が必要である。

・「対象(主語)」を言語化して、述語に繋げると、「文」ができる。我々は、寛容の原理(参考リンク)を強いられているために、この「文」を「真である」と(一旦は)見做す。これら各々の「文」を適切な接続表現で、論理的だと感じるような形で、例えば飛躍なく筋道を立てて繋げていくことを、この文章内では「論理的思考」とする。

※…曖昧ですね?主語述語の下りなんかは、述語関数と真理値についての知識がありさえすれば若干マシになったはずでしょう(が、そんな脳みそは残念ながら搭載していません)。しかし「論理的だと感じるような形で」、という表現でOKなことを記述で説明するためにはもっと言語哲学の知識が必要であり、それはとても私ごときでは扱えませんから、「論理的だと感じるような形」「飛躍なく」「筋道を立てて」という語を付加しました。まあ飛躍とか筋道なんて言葉はそもそも事実ではないし、その根拠を探っていくとどんどん無根拠になっていきますが、しかしその語彙には一応の納得ができます。できてしまうんだから仕方が…どうしようもないのです。意味や定義と言ったあたりを探っていくと非常に抽象的な、いわゆる分析哲学という「なんで俺らコーヒー注文できんの?」「共通の語彙なんかもってなくても会話えきるよな?」というテーマなどを論理式を使いながら明らかにするような、ド素人や実家の細い院生の方がやっても1円にもならないどころかマイナスになりがちで、人に嬉々として話すと嫌われる分野に足を踏み入れかねません。ただしそれによって、日常(プログラムを書くのも日常といってよいでしょう)は以下に示すような静的型付けではないんじゃないかなあと気付けます。登子は論理的思考の定義付けを避けることによって、このようなあやふやな説明を発生させるような泥沼化を避けているし、あるいは避けたほうがいいという直感を持っているであろう、本当に賢い人物です。

具体的で筋の通った説明等は下記リンクが参考になります
真理条件とは何か
真理論講義1 Tarski の真理論
当座理論とはなにか

・繋げるのだから、繋げる対象(主語)が必要である。
・対象は、知覚されることによってはじめて対象となる。

なんだか小難しいので、もうすこし言葉が優しい論理的思考を行います。例えば自分の目の前にラーメンとお箸があったとします。そこで人間は目の前にある何らかの対象を、「あれはラーメンである」「あれはお箸である」と、言葉で言えます。

これは、「ラーメン」「お箸」という対象(主語)を、自分が知覚できていて、かつそれを表現する語彙を知っているからにほかなりません。その語彙を知らなかったら適当に名付けるほかありません。言葉をしらなかったら、「あー」「うー」なりにするのでしょう。


ところで、「ラーメン」や「お箸」とは、「ラーメン」「お箸」という物理的な実体ではなく、単なる名前、つまり、言語です。これは現実の事物の代理人・写像でしかありません。そして「ラーメン」「お箸」が知覚される以前は、ラーメンもお箸もない、「真っ更」の状態です。この『真っ更」の状態は、言わば根底条件のようなものです。これが論理的思考を行うにあたっての根底条件としての「論理」です。「論理空間」とも言うそうです。

ここで、ラーメンとお箸という対象は論理空間に存在する2つの主語であります。プラスチックとか木製の2本の棒と麺類はまあ一緒では無いのでしょう。(物理的にはどうだか知りませんので、その関係の本を今読んでいます)

このため、「ラーメンである」は対象は、「お箸でない」を含意しています。同様に、「お箸である」対象は、「ラーメンでない」を含意しています。ここで、この「でない」「である」は述語であり、主語と繋がっています。これは先程定義した論理的思考に必要だと考えます。もし述語がなかった場合、そもそも「ラーメンである」とか「ラーメンでない」とかも言えません。よって、先程定義した論理的思考ができません。その場合、「ラーメン…お箸…!」とか言い出す事になります(※ここに到達することが目標です。カタコトだと良い)。逆に、ラーメンを知覚したとして、ラーメン以外を「ラーメンではない」と否定していくと、「ラーメン」が残るのかもしれません。これがもうちょっと抽象的になる(食べ物、食器)と、登子の言う「抽象的なことを思い浮かべる」にあたると思います。

登子、曰く

実際のプログラミング作業を例にして、解説する。
まず、だいたいこういうソフトウェアがあればいいなあとか、このような機能を付ける必要があるなとかいった、とても抽象的なことを思い浮かべる。この際、「絶対に論理的に考えないこと」が必要である。論理的に少しでも考えてしまうと、途中までうまくいっても、それが壊れてしまい、最初からやり直しになるので注意する。感覚的な思考でもってこれを行うのである。

次に、だいたいイメージができたところで、心の中に、ソフトウェアの設計図やデータ構造といったものを思い起こす。ここで注意するのは、「絶対に論理的に考えて設計をしないこと」である。徹底して、感覚的な思考でもって設計する。

論理的思考の放棄

例えば、PCとデスクくらいしかないオフィスで、何らかののドキュメントとにらめっこをしている隣の人が、突如としてカタコトで「ラーメン…お箸…!」とか言いだしたとして、「隣の人は、論理的思考しているなあ!!!」とは、思いにくいです。まあそれが誰かによりますが…

でも、ラーメンの目の前で単にラーメンって言ったらその目の前のラーメンを指すよな?そんな「である」「でない」で済むほど、目の前にある物理的なラーメンとかお箸は静的じゃないだろ!意味は場に応じて動的だろ!主語だけ言うても、それは結局明示されていない「である」「でない」が含まれてしまっているんじゃねえのか!むしろそここそが「論理」じゃねえのか!言語の使用こそが意味になる?言語はそもそも存在しない?行為することそのものが言語の意味になるときもある?単なる音声に気を使いすぎだ?どうやって会話するの?そもそも主述で分けるのは日本語の言語構造に合っていない?意味論?圏論?圏論的意味論真理条件意味論?様相論理?当座理論?一階述語論理?タルスキー?屁理屈?論理的思考は辛い…!わたしのおつむにはつらすぎます。かのプラトンは自分の学園の前に「幾何ができねーやつは入ってくんな!!」と書いていたそうですが、いやあ、気持ちわかりますわ。入れねえ。

しかしいずれにせよ、これらは「言語」です。この「言語」を操作する行為の一つが、主題である「プログラミング」であります。機械語だけどね。そして私は、その機械語・プログラミングの世界で扱える対象と言語を僅かとはいえ認識しています。対象を認識していて、それを表す言葉も使えるので、この文章で言う論理的思考も可能になります。そしてやったことがあるからこそ、「感覚」も多少なりともわかります。感覚としては、機械語の世界は、話し言葉の世界より静的だと思います。

※こんなことやりながらプログラミングしていたら遅くて当然なんですが、論理的思考の放棄の合理性を説くために、論理的思考による記述を続けます。それはそうと、このままでは認識や言語が及んでいない範囲=未知の範囲には論理的思考が及べないから、実質放棄されているのでは?ならばうまくいくのでは?とも勘違いされかねません(ビギナーズラックはあるかもしれない)。

しかし、「放棄」するには、そもそも「持っている」必要がある、としています。持っていなければ、後から上手なプログラミングをやるにあたって重要だとする「最小限の論理的思考」すらできません。やはり一度は知覚する必要があります。そして登子の推奨する「感覚的思考」を行うにあたっても、感覚とするためには一旦神経に刷り込む必要があると思います。放棄するにはそもそも持っている必要がある…なんだか怪しいですね?だったら書かなければいいんですが、まあこんなことになるから、論理的思考は本当に辛いことなのです。「書かなければいい」については東洋思想の段で述べるとして、いずれにしてもプログラミングはここまで辛くありません。


・ここで、論理的思考を放棄するためには、そもそも「言語」を使わなければ良いのではないか?
『登子』では心の中のイメージによる設計を推奨している)

・そもそも「プログラミング領域における対象の言語化」をしないければよい。

・いっそ対象の知覚を止めれば良い。

・しかし、対象Xを対象Xとして知覚して、それに名前を付けてしまうのは自然で無意識的・日常的な反応でもあって、ここから離れるのは難しい。ではどうするか?

・そもそもこの文章内における「論理的思考」をするには、述語が必要である。主語だけでは論理的思考とは言い難い。(主語だけの言葉が文脈なしに突如として論理空間に出現した場合、述語が明示されていない。したがって、この文章内で言う論理的思考ではない。)


・対象=主語が知覚されてしまうのは仕方ない。ここで、論理的思考を放棄するためには、述語を付ける(明示する)ことを、放棄すればよいのではないか?そうすれば「ラーメン…!お箸…!」(カタコト)になれる

とはいえ、述語やめろよ!といっても極端です。現実的には述語を付けるとか、述語の引数に主語を入れる(入れてしまう)にあたって、述語を選定してしまう行為や態度を極力控える・避けるとか、その述語の引数に主語を入れたことによって実行された関数の返り値である、「真理値」についての判断を停止するあたりから始めるとよさそうです。登子もコメント欄においては、論理的思考をゼロに近づける事を推奨されています。

するとどうなるか?

・対象を対象として扱うと二元性(TrueとFalse)が生じ(「真っ更」な状態に対象が足されていく)、それが重なれば多元化するが、「対象の言語化」をしなければ(控えれば)、そもそも対象が発生しないか(少なくなるので)、多元化しない。

先に「ラーメンであり、お箸でない」「お箸であり、ラーメンでない」の例を上げましたが、ここに「れんげ」「テーブル」…いや、「食器クラスを新設します」「お箸」「れんげ」とか言い出したらキリがありません。つまり、論理的思考を行うと、「言語で扱う対象が増える」といえます。(多元化)

・コンピューターによる情報処理において、一定の度合いを超えて多元化した情報の処理を行う事が、より多くの負荷をCPUやメモリに強いるように、人間による情報処理においても、一定の度合いを超えて多元化した情報は、人間の情報処理機構により多くの負荷を強いる。

・エラーが起きたり、生産性やスピードが落ちたりするのは、主に疲れている時だ。上記のような負荷が、一定の度合いを超えて人間に加えられると、人間はより疲れる。(※一定の度合い以内の負荷が無いと、ボケると思う)

・しかし処理する情報が多元化していなければ、負荷は相対的に低くなる。少なくとも一定の度合いを超える事は減る。余計に疲れることも減る。

・そもそも『登子』で言うような「(人間がやるのは非効率な)論理的思考エミュレータ、論理的処理用の仮想環境」を自身の内に起動する必要がなくなる。

・自分の中に述語がない、または少ない。これによって、少なくとも一定の度合いを超える処理が出現する事が無くなる。もしエラーの発生や、スピード・品質に問題が出る時が「疲れている時」「人間が一定の度合いを超えた論理的処理を行っている」時であったとしたら、その時がそもそも減るか無くなる。つまりエラーなどが起こりにくくなる事も有り得る。加えて、人間特有の超効率的な能力・ヒューリスティックである「感覚的思考」「無意識的思考」が、「言語」「論理的思考」のようなメモリを余分に食う処理によって邪魔されずに発現される、とも考えられる。

・述語がない、または少ないことによって、下記に近づける

登子、曰く


コンピュータに対する論理的な指令という目的があるため、プログラミングは、「論理的な仕事」であるというように思ってしまい、プログラミング作業の全部において、人間の側が論理的な思考でもって作業を行ってしまうのである。実は、プログラミングの作業のほぼすべてにおいては、論理的な思考というのはほぼ全くといって良いほど必要無い。

例えば論理的でない作業について考えてみる。音楽を聴いて「これは良い」と思ったり、映画を観て感動したりするといった作業は、論理的思考というよりも、どちらかというと直感的な作業である。音楽を聴いていて、「この周波数やパターンの音色が●●ミリ秒ごとに連続して現れる。これは良い」というようにいつも論理的に思考していては、音楽をちゃんと聴くことはできない。もっと直感的に、「なぜか上手く言葉で正確に論理的に表現することはできないが、この音楽は良い」というような知覚が発生する。

コンピュータのプログラムを読んだり、書いたりするといった、論理的な記述方式を対象とする作業でも、論理的な思考というのは、音楽を聴いたりするときと同様に、ほぼ全く必要無い。

論理的思考の放棄
直感的に、「なぜか上手く言葉で正確に論理的に表現することはできないが、この音楽は良い」

・以上のことから、述語が少ないまたは無いことは、論理的思考の放棄、即ち「よりエラーが少なく、素早く、高品質なプログラミング」を行える事につながるのではないか。


・直感的にシュバババババーっとコーディングしたとします。しかしどのみち書いた後に即座に(そして入念に)テストをしてしまう/されてしまうのですから、仮に間違っていてもすぐ直せます。そういうときに程々に論理的思考は必要になると思います(天才ではないので)。それに、ここでログを見たいから、そのためにxx行目にconsole.log(RPAならLogger.logも多い)と仕込もう!なんて”いちいち”考えないのではないでしょうか。先に手が動いていると思います。天才ではありませんから、小さくテスト・ログ確認をやらないと気が済みませんし、やらないと後で死ぬのですが、これで感覚の正しさが見れます。


ナンセンス

がんばって論理的思考をしてみましたが、バカが生き恥晒してるだけです。非常に怪しいです。書き終わった後に色々書き加えたところもあるので余計です。はい。ナンセンスでしょう?これ。能書き垂れるよりは設計してコードを書いたほうがよさそうです。いや計算機科学をやるべき…あ、でも理解できる脳みそがついてねーや!HAHAHA!(と言って終わるのもダサいので、これを書いた1年後に情報系の大学生になるなどしています)

こんなふうに考えたところで、最終的な動くもの、即ちコードは書いたとおりにしか動きません論理的に考えようと考えなかろうと、エラーなく動くコードはエラーなく動くし、美しいコードは美しいし、メンテしやすいコードはメンテしやすいのです。

私が今やったのは、登子が賢すぎるが故に定義・解釈しなかった「論理的思考」についての定義や解釈です。当然ですが、コードは解釈したとおりには動きません。頭の中でどんなに頑張って設計しようと、頭の中で様々なことを定義しようとしなかろうと、機械には関係ありません。

人間のアーキテクチャの凄いところは、ある同じ行為を何回もやっていれば、その行為中のメモリの消費量が少なくなっていく事にあります。当たり前の極みですが、結局は単純に反復経験をして、後述する関数ポインタの獲得と保持をしなければなりません。どうやって述語を消すのかについても、反復経験と慣れによる関数ポインタの獲得と保持しかありません。これは感覚的思考の獲得方法とも言えるでしょう。
なお、数学嫌いだったらしいまつもとゆきひろ氏も、プログラミングはスポーツと似ているとしています。自動化です。無意識です。


論理的思考の道具である言語というのは、基本的に後から付いてくるものです。こんなことを毎回やっていたら、疲れて遅くなってエラーが発生して発狂します。まず、論理パズルみたいなトリッキーな論理は、RPA領域では必要とされませんし、ニューラルネットワークがうんたらみたいな高度なアルゴリズムも必要とされません。保守性や他の人が見ることを考えても、極力使わないほうがよいでしょう。

経験量

さっき「ラーメン…お箸…!」が目標だと言いましたが、これが多分素早いプログラミングなのかなと思います。バグも織り込み済みになっているはずです。拡張すれば設計段階にも通じるでしょう。しかし当然ながら最初からこれが出来るとは思えません。当然、そのためには経験が必要なのですが、しかし登子は以下のように述べられています。

登子、曰く

文書化しないとblogには書けないので、その時点で情報の欠損が生じています。”単純な経験量・向き不向きの差” ではありません

論理的思考の放棄 コメント欄上から2つ目

とのことですが、確かに「単純な」経験量ではなさそうな気もします。「一定の経験量」以上の経験時間は実力とは関係なさそうですが、一定の経験量は必要だと思います。例えば、プレイ時間60時間と100時間の人がいたとして、前者のほうが強い・上手いというのは、ゲームだろうがなんだろうが、頻繁にあることです。この60時間者になるにあたっては、後に放棄されるべき論理的思考を行う段階が必要だと思います。(※数理論理学者のレイモンド・スマリヤンは、自身が好む東洋の神秘主義(にカテゴライズされることの多い)思想を説明するにあたって、一度は論理的なことをしっかりやってから、こちら側(神秘主義)に来るべきだ、のような事を言っていますが、たしかにそのほうが良いと思います。(『タオは笑っている』か『哲学ファンタジー』の最後の方で言っていたかなあと…神秘主義ではないですが、南無阿弥陀仏の称名念仏スゲエ!って思いました)

とはいえ、登子は小学生からプログラミングやってました系のハイパーエリート現役大学准教授兼経営者であり、当記事投稿日から半年後にはテレワークシステムの神になったお方ですから、そのような事実を前にしてしまうと、私のような凡愚は言語修得における年齢の要因の影響を論じたような研究を気にしてしまい、それが不安を引き起こしてしまう事は否めません。私のような、登子が『登子』を執筆した年齢でプログラミングを初めたニワカからすると本当に。更に、一時期話題となったBlawnの開発者に至っては15歳です。まあ統計と個人は別とは言いますが、多少不安にもなるのかもしれません。

小学生からBASICとか、いつの間にかハンダ付けとかやってて高専行ってた(そのような友人がいた)みたいな層はノーコスト・単純な好奇心でプログラムを組んでいる…いや、モノづくりをしているのに対し、私は特に計算機科学や情報科学を履修するわけでもなく(12年ほど前、中学生期にHP作成とCGIと動画編集と自作PC程度で、数ヶ月で飽きた)成人後にリモートワーク目的と経歴的な都合で自腹を切るコストを払ってプログラミングスクールに行ってやっとプログラムを組んでいたわけで、色々と厳しすぎるだろう、とは思っていました。しかし絶望する必要はなかったようです。プログラミング領域はスルメ的なもののようです。そして、凡夫には凡夫に応じた形で論理的思考の放棄のような境地が獲得され、それが凡夫に応じた形で発現されていくのでしょうから…スポーツ選手がそうであるように…


※記事中には向き不向きが関係無いともありましたけど…まあ、あるんじゃないですかね…

感覚的思考または最小限の論理的思考に至る


しかしですねこれ、やっぱり極端なところがあります。「放棄」といいつつも、「思考プロセス」は必要といった事も記載されています。そして放棄するためにはそもそも所有している必要がありますから、これは論理的思考の放棄のために論理的思考が必要な事を示唆していると解釈しています(後述)。

※このような矛盾に見える論を愛し、論理的思考の放棄のために論理的思考が必要なことを示唆した(数理)論理学者・数学者・哲学者に、レイモンド・スマリヤンがいます。(タオは笑っている 改訂版 47 時が熟せば…)

そこで「感覚的思考」「最小限の論理的思考」について、登子の言を紹介します。コメント欄に金言アリです。私にはこれが最重要としか思えません。

登子、曰く

何かを習得するために、最初は ”努力する” ことから入るのが良いのかも知れません。その結果、努力することによって習得することは不可能であるということに気付き、努力するのを止めることになります。このとき、大抵の場合は習得することを諦めるようなのですが、そうではなく、努力しないでその対象物の本質を知る、即ち自分の思考プロセスにおいてその対象物への関数ポインタを獲得して保持するというとても簡単な作業を行えば、習得したことになると思います

論理的思考の放棄

はい!!!!毎朝これを唱えて実務に臨めばOKです!以上!

「最小限の論理的思考で済ませる」「感覚的思考の獲得」にあたっては、これが必要です。関数ポインタの獲得と保持が必要です。私が書いた文章みたいな無駄な解釈(大げさな論理的思考)の大部分は不要です。しかし登子において「思考プロセス」と述べられている以上、やはり言語は必要でしょう。

単に、「こういう時はこうだよね」即ち「対象がXXならば、関数が保存されている神経上の0101を参照する!(いちいち言葉にしない)」に過ぎません。現代文みたいな無駄がありません。素晴らしい。いや現代文嫌いじゃないけど。これらを配列にしておけば、何かが入力された際に、すぐに関数が参照されます。XXなら神経の0101が参照されてしまうくらいの条件反射っぷりが良いのかも知れません。

先に言ったように、もし条件反射でミスがあったとしても、どうせすぐテストしてしまうんですから問題ありません。エラー内容に応じて関数そのものやアドレスが修正されたりしますし、そのうち「見るだけで違和感を感じる」ようになるはずです。最初はエラーだらけでも、割とすぐエラーはなくなってきます。

参考…関数ポインタ
http://wisdom.sakura.ne.jp/programming/c/c54.html

どうやって関数や関数ポインタを獲得するか、これはプログラミング領域で言えば、言うまでもありませんが、とりあえずやりまくって、できれば実務をこなすといいんじゃないでしょうか。そこで有用となる方法については、

論理的思考の放棄の具体的方法

で述べられています。メモリの空き容量を増やすと同時に、多分何回もやってればメモリの使用量も大幅減っていく(人間はPCとは違うから)んでしょうね。

最初は、対象物、即ち入力された値を正確に読み取る必要があって、その段階では登子が言うように「努力する」ことは必要不可欠です。ただし、そこで必要なのは数学力とか数学的思考とか数学的言語を用いた記述能力ではなくて、単なる「国語力」ではないでしょうか(ニューラルネットワークとかは知らん)。最初はともかく、充分国語(論理国語)をやって、関数ポインタが獲得されて保持されているのならば、国語の問題を毎回やる義務はないのかもしれません。

もちろん、対象はしっかり読み取らなければなりません。とはいえ、最初の努力が十分になされた状態に至っているのならば、それ以降は毎回”国語”をやって努力しなくても、適切な設計やコーディングといったコンピュータ相手の意思疎通・キャッチボールは、できます実際。日常会話がそうであるように。
毎回の努力は、下手すると「やった感」「努力したからOK感」を発生させかねません(そんなもんよりゼニやで)。これで満足されてしまうと実務上にも問題が出たりすることもあるでしょう。そこで登子の言うように努力することによって習得することは不可能であるということに気付いて、努力するのを止めて関数ポインタに身を任せれば色々とうまくいくと思うのです。ところで、毎回の努力は…これは確たる根拠のない思い込みではありますが…毎回関数を直書きするような行為にも繋がりそうな気もします。これはDRY原則に背くことはもちろん、それだけタイポによるエラーも招来する事も意味しています。

もちろん、努力することをやめたとしても、コンピュータ相手の意思疎通が適切にできてない場合はすぐにエラーメッセージが返されるのですぐわかります(CSSとか言わないで)が、その時はまた国語をしたり語彙を獲得すればよいのです。そうです。もう意思疎通の成功も失敗も関数ポインタ化してしまえばよいのです。つまり

「アレだよアレ」

「ラーメン…!箸…!(カタコト)」

「アオいいよね いい…」

「ア…ア…」

で済ませられるくらいになれば、面倒じゃなくて良いですよね。面倒嫌ですもんね。無意識にやっちまいましょう。別に自分の脳内やイメージで「アレだよアレ」ってやるだけですからね、クライアントや他人に「アレだよアレ」と言うのは推奨されないのは百も承知です。

この傾向はプログラマーの3大美徳「怠惰」に該当するでしょうから、多分これはこれで良い場合もあるんじゃないかなと。このような観点に立つと、『登子』はプログラマーの3大美徳にも言及している、とも捉えられます。ああ…!偉大な書物であります。もちろんチーム開発の設計すり合わせとかはまた別ですよ。


アオいいよね いい…

(※当然ながら入念に、そして小さいスパンでテストする必要はあります。なんというか自動化即ちRPA領域に居るとテスト自動化が気になってくるもんですね。)

忘筌の境地(中国古典)

国語がらみですが、紀元前ごろに書かれたはずの中国古典には、このように示されています。国語をやめてしまっています。

筌(筆者注:竹で編んだ筒状の道具)は魚をとらえるためのものである。魚が捕れたら筌のことは忘れてしまう。蹄(筆者注:ウサギの足を引っ掛けるための罠)は兎をとるためのものである。兎がつかまったら蹄のことは忘れてしまう。

[それと同じで]言葉は意味をとらえるためのものである。意味がわかったなら言葉は忘れてしまってよい。[だが、言葉にとらわれて本質を忘れる人がなんと多いことか。]

わたしは、あの言葉を忘れることのできる人――世界の本質を把握した人――をどこかでさがし出して、ともに語りあいたいものだ

金谷治 (訳) 1989『荘子 第四冊 雑篇』 34p 岩波文庫


関数ポインタの保持 自転車の乗り方

私は手続き記憶的に保持されると良いと思います。つまり、自転車の乗り方のように、身体で覚えろという事になります。実際やっててそう思います。乗ってりゃ覚えます。でもあんまりにもブランクがあるとフラフラします。このため、保持に関しても、定期的に(継続的に)やることが答えとなると思います。

なんでこんなわかりきった事を書くかというと、脳科学ブーム的に、そして最初に述べたように「プログラミングは論理的思考・数学的思考力が重要」とする流れが、『登子』の偉大なる啓示をSEO的に省く事に繋がったり、論理的思考やロジカルシンキングを「信仰」する人々に脊髄反射的拒否感を植え付けかねないものだからです。(実績ある人物によって書かれていた事に感謝)

私は幸いにも、昨年2018年の10月くらいに、確かpaizaのCかDランクをやりながら、これ論理的思考じゃなくね?と思って、「プログラミング 論理的思考 必要性」「プログラミング 感覚」とかそんな感じで(検索ワードを完全一致で覚えていない)でググって、確か『登子』が1ページ目に表示されていたから良いものの、2019年10月下旬時点では上記のワードでは出てきません。これを知る人ぞ知る…としておくのも良いのかもしれませんが、なんとなく勿体ない気もします。まあだからこそ布教と銘打ってこのように恥を晒しているのですが。…と思っていましたが、某ウイルスのせいで再浮上してましたね!

これは余計ですが、登子の教えを実践するにあたって補助的に有用かもしれないのは、プログラミングなる日常よりは静的な言語操作の能力について、その能力の根源を全て「脳」という要素に”いちいち”還元する事を控える事にあるのではないか、とすら思えます。物理主義の(人が多い印象のあるエンジニア)を見てるとなおさらそう思えます。

そこでですね。もう、能力の根源を問うことをやめて、即ち論理的思考がどうだのこうだの、脳とか神経とか身体とか言うことすらなくなってしまったような、無意識的な状態でやれると最高なんじゃないかなと。あらゆることが自動化されていきます。そのためにはやはり、やるしかないと。(興味があっていつの間にかコーディングしている人々は、やはり、最強でしょう)

論理的思考は、かなり上の方でしつこく述べたように、人間の思考が(特に自然)言語によって行われる以上は言語でしかありませんが、この放棄や最小限を標榜、あるいは「信仰」するという事は、「脱・言語野」の含みがあると見てもおかしくない、のではないでしょうか。

「脱・言語野」の習慣化、まるで東洋思想のようであります。何やら心理学上の研究ではこのような結果もあったそうです。曰く

思考が大幅に減少

「悟りってどんな状態?」悟った50人に心理学的手法で詳しく聞いてみた結果とは TransTech Conferenceから

(私は科学的手法には無知であるし、この記事では科学を重んじましょうと言う気は無いし反科学と言う気も無いから、信憑性はわからない。そういうので満足できる場合は、WIREDあたりを見るとお手軽だと思います。シリコンバレーと禅とか色々出てくる。信憑性はわからない。)

臨済宗開祖の説く「言葉の毒性」 実践するほかない

当記事が布教であるとすれば、この「手続き記憶」「身体で覚えろ」は『登子』には直接書かれてはいないので、言わば教化活動です。

そして、このような教化活動を痛烈に批判したのが有名なニーチェの一句であります。曰く「神は死んだ、神は我々が殺した」。彼はナザレのイエス本人には好意的な評価を与えていますが、その教えを広めていった協会組織とその活動について狂ったように批判していますし、実際狂ってますし狂って死にました。古の大賢人、老子も「知る者は言わず言う者は知らず」と述べています。一休さんは臨済宗の僧侶ですが、そんな臨済宗…つまり禅宗という不立文字を標榜する仏教:臨済禅の開祖は、このワタクシような市井の愚かなド素人による解釈や字義への固執行為を「口にウ●コを含んで撒き散らすようなもの」とまで述べています。自身の体験は偉大ですね。原典は偉大ですね。しかし言いたくて仕方ないので書いています。

当今の修行者が駄目なのは、言葉の解釈で済ませてしまうからだ。大判のノートに老いぼれ坊主の言葉を書きとめ、四重五重と丁寧に袱紗に包み、人にも見せず、これこそ玄妙な奥義だと言って後生大事にする。大間違いだ。愚かな●(※筆者注:眼に障害のある人への差別用語)ども!お前たちは干からびた骨からどんな汁を吸い取ろうというのか。

世間には もののけじめもつかぬやからがいて、経典の文句についていろいろひねくりまわし一通りの解釈をでっち上げて[人に説き示す]ものがいる。これはまるで糞の塊を自分の口に含んでから。別の人に吐き与えるようなもの、また田舎ものが口づてに知らせ合うようなものでしかなく、一生をむなしく過ごすだけだ。

おれは出家者だと広言はしても、人に仏法を問われると、口を閉ざして答えがなく、眼玉はヤニの付いた煙突みたい、口は「へ」の字に結んだまま。こんなやからは弥勒の出現に逢っても、かなたの悪地に島流しになり、ついには地獄に寄留して苦しみをなめることになろう。

入矢義高 (訳) 1989『臨済録』 122p 岩波文庫

ああ、このままでは私は地獄に寄留することになるでしょう。このようなことを禅師の前で話していたら今頃は棒で叩かれまくって原型すら留めていないでしょう。過激ではありますが、このような立場を忘れずに臨みたいものです。「野狐禅」「沈黙は金、雄弁は銀」とは本当によく言ったものです。これと同様の話は、禅の源流である『荘子』にもあります(参考リンク1)(参考リンク2)(参考リンク3

言葉を離れろ 禅的プログラミング(中国古典)

ということで、「身体」「無意識」と何やら余計な用語もとい解釈が出てきてしまいました。御存知の通り、プログラミングは思った通りや解釈したとおりに動くものではなく、書いたとおりにしか動かないものですから、このような解釈が出てきたという事は、既にこの記事も筆者も、上手くプログラミングをやるにはどうしたらいいのか?その答えは論理的思考の放棄にある、という教えから離れたという意味にも繋がります。…いや最初っからそうじゃねえか…ああ…!もはや背教者です。火炙りにされてウスラデブの素焼きになってしまいます。

しかし幸か不幸か、もはや私の蒙昧な頭では処理しきれません。中途半端です。冗談抜きで気持ちが悪くなってきました。これの一部を書いて参考書籍を久々にパラパラめくってから眠りについたら久々に睡眠麻痺になりました。頭が悪いから?電子書籍だから?たまたまかな?帰属錯誤?いや、睡眠麻痺になった、それだけの話なのです。それ以上もそれ以下も良いも悪いも無いのです。やめよう余計な解釈。ああ…言語道断…!すばらしい言葉です…!ということで、そろそろシメに禅の話に移ろうと思います。

ここでは、ちょっとだけ「禅とはなんぞや?」についてふれて、これまでの内容を端的に示した、紀元前とか1200年くらい前の天才によって示されたプログラミングみたいな説話をいくつか紹介して終わります。そこでは解釈はほとんどしません。

さて、禅における最終到達地点とはどういうことでしょうか。これは論理的思考の放棄にも通じるので書いておきます。先程、なぜ論理的思考の放棄がスピードが向上するかを話しましたが、その段で論理とか言語とかくどくどくどくど言いましたよね。で、論理的思考には対象を知覚する必要があると言いました。

はい。ここからは例えです。サウナトランスや「ととのい」の話をしている、と思えば多分ハードルが下がります。

では仮に、言語が発生する前を考えてみましょう。当然ですが対象を表す言語は発生しません。「ラーメン」「お箸」を分別することすらできません。とはいっても「うー」「あー」くらいは言えます。こんなふうに対象を指し示すための真っ更を「根底条件」と言いましたが、この根底条件は根底条件だけに、絶対的なものです。絶対的とは、「対する(対になる)ものを絶している」事を言います。故に、何者にも依存する事無く存在できます。0であり続けます。掛け算割り算における「0」の不思議のようなものです。

一方、ラーメンやお箸は、対するもの、即ち論理空間が…真っ更という根底条件があるからこそ、言語として存在できます。即ち根底条件に依存する事によって初めて存在できます。この点が相対的、「相(あい)対する」であります。増えたり、減ったりします。

ところで、論理空間はあくまで例えです。そもそも論理空間とは、あくまで「私が言語を扱える事」の根底条件でしかありませんから、言語を扱う主体である私は論理空間の外に立っています。だって、生き物としての私そのものは言葉ではないんですからね(量子とか言わないで)。眼が生き物としての私ならば、視野が論理空間です。視野に私は含まれていません。論理空間から私は見えません。

では眼、ヒトとしての私にとっての「真っ更」は何でしょうか?論理空間の中では、「量子」「宇宙物理」とか名の付く分厚いテキストを読めばわかるのかもしれませんが、私という生命が論理空間(言葉の世界)の外にいる以上、私の真っ更も論理(言語)の外にあるそうです。このため、そもそも真っ更は論理の外にあるから言葉にできないとされています。沈黙しなければなりません。小田和正は正しかった。とはいえ、それでは何だかんだ言っても不便なので、いろいろな宗教が”仮の”名前を付けています。「空(仏教)」「道(老荘)」「万物の母(老子)」「毘盧遮那仏(華厳)」「大日如来(密教)」「神(汎神論、キリスト教神秘主義やイスラーム神秘主義)」「神秘」「存在」などなどだそうです。これらはそもそも知覚はもちろん認識すらできません。便宜的な仮の姿は、奈良に大きいのがありますね。

千の風になって

ここでは、私は存在している、ではなくて、存在が私している、になるそうです。意味がわかりませんね。わかり易い例で言うと、一時期「千の風になって」という曲が流行りましたが、かの楽曲の2番の歌詞に近いような感じです。畑に降り注いだり雪になったり星になったり自分のお墓の前が理解できる私になったりするのは、千の風です。

そして、この真っ更とか、千の風的な何かとか、仏や神と一体化するだとかを、身体とか心とかそのあたりで「完全に理解した」みたいになる感じを、最終到達地点としているそうです。不立文字なので、「みたいになる感じ」といった表現になってしまいます。
※このあたりを東大院イン哲博士課程修了の方が懇切丁寧かつ簡潔明瞭に記述されています:仏教思想のゼロポイント―「悟り」とは何か―

ところで、サウナーの諸賢はその言わんとする所、現世における苦が滅した最終到達地点、即ち「ととのい」の境地について、「涅槃」「大宇宙の神秘」「広がっていく」とか言っています。私も2週に1回くらいサウナをやっていますが、これは神秘主義者の発言にとても近いものと勝手に思い込んでいます。そろそろ「千の風になったよ」とか言われだしてもおかしくはないと思うのですが、サウナーの皆さん、いかがでしょうか。
また、このサウナ論文(PDFリンク)によると、そもそも密教系の寺院では寺院風呂としてサウナ的な施設を用意していたそうです。一次出典までは辿り着けていませんが… まあサウナで例えるとわかりやすいと思います。

ちなみに禅が「マインドフルネス」の大元となったように、最終到達地点即ち悟りに至るには「意識的な気付き」が必要な場合が多いようです。論理的思考の放棄には、論理的的思考が必要なように。
そしてサウナとの違いは、それが永続する(らしい)ことです。

このような最終到達地点こそは、まさしく論理的思考の放棄が身体的に経験される、と言えるのかもしれません。そういえばこの記事はプログラミングの話でしたからね。しかしプログラミングでは登子も言うように、論理的思考はゼロには出来ないから、それを極力ゼロに近づける、「最小限の論理的思考」でやることが上手くやるにあたって肝要でありました。そこに余計な解釈などは、あってはなりません。

ではいい加減、その「最小限の論理的思考」が何たるかを示す、禅を含めた中国の説話を紹介して、この記事を終わろうと思います。それらはプログラミングっぽいですし、『登子』その1の終盤にも近い内容かもしれません。そして説話である以上、記述されていますから、論理の中ではあります。


禅的プログラミングの例(中国古典)

普化はいつも街頭で鈴を鳴らしてこう唱っていた、「それが明で来れば明で始末し、暗で来れば暗で始末する。四方八方から来れば旋風のように応じ、虚空から来れば釣瓶打ちで片付ける」と。師は侍者をやって、普化がこう言っているところをつかまえて言わせた、「そのどれでもなく来たらどうする。」普化はかれを突き放して言った、「明日は大悲院でお斎にありつけるんだ。」侍者が帰って報告すると、師は言った、「わしは以前からあの男は只者ではないと思っていた。」

入矢義高 (訳) 1989『臨済録』 158p 岩波文庫


禅話:喫茶去(短くて読みやすい)


南泉和尚はあるとき趙州から、「道とはどんなものですか」と尋ねられ、「平常の心こそが道である」と答えられた。ついで趙州が、「やはり努力してそれに向かうべきでしょうか」と尋ねると、南泉は「いや、それに向かおうとすると逆に逸れてしまうものだ」と言われる。

「しかし、何もしないでいて、どうしてそれが道だと知ることができるのですか」と趙州。そこで南泉は言われた、「道というものは、知るとか知らないというレベルを超えたものだ。知ったと言ってもいい加減なものだし、知ることができないといってしまえば、何も無いのと同じだ。しかし、もし本当にこだわりなく生きることができたなら、この大空のようにカラリとしたものだ。それをどうしてああだこうだと詮索することがあろうか」。この言葉が終わらぬうちに、趙州はいっぺんに悟った。

無門は言う、中略
「趙州の方だって、たとえここで悟ったといっても、本当にそれが身につくためには、まだあと三十年は参禅しなくてはなるまい」。

西村恵信 (訳) 1994『無門関』 89p 岩波文庫

プログラミングは論理の中であり、「道」のような論理の外を求めてはいませんから、技術の習得に向かおうとすると、そこから逸れる、などといった事は無いはずです(組織上の目的から逸れてしまう場合はあるかもしれませんが)。しかし、論理的思考に向かうとうまくいかない場合がある(逸れる)、とは登子も言っていますし、私も散々述べたとおりです。そして、本当にそれが身につくためには時間がかかるとは、全くもってその通りとしか言いようがないです。個人差あるでしょうけどね。はー小学3年生くらいでプログラミングしてN高に行きたかった…


登子、曰く


何度テストしても、後になってバグが出てきてしまうこともある。論理的に考えれば、上記のような正確なプログラミング作業の後には若干の誤りも無いはずなのだが、これは論理的な処理ではないので、なぜバグが発生してしまうのかは、論理的には分からない。これは仕方が無いものと考えて、バグを直せば良い。それでも、普通のプログラマーが論理的な思考でプログラムを書く際と比較して、バグの発生件数は大幅に減り、楽になる。

上記のような方法は、恐らくプログラミングだけでなく、色々な物事の設計や、文章の執筆、自動車等の運転などおおよそほとんどの作業で活用することができるのではないかと思う。

しかもこの方法は、一切努力をしたり苦労したりする必要が無く、とても気楽である。
なお、何人かの、作業効率が良いコンピュータ関係のことをやっている人と話したところ、大体は上記のようなことを (表現は異なるが) 普段から実践しており、それによって、平均的なレベルと比較して遥かに高い能力で作業をしているようである。

論理的思考の放棄

論理的には分からない。仕方がない。サイコーですね。変に解釈しようとしない。これと関連するであろう日本人の俳句が下記です。

雨過ぎて青苔潤う

松尾芭蕉


登子、曰く

何かを習得するために、最初は ”努力する” ことから入るのが良いのかも知れません。その結果、努力することによって習得することは不可能であるということに気付き、努力するのを止めることになります。このとき、大抵の場合は習得することを諦めるようなのですが、そうではなく、努力しないでその対象物の本質を知る、即ち自分の思考プロセスにおいてその対象物への関数ポインタを獲得して保持するというとても簡単な作業を行えば、習得したことになると思います

論理的思考の放棄


画像1

"Mel Weitsman1" by Hozan Alan Senauke 出典:ウィキメディア・コモンズ (Wikimedia Commons) 
師が僧に問うた、「どこから来たか。」僧はすぐに一喝した。師は会釈して僧を座らせた。僧はもたついた。師はすぐ打った。

師は僧がやって来るのを見ると、払子(※筆者注:上の画像)をさっと立てた。僧は礼拝した。師はそこで打った。

また別の僧がやってくるのを見ると、やはり払子を立てた。僧は見向きもしなかった。師はやはりその僧を打った。

入矢義高 (訳) 1989『臨済録』 152p 岩波文庫


紀元前版「論理的思考の放棄」

これらで最後です。最後まで読んでくださった方には感謝しかありません。

前略
 [言葉というものには要するに限界がある。]しかしそうはいっても、一応はためしに述べてみようと思う。

始めということが有る、また始めということさえ、もともと無いということが有る。また始めということさえもともと無いということ、それさえもともと無いと言うことが有る。
有るということが有る、無いということが有る、無いということさえ、もともと無いということが有る

中略

[事物の始原をたずねれば、果てしもないのだが、現実世界では]にわかに有無の対立が生まれることになる。そしてその有無の対立は[要するに相対的なものだから]どちらが有でどちらが無だか分からない。
今自分はまたここで言葉を述べたが、自分の述べたことで、本当にものを言ったことになるのかそれともものを言ったことにならないのか、それも分からない。

中略

万物の多様も我が存在と一体である、すでに一体であるからには、さらにほかに言葉というものがありえようか。しかしすでにそれを一体だといったからには、言葉がないとして済まされようか

対象としての一とそれを表現した言葉とで二となり、その二と未分の一とで三となる。それから先き[の数の増え方]は計算の名人でもとらえられず、まして世間一般の人では及びもつかない。

そこで、無から有へと進む場合(――すなわち絶対的な混一を言葉にのせて表現する場合)でも三になるのであって、まして有から有へと進む場合(――すなわち相対の世界でそれぞれの立場を論証するばあい)では無限で果てしもない。

進むことをやめて、ひたすら自然のままに身を任せてゆくばかりだ。

金谷治 (訳) 1989『荘子 第一冊 内篇』 67-68p 岩波文庫

参考:無限後退

先に、論理空間は絶対的(対するものを絶したところ)であり、本来言葉にできない、などと言いましたが、言葉にした場合は上記のように三となるのでしょう。

この引用文では論理的思考もといTRUEとFALSEをやっています。当然ながらコンピュータの上であれば、これらが「わからない」とはならないのでしょうけれど(多値論理とか言わないでワカンナイ)、しかし登子の勧めるところは論理的思考の放棄です。「それぞれの立場を論証する」ことは、推奨されません。上で言う「ひたすら自然のままに身を任せてゆくばかりだ」となるのでしょう。論理的思考も自然発生的ですけどね。

善しとする意見と、善くないとする意見とがあり、またそうだとする意見と、そうでないとする意見とがあるが、その善しとすることがもし本当に善いのなら、善しとする意見と善くないとする意見との相違は、分別するまでもない[明白な]ことであるし、またそのそうだとすることがもし本当にそうであるなら、そうだとする意見とそうでないとする意見との相違は、これまた分別するまでもない[明白な]ことである。

[だから善しとしたり善くないとしたり、そうだとしたりそうでないとしたりする意見は、起こりようがないわけで、そうした対立を根本的に超えるのこそ、自然の平衡ですべてを調和させるということだ。]※ここの3行は書籍の訳者による注釈

こうして年齢を忘れ[て死生にとらわれず]、義理を忘れて[善し悪しにとらわれず]、無限の境地で自在に活動することになる。
そこで、すべてをこの対立のない無限の境地におくのだ。

金谷治 (訳) 1989『荘子 第一冊 内篇』 86-87p 岩波文庫

これは…放棄というよりかは論理的思考の超克といったあたりでしょうか。ところで、「もし本当に善いのなら(場合)」ってなんでしょう?読み下し文では、「善し=是」、「そうだ=然」として

「是と不是と、然と不然と、是若し果たして是ならば、即ち是の不是に異なるや、亦た弁なし」

とあります。条件分岐なのでしょうか。

都合よく解釈すると、こうです。仮に「本当に善い場合=対立を根本的に超えていて、いちいち口に出すまでもない、言語にする必要のない(つまり善し・悪しを”対象”として扱う必要がない)ような絶対に善い場合」としましょう。その場合、善し・悪しが違っていることは分別するまでもない(言うまでもない)そうです。絶対的に善いのですから、善くないという相対的な立場はその時点では発生できないはずです。

ここで、「本当に善いのなら善し・悪しが違っていることは分別するまでもない = 「本当に善いのなら善し・悪しの違いについての情報処理が発生しない」、としちゃいましょう。はい。情報処理が発生しないのですから、真理値も発生しません。つまりTRUEもFALSEも発生しません(起こりようがない)。したがって、論理的思考はできません。


いや、しかし「もし本当に善い」が条件分岐なら、当然ですがそれはTRUEかFALSEの条件判断を経た上で成り立つ「分別するまでもない」なので、まあ情報処理が減るんでしょうけれど、ここで「本当に善いが本当に善いという」…進むことをやめましょう。絶対的に善い、とは仮に表しているだけなんでしょうか。ああ、もう頭の中で言葉にしたり繋ぐことをやめよう。日本語訳者の注釈の文字列「起こりようがない」に混乱させられているんでしょうかね。ちなみに他の訳者の方はもっと哲学風の言い回しではあります参考リンク当然ですけど、プログラミングはこんなことになりませんよね

参考:『荘子』をよむ ――荘子の実践論――

ちなみに、対立を根本的に超える、が言わんとするところ(=道枢と称される。回転扉の軸に例えられている)に関しては原著、無理なら上記URLか「NHK「100分de名著」ブックス 荘子」を参考にしてください

ここでもう1つ、偉大な哲人の一言を紹介しておきましょう。

道の道とすべきは、常の道に非ず。
名の名とすべきは、常の名に非ず。

名無きは天地の始め、名有るは万物の母。
故に常に無欲にして以て其の妙を観、
常に有欲にして以て其の徼を観る。

此の両者は、同じきに出でて而も名を異にす。
同じきをこれ玄と謂い、玄のまた玄は衆妙の門なり。

金谷治 (訳) 1997『老子 無知無欲のすすめ』 15p 講談社学術文庫

有名な『老子』の第一章です。道は名前以前(天地の始め)であって(本来言及できないもので)、我々が扱うプログラムやらは「名有る」ものです。しかし名前が有ろうと無かろうと、天地(宇宙しかり我々の生活しかり)が動いていくことには何にも変わりはありません。言葉にしてしまうとそれが正しいか否かを検証するフローが出てきてしまいますし、その検証のまた検証といったことを(有欲にして)行っても、其の徼…上辺(言葉)しか見れないことが示唆されています。まあ無論その言葉で人類発展してきたわけですが、しかしプログラミングにおいては「妙」を観ていきたいものです。(※ちなみに、本来言及できない”道”とか言いましたが、こういう領域は語る手段があるそうです。ここで理論物理の人が言ってます

ああ…それにしても1日1万行というのはイメージとしては「無限の境地」みたいなものですね…!さて、いい加減次でラストです!もう強調なんかつけませんよ!

庖丁が、文恵君のために牛を料理したことがあった。手でさわり、肩を寄せ、足をふんばり、膝立てをする彼のしぐさのたびに、さくさくばりばりと音がたち、牛刀の動きにつれてざぐりざくりと響きわたる、それがみな音律にかなって快よく、[殷の湯王の時の名曲]桑林の舞楽にも調和すれば、また[堯の時の名曲]経首の音節にもかなっていた。

文恵君はそれを見てすっかり感嘆し、「ああ、見事なものだ。技もなんとここまでゆきつけるものか。」といった。庖丁は牛刀を手から離すと、それに答えた、

「私めの求めておりまするものは道でございまして、手先の技より以上のものでございます。私めがはじめて牛の料理を致しましたころは、目にうつるものはただもう牛ばかり[手のつけどころも分かりません]でしたが、三年たってからはもう牛の全体は目につかなくなりました。このごろでは、私めは精神で牛に対していて、目で見ているのではありません。感覚器官にもとづく知覚は働きをやめて、精神の自然な活動だけが働いているのです。

天理(すなわち自然な本来の筋道)に従って、[牛の皮と肉、肉と骨の間の]大きな隙間に刀刃をふるい、大きな空洞に沿って走らせて、牛の体の本来のしくみにそのまま従ってゆきます、支脈と経脈がいりくみ、肉と骨とがかたまったような微妙なところでさえ、試し切りをするようなことはありません。まして大きな骨の塊ではなおさらです。腕のよい料理人は一年ぐらいで牛刀をとりかえていて刃こぼれが来るのですが、たいていの料理人はひと月ごとにとりかえながら[骨につき当てて]牛刀を折ってしまうのです。

ところで、私めの牛刀は十九年も使っていて数千もの牛を料理してきましたが、その刃さきはまるでたった今砥石で仕上げたばかりのようです。あの骨節というものには隙間があり、牛刀の刃さきというものにはほとんど厚みがありません。その厚みのないもので隙間のあるところに入っていくのですから、まことにひろびろとしたもので、刃さきを動かすにも必ずゆとりがございます。だからこそ、十九年も使っているのに、牛刀の刃さきがたった今砥石で仕上げたばかりのようなのです

けれどもそれにしても、筋や骨のかたまったところに来るたびに、私はその仕事のむずかしさを見てとって、心をひきしめて緊張し、そのためには視線は一点に集中し手のはこびも遅くして、牛刀の動かしかたは極めて微妙にいたします。やがてばさりと音がして肉が離れてしまうと、まるで土くれがもとの大地に落ちたときのよう [に、ことさら切り離したという形跡が残らない見事さ]なのです。牛刀を手にひっさげて立ちあがり、四方を見まわしてしばらく去りがたく佇んだうえで心中に満足し、牛刀をぬぐってそれを鞘に収めるのです。」

文恵君はいった、「すばらしいことだ。わしは庖丁の話を聞いて、養生(――すなわち真の生きかた)の道を会得した。」

金谷治 (訳) 1989『荘子 第一冊 内篇』 94p 岩波文庫


この記事が気に入ったらサポートをしてみませんか?