安斎利洋の日記全体に公開

2006年10月17日
17:51
 テクスチュアネットワーク
コンピュータ言語には疑問文がない、という話を、WAKUさんがS.ピンカーから引いている。これは面白いテーマだと思う。
http://mixi.jp/view_diary.pl?id=245632914&owner_id=4610589

疑問文がないのは、コンピュータ言語が設計時と実行時を分離しているためではないか、と僕は考える。設計時にcodeが書かれ、実行時にcodeがdataを操作する。prologなどは、疑問文が実行時にすべて先送りされている、と考えることができる。

一方自然言語は、実行時と設計時が同じだ。コンピュータ言語は一般的に、codeと操作対象のdataを分離して考えるが、自然言語は、codeが接続するcodeを操作し、誘発する連鎖だ。たとえば、自然言語の中で疑問文は必ずしもdataを要請しない。以下の例にある3つの疑問文は、答(data)ではなく次の文(code)の生成を要請している。

A「どうして昨日来なかったの?」
B「僕には僕の事情があるんだ。いけない?」
A「でも、他人の事情は考えなかったの?」

先日ikegさんと話をして考えたのは、カンブリアンをテクスチュアネットワークとして作動させるにはどうしたらいいのか、ということ。たとえばキャンバスに絵の具で絵を描くプロセスにおいて、絵の具の粒子の計算過程を考えたとき、絵を描くことはdataの分布をレイアウトする行為でもあり、同時に絵の具というcodeをプログラムすることでもある。テクスチュアは、作動しながらテクスチュアを作る。絵を描くのは、codeがcodeを操作すること。これは和紙に墨と水の分布を作っていく水墨画を描くときなどに、強く意識する。

カンブリアンゲームが、実際にやってみないと本質をあらわさないのは、カンブリアンゲームの中に作動にかかわる文型がなく、作動を追体験する痕跡が残らないためではないか。

つまり、カンブリアンゲームの中に疑問文リーフを導入したら何が起こるだろう、ということだ。疑問文は接続する集合の内容を、強く制約する。疑問文は、局所的な規則を記述することになる。

ひいては、カンブリアンゲームを、作動している最中に設計が進行するようなプログラミング環境として考えることが可能になるのではないか。
 

コメント    

2006年10月17日
18:21
びすけっと
カンブリアンゲームのいろんなバリエーションを
別のカンブリアンゲームで記述する.
2006年10月17日
18:56
安斎利洋
カンブリアンゲームのアイデアを公募するカンブリアンゲーム、っていうのをやろうと思ったことがあるけれど、カンブリアンゲームのルールを記述するカンブリアンゲームとは、という問題の立て方をすればいいんですね。
2006年10月17日
19:49
なさ 飛鳥井
僕も「コンピュータ言語には疑問文がない」の反例でPrologが思い浮かびました。

それより面白いと思ったのは言語のアドレス性に関してです。
アドレス性とは言語を誰に対して投げかけるかということです。
プログラミング言語は誰に対して投げかけられているのか?
それは実行するコンピュータに対してですね。
しかも、ほとんどが命令文として投げかけられている。
人間対人間の関係だったら、一方が他方に完全に隷属していますね。

さらに言語、特に話し言葉の発話行為には、必ずアドレス性が存在していると思われがちです。
独り言も自分というアドレス性が存在します。
しかし、発話行為だけでアドレス性が存在しないものに、ちょっと正確な場所は忘れましたが、アフリカの中西部の投擲的会話というのがあります。
これは道端でおじさんとかが、誰に投げかけるということもなしに、話しているというものです。
プログラミング言語だとアドレス性が存在しないと処理できませんね。(笑)
2006年10月17日
20:05
Fibonacci
プログラム全体が疑問文という感覚ですが・・・
実行して疑問に答えてもらう。うまく実行させて,回答がうまく出るようにプログラムを組む。ということでしょうが・・・
検索エンジンなんかはリターン・キーが疑問符ですね。
2006年10月17日
21:27
安斎利洋
「もし7時になったら録画プロセスを開始せよ」
という一義的な命令でなく
「いま何時?7時から録画したい番組があるんだけどさ」
というような願望まで機械が対応するような、弱い非同期の並列システムを作ろうとすると、たぶん疑問文の活躍する場になると思うんですが、それはアドレス性の問題でもありますね。

つまり、polymorphism(多態性)は、受け手のアドレスは決まっているわけだから、アドレスの多態性、とでも言うべきことを考えないといけない。

そうか、アドレス性というのは、送り手が受けてを差すことだけれど、受け手が「これ自分向け?」ということを、connotaion(共示性)も含めて常にウォッチしているようなイメージなら、命令でなく、疑問文でも作動するか。
2006年10月17日
22:50
なさ 飛鳥井
「いま何時?7時から録画したい番組があるんだけどさ」って依頼の意味に取るのは日本のコンピュータだけかも。(笑)

この日記のコメントもそうだけど、複数人でのチャットはアドレス性が曖昧ですね。
別の受け手が、自分に向けられていると間違えて、答えるかもしれない。
2006年10月17日
22:57
安斎利洋
>プログラム全体が疑問文

人間は、自分がまだよくわかっていない知識を扱うことができるから、コンピュータのプログラムに対して疑問文を投げることができる。

でも、コンピュータのプログラムの中で、プログラム自身がわかっていない知識を扱うのが難しいから、コンピュータ言語の中に疑問文を埋め込むのが難しい、ということかもしれない。
2006年10月17日
23:10
安斎利洋
アドレス性があいまいになる、というのはたんに発話者という単位だけじゃなく、どの抽象レベル、どの名前空間、というようなことも含むんじゃないでしょうか。

あいまいというより、どう読まれるかわからない、しかしどう読まれても整合性がある、というような共示的なメッセージを作る技術が必要になる。そして、そこから自分に役立つメッセージを抽出する技術も必要。

これは文脈自由文法にならないから、コンピュータ言語には非常に難しい。
2006年10月17日
23:53
WAKU
>アドレスの多態性
コマンドリストを複数のプロセスから見るって方法もありますね。普通はコマンドリストに入っているのは命令だけだけど、これに疑問/質問が混ざる。
現状、知ってる限りでは文中のパラメータの数や種類が制限されるので、そこがネックですが。
2006年10月18日
00:14
Rat by Y.K*
非常に興味深いエントリーですね。後ほど僕も議論に参加させて頂きます。
2006年10月18日
00:23
ikeg
ちょっとこのコンテキストからはずれますが、叙述的なシンボルを無理矢理、命令文/疑問文的にカンブリアンは読ませるからコネクトしていくツリーだと思いました。同時に2つの異なる木を成長させる。2つの木の間には、直接のカップリングはない。しかし同じ人たちがつくっているから、それぞれの意識の中でつながっている。というのはどうですか?
2006年10月18日
00:36
びすけっと
送り手と受け手が対等なシステムとして,タプルスペースを
使った通信をするLindaというのがあります.
Linda自身は普通の言語ですが,ここをPrologのような言語
にして,論理変数を含んだタプルを許す.さらにCCSという
プロセス代数の式もタプルで記述できるようにする.
再帰構造の疑問文みたいなのが表現できます.
別のエージェントが自分の式をタプルスペースに投げる
とマッチングして,エージェント同士が論理変数を経由
した通信をする.一つだと部分的にしかマッチしなくても,
複数のエージェントを組にしてマッチすることもある.
これで,並行論理,オブジェクト指向,マルチエージェント
の性質をもつ,単純だけど強力な言語ができます.
そんなのを僕が10年くらい前に考えてましたが,難しすぎて
動きませんでした.
メタが入っていないから,今考え直したら,もっと単純で
強力なシステムができると思う.
2006年10月18日
01:32
安斎利洋
>同時に2つの異なる木を成長させる。

それは、すばらしい。同じような要素が同じようにつながっても、Aの木とBの木では、まるでSFの多重世界のようにまったく違う世界になっていき、そのふたつを行き来できる。リーフが多義的に分かれる、というのと意味が違いますね。

いま思いついたのは、かたや自由気ままに同類のものをつけちゃうような気楽な木があり、かたや星座作用のような抽象度の高い木があり、それが内容を共有していたら、面白いな。
2006年10月18日
01:37
うさだ♪うさこ
疑問文と言うのは、自分が期待しているいくつかの答えを相手に答えさせるための命令文ということになりますでしょうか。
その命令を実行する人が、なにか悪意とか、無邪気とか、いろんな動機によってちゃんと答えてあげないとか、あるいは、聞いたつもりが相手がどっかに行って永遠に帰ってこなかったという結果になったときが楽しそう。
2006年10月18日
01:55
にしの
prologのは疑問文じゃない。と思ってたんですが、良い説明ができないので黙ってました。
ら、次の説明でピンときました。

> 疑問文と言うのは、自分が期待しているいくつかの答えを相手に答えさせるための命令文

これがprologですね。で、これは疑問文のすべてでは無いと思います。

半クエスチョンではないけれど、かならずしも答えを求めないこともあるのが疑問文が疑問文たるゆえんでは無いかと思うのです。
そんなものが計算機に必要かというと当初の問題に戻るのですけど。
2006年10月18日
02:00
安斎利洋
tuple空間が並列論理型になるというのは、まさしくプログラム言語に疑問文が入るイメージですね。実際、なにができてどう動くのか、イメージしきってないんですが、あちこちでゴールが矛盾したりしないのかな。
2006年10月18日
02:14
安斎利洋
> 疑問文と言うのは、自分が期待しているいくつかの答えを相手に答えさせるための命令文

たしかにprologそのものですね。ちょっとずれるけれど、相談とは、自分の望みを相談相手に言わせることだ、とかなんとかサルトルが言ってました。

にしのさんが言うように、疑問文は論理的なゴールを期待しているわけではないですね。答を求めてはいないけれど、しかし(無言も含めて)次のステップを誘発しようとしていることは確かなんじゃないかな。
2006年10月18日
02:33
ちゃ〜り〜田中
>疑問文がないのは、コンピュータ言語が設計時と実行時を分離しているためではないか、と僕は考える。

設計をしながらプログラミングをしているので、
「コンピュータ言語が疑問に思う」という現実的な状況は、無限ループ(バグ状態?)になって答えが出ない状態。
「これだよ」ってプログラマが答えてあげる(デバッグ)という、プログラミング行為そのものが、コンピュータの疑問に答えているから、コンピュータ言語に答えしか残らない。でも、コメントとかToDoとか、ライブラリとかフレームワークとかは、プログラマにとっては疑問文(答えが出ていない状態)に見える。
2006年10月18日
03:21
安斎利洋
>ライブラリとかフレームワークとかは、プログラマにとっては疑問文

そのイメージですね。穴を埋めれば完成する状態で、放つ形ですね。

「今何時ですか?」という疑問文には、「今何時です」という変数の入った断定文が隠れていて、その変数を埋めようとして、なにものかが行動を起こすわけです。

たとえば指示代名詞の入った写真、っていうのはどうだろう。「みんなの視線を浴びて、<あれ>は怖がっていた」という写真は、人だかりの真ん中が白く抜けていて、そこに何か埋め込んでほしがっている。

そういう、ライブラリやフレームワークのような、漢字の「さかなへん」や「もんがまえ」のような形式の要素が、繋がっていくような、そういうカンブリアンゲームがしたい、というのがひとつのイメージです。

それからもうひとつの野望は、カンブリアンゲームをグラフ構造のプログラム言語に育てて、みんながステートメントを投稿していくと、全体の動作が変わるようなライブ・プログラミングがしたい。設計時と実行時が、同時進行するわけです。それが、二つ目のイメージ。

そのふたつは、実はいっしょだった、というのが三つ目のイメージ。
2006年10月18日
10:08
びすけっと
にしのさんの問いは,

広義の疑問文は,質問文と狭義の疑問文に分かれる,

ということ?

コンピュータには質問文はあるけれど,狭義の疑問文は
ないかも.
2006年10月18日
12:14
にしの
> コンピュータには質問文はあるけれど,狭義の疑問文は
ないかも.

はい、クエリーとクエスチョンの違いかと。

SQLが、ずばり名前は「構造化疑問文」でした。
でもみんなこれを言い出さないのは、これが自然な意味の疑問文とかけ離れていることを直感的に感じてるからだと思うのです。
2006年10月18日
16:18
安斎利洋
SQLがプログラム言語かどうかという議論もあるかと思いますが、いまある言語はどうでも良くて、疑問文を組み込んだ新しいプログラム言語のパラダイムはできないでしょうか。多態性が、プログラム言語を少しだけ自然言語に近づけたみたいに。
2006年10月18日
17:31
にしの
>絵を描くのは、codeがcodeを操作すること。これは和紙に墨と水の分布を作っていく水墨画を描くときなどに、強く意識する。

手談と呼ばれる囲碁の対局なんかも、まっとうにこのイメージです。
「この手でどうだ?」
「そうきたか?じゃあこうだ」
囲碁プレイヤプログラム同士の対話は疑問文の投げつけあいのように思います。そして一つの作品としての棋譜が生成されます。
そういうプログラム言語のパラダイムはどうでしょう。

疑問文の答えは探索するものでなくて、生成・創生するものだ、という感じ?
2006年10月19日
00:48
WAKU
空きを疑問と見なすなら、変数がある言語は疑問だらけってことですね。読みにくいわけだよな。変数を極力使わないプログラミングがわかりやすいのも自明かも。むしろ空きを使わない疑問文は問題を明確にできるのでは?とか、考えてみたり。

それと、ふと思ったのは英語だと疑問文を倒置で表現するけど、カンブリアンで矢印を逆にするとどうなるのか?たぶん普通にやったら疑問文にはならないけど、映像の逆再生みたいな面白さは出るのか?とか。出るならこれはこれ良いかも。

あと、あまり良い例ではないかもしれないけど
既存のカンブリアンからピクチャだけを取り出して、末端のリーフのいくつかだけを指示して、そこからさかのぼる形でツリーを作らせたらどうなるでしょう?(たぶん個人差が激しいと思うけど、それがまた面白いかも)
2006年10月19日
01:11
安斎利洋
にしのさんは、コア戦争が流行ったとき、はまってたりするんじゃないですか?

ああいう大流行を作りたいですね、なにか。
手談は、プログラミングだとなんだろう。算談、かな。
2006年10月19日
01:17
安斎利洋
変数が疑問というより、充足していないアブストラクトが、疑問文なんじゃないでしょうか。だから、抽象クラスを書いているときって、心理的には疑問文なのかもしれない。
2006年10月19日
01:58
WAKU
何を疑問に思うかはその人の立ち位置によるかも。よほどの素人じゃない限り、自分の作った変数を疑問だとは思わないだろうし、抽象クラスやテンプレートの類だって抽象化された構造に意味があるわけで、意味自体はわかって書いているはずですから。(実体が無いのは疑問の萌芽に過ぎないのかも)

まあ、抽象度が増すと「これ、動くよね?」的な疑問は増えますね。...これを実装したのがテスティングフレームワーク?
2006年10月19日
02:41
WAKU
あぁ、コンテクストが違いますね。失礼。

>、充足していないアブストラクトが、疑問文なんじゃないでしょうか。

疑問文にできる可能性があるのはそうですね。
2006年10月19日
20:35
にしの
コア戦争、めっちゃやりたかったです。が、当時はそれができる環境がそばにありませんでした。貧乏な中学生でして。

コア戦争で思い出しましたのは、ティエラなんかが競合の中で想像もしなかった形態を取って進化することです。
疑問文の答えとはあんな感じで、
予定されている少数あるいは有限のなかからの適合選択ではなくて、
無限もしくは想像できる限界を超えたものを目指しているところかなと思います。

Prologは予定少数からの選択でしかなくて、
囲碁の手談や、カンブリアンの行き先は無限のほうかなと。
疑問文のCODEによる答えのCODEを生成するというのは、
無限の空間に対する羅針盤を伝達することで、
どこに行き着くかは行ってみないと分からない。

時に難破するあたりが、コミュニケーションっぽいです。
2006年10月19日
22:21
なさ 飛鳥井
開かれた質問(open question)と閉じた質問(closed question)という視点もありそうです。
開かれた質問は5W1H系の変数のある疑問文で、閉じた質問はYES/NOで答える変数のない疑問文です。

人間のコミュニケーションでは、初対面や会話の導入部では答えやすい閉じた質問が、関係が深まったり会話が進行したりすると開かれた質問が使われやすいようです。
ただし、相手にとってネガティブな内容に閉じた質問をすると、相手は責められているように感じます。

カンブリアンに応用すると、新しいノードを付加してリンクに「?」を付けるのが閉じた質問、リンクだけ付けてノードをブランクにするのが開かれた質問でしょうか。
2006年10月21日
02:26
安斎利洋
議論の行き先が少し見えてきました。「想像できる限界を超えたもの」を作る、開かれたプログラムモジュールを作る方法を考えたいわけです。

プログラムの中でヴァーチャルメソッドを使うときは、そのメソッドがどういう実装をもつかということをおよそ想像しながら書いているけれど、他人もしくは将来の自分が、想像を超えたメソッドでオーバーライドすることも考えに入れます。それでもちゃんと動くようなプログラムと、ヴァーチャルメソッドのインターフェースや規約を考えます。

ヴァーチャルメソッドを使ったプログラムが整合性をもっていれば、メソッドの制約を守っている限り安心してそれをオーバーライドできる。また、メソッドの規約を正しく守っている実装をそこに嵌め込めば、そのプログラムは正しく動くことが保証される。

ここにprologのようなlindaのような並列の制約解消系を考えると、ある空間に向かってヴァーチャルメソッドの入った「開かれた疑問文」を投げかけると、実体のあるメソッドが検索されて、そこに埋め込まれていくような処理系にならないでしょうか。

そういうのって、新規性がありますか? それとも、すでに当たり前?
2006年10月21日
09:43
びすけっと
新規性はあまり重要じゃありません.
組み合わせを変えればいくらでも新しいものができるので.

なぜ「想像できる限界を超えたものを作るシステム」が
必要か.
それが出来ると何がうれしいか.
この設計がちゃんと目的のシステムになっているか.
他の設計法は考えられないか.
などなど

カンブリアンのことを知らない人にもわかるように説明する.
カンブリアンの本質とは何か.
カンブリアンじゃないシステムにも使えるかもしれない.
2006年10月21日
12:57
安斎利洋
>なぜ「想像できる限界を超えたものを作るシステム」が必要か.

これを工学系の人に説明するのは、難しいときがありますね。特に企業の研究所は。たぶん、びすけっとさんが苦労しているのも、「人間の望んでいるものを実現する」というのが工学のドグマだと思っている人が周りに多いからなんじゃないでしょうか。

もともと工学は、どこにもないものをコンストラクティブに作る学問なんだと思うんだけれど、無根拠にものが作れない仕組みになっている。「想像できる限界を超えたものを作るシステム」の有効性について、根拠を明示できればいいわけですね。
2006年10月22日
00:12
にしの
>カンブリアンの本質とは何か.
ふとした疑問文からこちらに一歩近付けました。

認定式には只飯いただきに伺います。

 安斎利洋mixi日記 一覧へ