関数プログラミングの世界



目次
第1回 関数型言語の序論
第2回 基本的機能
第3回 Schemeの選択
第4回 関数型言語の思想的深みへ
第5回 マクロ機能は必要なのだろうか?
第6回 言語の汎用化、肥大化傾向 
第7回 コンピューター言語は宗教か? 
第8回 関数型言語の本質とその展望 
第9回 関数型言語の認識形態的抽象
第10回 OCamlと司法試験?
第11回 脱線?
第12回 隠れスタッフか?
第13回 関数構造の本源性について
第14回 大脳生理学的視点から
第15回 0.2秒の不思議?
第16回 休憩ー雑談(^^;)
第17回 閑話休題?

第1回 関数型言語の序論

あ、さて、LispやSchemeに嵌っている現状を少し。 関数型の言語はそれ自体で新たな自分だけの言語が作れる らしい。(ー>Macroのことです。)と聞きまして Lisp本家Alegro最新版6.2Trialをダウンロードして使っております。 新日鉄ソフトが日本のエージェントですが日本語版はありません。 マニュアルはOnLisp,Successful Lispを読みながら、ポチポチ 試しております。 使った感じでは少なくともDelphi3.1頃のGUIコンポーネントは 揃っているようです。 何がLispの面白いところか? そのコードの異様さ、言語構造の特殊性です。 これまでPerlの暗号っぽいのは除き、勿論、桐の一括処理の 日本語スクリプトを除き、ワタクシ、一貫してエレガンスをコードと 言語構造に求めて参りました。 それに反してLispってカッコだらけでなんとも…。 と食わず嫌いでおりましたところ、触っていると不思議と心地良いのです。 構文に慣れれば意外に簡単です。括弧を無視してもインデントさえしっかり していれば読解に支障はありません。これはCやJavaでも同じです。 インデント無しではどんな言語でも、読めたものじゃない。 面白いのは'='や':='の代入記号が無いのです。 ただ(setq x 1)だけ。つまり左括弧のすぐ右が命令であとは 引数なんです。この原則に拘るなら、普通はこう書く '(a b c)リストも (quote (a b c))であるべきなんですよね? あの紛らわしい括弧もエディターが自動的に指示してくれるので 付け忘れる心配はありません。 明らかに自然言語からの距離からするとかなり遠い プログラム言語にも関わらず何故か親しいのです。 法則性が一貫しているからでしょうね。 数学的表記の連続のようなものです。 はっきり言っておきますが、はっきり言わなくてもこれまでの論理性を 極端に欠く思考から当然お分かりと思いますが、 ワタクシ、数学は中学の因数分解から大嫌いです。 それにも関わらず不思議と関数構造に違和感が無い。 (言ってしまえばCなんかも関数だらけですが) コードが異質だから、反ってマシーンと適当な心理的な距離を とれるのか? マシーン側に寄ってるって感覚なんですよね。 "afford to program"と言えば良いのか。 感覚はそうなんですが、実はCよりはるかにマシーンに 負荷がかかっているだろうな、って分かるプログラム構造なんです。 従って昔これでAIをやってる頃、ガーベージコレクションをかけて からプログラマーは家に帰ったそうですから。 従って人間からもマシーン性能からも遠い言語構造で、 かつ極めて簡潔である。カッコがあるから意味伝達力が 正確である。Perlみたいに暗号になってどう動く のか分からんってことはない。(Perlの好きな人は それも魅力の一つなんでしょうが) 肝心のmacroまで組んでないのに、もう嵌ってしまった。 特にSchemeなんか日本語が使えない処理系DrSchemeが有名なのが 返って「良い!」 何故か? 普通我々日本人は日本語で物事を考えております。 構造主義と言うらしいのですが、知らず知らず日本語の 文化や思想の影響を受けておるのです。つまり思考フレームが 日本語に設定されているのです。それは当然、知の光源位置が 決まった形になることと同義であります。必然的に物事の多面性、 重層性、構造性から判断すると暗黙的に盲点を含んでいる ことになります。「バカの壁」のように個人的な志向とは無関係に 日本語特有の盲点がある訳です。言語を代えることにより その盲点に光りが当たる。これを認識論的切断と申します。 JavaWorkshopでも述べましたが、この道具が英語とコンピューター言語 であるSchemeと二つになる訳です。日本語ー>英語ー>Scheme と多層化することでより重層的に問題領域(プログラマティーク)に 迫れるのです。しかし日本語でも満足に思考できないのに 英語とコンピューター言語をその上にサングラスのように 二重にかけたら・・・真っ暗な〜んてね。 でも最も純粋に頭の切れるタイプは関数型プログラミング に嵌る。 最も純粋に頭が切れることは必ずしも学校の成績や 仕事の能力に繋がらない。どちらかと言うとある種の 人間的な感度の悪さが成績や業績に直結している。 何故か? 純粋に頭が切れるとは=全面的なバカに近い からである。没頭タイプである。感性タイプである。 バランスが極めて悪い。 それが(((((( ))))))のカッコに嵌るのです。 実はカッコしか存在してないんだ。カッコ構造自体が 人間の思考の実体なんだ。全て世界はカッコによる分節に よって成立しているんだ。物自体と自己という両端は直接 認識できない。ただ限りなく開かれた構造の中での相互交流が その実体である。とまあ純粋に頭の切れるタイプは直感する のです。 従ってSchemeは頭が切れるタイプには純粋すぎるのかも知れない。 Lisp程度にこれまでの長い歴史におけるバージョンアップで仕様自体が 「実用的に汚れている」方が丁度良いのかも? と、考えていたらSchemeの上を行く関数言語があった! HaskellとConcurrentCleanです。 純粋関数型言語として副作用を認めない。 代入を認めない。 分かりやすくバッサリ言ってしまうと、ニュートン力学への回帰です。 つまり時間をどちらに回転させてもニュートン力学は成立しますよね? そうありたい訳です。徹底的に透過的関数構造を追及している。 Haskellはモナドによって、Cleanは型一意性によって。 モナドなんて一見ライプニッツ的でしょう? 全然無関係です。(笑い) ひたすら「知りたくないの主義」「ブラックボックス主義」「コンポーネント主義」 やUMLからの自動コードジェネレーションに進む、=プログラマー総痴呆化傾向 の方が純粋関数型ー>並行同時プログラミングよりプログラマーとしては 楽であることは間違いない。だから現在はJava全盛!(大笑い) でもマイクロソフトが既にF#なんて開発プロジェクト名でObjectCalm (フランスのML式関数型言語)をベースに次世代言語に向けての 布石を打ち出していますからね。 カッコが少ないのでお気付きの方は少ないようですが、Rebolとか Curlなんてのも関数型言語であります。CurlなんてScheme総本山 MIT開発ですから。 とにかくこの一ヶ月、暇な時に関数型言語を触った程度ですから 「くれぐれも」ご自分の眼と手で以下の内容の真偽をご確認頂くよう お勧めします。 目次へ

第2回 基本的機能

これまでポール・グレアムの「ANSI Common Lisp」とMacベースの「Lisp入門 とマルチメディア」をLispに関しては読んでみました。Schemeについては ディヴィグの「プログラミング言語Scheme」を…。 VBでもCでも、C++からJavaやSmalltalkまで、同じ手続き型言語ですから なんの抵抗もなく言語仕様を理解出来ました。 オブジェクト指向かどうかは別にして、構文構造や機能そのものが分からん ということはありませんでした。 関数型言語は最低限の予約語や構造から統一的な法則により プログラムの諸機能を実現しようとしております。 かつ他の言語より、それが反ってすっきりとした、整合的な印象を与えます。 多用されるカッコも適切なインデントさえついていれば、可読性になんの 支障もありません。 問題は、前回も触れましたがLispのMacroとSchemeのSyntactic Extensions(S.E)です。 これは、どうご説明すれば良いもんやら、ほとほと手を焼いております。 普通はプログラミング言語の単語が意味を一意に束縛しております。 言って見ればそれを組み合わせて構造化しておるだけです。 ところがMacroとS.E.はそのマクロやS.E.そのものがプログラミング言語 をいったん生成し、それが評価・実行されることにより機能が 達成されるのです。MacroExpantionと申しますが、Macro自体が破裂して 通常のプログラムが生まれ、それが動くのです。構造が二重化している のです。分かり易く言えば、SwitchやCase文などの文法そのものを生成 する機能なんです。 このマクロ構文で予想通りのプログラミング言語が実現されるのか? そのマクロ展開された言語で機能は必要かつ過不足無しに満たされているのか? 既存のプログラムと変数のバッティングはないか?・・・とか、まるで、 言語パーサーを書いている気分になります。CのマクロやCOBOLのJCLのように 簡略化されたプロセス制御文ではありません。 通常ならスペックを満たす機能を実現すること"だけ"を考えてプログラムを 組めば良いところを、わざわざそのプログラムドメインの汎用部分を抽出して、 ある新たな機能と構造をプログラム言語そのものに付加することであります。 コンポーネントみたいにインタフェースの仕様さえ満たしておれば 良いだけではない、もっと抽象度が高い作業であります。 勿論YACCかなんかで言語仕様を組む作業よりは、はるかに 楽でありますが。 これまでいかに言語創作者やライブラリー製作者のお世話に なっていたかを痛感しております。 さてJavaであれば、ほとんど使ってなくても、仕様を知らなくても、ある 程度は理解できます。ただ関数言語はやはり最低限の部分は Macroに入る前に、ご説明する必要を感じております。 そこで何をベース言語とするか? と言ってもLispかSchemeですが。 ML系の静的型付けやHaskell、Cleanの類推的型付けや関数純粋性も 捨てがたい魅力がありますが、やはりここは(カッコ)の異様性、異質性に 拘りたい。 ((()())(((( )))))このマルっとした感覚がなんとも言えずカッコ良いでしょう? そこで処理系から判断して…LispのAlegroCLが120MB!Schemeの DrSchemeが40MBのハードディスクを食います。いかにマシーンに負荷を かけるか、これで分かります。(JavaのSDKが肥大化しても20MBちょっとです から) ここはMIT出身であるチョムスキーの顔を立てて、MITお薦めのSchemeでやることに します。DrSchemeはここから。 なお日本語は使えません。文字列は全てローマ字ですが、 チョムスキー先生の手前?、ここは断固英文で行きます。(言語学者である チョムさんは母国語である英語しか研究しなかったようですが) 教科書は: 名著:The Structure and Interpretation of Computer Programs The Structure and Interpretation of Computer Programs is the entry-level subject in computer science at the Massachusetts Institute of Technology. It is required of all students at MIT who major in electrical engineering or in computer science, as one-fourth of the ``common core curriculum,''which also includes two subjects on circuits and linear systems and a subject on the design of digital systems. エントリーレベルだけは辛うじて読めました。 それと 最新版:How to Design Programs An Introduction to Computing and Programming Everyone should learn how to design programs. On one hand, program design teaches the same analytical skills as mathematics. But, unlike mathematics, working with programs is an active approach to learning. Interacting with software provides immediate feedback and thus leads to exploration,experimentation, and self-evaluation. Furthermore, designing programs produces useful and fun things, which vastly increases the sense of accomplishment when compared to drill exercises in mathematics. On the other hand, program design teaches the same analytical reading and writing skills as English. Even the smallest programming tasks are formulated as word problems. Without critical reading skills, a student cannot design programs that match the specification. Conversely, good program design methods force a student to articulate thoughts about programs in proper English. ちょっと引用が長過ぎて…意味がさっぱり?数学と英語が何かプログラムに 関係あるらしい?でも良いことが書いてあるらしいことだけは、なんとか とまあ、この程度の英語読解力でも十分意味が理解できれば… この2冊を使用します。 次回までにDrSchemeをインストールしておいて下さい。但し Aransk同好会の最速パソコンでも、おっ重い!JavaSwing?並です。 では次回まで、ご機嫌よう。オルボワール! 目次へ

第3回 Schemeの選択について

このオブジェクト指向言語全盛の時代に(1)何故?古臭い関数型言語でかつ動作の 遅いSchemeなのか?(2)またSchemeで何ができるの?何がうれしいの? このような疑問について若干補足説明をしておきます。 まず(2)から・・・。これはご承知の通りRubyが開発された当初に同様の問題が 提起され未だ確たる答えはありません。Killer Application(この言語じゃなく ては出来ないアプリです。)がRubyの流布に不可欠だぁとコミュニティー内部で 叫ばれながら未だ実現せず。結局PerlやPythonと同じGeneralScriptの道を歩んで おります。汎用ライブラリーをひたすら充実して仕様を肥大化することに専念して おります。 これはどう言うことでしょうか? 一つは、Easyだからです。オープンソースで公開されたものを言語変換すれば 良いからです。勿論翻訳と同じでそれはそれなりの工夫が必要です。しかし 基本概念から設計することに比べれば遥かに楽です。またユーザーも使い 慣れているため詳しいドキュメント無しでも十分実用に供することが可能です。 (作成する方は既に別の言語で実装されているものの焼き直しですから、 創造意欲を刺激するインセンティブとしてはつらいものがありますけど…) これがIOやGrepなど定番のライブラリーが林立する理由です。 全ての言語やツールが似たような形態になります。その良い例がEclipseです。 どんな言語でもプラグインでJavaに変換できます。あれでGUIがドラッグアンド ドロップで出来ればVC++やJBuilderと同じです。 じゃあSchemeやLispはどうなの? 商用のAlegroLispなんか完全にこの標準的IDEタイプに嵌っています。 GUIをペタペタ、後はイベントハンドラーを書くだけ。 商用のSchemeは知りませんが、フリーのものはまだCUIです。 実は私自身何がSchemeで出来るのかがはっきりしません。少なくとも 人工知能的なエキスパートシステムやインテリジェントエージェントに 良く使われているようです。それと数学的な推論ですか。やはり関数型ってのは 数学者と相性は良いようです。理工系の方々に根強いファンが多い。 この辺りから(1)関数型言語であるSchemeを今頃何故?という疑問にも 絡むのですが、関数透過性(Functional Purity)はどうも量子コンピューターの 並列計算に向いているようです。状態の変化や保持が無いってのは時間性を 気にしなくても済むので効率が良い。つまりイレポン、ダシポンってのは量子の 世界では計算時間が無に等しくなるのです。まあそれはかなり先の話しで 目先のメリットとは言えませんが…。 ズバリ独断と偏見で言わせて頂ければ、個人向けの言語ではなかろうか? と言うことです。一応仕様はありますが、言語の可変性が高いというか 柔軟すぎるので、可読性と共有性に欠ける。従ってシステム開発用の 言語としては不向きである。あくまで個人が研究用に使用する言語と 考えます。何層も抽象度を高める事が可能なので生産効率は 高い。が、プログラムを組んだ人間にしかコードを理解出来ないと思います。 個人用であれば、簡単なメモや図をベースにいきなりプログラムが 書ける。プログラミング言語で直接思考することが可能です。 (これもRubyの長所で聞いたような?) トップダウン方式で大筋をまず書いて、それを個々の関数に具体化 することも出来るし、逆にボトムアップ方式でクリティカルな部分から 書いて、それを組み上げることも可能です。 それにMacroの抽象性が加わるので、その自由度の高さは比類が無い。 オブジェクト指向言語は未だデザインパターンとかテンプレートのような ものがあるが、Schemeにはそんなものは必要無い。 ただ機能の実装とその自由な抽象化だけ。 定型的な取っ付きが無いことと、あまりに自由で柔軟なため、 そのプログラミングスタイルが決まらない。 生産効率も個人の能力と経験により1:40位違ってくると思います。 一人で4〜50人規模のシステム開発が可能かも知れない。 それほど強力です。使いこなせれば。(その40倍の生産効率を 持つプログラマーは全体の2%しかいないとのことですが。笑い) SchemeはMITが開発しイェール大なんかで盛んに教育に使われて います。そう言えばオクスフォード大やフランスの高等理化学研究所でも 盛んですよね。 本来関数型言語はある程度の知的素質が必要なのでしょうか? 日本では東大や東工大、京大なんかで盛んに使用されていると… は全然聞きません。 日本の学生は暗記中心型が多いから、構想力や抽象力は苦手の ようですね。 Googleで見つけましたが、BiglooとかEuphoriaなんて言語もあります。 がんがん新しい言語を作るエネルギーは大したもんだと思います。 でもアメリカのGoogleでコンピューター言語を検索したらRubyが140サイトで Schemeが120サイトですから、チョッピリ日本の面目を保っています。 インド、中国、韓国などを含めてアジア発の言語はRubyだけのようです。 最後はRubyの宣伝になってしまいましたが、いよいよ次回から本格的に Schemeの紹介に入ります。 目次へ

第4回 関数型言語の思想的深みへ

Schemeの教科書であるSICPを読んでいたところ、代入が関数言語の 純粋性を破壊すると言う記述に出会いました。 Unfortunately, the complexities introduced by assignment become even more problematic in the presence of concurrency. The fact of concurrent execution, either because the world operates in parallel or because our computers do, entails additional complexity in our understanding of time. 時間概念や状態遷移の導入がReal Worldを真にモデル化している だろうか? ここで述べられている" The fact of concurrent execution, either because the world operates in parallel or because our computers do,"の部分は明らかに世界に対する我々の認識は 同時並行的に様々な関数構造が相互に組みこまれて、形成されて ているとの意味と考えます。 つまりインスタンスがそれぞれの状態と機能をもって活動するオブジェクト 指向モデルではなく、ドチャッ〜と関数が現前していると見ているのでしょう。 "additional complexity in our understanding of time."この時間概念の 理解における追加的複雑性を伴うって、ところが痺れる。 純和風に視点を変えて言いかえれば「降りゆくものは、わが身なりけり。」 です。これは「経りゆくものは、わが身なりけり。」の掛詞でしたよね? 確か上の句は「花さそう嵐の庭の雪ならで」です。 春の嵐に花吹雪が庭一面に舞っているが、それはわが身である。 変わりゆき降りゆくものはわが身である。 それは見るもの、見られるものを超えた認識世界を形容しております。 それを、ワタクシ、ドチャッ〜と認識の関数構造が現前して おると申し上げた次第です。 「花さそう嵐の」も良いですね。 花は嵐に散らされるのではなく、嵐にさそわれて散るのです。 「久方のひかりのどけき春の日に、しづごころなく花の散るらん」です。 花は散る。嵐にも、ひかりのどけき日にも。ただ散る。 時間も空間も状態も全て世界を認識する為の概念構造であります。 自己同一性も、まして他人の存在をや。 関数のPurityを求めるのは、数学的でもまして計算機的でもない。 人間の透明な抽象性、至高性を追い求める、根源的な本性から ではないでしょうか? Real World、物自体に近づきたい、知りたい。 外部と内部が相互に一体となって交流する世界を表わしたい。 SchemeからHaskell、SML/NJやObjective Caml、Erlang からConcurrent Cleanと関数型言語をなんと一ヶ月で巡り歩きました。 どの言語でもまともにプログラムを組めません。 各言語仕様が頭の中でスパゲッティー状態になって… うまく表現できませんが、結局一貫してスッポンポンで ありたい。余計なものを交えずイレポン、ダシポンで ありたい。副作用無しに在りのままでありたいんじゃ ないでしょうかねぇ? y=f(x)ってxから一意にyが導出される。 過去も未来も人間の概念中にしか存在しないから、常に 現在しか実在しない訳です。その現在も無限に薄いですよね。 あるかなきかの薄い薄い膜みたいに。 だからその膜一面に関数の(..(h(g(f())))..)ような認識構造だけがある。 Real Worldって、「ただ」交流しているのでしょう? 自分は関数の部分集合な訳です。人も同じです。 関数の部分集合的相似性が文化を形成する。 関数言語はオブジェクト指向言語よりある面では奥が深い。 GUIやデータベース、WEB技術的なところはあまり得意では なさそうですが…。 でも思考概念を直接モデル化できるようなところがある。 言語自体も問題ドメインに合わせて創造できる。 しかし関数言語が好きなのは少数派でしょうね。 この簡潔さや、抽象化や構造化、その法則性自体に興味を 持つタイプが嵌るんでしょうね。 早く開発出来るとか、コードの生産性が高いとかの副作用 (サイドエフェクト)には無関心な、ただこの簡潔な言語とともに 思考するのが好きな人だけがドップリと嵌る。 関数言語は可読性を超えています。 禅語と同じです。意味が成立する部分と意味が倒壊する部分の境にこそ 生成される。 極限まで切り詰めた、削り込んだ言葉のみが表わす世界。 Succintって響きが良い。 Nilの海から生まれる何か? 目次へ

第五回 マクロ機能は必要なのだろうか?

ご承知の通りLispやSchemeの売りの一つにマクロ機能があります。 ポールグレアムなどもその柔軟性を高く評価し、OnLispではかなりの ページをマクロ機能の解説に費やしています。Aranskも最初はこの 自からの言語をプロブレムドメインに合わせて創作出来るということに 関数言語の魅力を感じておりました。 しかしこのLispにおけるMacro、SchemeにおけるSyntax-ruleの存在に 最近疑問が芽生えております。まず簡単に通常の関数と比較して マクロはListのデータになり得ないことがあります。 全てがList構造である言語の構造原則から外れる訳で、例えばMapなどで 作る高階関数が使えません。 さらに根本的に考えると: 文法そのものを変更できるその強力さが反って混乱を来さないだろうか? つまり「If」や「Cond」などの制御機能まで変更が可能ということが、 果して生産効率として有効であろうか? 可読性を損なうことはないだろうか? 独自の文法でプログラムを書けることは、その柔軟性と規律性を秤に かける行為ではないでしょうか?Lisp、Schemeは演算子前置法 ですから(+ 5 3)は8です。それを(5 + 3)のような中置法でも(5 3 +)のような 後置法にでも変更できるのです。 「自民党の幹事長は安部さんである。」 これが「幹事長の民主党は、でない安部さん。」??? と変更されても通じる世界が可能になる訳です。 前者の文章は誰にも通じるが後者はちょっとヤバイ雰囲気が(笑い) つまり理論的に解釈すると秩序界からカオス辺縁系を超えて カオスそのものに突入する可能性を秘めております。 勿論天才的なプログラマーがマクロ機能を使いまくって、ある分野に おける超生産的なプログラミング言語を創出する可能性はあります。 構造主義的な共通言語基盤を超える力を秘めております。 しかし誰も理解出来ない。(本人以外は、笑い) マクロを使いまくって、プログラムドメインに特化した言語は それでもLispと言えるのか?文法や構文まで変容したSchemeは Schemeなんだろうか?言語自体の自己同一性とは何か? 最近大英博物館でロゼッタ・ストーンを見てきました。 ご承知の通りあの石碑のお陰で古代エジプトの象形文字が解読できる ようになりました。 A.プトレマイオス朝文字ー>B.エジプト文字ー>C.古代象形文字 が並記されていたのでA−>B−>Cの順番に解読されたそうです。 文章量はA>B>Cでした。古代の象形文字の方が情報伝達量が 大きい!(漢字の実力を見直さなければ、笑い) これは語彙の粒度や表現力の大きさによると思われます。 プログラミングのステップ数では: アセンブリー言語>C言語>Scheme>マクロ言語 となるでしょう。 粒度が大きく抽象度の高い言語ほど少ない語彙で情報伝達が 可能になります。 が、プトレマイオス朝文字と古代エジプト文字、古代象形文字は 明らかに異なる言語であります。 さて、皆さんはLispやSchemeのマクロ機能についてどのように お考えでしょうか? 目次へ

第六回 言語の汎用化、 肥大化傾向

GoogleUSAのProgrammingLanguagesで検索すると http://directory.google.com/Top/Computers/Programming/Languages/ かなりの数の言語がサイトを持っています。 なんとJavaは3000以上のサイトで他の言語を凌駕しております。 確かにEclipseやJakartaPjtの活況を見ると、肯ける点が多い。 マイクロソフトのC#や.Netはこれから盛り返すのはかなり厳しい。 ポーカーのルールですが、A winner takes all.があります。 またITでは収益逓増の法則とか言われています。 従ってマイナーな言語もメジャー言語に全ての面で勝つチャンスに賭ける 以外に生き残ることができないのでしょうか? このコラムで話題にしている関数型の言語も、Lisp,Scheme,Haskell,Clean Calm,ML等全て宣伝文句は関数言語の特性や簡潔さを謳ってはいますが 「なんでも出来ます。」「人工知能や教育用の特殊言語ではなく汎用言語 として十分通用する。」「曰く、GUI、CGI、DB、操作やオブジェクト指向まで JavaやC++に引けをとりません。」等々どこかのスクリプト言語の宣伝と 全く変わりなく、言語仕様の汎用化とライブラリーの肥大化を競っております。 どこを見てもGUIペタペタ、WEB化、サーバー化、SQLのビジュアル化 言語サポートインテリセンス、クラスツリー図、UMLの取り込みとか IDEの発展方向が全く一緒です。 この傾向の先にあるものは…コードレスの世界では? 一次Javaがオモチャのようなコードレス開発環境を作ってすぐやめました。 (JavaStudioです。あのスイッチボックスみたいなケース分岐には笑えた!) 日立のAppGalleryやIntelligentPadなんかもその動きの一例でしょう。 今は笑い話で済んでおりますが、先は分かりません。ホント この言語は一切GUIを拒否します。スタンドアローンの個人用 言語に特化します。とか、ないのでしょうか? 本当はRubyなんかも作者はGUIは嫌いなんじゃなかったろうか? もっと引き締まった言語仕様にしたかったんじゃないだろうか? 例えばWindowsでは動きません!なんてね。 特殊用途の言語ってSQL、HTML、XML、位でコマンド言語なんか がどんどんスクリプト化して汎用化しているでしょう? Perlなんて昔のままで良かったんじゃないかなぁ? あのみっともないオブジェクト指向を追加したのは、完全に 失敗です。言語オタク的に言わせてもらえば。 SuccintとConciseの違いが分かりますか?現状のぶよぶよ肥え太った 言語仕様に慣れた人には到底分からないと思いますが。 Succintは削り取った簡潔さであり、Conciseは圧縮された簡潔さ であります。 関数言語はSuccintであるべきだと考えております。 無駄を削り取って、本質が剥き出しになっているような、例えば円空仏の ような素朴さと朴訥さを言語仕様に求めたい。 Conciseって何かCheatingな部分を残しているような…この辺は言語的な 感覚ですから、何とも言えませんが、分かる人にしか分からんオタク的な 感覚? Schemeで言えば (let ((x 2) (y 3)) (+ x y)) =====> 5ですね。 上の例は良いのですが、 (let ((x 2))(+ x x)) =====> 4です。 これが気持ち悪いと感じる人はSuccintの素質があります。 どこが気持ち悪いのか? そうです((x 2))この外側のカッコが嫌でしょう? ((x 2) (y 3))この外側のカッコは意味がある。 しかし((x 2))これは「単に」カッコがダブっているだけ。 Succintからは外れています。しかしConciseから見ればただ バインド部分が圧縮されただけですよね?つまりletの後ろの 局所バインド部分は一つであろうがそれが複数であろうがカッコを 二つつけるだけ…。 このお座なりな仕様!まあ普通はこんなところでこだわる方が おかしいでしょうが。C++のWINAPIなんかどうなるんだぁ。と 言いたい方がたくさんおられるでしょうが。関数型の言語に嵌る タイプはこんなところにこだわる人間もいるということです。 ついでにもう一言LispではバックコートがSchemeではカジコート? 擬似Quoteの意味らしいが同じ仕様をわざわざ語彙まで変更する 必要があるのだろうか? このような趣味的で安易な変更はプログラマーを困惑させるだけだと 考えます。ほとんどの人は相変わらずバックコートでカジコートなんて 言っているのを聞いた事がない! さらに「ついでに」もう一言、関数型言語ではないが、何故?ビジネス パッケージはそれぞれ固有のスクリプト言語をバブルのように作りたがるのか? 良くユーザーは我慢してそれぞれのスクリプト言語を覚えているなぁ〜! 思いませんか?SAPはAVAP4、ピープルはピープルスクリプト、 オラクルはPL/SQL、パワービルダーはパワースクリプト、センチュラー も何かあったはず…固有のスクリプト言語が無い方が珍しい。 それぞれ言語仕様的には似たりよったり。ベンダーにとっては言語 ライセンスやお客の囲い込みの意図があるのだろうが、プログラム言語的に 見るべきものは全くない。 とにかく世界にはヨーロッパ言語だけではなく、様々な言語が存在する のです。小さな予約語の組み合わせで級数的に意味が拡大するような 言語は出来ないものでしょうかねぇ。 似たり寄ったり、ぶよぶよぶくぶく肥え太った記憶中心の言語ではなく 筋の良さと頭の切れで勝負するような言語を個人的には期待しております。 フレーフレー関数型言語! 現在ではすっかりマイナーなところもオタクっぽさを刺激する。 目次へ

第7回 コンピューター言語は宗教か?

関数型言語を中心に話しを進めるつもりでスタートし、その中でもLisp直系で あるSchemeをメインにサンプルプログラムを示しながらその特徴などを説明する 予定でした。 ところがLisp,Scheme,Haskell,Clean,SML/NJ,CamlやEuphoria?F#?Rebolまで 範囲が広がり、それらをなんとConcurrent!に仕様を読みかつツールを触った ので何が何やらさっぱり? http://www.cs.nott.ac.uk/~gmh/faq.html このHPでもかなりの数の関数型言語が紹介されております。 関数型言語の大きな塊をアングリと噛みついたようなもので、それを 咀嚼し系統立てて消化するのに時間がかかります。比較的固い部分は HaskellのMonadやSchemeのHygenicMacro、Continuation程度ですから…? LearningCurveが急勾配過ぎることはありません。 そこで雑談的に、「コンピューター言語の優劣は宗教の話題と一緒で 決してプログラマーの間でしてはいけない。」という不文律についての 考察を少し。 これはあまり一般の方には馴染みがないかも知れませんが、大阪で タイガーズ、広島でカープ、名古屋でドラゴンズの悪口を飲み屋で 吹聴するのとほぼ同じ効果を発揮します。特にジャイアンツを褒めよう ものなら無事では済みません。同様にVisualBasicとかマイクロソフトとか ビルゲイツとか…。 マイナーな言語や環境ほど熱狂的なファンが多い。Linux、Emacs,Vi、 Ruby,Smalltalk,関数型言語、Prologとか、GNUのストールマン先生の ようなエキセントリックな方々が、なかば宗教的な雰囲気を醸し出して おられます。(Perlのラリーウォールもか?Matzは大丈夫か?) ひょっとしてこのAransk鑑定団もその一味と思われているかも?? そもそも言語学的とか思想的とか哲学的用語をひけらかす輩に まともなプログラムが書ける訳がない。 まあそれは置いといて、何故これほど言語やツールに思いこみの 激しい人がインデントの位置!にまでこだわるのでしょうか? 一般の方には到底信じられないような、どうでも良いところにこだわるのが プログラマーであります。たった一つのBugを追いかけて二晩徹夜するの がプログラマーであります。 クラフトマンシップ、職人気質であります。道具にこだわるのも そのせいです。この頑固偏屈な部分の無いプログラマーは 大成しません。(頑固偏屈だけでも大成しませんが、笑い) はっきり申し上げてIQや記憶力などはどうでも良いのです。 一に体力、ニに体力、三、四が無くて五に要領?であります。 システムのリリース前のユーザーテストで次々に出てくる不具合や Bugをフングァーと怒り狂って徹夜でキーボードを叩き続け、また 新たなるBugや不具合を再生産するのがプログラマーであります。 このような修羅場では、結果はどうでも良いのです。 「アイツは最後まで頑張った。」「超スゲー状況でも潰れなかった。」 誰が何をやっているのか、さっぱり分かりませんから、この評価「だけ」が 大切なんです。 お分かりでしょうか? だから言語やツールが死活問題になるのであります。 このフングァーの死に物狂いの最中にマニュアルなんか見てられませんよ。 言語とツールが身体化して、頭が寝ていてもキーボードが叩けるほどに なってないとこんな修羅場は乗り切れません。 それもほぼ毎回、開発プロジェクトで繰り返される訳ですから。 頼れるものは己の体力と身体に沁みついたプログラミング能力だけ です。ここにおいてプログラマーはまさに「肉体」労働者であります。 交換不能の己の肉体だけで勝負する世界であります。 スポットライトも歓声もない、ほの暗いディスプレーに向かって 押し寄せるユーザーの不平不満を背景に、コーヒーの飲み過ぎで 痛む腹をさすりながら、ひたすらキーボードを叩き続けて、ただ 「寝てないことだけ」を証明する?のがプログラマーであります。 お分かりでしょうか? いかにプログラマーにとって言語やツールが重要か? インデントの一つまで気になるのか? それはぎりぎりの死力を振り絞るからであります。 LearningCurveうんぬんを超えておるからであります。 一般にプログラム言語の教則本やプログラム言語のホームページを 書いている人はプロのプログラマーは少ないと思われます。 2チャンネルやNiftyのフォーラムに書きこむ人も…。 大学の助手や講師、院生、学生レベルの人が多いんじゃないでしょうか。 プログラマーに大体そんな余裕がある訳がないし、また人に理解出来る 日本語を書けない、プログラムを書く「しか」能の無い人々がプログラマー になるからです。言語学や哲学なんて、どこの世界の話しだぁってのが普通です。 従って大学の講師や助手が英文言語仕様をちょっと齧った程度の基礎的な アドヴァイスがプログラマーに役立つのがおかしい。また役立ったなんて プログラマーは余程レベルが低いのであります。せいぜいAranskのような ど素人集団を誤魔化すのが関の山じゃないでしょうかねぇ。 例えば上記のような: 「Lisp,Scheme,Haskell,Clean,SML/NJ,CamlやEuphoria?F#? Rebolまで範囲が広がり、それらをなんとConcurrent!に仕様を読み かつツールを触ったので何が何やらさっぱりです。 こんな話しはトーシローだから、ぬけぬけと言えるのであります。 今夜もまた徹夜で奮闘しておられるプログラマーの皆さま、 本当に本当にご苦労様で御座います。
続編です。 前回でお分かりのとおり、最後は効率とか整合性とか言語仕様の 統一なんて二の次、三の次であります。ひたすら確実なものに すがりたい、不安定なUnknownの要素が少ない慣れ親しんだものに 頼りたいのです。たとえ一行で書けてもそれが不安定な作動を引き 起こしたら、その解決の為に時間を費やす余裕がないのです。 この辺りがRubyやPerl、Pythonなんかのスクリプト言語が 実用の世界に入れない理由であります。(速度の問題もありますが) 感覚的にはJavaでも危い、やはりCとUnixが安全か?C++でも ようやく…。これが偽らざる感触じゃないでしょうか? データベースはSQLサーバーよりオラクルか? 新しいツールや言語に飛びついた蛾や虫が不具合の炎に焼き尽くされて 黒光りするぐらいヴァージョンアップされた、枯れ尽くした技術を使いたい。 これがユーザーの本音じゃないでしょうか? 新たに開始されたシステム開発の内、15%は未完成のまま中止されます。 予算も納期もキープできるプロジェクトは30%しかありません。 残り55%の半分は予算も納期もオーバーです。もう半分はそのどちらかで あります。ここまで苦労して完成したプロジェクトでも、「システムメンテ費用に 耐えきれない!」と16億の開発費も賭けたシステムが運用中止に追いこまれて 例も聞いております。 それでもIT投資は続きます。トヨタ自動車は2010年まで1兆円注ぎ込む そうですから…! このIT投資に勝ち残る企業のみが生き残れるからであります。 当然、将来の人件費削減を担保にIT投資は実施されます。 ずばり言わせて頂ければ、「雇用無き、繁栄を享受できる 企業だけ」が生き残るのではないでしょうか? それでも日本全体ではIT産業の雇用が確保されるので、総労働 人口は変わらない、との意見もあるでしょう? ところが、そうは行かないのであります。 あの隆盛を誇ったアメリカのIT総本山であるシリコンバレーにおける 優秀なプログラマーでさえ首筋が寒くなっているのです。 何故か? 一つはインド、中国のプログラマーの急成長があります。安価な人件費 と高度な教育体制を武器に、光ファイバーを通じて全世界に高品質、 低価格の開発ソフトを配信しております。 二つ目は長年のプログラマーの夢であったプログラムの部品化、標準化、 つまり「Write once run anywhere」の環境がようやく整備されてきた ことであります。コードジェネレーション機能もようやくある程度、実用 レベルに達していること。またC#からJava、JavaからC#への自動コンバート なども、かなりの精度で可能になっております。プログラマーがコツコツ やっておった仕事が無くなりつつある訳です。彼らの夢の実現とともに…。 三つ目はエクセル、アクセスなどの関数やピボットテーブル、VBAを使用した EUC(エンドユーザーコンピューティング)もアメリカではかなり進んでおります。 統計、レポートツールなどもかなり使い易いものが出まわっており、従来 プログラマーがカバーしていた範囲を確実に侵食しております。 そして最後はソフトの無償化です。Linuxがどうのこうのと言ってもあまり ピンと来ない人でもEclipseをご覧になったら、これが無償くゎぁ!と 驚くでしょう。プログラムで食う領域を狭くしていることは事実です。 従って一般の方が考えるほど、IT産業従事者、特にプログラマーの置かれて いる地位は安泰ではないのです。 そのような大きな不安要素を抱えながら、日々生産性の低い徹夜仕事に 体力と気力を振り絞るプログラマーに必要なものは… 確実に己を支えてくれるプログラミング技術であり、それが宗教的な熱狂を 引き起こすのはご理解頂けるでしょう? これはプログラミング言語だけではなく、全ての宗教的熱狂に該当するように 思います。つまりそれで大量の人々が食っているからです。生活がかかっている から必死になるのであります。そしてそれに賭けた、費やした人生経験が 一層それに執着させるのであります。銀行が合併される度に血で血を洗う システム闘争が繰り返されのは当然のことであります。綺麗事で収まる 訳がないでしょう?つまりシステム化により一般行員の仕事が無くなります。 またその「仕事を無くす仕事」の分け前を禿鷹のようにシステム屋が争う訳です。 その錯綜し、重層化した怨念と恨みの深さは尋常一様ではない訳です。 我々ど素人衆にはさっぱり分かりませんが,想像は出来ます。 最近ヴァチカンのサンピエトロ寺院を見る機会がありました。 何千年も続いた一大産業であります。その雇用力たるや 確かに一国の政治を凌駕するものがあります。 新約聖書にイエスさんが神殿に屋台を出して商売する人たちを 追い払ったと書いてあります。でも信仰の場で商売するのを止めたら 浅草や法善寺近辺の方々はどうなるのか? 現在高齢の法王の跡目を巡っての派閥や国を交えた抗争なんて すごいでしょうね?さっぱり分かりませんが、想像は出来ます。 でまあ、本論に復帰して関数型言語ですが、主として大学や 研究機関を中心としたアカデミックな色彩の濃い言語ですから 比較的ドロドロの部分が少なく、言わばディレッタント的な好みで やっている人が多いと思われます。(マイクロソフトもF#は商業化 しない、と言明しております。) Prologなんか第5世代コンピューター時代には政、官、財の間で かなりドロドロに揉まれましたが、今はすっかり枯れております。 現役のプログラマーに関数言語やPrologが好きだと言っても 全然脅威にはなりません。言語宗教戦争から無縁の存在です。 関数型言語のClarityの功徳であります。 不可称、不可量、不可思議であります。 ではコンピューター言語宗教談義はこの辺りで。
目次へ

第8回 関数型言語の 本質とその展望

ご承知のとおりLISPやSchemeなどの関数型言語の構造はListが基本であります。 Listとは '(a b c d e f g)で表わされるデータの連続です。 これを正式に書くと (quote ( a b c d e f g))となります。つまり左括弧の すぐ右がなんらかの指示であとに続くものがその引数になる訳です。quoteは 左の引数をそのまま返す指示です。 これをSchemeのプログラムに渡すと (a b c d e f g) が返数として返ってくる。引数、返数なんて聞くと数学が嫌いな方々は 思わず退いてしまうでしょう?ちょっと我慢して下さい。 またLisp、Schemeを知っている方には基本的過ぎますよね?その方々も ちょっと我慢ね。 このList構造だけをさらに正式に書くと (quote(a. (b. (c. (d. (e. (f. (g. ( ) ))))))) )となるのです。 で、ここで細かいList構造の説明を始めるつもりは無いので 思いきり端折ります。 注目してもらいたいのは、ネストした括弧の最深部に隠れているg.の隣の ( )です。 これは何か? 空リストです。つまり空=NIL=未定義であります。 ここまでは誰でも分かることですが、もう一つ未定義があるのを お分かりでしょうか? そうです。両側の括弧の外側は広大なNILの海であります。 さらに、この両側の括弧の内側に内部発展、内部拡大しているのが 全体構造であり、その最深はNILであります。 外側のNILと内側のNILの間の構造だけが人間が認識可能な 世界であります。 さらに、各要素であるデータ a b c d e f g は無限に分岐可能で あります。例えば(a (x y z) b (h i (j k l) )・・・・とか無限の構造を 生みます。また文字列でも数値でもlambda関数自体でもなんでも ありです。 さらに、若干コンピューター寄りになりますが、a b c j k xなどのデータは 実体ではありません。2進数の記号だぁ!なんて言うつもりじゃなく、 ポインターであります。a b c の格納位置を「指し示す」アドレスであります。 この構造自体に実体が無い訳です。 その関係構造自体が、関係構造のみにとってかろうじて意味を 有するのです。 さてAranskは何を言いたいのかお分かりでしょうか? プログラムオタクの理科系の方々には哲学的過ぎ、数学嫌いの 哲学派にはプログラム構造が理解出来ない。 まさにAranskが目指すのはその空隙であります。 人間の実存形態と関数型言語構造の相似性であります。 ボードリヤールやリオタールなどが提唱する消費文化社会における、ポスト モダニズムを象徴する記号主義は近代構造主義を超えて、現代に入って その記号性の浮遊が認識されたのではなく、本来人類発生以来の太古 よりNILとNILの間に営々と築かれた思考構造に過ぎないのではないでしょうか? 関数型コンピューター言語という、「あまりに記号的な、そのあまりに記号的な 構造」から、逆に人間の生の実存形態が明晰に浮かび上がっては来ない でしょうか? 皆さんは不思議に思われませんか?何故?孤立した物質的存在である 人間が、どうして世界を認識し他者を認識し己を認識できるのか? Aranskはこの内外スッポンポンのNILとその関数構造性にあると 考えます。 純粋な関数言語は状態遷移性を持ちません。その時点の束縛と ガーベージコレクションがその機能を果しております。 つまり時空間概念も関数であります。真に存在するのは永遠の 現在であるNILだけであります。我々は実体を指し示すポインターを 中心とした関数構造であります。物自体を認識できないのであります。 この関数構造がNILとの交流により、深化、拡大しておるのであります。 内部へ! 外は内であり、内は外であります。
で?関数型コンピューター言語はどうなるの? CやC++、VB、Javaなどの実用言語と一線を画すべきであると 愚考する次第です。 つまり人間の労働機能の代替化を推進し、知的機能を機械化する ための言語とはっきり袂を分かつべきであります。 Aranskはそれらの言語の有用性を否定しておる訳ではなく、関数型 コンピューター言語には違う道があるのじゃないの?特徴を生かした 多様性を求めたらどうでしょうか? と提言しておる次第であります。 じゃあその別の道って何なのよ? そりゃぁ!読者の皆さんが各自でこれから関数型言語を学びながら 模索するのが筋でしょうにぃ。 な〜んて常套手段の逃げをAranskは言いません。キッパリ 皆さんはMLってご存知でしょうか? メーリングリストじゃありません。 関数型言語でMetaLanguageがあります。StandardML/NewJersey とかObjectiveCamlなどがあります。 残念ながらこれらの言語はあまりポピュラーではありません。 しかし学歴で判断してはいけませんが、(海外の大学は 比較的優秀なスタッフが世界から集まるようなので) MIT、ハーバード、プリンストン、イェール、オクスフォード、 ケンブリッジ、INRIAとかの大学では研究が進んでおります。 (日本の有名どころでも、ほんの少し、) 従ってある一定レベル以上の知的水準の人々にとっては かなり興味を惹く言語であると思われます。 そこでGUIやDB、WEB化の波から離れ、本来のMetaLanguage として、つまり日常言語と同様に純粋に知的言語として発展を 目指すのはどうでしょう?As its name stands for! これからの学会発表論文は英文であると同時に、MetaLanguage のプログラムソースコードを添付して知的理解の共有と動的な プレゼンテーションを義務付ける。 また中学、高校における英語と数学の授業と同時に関数型言語の 習得と操作を必須科目とする。 どうせなら実用的なJavaでも教えたらどうか? これは愚問であります。プログラマー的な教育はインドや中国に お任せしましょう。これからは知的理解、認識能力、問題解決 能力をアップし知的水準自体を向上させることが日本の役割で あります。この分野で欧米に遅れをとることは死活問題であります。 皆さんは学習・習熟Sカーブをご存知だと思います。 これからの世界では全てこのSカーブの立ち上げ方、その高さと 瞬発力が勝負の鍵を握ります。 関数型言語の問題に対する直接性、簡潔性、論理性、その 思考サイクルのスピード感これが重要であります。 そして何より大事なことは他者の理解と協働であります。 それは何によって可能でしょうか? 即ち前節で詳説いたしました、 人類の実存を貫く本源的なNILの共有とその構造性の認識では ありますまいか? 目次へ

第9回 関数型言語の認識形態的抽象

Although computer science has become an industrial activity, in many respects the success of a programming language is a subjective affair. If "the heart has its reasons of which reason knows nothing," then is a reasonable choice for a lover of heart. これはML言語の一つであるObjective CAMLに関する「Developing applications with Objective Caml」と言う書籍のConclusionに記載された文章です。 (http://pauillac.inria.fr/caml/oreilly-book/html/index.html) 「of which reason knows nothing」に痺れました。コンピューター言語オタクの Heartを鷲掴みする表現であります。ひしひしと言語に対する熱意が伝わって きますよね。 以前ご紹介したSICPも名著ですが、これもなかなか良い本と思います。 NativeFrenchが英訳しているので、日本人には分かり易い。 (JapaneseEnglishの分かり易さには適いませんが、笑い) MSG.BoardにSumimさんに紹介して頂いたSmalltalkのSpiritにも、恥ずかし ながら激しく感動致しました。http://marimpod.homeip.net/chomswiki/24 性格的にAranskは醒めてクールな現代人の素養に欠けたところがあることは 十二分に自覚しております。 この文章の中にsubjective affairという表現がありますが、Inter-Subjectivityは ご存知でしょうか?間主観性と訳します。確か「間主観性と公共性」クロスリー の著名な本をお読みになった方も多いと推測します。間主観性という語彙は まさにそれを使用する人に拠って意味が異なるほど広い概念を表わして おります。 何故このような話しを始めるかというと、Aranskのメンバーより前回の 関数型言語を「知的言語として人間の知的水準を直接向上するためのツール にする」という提案には、もう一つ一般の読者に理解して頂く説得力に 欠けるのではとの意見が出されたためであります。 そこでAranskの考える間主観性概念を説明することにより、それに対する 関数型言語の影響を分析したいと考えます。 まず一般的には間主観性概念は大きく分けて三つのカテゴリーがあります。 一つ目はフッサールの現象学をベースとした独我的知覚の外界を 意味します。二つ目はブーバーの汝と我的な一対一の間主観性 関係であります。三つ目は公共的な共有概念を意味する社会学的な 間主観性構造であります。 我々Aranskの提唱する間主観性概念とは一つ目の本源的間主観性概念を さらに深化させ、(つーか、それに西田哲学の場の概念と中村先生の述語論理を 融合しただけですが、笑い)イメージとしては外部と内部双方に「無空間」又は 「未定義空間」を設定して、その周辺に間主観性関係、概念だけが重層的 に生成、消滅している状態であると定義したものです。従って人間認識としては 時間、空間、因果性、身体性、自己同一性さえも全て間主観性構造から 派生したものであると考えるのです。これは「物質は存在しない」とか。観念論や 幻想論とは違います。全ては未定義を営々と把握する活動から生じたもの であります。その起源は原始生命体まで遡り、現代の社会制度、組織、 生活まで含まれております。絶対主観も絶対客観もないこの間主観性構造は 孤立しているように見えますが、未定義を共有し未定義が支えております。 ただ交流し生成し変化する関係性、構造性だけが認識できる訳であります。 限りなく開かれた関係性、構造性であると考えております。 そこで関数型言語に戻るのですが、そもそも関数の起源とは?数論とは? 写像とは?群論とは?フレーゲの哲学的試論によれば…なんて延々と やるのはこのHPの趣旨から大きく逸脱しますので、バッサリ。 ここでの関数定義は間主観性構造と未定義交流から生み出された、 主観性定立の為の「認識形態的抽象」であります。 オブジェクト指向言語が客観的世界を写像するものであれば、関数型言語 は間主観性構造を写像するものであると言えます。 つまり関数型言語の純粋性や明晰性またその簡潔性や同時性は本来 間主観性構造の「認識形態的抽象」から生成されたものであります。 かるが故に、関数型言語を知的言語として使用し、認識と思索を深め かつ、それが動的にコンピューターによって写像されることに意義があるので あります。関数型言語を使用することの心地良さはここに深い原因が 潜んでおります。 但し、これははっきり申し上げねばなりません。 少なくとも「現代における知的分布水準においては」万人がその抽象性を 理解できる、知的刺激を楽しめるとは限りません。 つまり万人が碁や将棋が面白いとは言えないのと同じであり、若干個人的 特性があることは認めざるを得ません。 が、それはあくまで「現代において」でありまして今後の教育や文化及び 技術の進歩により早晩、日常言語同様、万人が理解し楽しめる段階が 来ることを確信するものであります。 目次へ

第10回 OCamlと司法試験?

ポールグレアムの本だったと記憶しております。どこかで、多分マクロ構文の説明の 際?に彼は「実際の言語実装とは異なっておりますが…」と書いておりました。 そこでふと最近疑問に思ったことについて触れたいと思います。 JavaWorkshopで再帰機能についてはご説明致しました。 第16回 再帰について この時はJavaで書きましたが、前回ご紹介しました関数型言語MLの 一つであるObjectiveCaml(略称OCaml−>オッカムじゃなくてオーカメルと 発音するそうです。Perlのラクダ本と完全にバッティング!)でプログラムを 書いてみます。 まず通常の再帰です。 # let rec fact n = if n = 1 then 1 else fact (n-1) * n;; val fact : int -> int = <fun> # fact 5;; - : int =120 ちゃんと120が返ってきますね。 次はAranskの「嫌いな」末尾再帰の場合です。 # let rec fact_tail (n, r) = if n = 1 then r else fact (n - 1, r * n);; val fact_tail : int * int -> int = <fun> 全然スッキリせんでしょう?しかしこの方が効率は良いのです。つまり Javaで説明したようにスタックの往復が無く片道で済むからです。 片道切符であります。(笑い) さらに!このままでは引数を二つ必要で、知らない人がfact_tail (5, 3!) なんてやりかねない。 従って局所化するか下記のように「わざわざ」書き直す方が安全です。 # let fact_tail n = fact_tail (n, 1);; val fact : int -> int = <fun> そしてようやく、 # fact_tail 5;; - : int =120 無事120が返ってくる次第です。ここで説明したいのは如何にAranskが末尾再帰を 嫌っているか?では「ありません。」 冒頭のグレアムの言葉「実際の言語実装とは異なっておりますが…」 を思い出して下さい。 つまり、我々がわざわざスタック効率まで考えてゴチャゴチャと末尾再帰構文を 果して書く必要があるのか?これを問題にしておる訳です。 言語実装はCかも知れません。ユーザーには関係の無いことであります。 極端な話…再帰構文や末尾再帰構文がCのfor文に化けている可能性も 十分有り得るのです。 それじゃあ、スッキリと通常の「再帰構文」だけで良いじゃないですかぁ。 あとをどう料理しようがそれは言語実装の問題であります。また我々がどう のこうの出来る範囲を超えているでしょう?
実は某所でどこまでがOSの範疇か?なんて議論を延々と何千行もレスしておられた ことがありました。 何故それほどこだわるのでしょうか? それは関数型言語だけではないシステムの深い闇の部分があるからであります。 ここでWindowsのOSは…不透明で…Linuxは…とかありふれた話しを 蒸し返すつもりはありません。 学校の教科書で学んだような再帰アルゴリズムを使用して自分はプログラムを書き それがその通りマシーンによって実行されている。と、普通は考えて画面の前で作業 してますが、実は…不可知な部分を含んでおるのであります。 一般的にシステムトラブルが発生した時に、何故プログラマーはすぐ 対応できないのか?と思われます。プログラムを読めばすぐ分かるだろう?って。 ところがどっこい、まずハードかソフトかそれも通信系か運用系かとか実に 多種多様なハードソフトが重層的に組上げられており決して一筋縄では 行かないのであります。 プログラムと言語実装なんて、ほとんど一体もののように接近した関係でさえ闇は 存在する可能性があります。 この情報の闇や操作は、イラクにおける米陸軍の若き女性兵士リンチさんの 救出作戦のように現実でも日常茶飯事に起こり得ます。また我々自身の顕在意識に 上らない潜在意識によっても闇は生じるのであります。 前回申し上げた間主観性構造の「未定義」部分ではなく、既知部分も変容の可能性に 常にさらされておるのであります。我々は今後ますます間主観性構造が変化し、 再構築する必要に迫られます。 そこで如何に対応するのか?次から次に連続して発生する変化にどう 応じれば良いのか? ずばり、関係性、構造性、重層性、推移性の見極めが何より大切であります。 本日たまたまテレビで司法試験の合格者特集をやっておりました。 な、なんと22回受け続けた42才の男性の例が紹介されました。 これはほとんど奇蹟であります。 8回目で合格した人は暗記用のメモを肌身離さず頑張ったそうです。 本棚は本や資料で一杯であります。 大学2年で合格した人の机にはパソコンが一台と書類が少々でした。 この大学2年生が生まれる前から最初のオジサンは受験しておったのであります。 なんと22年前の本がボロボロになっておりました。その本が分からなくて何度も頭を 叩いたせいですって。ますます奇蹟であります。個人的にはこんな涙ぐましい根性 タイプは大好きであります。 今回の競争率は40倍であったそうです。しかしこのオジサンタイプが合格 するのは百万人に一人です!だから奇蹟であります。 22年間の法体系の変化はあるでしょう。しかしそれは大きな問題ではありません。 完全に司法試験挫折型の勉強方法を22年続けて、かつ合格するなんて やはり神様は存在するんだぁ。 確かに司法試験には、頭脳をデータベース化する非人間的な吐き気がする 記憶作業が要求されます。しかし最も重要なのは法体系の関係性、構造性、 重層性、推移性の理解と応用であります。 ヘーゲルの法哲学講義が理解できる能力を持ち、上記法体系の構造と矛盾点を 整理して把握することに注力し、司法試験合格者のチューターを2名ほどつけて 傾向と対策を練れば大学生でも普通は3年間もあれば合格できます。 涙ぐましい暗記作業は実務につけばデータベース化された法令と判例集で ほとんど代用されます。どんな試験勉強でもRealWorldで役立つことはありません。 司法試験も同じであります。仕事は人付き合いと場の流れを読む能力、これ だけであります。 閑話休題。でまあ本論に戻ります。 この重要な関係性、構造性、重層性、推移性の見極め能力向上に関数型言語の 活用は極めて効果が高いのであります。 但し、データベース型の単調な暗記作業は馬鹿馬鹿しくてやってられなくなります。 従って司法試験受験者にはお薦めできませんがね。
どうも司法試験と関数型言語の関係がよう分からん、という声無き声が 多いようで…(実はうるさくてかなわんので、)すこしこの辺り 補足しておきます。 ご承知の通り手続き型言語は状態保持を優先しております。これはつまり、 Staticなものに頼ろうとする精神の危弱性に起因しておると考える次第です。 学歴、資格、家柄、財産ブランド、これら全てある一時の状態であります。 司法試験に合格したらそれで食える。 今や学歴で食えるなんて馬鹿は皆無になりましたが、それでも未だにこだわる奴は こだわる。今や最難関である司法試験を突破した弁護士でさえ、その資格だけで 独立は難しいのです。 公認会計士資格も必要です。(これには米国CPAという逃げ道?はあるが…) さらにがっぽり企業から稼ごうとすれば、経営コンサルタントとして米国一流大 MBAがあるのが望ましい。 その上!システムも分からないと監査も出来ない。 かように手続き型言語のように次から次へと資格のサブルーチンが連続するの であります。 つまりStaticなものに依存すると、際限無く状態=記号に振りまわされることが お分かり頂けると思います。全て一時のブランドに過ぎないのであります。 関数型言語で言えば「副作用」や「状態遷移」に憂き身をやつすのです。 でも基本的にStaticなものは現実的世界ではほとんど通用しません。 (そりゃぁ、何も無いよりは稼げるでしょうが…笑い) 要は人が欲するような、憧れるような自己でありたい。 それを限りなく拡大したいってことですよね? 他者の視線に自己を売り渡す行為です。最近綿矢さんが「背中を蹴りたい」いや 「蹴りたい背中」?って本を書いています。読まれました?そこに他者と群れる ことに対する嫌悪感がうまく表現されてますよね?この群れることでしか自己を 表現できない。群れの中の位置に拘る。 これが手続き型言語やオブジェクト指向の限界であります。 ネットリとした他者の視線の内、以外では自己の存在基盤を喪失する。 それを打破するのが関数型言語の概念であります。間主観性構造であります。 ただ、今、ここで、在りのまま、全ての関数構造が同時に躍動すること。 それだけです。 簡潔性、明確性、透明性、同時性、これらのものを指標に、物事の関係性、構造性、 重層性、推移性を見極め、自他一如、自他未定義である全関数構造を躍動させること。 これが関数型言語の本質であると考えております。 目次へ

第11回 脱線?

日経コンピューター03/11/17版に特集でシステム開発プロジェクトの成功率 (品質、コスト、納期を満たしたもの)が26.7%と掲載しておりました。 この連載でも第7回で成功率3割と述べておりますが、さらにそれより低い数字に なっております。日本企業は、特に、「システム関連部門」は、往々にして成功率を 現実より高く公表しがちであります。 その集計で26.7%!ということは実質10%前後の可能性は十分あります。 各企業のコスト削減で発注価格が下落し、市場の激変による納期設定がより 厳しくなっているとは言え、恐るべき数字であります。 関数型言語はプロトタイピングに適した開発効率の高い言語ではありますが、 このHPの趣旨はこの関数型言語が開発現場の混乱を防ぐ「銀の弾丸」であると 主張しておる訳ではありません。 それよりもむしろ、その底流に脈々と流れているパースペクティブや コンセプションを重視しております。 前回の話題とも関連しますが、来年から法科大学院が大量に開校します。 手続き型言語型のStaticな安定志向人間をそんなに増やしてどうするのだろうか? 僻地に弁護士が少ないって? 人数の問題じゃなく、医療同様なんらかの抜本的な僻地対策が必要です。 ビルゲイツ並の給料にするとか。 結局大量に東京であぶれるのがオチです。 どうやって大量の弁護士を食わせて行くのか? (判事、検事は仕事がきつい割りに給料が低いのでヤメ判、ヤメ検、の弁護士を 量産する予備軍にしか過ぎません。)アメリカのように「何でも訴訟だぁ社会」 の基盤を作るだけじゃないでしょうかねぇ。これってなんら社会全体の生産性に 寄与しないでしょう? 以前アメリカのDOC(商務省)とダンピング提訴に関する案件を担当した知人が 言ってましたが、アメリカで余剰になった弁護士を食わせる為にやってるん じゃないか?なんてね。 つまり提訴したアメリカ企業側と提訴された日本企業側に分かれてアメリカの ローファームが二手に分かれて対抗している。 その知人は日本企業とアメリカ弁護士の間に入った日本の法律事務所の人間ですから あまり大きなことは言えない。GOFデザインパターンで言えばミディエーターです。 それとも単なるユーザーインタフェースか?Wrapperかぁ! かように弁護士と訴訟が自己増殖する訳です。人々が寛容と良識を無くし、 問題解決能力を失う。弁護士を通じて訴訟に持ち込む。弁護士が増える。 その弁護士がまた顧客に知恵を付けて訴訟を増やす。ますます人々が 問題解決能力を失う。… 専門家は常に問題を複雑化する方向に誘導します。簡素化すると飯の食い上げに なるからです。こちらもつい、弁護士とか専門家の名前に負けて、複雑さ を回避し問題を放り投げる。しかし、当事者が問題を理解し、解決する以外、 他に道はありません。 よおく弁護士の話を聞いて問題を整理してみて下さい。法律の内容と問題の 関連さえ理解できれば、当たり前のことしか言っておりません。 但し、先生方も商売ですから、いきなり核心を説明しません。小難しい法律用語で 煙に巻き、できるだけ相談料をせしめようと画策します。その辺りはどんな サービス業でも同じです。そして益々問題は複雑化し、訴訟へと流れて行き 法曹界全体が潤う次第であります。 この悪循環を断ち切るのは、弁護士を増やすことではなく、各個人の問題解決能力を 向上させることであります。その為に関数型言語の習得と活用は有効であります。 簡素なルールの統一性とその適用による構造概念は法制度の理解にも役立ちます。 そのアカウンタビリティーの高さは、法解釈に極めて有利なものであります。 皆さんここー>http://www.e-gov.go.jp/ ご存知でした? あと民法の知識と判例集のデータベースがあれば、日常的な問題で困ることは、 そう無いはずです。(こんなことまで、言っちゃって良いのか?弁護士会から 営業妨害で提訴されたりしてね。) そもそも「士」の付くのに碌な商売はない。 本家の武士は、主君と同輩の視線の中にしか存在しない。 代議士は派閥のボスと地元有力者の視線の中にしか存在しない。 そして弁護士や公認会計士は…まあなって見れば分かるそうです。 とまあ、脱線しまくったところで、関数型言語の本線に早速、戻りま「せん。!」 やりだしたら、ますます再帰的に突っ込むのが関数型言語魂であります。 最近理科系の学生にマネジメントを教え込もうというMOT(Management of Tec.) なんてことが提唱されております。ベンチャーを起業したりするのに役立つとかの 売りこみであります。 これには断固反対であります。ノーベル賞の田中さんに銭勘定を教え込んで どうするんですか? 銭勘定は卑賤の技であり、君子のやるべきことではありません。 中国の古典「中庸」だったか?「大学」だったか?に書いてあります。 理科系の人間は好きなことをやれるから、たとえ少ない給料で劣悪な環境でも 嬉々として実験に励むのであります。 某国立大学の実験室で深夜、だれもいないはずの廊下をパタパタ走る音がしたそうです。 不審に思った学生がドア―を開けて外を見ると、あまりの汚さに怖れをなして なんと!お化けが「裸足で」走って逃げて行く後姿を目撃したそうです! 国立大の理工系学部でこの種、怪談の言い伝えが「無い」ところは「ありません。」 これは即ち、お化けは実在する?? (隣の研究室の女子学生がレポートの推論とは全く逆の実験結果が出た ことにヤケを起こし、真昼間から、隠し持っていたウイスキーをがぶ飲みして、 不貞寝したらしい。 それが深夜に急に尿意で目覚め、慌ててトイレに駆け込むところであったそうな…。 理工系の研究室って怪談よりぞっとしますよね?) かような、神聖なる環境でお育ちになった由緒正しき理工系学生諸兄姉に、 経営などという銭勘定と詐術を教え込もうなんて量見がどこから出てくるのか? どうせチャラチャラと女子学生との合コンに明け暮れた文系卒、文部省事務官の 考えそうなことです。そんな金があれば、もっと研究予算と設備に配分しろ! との悲痛な叫びが聞こえないのだろうか? 特に理学部基礎研究系の人々は大学の法人化に強い危機感を抱いております。 工学系はまだ企業と提携できるが、彼等が深夜までオタク的に熱中している 基礎研究に金を出そうなんて奇特な?企業があるのか? 果して大学は金儲けの場か?真理追究の場であるべきじゃないかぁ?と カビの生えたような御託を並べて自分達が私物化?している研究テーマを 守ろうと必死であります。 冗談はさておき、これは大学の社会的存在意義自体を問われておるのであります。 大昔の全共闘みたいに「大学の自治!」なんて、申して居る訳ではありません。 「大学は社会に対して開かれた場」であるべきであります。 が、企業の研究機関と同じ評価で良いのか? それなら哲学科なんて即廃止ではないか? 知とはなんであるか?真理とはなんであるのか? もっと広範な国民的議論が巻き起こっても、よさそうに個人的には考えております。 特に!定年間際の、子育ての終わった、日本における戦後出生率を大幅に増やした 団塊世代のオジサマ、オバサマ!何か一言? えーっ?聞こえませんがぁ? なんと、年金問題で頭が一杯だそうです。若いもんで勝手にやってくれとのことです。 やはり、ここは我等がジャンヌ・ダルクに頑張ってもらう以外にないようですね? でも深夜、白衣をきて、髪を振り乱して、「裸足で」、トイレに駆け込むこたぁ ないよねぇ。 目撃した男子学生なんかすっかり怯えてしまい、それ以来、マラソン、駅伝等女性が 走る競技はとても恐くて見られないそうです。
その後、ジャンヌダルク女史が実験結果の不首尾で自棄酒を呷る機会は もうありませんでした。女子特有の生真面目さ、学生の純粋さが、自棄酒の 原因となったのです。マスター、ドクターと院生生活を過ごし、助手から 講師と経験を積む間に、ジャンヌは大人になったのです。 精神的に成長したのです。 「なかったことにする!」「やらなかったことにする!」 「自分及び自分の属する集団が不利になる結果は決して公表しない。」 このため、どれだけの実験結果がこれまで闇から闇に葬られたか? どれだけの予算が無駄になったか? これは科学的真理を追究する精神に反することでは、決してないそうです。 ご承知の通り、どのような学説も科学的反証に開かれております。 その反証の機会を他の研究者にお譲りする行為だそうです。 もし、そのような研究者が現れなければ?…闇から闇だそうです。 これも結構、怖い話ですよね?お化けも逃げ出す訳だ。 目次へ

第12回 隠れスタッフか?

「どうもこのところアクセス数が増えてないか?」 「不思議?最初に立ち上げた時はただメンバーが見た回数しかカンウンターが増え なかったのにね。」 「この内容と質で見に来る人がいるなんて信じらんな〜い。」 (オイオイそれは・・・汗汗) 「普通は友人や関係者が見終わるとガクンとアクセス数が減るのが当たり前だろうよ?」 とまあ、狐につままれた気分でいたところ、な、なんと某著名掲示板で当HPの紹介!を してくれた奇特なお方がいらっしゃったようで…汗汗。 ところが、その後のフォローが…。誰が見ても神経を逆撫でするような発言を 繰り返したあげく、不満と不評を撒き散らして消えてしまわれた。 それはご本人の自由ですからなんとも言えませんが、せめて一言、せめて誤解を…。 まあ当HPアクセス数増加に多大な貢献をして頂いた方ですから、文句は申しません。 当HPを読んで頂いているようですから、立派なお客様であります。 当初、グループ内でお前か?お前だろ、文体が似ている?と詮索しておりましたが、 明らかにグループのメンバーが知らないことを発言されたので、一安心というか、 逆に感心したというか…。すっかりその騒ぎでアッケにとられ、お陰でこのHPの 更新が遅れております。(オイオイ責任転嫁かよ?笑い) 折角ですからご本人に関し、気付いたことをニ、三点: 1.計算機科学というかハードとソフトの中間的な部分からプログラミングに  入られた理工系の方ではないか? 2.理論には強そうだがプログラミングテクニックはもう一つか?  コードが見当たらない? 3.ネット経験はかなりありそうな?誤魔化しやボカシ、切り返し、がうまい。(笑い) 4.論理や言葉遣いの乱れが目立つが、それはあくまでこのHPを真似られたせいか?  それとも天然か? いずれにしても注目しております。 是非当HPのメッセージ板にもお越しをお待ちしています。 広報宣伝費は、お支払いできません。 目次へ

第13回 関数構造の本源性について

何気なしに図書館で、システム開発の定量分析に関する本を立ち読みしており ました。基本的にはCMMやFPについての説明がメインですが、その中で コンピューター言語別の開発効率が表になっておりました。アセンブラー言語を 基準として開発効率ランク1.0とします。他の言語でのコード1行分の機能 をアセンブラー言語では何行で実装出来るか?という比較調査です。 例えばCはランク2.5です。この辺りはまずまずそんなものかな。C++は6.0でVC++は 9.5にランクされております。我が関数型言語はどうか? Lispは5.0でSchemeは6.0です。IDEが整備されてないのが響き開発効率的には不利な ようです。MLとErlangが共に7.0でMirandaが8.0、Haskellが8.5です。 この0.5の差は何だ? の説明は勿論ありません。 なんとPerlが12!です。これは明らかにCGIを高く評価しすぎ。 Smalltalkは15!です。やはりあの言語一体の開発環境が良いのかなぁ? 一番開発効率の高い言語は何だと思われますか? Excelです。ランク57! これは実感としてそう思います。Excel+VBAはスケールを問わなければ開発効率は 最高でしょう。ゴーグル(米)でコンピューター言語のFunctional(関数型)で 検索して見て下さい。 ちゃんとSpreadSheet!が入ってます。 そうなんです。Excelは関数型言語だったんです。 冗談はさておき、一般的に関数型言語の開発効率はあまり高くありません。 何故でしょうか? 言語の持つ本源的な意味が違うからです。命令型言語は何かをコンピューターに やらせることが目的です。一方関数型言語の目的は「写像」であります。 関係性や構造性を明らかにすることにあります。 例えば: A) int func (int x) { x = x + 1; return x; } これを関数型言語で書きかえると B) (define (func x) (+ x 1)) です。簡潔でしょう?(前置演算子にさえ慣れれば…) つまりB)の例での「return」が無いのです。命令がなく状況説明的ですね。 (型宣言もありませんが、これはLispやSchemeなどの弱い型付け言語固有であり、 MLやOcamlなど強い型付け言語では型宣言がありますので、関数型言語特有では ありません。) この状況解釈的な部分が理解出来ない人には関数型言語は向かない。 A)においてfuncはxに1を足して、それをxに代入し、その計算後のxを返答せよ! と命令しておるのです。一方B)はxに1を足す機能はfuncですよ、と写像、解釈して おるだけです。この「奥床しさ?」が関数型言語の命であります。 この違いが一方は開発に向き一方は研究教育に適した言語構造を形成しておるので あります。命令型言語は工具であります。関数型言語は絵筆であります。 工具では食えるが絵筆では食えないのです。また食うべきではないのです。 画家や数学者で富豪はおりません。アメリカのプログラマー「あがり」で 大富豪はおりますが… 関数型言語の目的は、これまで意味を見出せなかったものに意味を創出することです。 歴史に埋もれ隠れていたものを掬い取ることではないでしょうか? 権力や貨幣メタファーに覆われて弱々しくはなっているが、人間には本質的なもの、 欲望(他者に欲望されたい欲望)からではない「進歩と調和に対する希求」があります。 我々は知覚する世界の一部として再帰的存在であります。その本源知覚からの 再帰的、再構成的な認識の過程に関数型言語の透明性と純粋性を織り込むことに より新たなFabric(布置、織物、現場、重層構造、環境)を生み出すことこそ 関数型言語を学ぶ我々の存在意義があるのではないでしょうか? 我々は他者視線によって形成される自我像ではないはずです。 単なるBeingではなくBecommingです。生成交流主体ではないのでしょうか? 生成交流する関数構造こそ我々自身であり、「今生を共にする」他者達では なかろうか? そして「今生を共にする」とは時間性、空間性を超えておるのであります。 何故なら生成交流する関数構造は各個人よりも根底的であるからです。 目次へ

第14回 大脳生理学的視点から

これまで若干抽象的な議論が多くなり、どうも理解しづらい!とか単なる
自閉症的な認識論(フッサールの現象学的な)を無理やり関数型言語に当て
嵌めているだけではないか?
との不平・不満をお持ちの方々もおられると予想致します。
そのような方々に向けて今回は生理学的な観点から関数型言語を学ぶ意義に
ついて考えてみます。
大脳生理学の詳細をご説明するのはこのHPの趣旨ではありませんが、一応、
人間の記憶や脳力は大脳におけるシナプスの情報伝達スピードとその可塑的
ネットワークの形成にあるとされています。また多様な知覚情報を統覚する
機能は扁桃体と海馬によって為されている。
そして延髄や脳幹などの下等生命維持脳が中脳小脳などの哺乳類脳に覆われ、
それをさらに大脳皮質等の人間系脳が重層的に覆う構造になっております。
つまり外界との感覚器官を通じての間主観性構造は生命発生から
現在までの歴史を物質的肉体的にも蓄積しておる次第であります。累々と遺伝子
構造を通じて、また文化的な風俗習慣の継承を通じて間主観性構造は心、身、
全環境を包括的な基盤として成立しておるのであります。

以前アフリカの原住民で未だに全裸で牛と共に生活している部族の記録をテレビで
見たことがあります。そこは草原ですがブヨなどの毒虫が多いので身体中に泥を
塗ってそれが防虫服になっているような状況です。それを洗い流すのに川や池が
無いので牛の小便がシャワー代わりです。原住民の少女が牛の小便で頭を洗っている
姿をTVが撮影しており、それに気付いた少女が「牛の小便と泥が混じった」顔で
こちらを不審気に見つめました。「何がそんなに珍しいの?」という純朴で、
はにかんだ表情は明らかに自然な少女のものです。
ルーズソックスとミニスカの女子高校生も祖母の年代から見れば随分おかしな?
スタイルであります。
つまり「牛の小便で頭を洗うアフリカの少女」と「ルーズソックスとミニスカで
道路に座り込む女子高校生」も間主観性的に捉えれば何の差異も無いのです。

神谷美恵子さんがハンセン病患者の方を前に「何故?私ではなくて貴方が?」
と問わざるを得なかった。
他者視線的差別に基づく自我像と他我像を、あるがままに捉えることが
間主観性構造を知る第一歩と考える訳です。
くれぐれも誤解して頂きたくないのは人間の喜怒哀楽の情を超えた悟り済ました
心境を目指すなんてことを申しておるのではありません。
あくまで平等無差別性が間主観性構造の基盤であることを申しておるのであります。

命令型言語の典型はゲームだと思うのです。マシーンに命令したり操作している
ように見えますが、本質的には主体性を委譲しているのではないでしょうか?
喜怒哀楽の情を譲り渡しているのでしょう?命令と差異化による自我像の肥大化が
目的ではないでしょうか?人としての情感を喪失しているように思えるのは
私だけでしょうか?
調査によればゲームに没頭している時の脳細胞の活性化は局所的であるそうです。
また繰り返し操作を俊敏にするため、大脳前頭葉を経由しないで脊髄反射的な
行為を反復するので知的な発達が疎外される傾向にあります。ゲーム機を使役して
いるように見えて、逆に使役されているような状態と言えます。

さて関数型言語に話題を戻します。確かに命令型言語に比べ実用性に欠けます。
マシーン使役的な観点からのライブラリーなども少なく非力であります。
コンピューター自体に対する効率も、関数純粋性、遅延評価や再帰構造などを勘案
すると関数型言語は命令型に劣ります。
実は、ワタクシ、このところ最も関数型言語としては純粋性を保ち完成度が高いと
言われているHaskellに嵌っております。コードのイメージは:
module Fact where
 fact  :: Integer -> Integer
 fact n = product [1..n]
です。つまり1〜n個までの階乗を返す関数定義です。
fact 5 ==>120
になります。
簡潔なんです。しかしはっきり言ってしまえばこれだけなんです。(笑い)
この言語では副作用や状態遷移を許しません。関数写像しか認め
ないのです。分かり易く言えば「入れポン、出しポン」です。
従ってI/Oなどでどうしても副作用の必要な場合はMonadという機能を
利用します。関数を別の関数に変換しながら、元の関数を引き渡すことに
より副作用をカプセル化する訳です。詳しくはゴーグルでHaskell系のHPで
Monadの機能やコード説明を見て下さい。
簡単なプログラムの知識さえあれば、説明は決して「分かりません!」
物知り顔に数学の圏論だ、なんだを振りまわして説明している連中自身が
分かってないので、それを読む方が分かる訳はありません。
お奨めは:http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm

これを読んで「おや?」と思われた方は鋭い!

しかし当然ながら「何のことか、さっぱり?」は論外です。
即、HaskellからTcl/Tkに言語を変更されることをお奨めします。
畏れ多くもTclは、Rubyやかのオモチャと酷評されているVBより文法的には
簡単です。さらに実用的でもあります。関数型言語の理論に落ちこぼれた方々、
オブジェクト指向「さえ」理解に苦しむ方々に暖かく救いの手を差し伸べて
くれます。
個人的にはTcl/Tkは好きな言語の一つであります。

閑話休題、で「おや?」の中味です。前回もご説明致しましたが、言語は下位に
行くほど、つまりマシーンに近づくほどソースコードの行数が増えます。それは
当たり前で抽象化して簡略化されているから、対人間のインターフェースとして
プログラム言語が成立するのです。第一世代〜第五世代?まで一貫して
このプログラミング言語の法則は貫徹しております。
ところが?HaskellのMonadって?これが逆転しておるのです。副作用を避けるために
>関数を別の関数に変換しながら、元の関数を引き渡すことにより副作用を
>カプセル化する訳です。
こんなことをやっているので、多分言語実装がCであれJavaであれストレートに
その副作用を実現できる下位言語であればコード数が少ないはずです。
Haskellは人間の理論抽象性が実装を突き抜けた最初の言語ではないでしょうか?

そこで皆さんは言うでしょう。
実用性がない。人間にも理解しずらい。日本語も満足に通らない。
マシーンにも負荷をかける。一部機能ではあれ下位言語にも実装能力が劣る。・…
それで、どこがHaskellの売りなの?
そうなんですHaskellは落ち目の言語なんです。
スタンフォード、ハーバード、オクスフォード、ケンブリッジ、日本でも東大や
東工大、京大など錚々たる(粗々たる?)大学の情報科学科でHaskellは
教育・研究用として使用されております。
つまりユーザーのプライドだけで「ようやく」支えられているのです。

まあ本音はともかく、あくまで建前で言わせて頂ければ?この関数型言語の理論
抽象性に徹しているところが面白い。つまり言語仕様自体の理解に知的興味
をそそられるのです。コードの書き方が数学の集合論や代数論的な部分も実に
オタクっぽい。まだ全ての機能を理解した訳ではないので、なんとも
言えませんが、関数を構成して、それが重層的に、Concurrentに、Reflectiveに
遅延評価されるところが魅力ではないでしょうか?
オブジェクト指向のように現実をその制度構造を含めてプログラムに代替変換して
マシーンに命令を下すのではない。オブジェクト自体や単なる階層的な継承や
コンポジションだけの限定された関係に現実を押し込めるのではない。
マシーンに命令し使役している感覚から、関数構造と「内部から」戯れることに
より右脳、左脳全体を活性化して脳神経構造を再構成できるのじゃないか?
と推測しておる次第であります。
純粋に知ること。根本的に日常関係性を見なおすこと。
それを再帰的に自分自身も環境内存在であることを意識しながら
再構築するためのツールになり得るのではないか?
実世間的な有用性はない。想定的他者視線による自我鏡像の肥大化にも無縁。
唯、知るに足る。脳シナプスネットワークの変容。

高度消費文明の転換点に我々が立っているとしても、具体的な転換事態は
身体ー主観の知的で発生的な能力の帰結として生じるのではないでしょうか?

目次へ

第15回 0.2秒 の不思議?

これまで関数型言語について、単なる「翻訳」や「受け売り」ではなく自分の 頭で考えたことを中心に説明してまいりました。 例えば前回の大脳生理学的観点も現在一般的に語られている通説から、自分なりに 関数型言語について適用できる範囲を切り取って組みなおしたものです。 科学的にさらに研究が進めば、当然、拠って立つこれらの大脳生理学説が変わる 可能性も十分ある次第です。それらの変更、改革、生成、発展も含めて、交流する 関数構造であり、間主観性世界を構成していることがお分かりでしょうか? 突き詰めて言えば、関数型言語におけるプログラムの流れにおいて、その純粋性 から、出来るだけ副作用や状態遷移を回避しようとするのは、上記の間主観性世界を ありのまま写像認識するためであります。虚構性や状態そのものに捉われることなく 本質的な関係性に迫るために、余分なものを排して、あくまで簡潔に、短刀直入に 問題に取り組む試みです。 命令型言語に比べてプログラムの記述部分だけではなく、関数型言語では空白部分が より意識されるようになります。命令型言語ではいかに詳細に記述するか?が問われ 関数型言語はいかに簡潔に表現するか?いかに空白を活かすか? が問われるのであります。命令型言語がゴテゴテと重ね塗りする油絵であれば、 関数型言語は墨痕鮮やかな山水画であります。(Step数や人月で開発規模を見積もる 企業向けプロジェクトでは、さっぱり儲からん言語なんです。笑い) さて、皆さんは人間が知覚器官からの刺激から物を認識するまでの時間が 平均で0.2秒かかることはご存知でしょうか?つまり現在そのものは決して 認識出来ません、0.2秒後に統覚機能で知覚刺激を再構成してそれがいかにも 現在経験のように巻き戻して経験しておる次第です。もっと詳しく言えば 0.2秒前後を境にして再帰構造的な想起現象が現実を形成しております。 視覚、聴覚、味覚、嗅覚などがバラバラに伝達されるのをちゃんと再構成して 一事象として統覚(海馬、扁桃体)機能が認識しておるのであります。 例えば椅子を見ても、単なる大きさや色、形だけではなく、座り心地やそれに 関する過去経験が重層的にその椅子にオーバーラップして椅子を認識して おるのであります。これは決して静的ではあり得ないのであります。この 外界と内部の交流は変容と生成が限りなく連続するプロセスであります。 このプロセス性が関数構造と間主観性構造を形成しておるのであります。 Haskellのfactorialです。n!です、1*2*3*4…です。 fac :: Int -> Int fac n | n==0 = 1 | n>0 = fac (n-1) * n これは説明不要でしょう?肝心な部分は fac n = fac (n-1) * n ですよね?n時点を(n-1)時点からの 関係性を抽象化することにより全時系列を表現しております。 1+2+3+4…を表すsumを関数として作ります。 sum :: Int -> Int sum n | n==0 = 0 | n>0 = sum (n-1) + n となります。これも肝心の部分は sum n = sum(n-1) + nです。このように再帰構造はf(n)時点と f(n-1)時点の関係性を表現することで達成されます。 (もしお疑いの方は「The Craft of Functional Programming Haskell」 をご参照下さい。これはお奨めです。若干冗長な部分はありますが、読者の 予想通りに順序立てて説明がなされています。) で、ここからがこのHP独自の問題であります。 f(n)時点とは何か?f(n-1)時点とは何か? また、その関係性とは何でしょうか? どうぞ、ご遠慮無くMsgBoardに自論を書き込んでみて下さい。
問題に必ずしも正解が一つあるとは限りません。 複数の正解の場合もあり、正解の無い場合もあります。 そこで、Aranskの考える「自論」を申し上げます。 fac n = fac (n-1) * n と sum n = sum(n-1) + n を比べてみて下さい。fac/sumの関数名の違いを除けば 差異は*と+だけです。率直に1*2*3*4…と1+2+3+4…の差であることが お分かりですよね?これが関係性の差異です。 そしてf(n)は求める関数状態ですから、問題はf(n-1)に絞られる訳です。 何故?f(n-1)が1*2*3*4…(n-1)や1+2+3+4…(n-1)の「累積した値」に なるのか?ここですよね、ポイントは? コンピュータ的には以前JavaWorkshopでご説明した通り次々とスタックに 積まれたf(n-1)が0にぶつかって、それが巻き戻る過程で累積されるのです。 そこで上記0.2秒の認識時間に注目下さい。 つまりf(n)を現在とすると、f(n-1)は0.2秒前を表現しておるのであります。 f(n)=現在を直接認識し得ない。それ故、常に認識の再構成に0.2秒が必要と なります。即ちf(n-1)=0.2秒以前の過去の累積をベースに認識しておるので あります。その過去の累積には、全てを含んでおります。生活文化、制度、 歴史、いや無意識中の生物発生時からの遺伝子情報を含めれば膨大なもの になるはずです。関数構造的に言えば、過去への再帰と新たな世界との交流が 渾然一体となって作動しております。 瞬間々に関数構造=間主観性構造を変容させ、生成しておるのであります。 人間の間主観性構造は未来もf(n-1)とそれ以前のf(n-2,3,4…)との関係性 から予測します。単なる*や+ではありませんが…(笑い) 最近すごいなぁ。と感心することは、過去においてした将来予測が既に 違っていたことが、判明していても、ちゃんとそのことを記憶しておき 「しまった。あの時こうしておけば良かった。」なんて未練?なことを いつまでもクヨクヨ考えます。(猿でも最近、反省しますからねぇ…) 仮定法過去です。この機能が無い人や少ない人は進歩もない?) なお0.2秒も個人差があります。運動選手などの判断反応はもっと早いかも しれません。一般的に天才的なプレーヤーは大脳前頭葉を経由せず、行動を 起こせるようです。但し言語野の発達にはあまり…長島監督とかサッカーの 中田選手が話す言葉は、ちょっと常人離れしている。 しかし言語野が発達していない人=天才ではありません。 例えば、ワタクシ。 我ながら下手糞な文章であることは重々承知しております。 次はこの0.2秒をさらに分析してみます。お楽しみに。
では、この0.2秒を実感して頂きましょう。 貴方は今、時速60kmで車を運転しているとします。なんと、1分で 1000m!も進みます。秒速16.6mです。 100m競走では、な、なんと6秒台!です。 さて、0.2秒では3.3m進みます。つまり貴方は3.3mの間、「無意識」に 進んでいるのです。 だから車間距離は十分取りましょう!(怒らないでね、ジョークです。) 交通事故で、ドライバーが「ハッと気がつくと、目の前にダンプがぁ。」 と証言した場合は、0.2秒を少しオーバーした時点で事故は発生して おります。(居眠り運転でなければ、) 「何がなんだか、分からないうちにフッ飛んで…」これは、0.2秒以内での 事故発生です。つまり時速60kmで車を運転しているときには、3.3m以上走ら ないと問題を認識出来ません。 瞬時に…話題は、古代ギリシャに吹っ飛びます。 皆さんは、ゼノンの「アキレスと亀」というパラドックスをご存知でしょうか? (Aransk得意のネタであります。) 古代ギリシャでアキレスという足に翼の生えたように早く走る若者と 亀が競走した、というものです。同じ位置からスタートすればアキレスが 早いのは分かりきっているので、亀はアキレスより前方からスタートして ハンディをもらいます。よーい、どん!で走りだしたら、アキレスは 亀にいつまで経っても、追いつけなかったのです? その理由をゼノンは「アキレスが前方の亀の位置に到着した時に、亀は その間にさらに前に進んでいる。またアキレスがその位置まで着いても、 亀はさらに前に…と、いつまで経っても追いつけないのである。」と パラドックスを提起したそうです。 貴方にこのパラドックスが解けるでしょうか? これは、哲学界でも未だに証明不能のパラドックスだそうです。 「アキレスはそのとき、腰痛で…」これは、タモリ並の知能です。 「実は、その亀、ギリシャのガメラで…」これは、某ひろゆき氏並の知能です。 (RUBYの「ゆきひろ」さんでは、ありません。念のため、) 「亀の前方の位置がグルッと地球を一周して、アキレスのすぐ後ろから スタートしたから、走れば走るほど、差は開くばかり…」こ、これは Aransk並の知能であると認定します。 何故アキレスは亀に追いつけないのでしょうか? 科学的に考えてみます。アキレスが進む間に亀も進む、これは間違いない。 亀よりアキレスが走るのが速いのだから当然、その距離と時間は限りなく 細分化されて行きますよね?(拡大したらって?…それは無し) しかし決して0にはならない。ここがポイントです。 どんどん細分化が進んで0.2秒の人間として認識可能である閾値を超えると…? さらに細分化されて絶対現在に接近すると…? 以前にもご説明しましたが、時間や空間、運動概念は人間の 思考フレームですから、0.2秒を超えるとそれも認識不能の世界に突入する のです。カオス状の永遠の未定義です。…って認識もない世界であります。 アキレスも亀も認識不能になってしまいます。 QED ゼノンのパラドックスは人間には決して解けないのであります。 不思議だと思われるかもしれませんが、たった0.2秒前にNILの世界が常に存在 します。よく臨死体験された方が「一瞬のうちに、人生経験が走馬灯のように 浮かび…」と話されます。これはこの0.2秒間の消息を語っておられるので あります。もっと言えば、この0.2秒に全生命の歴史が再帰的に未来に 先送りされているのであります。動物には過去の自己、現在の自己、未来に 想定される自己などの、自己同一性概念はありません。人間だけであります。 瞬間、瞬間に自己同一性を確認しつつ、生きておるのであります。 これをニーチェは永劫回帰と言ったのか、どうかは、ワカリマセン。 話は現在に回帰します。 ビックリカメラってTV番組をご記憶の方がいらっしゃると思います。 標的になったタレント一人が何も知らされず、周りの人間が示し合わせて そのタレントを騙す様子をカメラが隠し取りするものです。 面白いのは、ありもしないことを周りの人間達全員に言われて徐々に その標的になったタレントが信じこむ様子です。 何故「そんなことが…?」なんて言う話を信じこむのでしょう?(ヤラセと 天然バカは除きます。) 人間は他人の承認無しには、生きられないからであります。 何故?他人の存在が必要なのでしょうか? そこに0.2秒間の未定義を解釈し、確認する作業が関係する訳です。 本来、時間や空間、自己同一性さえ認識概念フレームであります。 その作業を誰が検証するのでしょうか? 自ら正常な判断をしていると、誰が承認するのでしょうか? 全て自己以外の人々であります。この人々の中には、メディアなどを 含みます。全人生経験において巡り合った人々であります。 このように未定義に浮かぶ葦のような人間存在は、かろうじて 人々に支えられて生きさせて頂いておる次第であります。 関数型言語の特性はこの未定義と思考フレームの構造性、関連性、重層性を 命令型言語は言うに及ばず、自然言語よりも、なお直載に表現しておるので あります。
ところで、いくらなんでも、胸にハート型の心があって、それにキューピットの 矢が刺さると恋が生まれる…とかを信じている人は居ませんよね?(笑い) 一般的には大脳に1000億あるニューロン(脳細胞)がそれぞれ数千の シナプス(神経索)で連結されており、そのスパイク発火作用により 情報伝達が行われて意識が形成されているとされております。 部分を加算したものが全体ではありません。このシナプスが形成する複雑極まり ない関連性、構造性、重層性が意識を生み出しております。意識が物質作用である ことは酒(アルコール=化学物質)を飲み過ぎて意識不明になったり、覚醒剤が 幻覚を生むことなどで証明されております。 意識は脳の作用だけではなく、身体全体の働きであります。人間の身体は 以前にも申しましたが、生命発生以後の全ての間主観性構造(交流形態)が 蓄積生成されたものであります。誤解され易いのは、進化論的に発展したもの であるから無駄な機能、シナプスで言えば無駄な結線は、無くなるのでは ないか?との思い込みであります。顕在化してない機能や意識は決して無くなって おらず、沈殿蓄積され潜在化されておるのです。表層的な顕在意識とそれを支える 膨大な潜在意識、その下には無限の未定義が広がっておるのであります。 関数型言語でも通常使用するPrelude.hsに含まれる標準関数と膨大な ライブラリーに含まれる関数、さらに未定義の世界が開かれておる構造性と 類似しているでしょう? 夏目漱石の「門」で主人公が禅寺で公案を与えられるのをご記憶でしょうか? 「父母未生以前における本来の自己の面目如何?」です。 自分を生んでくれた父母がまだ生まれる前の自己とは何か? どこかの馬か鹿だった!とか 物質としての実体の無い自己とは何か?当然意識も存在しません。 「無」であります。「未定義」であります。 そこで上記、0.2秒前における絶対現在としての「未定義」を思い出して 下さい。認識作用以前の状態であります。 またこれは当然、自らの死、以後の「未定義」の世界とも繋がります。 永遠の過去、永遠の未来は、本人の認識的には「一瞬」であります。その 時間や空間、自己同一性認識も無いのであります。 臨死状態において、人間は過去を走馬灯のように経験するのは 新たな知覚認識作用の無い状態における大脳シナプス検索機能の暴走、 アボートであります。0.2秒間における意味検索作業を生で見ている訳です。 通常は新たな知覚が絶え間なく経験されることによって、この意味検索作業を 直接経験することはありません。まして絶対現在の「未定義」を知覚することは あり得ません。 お分かりでしょうか? 認識と未定義が不即不離であること。 Aranskは決して幻想論やニヒリズム、まして政治的、宗教的な信念を申して おるのではなく、在りのままの人間思考フレームにおける原点を関数型言語を 通して説明しておる次第であります。 で?一体それが何の役に立つのでしょうか? と、当然お聞きになりますよね? ROIってご存知ですよね?Return on Investmentです。投資効果を測る係数 であります。(急に話が現実的になりますが…) 基本的には最小のInvestmentで最大のReturnを得ることを目的とします。 Risk係数なんかも絡んで、そう簡単に決定されるものではありませんが。 これを関数型言語で表現するとー>なんてことを言いたい訳ではありません! Returnは無いのです。Investment on Investmentであります。 Returnは関数型言語で言うところのSide Effect(副作用)であります。 Returnが無いとは、世間的には何の役にも立たないことであります。 生命発生以来の歴史総体=身体と環境=未定義とは不即不離。 生成交流だけが存在しておるのであります。 生きるとは全生であります。Investment on Investmentであります。 一瞬々のInvestmentが全てであります。 そのInvestment行為を生み出す思考フレームに対して、未定義原点から 再構築を図るツールとして「関数型言語」使用してはどうか? と問いたい訳であります。
皆さんの中には居ないと思いますが、Aranskのメンバーには変わったのが おりまして: 「0.2秒前の絶対現在は認識できないのは、神経情報伝達速度の関係で分かったけど 0.2秒後に脳細胞のシナプスで形成される認識瞬間があるはずよね?その認識瞬間 そのものは絶対現在にはならないの?その認識瞬間そのものを認識するために 0.2秒かかり、またその認識瞬間…と無限後退にならないのかしら???」 とトボケタこと言い出しました。こういう手合いは綿矢さんのように、背中を 蹴っ飛ばしてやってください。 ハリポタやロードオブリングなどの映画を見すぎるとこんなことを考えるように なります。人生は0.2秒ごとのコマ送りじゃないんだって。 0.2秒と申し上げたのは、車を運転中に危険状態を認識するという、あくまで日常 生活において最も平均的な認識可能時間を指し示す目安であります。 さらに仔細に分析すれば、視覚や聴覚などの入力タイミングも違うでしょうし また認識形成にも、大きなものー>黒いー>向かってくるー>ダンプカーだぁ! とか当然時間差はある訳です。また危うくハンドルを切って衝突事故を避けたとし てもそれを想起するたびに、突っこんでいたら確実に一巻の終わりだったなぁ、 とかの情報が付加され、後で冷や汗をかいたり、震えがきたりするのです。 数日後に同じ場所を通れば、この前はここでヤバかったなぁとか…。ありありと その時の恐怖が蘇るのであります。 従って認識形成過程は、回帰する度に生成変形を繰り返しながら続いておるので あります。 クオリアって、聞いたことあるでしょう?ソニー研究所で茂木さんが研究して おられる質感のことです。なにかの本で以前、「コンピュータは現実に対する直接 の接地経験がないので、人間の脳と違って主観的な意味把握が出来ない。」と書いて おられた。まあ当たり前と言えば、当たり前ですがぁ。 最近はやりの養老先生が書かれる人生訓まがいの新書など、どうも理科系の方々の 浅薄さが目に余るように… 現実に対する接地体験とは? これまで申し上げた、0.2秒間の全生命の歴史を通じた意味検索過程と、 かつその後の想起過程の総体が体験を形成します。全身体的、全生命体歴史的な メモリーですから、その量はほぼ無限大であります。 現実に対する接地体験とは、絶対現在への、未定義への接地をも含むものです。 生死不可分、生死一体の境地を含むものです。 それをコンピュータが再現できる訳がないのです。 だから、コンピュータ言語とコンピュータによって人間側の思考フレームを 進化させることを提案しておるのであります。 目次へ

第16回 休憩ー雑談(これまで雑談でないことって、あったか?(^^;)

余談を少し。(Aranskの趣味の世界) 普段パソコンを触っているせいか、TVゲームやパソコンゲームはあまり やりません。それでも、三国志6やAI将棋で徹夜したことはあります。 (横からRiven!アンジェリーク!と叫ぶ声、冷たく無視) ひかるの碁、月下の棋士、以来、碁や将棋に嵌ったり、哲也、で麻雀とか 大体コミックを読んで対人ゲームに嵌る同じパターンを繰り返しております。 ブリッジやポーカーにも大分凝りました。ポーカーではテキサスホールデムと オマハ8ハイローが戦略的には一番面白いと思いますが、地味なファイブカード スタッドも捨て難い味があります。強い人との差しの勝負は、碁や将棋に 劣らない読みの力と判断力、集中力を必要とします。 根は単線没頭型であります。碁の勝負で中盤の攻め合いなんかを一心不乱に読んで いる最中、碁笥と間違えて灰皿に手をつっこんでしまい、灰が付着したままの指で 黒石をハッシと盤に叩き付け…黒石が灰で真っ白とか! 詰碁と攻め合いの問題を解くのも好きです。これが良いのは満員電車でも乗る 前に図を覚えておけば、頭の中で解けることです。但しおかげで何回も電車を 乗り越しております。(笑い)ある程度碁をやると、自分が打った局面を頭の 中で並べられます。逆転された局面をふと思い出し「単に継いどきゃ、なんでも なかったのかぁ!」と思い出しては口惜しがっております。 それを実際にブツブツ喋りだしたら、ちとヤバイ! 健康のために、碁のやり過ぎには注意しましょうね。 ワタクシ、ルサンチマン?が激しいせいか、「ああ打っとけば勝ってた!」 と納得するまで局面が際限なく浮かんでくるので、あまり気分転換にはなって ないような??? つらつら考えるとゲームのルールと勘所を掴むのは人よりは早い。誰にでも 到達できるレベルになるのも早い。が、それ以降、急に醒める。 技能習熟Sカーブの初回のカーブが立つところが、一番面白い!後ゆるゆると 段階的に向上するのはいかにもタルイ、すぐ飽きちゃう。 だから何をやらしても初段クラス。 結局ゲームの何が面白いのか?を知るのが面白い。また自分でやってみないと 気がすまない。最初のSカーブが立つ、あの急激なレベル上昇感覚、これが面白い。 だから競輪、競馬、競艇とか人がやるのに賭けるのは、もう一つです。 コンピュータ言語でも同じです。言語仕様を読む。幸い英語の大量文書を読んで ブリーフィングするのには慣れているので、言語仕様を身に付けるのはあまり 苦労しない。(ブリッジでもポーカーでも英文の戦術書を読まないとどうしても 我流になります。)良く英語を日本語読み(後ろから訳す)する人がいますが あれは折角の英語を生かしていない。日本語を後ろから読んでも、意味ないのと 同じです。頭から骨ぽっいのをパリパリ食べるから栄養になるのです。 フランス語でもそう、頭からパリパリ読む。辞書は原則引かない。読みが中断 するから。人間の言いたいことにそんなに差がある訳がない。 「誤訳こそが人生だ!」 これがお奨めなのは、日本語に訳さないところです。つまり、理解できて いなくても、誰にもワカリマセン。「すみません、原文でそのまま理解して ますんで、日本語に訳すのはちょっと…」といかにもカッコ良く?釈明 出来る次第であります。 フィンランド語は動詞の変化が30格!以上あります。 西サモワ語は現在形だけです。 フィンランドの高校の期末試験は1科目が筆記8時間!プラス面接1時間です。 日本の試験は大体筆記1時間です。フィンランドは期末試験が3週間あります。 日本は3日です。 西サモワでは高校に行く人がほとんどおりません! 西サモワでは牛の個体認識がありません。そもそも名詞の単数、複数の区別が ありません。牛もミルクも同じ単語です。牛一頭もミルクです。 野原に牛が群れていても、一面のミルク〜! 国連の調査によれば、世界の教育機関ではフィンランドが最も進んだ教育を 行っているという結果があります。日本は21位です。 西サモワはリストに載っておりません! アメリカの言語学研究機関は西サモワには決して言語学者を調査には 出張させないという「不文律」があります。 何人行っても、言語学者達からの調査報告が研究機関に届いたことが、 これまで一度も無かった? しびれを切らした研究機関は調査団を現地に派遣しました。 ようやく西サモワ諸島に近づいた船から、調査団が現地の海岸で 見たものは? 砂浜で遊びまわる、一面、混血の子供達〜! 目次へ

第17回 閑話休題?

お気付きでしょうか?上記は雑談とは言え、決して言語性の追求からポイントを 外しておりません。それをうっすらとユーモアに包んで、ご提供させて 頂いております。このHP開始時のJavaWorkshopの頃から、みると格段の 文章技術の進歩であります。(退歩とも言う…) さらに、普通HPを作成している人々って、決して過去の文章を修正したりは いたしません。 何故か? 経歴詐称による公職選挙法に抵触するからです。 が、Aranskの場合は平気でアッケラカンと修正しております。 上記、JavaWorkshopコラムも、(意図的とは言え?)当初はあまりにも、ヒドイ! 日本語でありました。見るに見かねたメンバーがセッセ、セッセと本文を 全面訂正し、内容も特定Net集団に拠る部分を削除して、敢えてボカシ?ました。 それに付随してJavaProgramもクラス名、変数名、メソッド名を変更しましたが、 ここは完全に手抜き…文字列の検索・置換!で一挙にやっちゃたとのことです。 (日本語はマシですが、Javaはさっぱり?のメンバーのこと故…) 従ってプログラムの作動状態は一切保障しませんので、念のため。 と、まあ全然関係ないFuntionalProgramコラムで言い訳する、このセコさ! なんたる成長振りでありましょうや? 今、このHPを見ている、そう、貴方!、貴女!、今この瞬間にしか、このHPは 存在しません。非常に貴重なものであります。つまり、今、ここに、ありのまま、 存在するものが全てだ!「とは申しません。」コピーして保存しておけば 良いだけです。が、しかし、こんなクダランHPを誰が保存するのか?(オイオイ!) 又のお越しを「常に」お待ちしております。と言いたかった次第であります。 言語は必ず人間の思考フレームに影響を与えるはずだ。これが、関数型言語の 基本であります。実装言語より、わざわざ複雑な表記をしてまで、理論正当性を 確保する理由がないからです。ー>モナドの項、参照。 また言語的自己同一性さえも破壊するような、文法の変更をドメイン・ スペスィフィックな問題に対処するためだけに、敢えて行う必要がないからです。 ー>マクロの項、参照 Haskellは無限List[1,2,3 ..]をも、遅延評価で実現しております。 何故実用にも供しないものをプログラムの不安定動作とマシーン効率低下の 犠牲の上に築くのか? これは一重に人間的思考の抽象性を担保するためであります。 なんと、関数として1/0も定義できます。かってプログラマーが恐怖した「0」で 割るぅぅ!アボートの恐ろしさに寒気がしますよね?無限大!であります。 ナンデヤ?1/0をナンニ使うのか? ここに関数部分適用(PartialApplication)の手法があるのです。 一旦(1/0)を定義しておいて(1/)だけ、部分使用するのであります。 実際使用時は(1/3)とか(1/5)とか(1/n)とか…ワラエタ? が、ここに深遠な思想が潜んでおるのであります。 生物の認知作用は生命の生存と種の拡大意思に基づいて、環境からの 膨大な入力を分類整理しております。例えば蜂は直接紫外線を認識しますが、 人間は夏に肌が日焼けしない限りその存在はワカリマセン? かように無限大から無限小に至る、膨大な情報カオスの中で生存と繁殖に 必要な情報を優先して認識しているのが、生物の認知作用であります。 陽明学においては、「格物致知」が根本原理とされておるのはご存知ですよね? 格物とは物事を極めることであります、その過程から致知、つまり知に致るので あります。何度も申し上げますが、カントは「物自体は認識できない。」と 言っております。陽明学はその物事自体を究明する過程で知を形成する 学問であります。物事自体を究明するとは、主体の行動への参加なしには 達成できません。言行一致は、この謂いであります。 この無限大、無限小のなかに抽象化され圧縮された情報を限りなく掬い上げる こと、これが学問の本質でなくて、他に何がありましょうや? 歴史のなかに沈んでいった無数の声無き声を聴き、それを救いとり、実現させる こと以外に他に何がありましょうや? デリダは何故行動したのか? サルトルは何故行動したのか? 叡智無き学者は学問の府から去れ! 行動無き学者は学問の府から去れ! これは必ずしも竹中先生を「目標にせよ!」と謂っておる 訳ではありませんので、くれぐれも誤解無きよう。(^^;
「関数部分適用がなんぜ、深遠なんかのぉ、さっぱぁ、ワカランぞなもし。」 とか言い出す天然メンバーがAranskにも若干一名おります。くどくは なりますが、ここで敢えて補足を致します。(お分かりの方はどうぞすっ飛ばして 下さい。自分でも良くワカランかったりしてね) 我々はつい意識と実体と1:1の対応関係があると考え勝ちであります。 それを因果的意味論(Causal Semantic)と申します。しかし、意識は実際には 膨大な誤謬や不合理を含んでおります。以前にも申しましたが、1000億の脳細胞 (ニューロン)がそれぞれ数千の神経索(シナプス)で結合されております。 (結線間違いが無い訳が無い、笑い)一つ一つは単純であっても、その全体性が 意識を形成するのです。つまり量の増加が質的変換を来たすのであります。 逆に言えば、膨大な誤謬と不合理こそ、意識を形成しておると言えましょう。 それが、外界の膨大な情報と交流しておるのであります。 つまり、我々の意識に上らない、落ちこぼれの情報の方が、圧倒的に多いので あります。これこそ、パスカルが無限の前で戦慄した理由であります。 人間は自ら作り出したものを知ってると信じております。 自然に対しての畏敬はあっても人工物に対する畏敬はありません。 人工物ではあれ、「物自体」ではないでしょうか? We become what we behold..we shape our tools, and thereafter our tools shape us. - Marshall McLuhan 養老先生の専売特許である、「脳化された文明社会」であっても、無限に直面 する人間存在に変わりはありません。そして最も我々をshapeするツールが 言語であり、関数型言語もその一つであります。 我々は外界も内界も無限に直面しており、その関数交流形態のうち、ほんの僅か しか部分適用していないのではないでしょうか? そのほんの僅かの部分適用でさえ、他者に支えられておるのです。 幼児期の他者の模倣こそ人間の原型であり、この他者の支えと承認(過去の他者 であっても)がなければ生きて行けないのです。東浩紀先生が「他者の欲望を 自らの欲望として生きる動物!」と定義されておられるが、それは違うでしょう? 膨大な内、外の情報空間の中で、精巧な文化、制度、習慣、その他もろもろの 一般概念から逸脱せずに行動するって大変なことなんですよ。他者達、他者の 行動の模倣無しに精神的平衡が保てる訳がないのです。また自らも他者の範たる 義務があるのです。勿論、それは時代風俗を代表する他者に盲従することでは ありません。個々人が自らの経験と思索に基づいた行為は当然、他者への感謝と 奉仕がベースとなるはずです。この人間行為の原点が関数部分適用から導出 されておる様子がお分かりでしょうか? 目次へ