登 大遊@筑波大学大学院コンピュータサイエンス専攻の SoftEther VPN 日記 このページをアンテナに追加 RSSフィード

Daiyuu Nobori's SoftEther VPN Diary since 2004

登の Web サイト: http://dnobori.cs.tsukuba.ac.jp/

mixi : http://mixi.jp/show_friend.pl?id=672294
Twitter : http://twitter.com/dnobori/
Facebook: http://www.facebook.com/dnobori

日記などへのリンク集
IKeJI さん | Cedar さん | Mayaqua さん | thisjun さん
bakueikozo さん | mugen さん | 分散計算の神林君 | 榮樂先生 (hdk) | 吉田戦車 (ceekz) | 高木先生 | ron さん
AC の古澤さん | AC の TAKAO 君 | AC の NIES 君 | AC の古橋君 | AC な wakatono さん | AC のいのひろ君
AC な三戸君 | AC な柴田君 | AC の小野君 | AC すぎる松本君 | AC な小西君 | AC な google の及川さん | AC な tomocha さん
まつもとゆきひろ氏 | 板野先生の blog | 新城先生の最近の fj への投稿 | つくばあさひなあんてな | hatena 筑波大学 AC リング

日記でよく出てくる「AC」(もともとは筑波大学用語) について詳しくは ここここ をお読みください。

 | 

2007年3月25日 (日)

論理的思考の放棄2  論理的思考の放棄2を含むブックマーク  論理的思考の放棄2のブックマークコメント

最近あまり日記を書いていなかったので、少し書いてみたら、賛否両論のコメントがたくさんついたことを嬉しく思う。

トラックバック元の URL も訪問してみた。


いつも書くような、くだらない内容の日記と比較して、昨日のは短時間でこれだけのコメントが付いたということが、このような問題解決方法に関する汎用的な方法を知りたいという関心度の高さを表している。


作業の例としてプログラミング、作業効率の例として行数を挙げて説明したつもりだが、プログラミング以外の作業にも適用可能だ (依頼されて行う仕事も、自ら進んで行う趣味も)と思うし、また作業効率として行数のみを挙げるというのはおかしいという話ももっともである。それらの表現は、一種のわかりやすい比喩として例示したものなので、別の表現に置き換えていただいても構わない。




方法を知ることでそういう効率的な方法で仕事ができるようになるのだが、その方法を他人に伝えるというのは、難しいことである。なぜならば、その方法は理論的でない為である。

頭の中の、理論的でない部分を最適化しないといけないためで、そのための方法を、「言葉」という理論的な表現方法で記述することは、極めて困難だと思う。


しかし、そう言って伝えることを諦めてしまうのも面白くないので、もう少し時間をかけて、どのようにすればわかりやすくまとめることができるのだろうかということについて研究してみて、うまくまとまれば発表しようと思うから、しばらくお待ちください。

ジュビージュビー 2007/03/25 19:54 斯様な感覚的プログラミングによって編み出されたソースコードをぜひ拝見させていただきたくなりました。
なにかひとつオープンソースなアプリケーションを作っていただければ、勉強になります。
いかがでしょうか。

softethersoftether 2007/03/25 19:56 変わった方法でプログラミングをしても、出てくるのは普通のコードなので、特に変わっているというところはないと思います。

LLLL 2007/03/25 21:00
なかなか面白いと思ったので書きます。私も論理的思考の放棄と同じような経験をしたので。
「論理的思考の放棄」にはたくさんコメントがついていたのでこちらに書きます。

    ***

登氏の考え及び他の方のコメントを考慮し、私なりに解釈してみました。

まず、登氏の話には「段階(だんかい)」が存在し、登氏の域に達するまでには論理的思考を相当程度こなす必要があると思いました。/*この話を飛ばしたため、ややこしくなったと思います*/

各段階はピラミッド構造で3段階に積み重なっており、どの段階も飛ばして上の段階へとは進めないようになっています。
しかし、下の段階へ戻ろうと思えば戻れますが、戻ると無駄に時間がかかるのでそれを避ける傾向があります。
つまり、次のような構成です。
    1基礎を習得する
    2多量のパターンを知識として蓄積(体験・経験・記憶)する
    3知識として蓄積(体験・経験・記憶)したパターンを無意識のうちに組み合わせる

        /\
       / 3 \
      /――――\
     /   2   \
    /――――――――\
   /     1     \
   ――――――――――――

このような構成をとっているためややこしく、さまざまな誤解が生まれたのだと思います。

    ***

登氏が多くの方に誤解されていることについて話したいと思います。
前提として、多くの方は段階2の下から上程度のレベルだと仮定します。
登氏はプログラミングについては既に段階3まで達しているため、多量のパターンを蓄積しているおかげで、「論理的に」考えなくても無意識的にできる。しかし、多くの段階2の方にはパターンとしてまだ蓄積されていないので「論理的な思考を行い、知識として蓄積する」という工程を経ることで、作業が遅くなる。

「上の段階から下の段階はわかるが、下の段階から上の段階のことはわからない」のにもかかわらず、この点を登氏が指摘したことで、登氏は誤解されていると考えます。

    ***

そして、登氏がはっきり認識しているかどうかは別として、登氏が確信していると私が考えることは、今まで蓄積された知識が脳内で自動的かつ総合的につながるため、才能等ではなく、問題となるのは蓄積された知識の量であるということです。

    ***

ここで、先ほど触れた私の経験をモデルケースに具体例を挙げたいと思います。
私の経験は、「英語のリーディング」についてです。
段階として次に挙げる設定をした場合、先ほどの説明と矛盾は無いと思います。

    段階1:英単語や基礎的な文法を覚える
    段階2:多くの英文に触れ、どれがどう日本語に訳されるかのパターンを蓄積する
    段階3:文法や単語の意味を全く意識せず、日本語のように意味が取れるようになる

ここまでで言わんとすることがわかっていただければ幸いですが、念のため説明します。
まず、段階1の人は「Security Council Votes to Tighten Iran Sanctions」(ニューヨークタイムズより)というタイトルすら辞書で調べなくては読めません。しかし、段階2の人にしてみれば、単語等は知っているはずなのでそう多くを調べる必要も無く、段階1の人よりも早く解釈できると言うことになります。段階3の人は、様々なパターンを蓄積しているため、脳内で無意識的に蓄積されたパターンを組み合わせ、日本語のタイトルのように意味が取れる訳です。

    ***

具体例として適切な物がコメントにあったので引用させていただきます。

  チェスで例えると、
    段階1:駒がどの様に動けるかとかそういう低レベルな思考
    段階2:多くの局面を知識として蓄積する(私が補足しました)
    段階3:局面や局所的な駒の配置が,どの様に有利かなどという意識の側から見ると直感的とも言える判断

  車の運転で例えると、
    段階1:慣れないうちは一々手順やルールを考えて行動に移す
    段階2:路上に出て、様々なパターンに遭遇し、知識として蓄積する(私が補足しました)
    段階3:無意識的に行えるようになるので、登君の言う「論理的思考」を介さないで行うようになるということ

    ***

以上が私が考えた結論です。

矛盾などはどんどんつっこんでください。
登氏のコメント期待しています。

izugizug 2007/03/25 21:23 突っ込むというより、深く考えるような事ではないのではないだろうか?
自分も含めてコメントというのは論理的に考えて書き込まれてませんし(え?

dan_nadan_na 2007/03/25 22:44 ある種、作曲するようなものなのかな?音楽理論でかためてみてもよい曲は作れないし、なかなかメロディーは出てこないでしょう。
イメージが浮かんだら、後は感性でメロディーが流れ出てくる、これが遊大的作曲法なのでしょう。

hamlet-rhamlet-r 2007/03/25 22:46 昨日分の投稿にも、コメントしましたが、コードの行数が比喩だったんですね。それで質問なんですが、ソフトウェアの規模て、何だと思いますか。正確に表現できないから、悩んでいるのでしょうけど。
この辺、mixi の某コミュで LOC というタイトルで論議を始めました。お時間がありましたら、御参加ください。

そりゃそりゃ 2007/03/26 00:13 全部一人で完結できればパフォーマンスはいいですよ。自分の思うように進められますから。でも、一般の職業プログラマは、仕事を他人と分担したり、顧客への説明やドキュメントを作成する際に、「論理的な説明」を要求されますから、そこでパフォーマンスが落ちます。頭の中で考えて、コードだけ書いて出来たからいいでしょって世界じゃないですし、感覚的なことをいうと「そんなんじゃ、わからん。」って一蹴されます。

pmintpmint 2007/03/26 00:23 顧客にはコードの説明なんてしませんね。

↑ 2007/03/26 00:24 > でも、一般の職業プログラマは、...
自分が能力を持っていないことを論理的な言葉で言い訳する良い例ですね

JreikoJreiko 2007/03/26 01:10 dan_naさんが作曲に例えておられたので、ワタシも。
音楽において非凡な人は、キーボードの前に座ればすらすらと素晴らしい音楽を生み出します。一度聴いた音楽をスッと再現可能です。楽譜は要りません。平凡な人は、能力の不足分を、「音楽理論」「コード進行」などの『論理』で埋めます。一度聴いても再現できないから楽譜をもらって弾いたりします。
プログラミングにおいて登さんは、キーボードの前に座ればすらすらとコードを生み出せます。音楽において非凡な人と似ています。きっとプログラミングにおいて非凡な人です。いっぽう、プログラミングにおいて平凡な人は、能力の不足分を、設計手法やアルゴリズムなどの『論理』で埋めるのです。楽譜のかわりにシニアなエンジニアから設計書をもらってコーディングしたりします。
かくして凡人は楽譜の読み方書き方や設計書の読み方作り方や、『論理』を、一生懸命勉強するのでした。

楽譜や設計書にも、メリットはあるんですよ。「凡人が非凡な人の真似をできる」とか、「他の人に確認してもらう際の道具になる」とか。でも、同じ楽譜でも演奏者によって流れてくる曲が異なるように、同じ設計書見てても「なんでこんなコーディングすんねん?!」とツッコミたくなるよなコードを生み出す人もいらっしゃいます。。。

教えて君教えて君 2007/03/26 01:31 非常に面白い話です。
力学 の単位を落とされていると思いましたが、
力学 はその手法では解決できなかったのでしょうか。

softethersoftether 2007/03/26 01:34 はい。力学 は 2 年生のときのことで、まだちゃんとできませんでした。

BillyBilly 2007/03/26 05:20
外人から箸の使い方をほめられ、教えてほしいと言われた。
教えてほしいっていわれても、小さい頃から当たり前のようにやってたから考えたこともない。
ましてそんな感覚的なことを論理立てて説明しようとすることが難しい。
そのときに初めて、アタリマエがすごいことだと気がついたんです。

身近に例えるとするとこんな感じですかね。
登さんの言葉にしようとする苦しみがわかってきましたよ。

hamastahamasta 2007/03/26 12:07 ちなみに、語学は苦手ですか? 得意ですか?

wackwack 2007/03/26 16:44
結局,登さんのプログラミングというのは数学を必要としない類のものでしょう.
物理シミュレーションに代表される数値計算等の数学的プログラミングは論理的思考が必要不可欠ですが.
力学に弱いというのもうなずけます.

↑↑↑↑ 2007/03/26 17:08 数学を論理的にしか解けず、感覚的に解けない人の悔し紛れの言葉でしょうか

old manold man 2007/03/26 18:00 よく帰国子女が「文法なんて考えるから英語がしゃべれないんだよ。思っていることをそのまま英語でしゃべればいい」と言いますが、似たようなものを感じます。うらやましい。

語学の場合、10歳くらいの時に英語の環境にいるかどうかが「ネイティブ英語脳」になるか「勉強英語脳」になるかの分かれ目になるそうです。苦労せずに思考をそのまま英語にできるか、多少論理的な変換を経てから話す必要があるかの違いですが。

登さんは、10歳くらいの頃、すでにプログラムするのが日常的だったのでしょうか?その場合、プログラミング言語についても、英語などの言語と似たようなことが言えることになり、興味深いです。(早期教育!?)

例えに使うなら例えに使うなら 2007/03/26 18:42 自転車でしょうか。乗れる人間は乗り方を論理的には説明できず、
乗れない人間が乗れるようになるためには、またがって試行錯誤してみるしかない。
そしてこの方法でほぼ全ての人が乗れるようになるのだから、
論理的に説明はできないけれど正しい方法ってことで。

wani-labwani-lab 2007/03/26 22:16 とても興味深く読ませていただきました。
 前に「プロフェッショナル」というNHKの番組で棋士の羽生さんが同じようなことをいっていたことを思い出しました。羽生さんは昔は数手先をよむことを意識されていたようですが、今は流れをよんだり、勘を頼りにしているらしいです。
 そういう意味ではLLさんの仮説は正しいのだと思います。

hana-usagihana-usagi 2007/03/27 00:35 十分に科学的に解明されていない脳の可能性があるわけですね。
自分自身の意識でコントロールするというよりは、無意識にまかせるというか。

uzmuzm 2007/03/27 00:53 工作員が書いてるのかってくらい気持ち悪いコメントが多い。
論理的整合性が皆無である。

m2nm2n 2007/03/27 18:50 「プログラミングは、絵や曲、小説と同じ『表現』ですが、芸術/工学の両目を持っています。」と昔から思っていました(かなり乱暴な言い方です)。今度は、ご自分のプログラミングを「工学的」に分析してみてください。

sagesage 2007/03/27 22:00 >論理的整合性が皆無である。
タイトルからして仕方ないと思います。

super-phoenixsuper-phoenix 2007/03/28 11:52 登さん:
知りたい事が2点あります。
・プログラミング前の設計段階にやってること。(どのようにまとめているのか?)
・生産性の高さを獲得するまでの過程(プログラミングをはじめてからの経緯ね。)
ーー
個人的な想像ですが、いろんなアルゴリズムやライブラリの挙動を試して、感覚的に理解して、こんなときはこうかけばいいというノウハウが溜まっていてプログラミング時にそれを引き出している様な感じだろうかな?

uzmuzm 2007/03/28 23:45 >タイトルからして仕方ないと思います。
非論理的現象に対しても論理的分析は可能です。
こういうコメントが論理的整合性が皆無のコメントの例です。

izugizug 2007/03/30 22:14 プログラム以前にすることは確かに知りたいですね。非論理的現象の例としてあげられているのはあくまでプログラムの行数ですから。
自分のことで言うと、機械設計をしているのですが、設計図を書いているときはほとんど非理論的に枚数を重ねてますが、設計以前の仕様(求められた性能やら安全性やらデザインやら)ですべてが決まるので、そこで時間が食ってしまいます。

hana-usagi 2hana-usagi 2 2007/03/31 01:27 登さんは、話の前提として3つのものをあげられていますが(1、努力しない、2、論理的に考えない、3、頭を使わない。前回の日記より)、私はLL さんやold man さん、super-phoenix さんの書かれている意見に同意で、登さんの話の前提には、もうひとつ、「知識の蓄積」のようなものが不可欠かと思います。
われわれが日本語を「自動的に」操れるように、プログラミング言語を操ることは、脳の機能としてありうることと思います。個人差はあると思いますが、早口かつ(結果的に)論理整合的にしゃべることができる人がいるように、高速でプログラミングできる人がいても、おかしいこととは思いません。ただそれには、小さい頃から使用することで暗黙のうちに脳内に積み重ねられた、日本語の知識や、プログラミングの知識が必要なはずです。チェスや囲碁や将棋の名人とほぼ同じことです。
人間の思考は、「連想的記憶」からなっていると思われ、論理的思考はその表現の一形態にすぎないと思います。(これは個人的意見。)その意味では、一部の批判者の方々の意見と私の考えは違うのですが、論理的思考を経ないものでも、論理的思考の結果としてでてくるものより優れた結果をだしうると思います。上記のizugさんの例でいうと、登さんの場合はその分野において十分な知識をもっているために、非論理的な過程で仕様を織り込むことすらできているのではないでしょうか。
ただ、登さんが一般的に使用可能と思っているこの直感的な能力を利用した方法論は、あくまでも情報を処理することが可能な「蓄積」が脳内にあって、初めて可能だと思います。たとえば、それは登さんにできても、今の私には不可能でしょう。登さんの3つの条件を満たしたとしても。登さんは努力をしないといっていらっしゃいますが、すでに努力という意識的過程を経ないうちに、必要な蓄積は済んでいるから、そういえるだけなのではないでしょうか。
まったく未知の分野(たとえば純粋な意味での会社経営)では、登さんでも新たな知識の蓄積という努力なしに成功するのは困難なのではないでしょうか?(もちろん、すばらしいソフトウエア開発の能力でどんどんソフトがヒットしている状況では、会社経営の困難は生じないかもしれませんが)。

aaabaaab 2007/03/31 01:28 ↑ という「知識の蓄積」があなたにはあるということを言っているだけですね。

kenken 2007/03/31 04:29 同じ外部挙動をする関数を作るのに、ロジックをゴリゴリ考えて作るか、IN-OUTのパターンをすべて網羅して単純なIN-OUT変換ロジックで作るか。その違いに似ているのかなと思います。
入出力パターンを多く蓄積すれば、複雑な仕様の関数も作れてしまうでしょう。そしてそのロジックは説明できないほど単純になるでしょう。

やはり頭に多くの事例が蓄積されているのだと思います。

miffmiff 2007/03/31 16:32 恐らく普通の人じゃまねできないことをやっていると考えるのは素人考えなんでしょうか。色々読んでいるとプログラミング言語を自然言語のように使える能力があるようにみえます。ブラインドタッチだって何回もしているうちに便宜上身に着けるように、プログラミングに関わっているうちに、ネイティブコーダとして成立しうるのに足りるだけの能力があったという話なのでしょうか。そういや、三島由紀夫も書き言葉と話す言葉が非常に近かったらしい。それよりもっと変態なことをしているように思えます。少しでもいいからその力を分けて欲しいものです。

とおりすがりとおりすがり 2007/04/03 04:47 間違いなく、プログラミング中は頭使ってませんよ。
プログラミング中に手が止まってるのは設計中なんです。
オイラなんて設計完了時点でプログラム動いてる気になって興味なしです。
あとは誰かコード書いてテスト&デバッグ宜しく。ってなものです。

TunaTuna 2007/07/01 10:04 コメント書こうとしたら、LLさんが全く同じ内容で書いてくださいましたね。要するに、「論理的思考の放棄」と言うタイトルから実際の議論すべきとこを正しく捉えていないような、それで結果的に無用な議論を起こしているような気がします。本当に言わないといけないないのは「熟練度」やそれを得るための「過程」、またそれがある程度の域に達した際に見えてくる世界の話だったのではないでしょうか?私とLLさんの観点からすると、「論理的思考の放棄」とか「頭を使わない」とは若干的を外した話となります。(もちろん、これは登氏に対するLLさんと私の解釈が正しかった場合の話ですが。)ただし、登氏はまだ自分に起きていることがよく分かっていないようですね。でも、最近脳に対しても興味を持ち始めたそうですので、すぐ自分の頭の中で何が起っているかを理解することになるでしょう。またその時今回の書き込みを読み返してみればきんっと面白いだろうなと思います。

という観点で、私は登氏よりはLLさんと言う方にもっと興味が湧いてきましたが・・・。ちなみに、私は外国人(非日本人)で、LLさんがおっしゃるような経験を二つの言語を習いながら、また仕事柄上、文書を作成しながらしたことがあります。確かに、このような経験を持っている人としては登氏の書き込みはそんなに理解しづらいものでもないですが(違う観点で書かれていて最初は何、これ?って思ったりはしたんですが)そんな経験がない人からは不思議な能力に見えるに間違いないでしょう。

saysay 2008/02/02 22:58 言いたい事はよくわかる。
要は学習の範囲内で済ませられているという事。

以前誰とも話さずに一ヶ月ほど過ごしたら、突然声が出せなくなった。
他にも、毎日ささやくような形だけで歌っていたら、普通に歌う事が出来なくなった事もある。
そこでどうやったら声が出せるのか、普通に歌えるのか、普段意識的にそれらを観察していたときの事を思い出しながら何度か試しているうちに声を出せるようになり、歌も普通の歌声が出せるようになったが、それらは論理的試行であり、普段は無意識であって学習に基づいて対象をこなす感覚的な作業で済んでいる。

声帯模写の上手い人に山口智充さんがいるが、彼は以前「メレンゲの気持ち」という番組で「どうやってそれを習得しているのか」というニュアンスの質問に「真似をしたいと思ってやっていみると大概出来ている」という発言をしていて、彼はどういう風に意識する事でどのような音になるのか、多様なパターンを学習できているし、コントロールできる範囲が広く、捉える感覚が優れているのだと思う。

そもそも物事をこなせるようになっていくというのは対象の物事を捉える感覚を学び磨いていく事であって普段はそれを論理的にこなす事が多く、しかし論理的思考が出来ない幼少の頃は誰もが感覚的におこなっていた筈。

自分もコーディングを済ませるまでに至る事の多くは感覚的に処理しているし、それが出来るよう普段多様な事を楽しみながら学習している。
ただ全てのAPIを記憶していないし、学習していない新しいデバイスやルールにぶつかって感覚だけでは先に進めない事や特許にひっかかって回避する必要に迫られる事などもある。
だから必要に応じて状況を時には感覚的にも論理的にも把握し、時には論理的に理解し、時には代替手段を感覚的にも論理的にも模索していて、全てを感覚的に済ませる事はできない。

感覚的処理が論理的処理に速度に於いて優れるのはスポーツの練習による蓄積がそれを証明しているが、練習による蓄積があっても個々によって能力の差があるようにベースとなる能力の差(プログラマについて言えば正確な記憶力)やそれを捉えるセンスなどがあり、万人が感覚だけで同じ位置に立てるわけでもない。

mrknmrkn 2009/01/23 10:17 前日エントリのはてブコメントにも書いたのですが、トニー・ブサンがマインドマップで広めようとしている思考方法に通じるものを感じました。登さんはどう思われますか?

 | 

<< 2007/03 >>
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31




※ この Web サイトのコンテンツは 登 大遊 が個人的に運営しているものであり、ソフトイーサ株式会社や筑波大学内での立場として公式なコメントを掲載しているものではありません。一応コメントは投稿できるようにしていますが、個人的に運営している日記のため、自分が不快に思ったコメントは前触れ無く削除しております。ご了承ください。同様に会社に関するコメントなどについても、削除される可能性があります。コメント書き込み機能については、匿名の掲示板のような状態になることを予防するため、はてなユーザーからのみ受け付けるように設定することもあります。