simple-rubyにおけるtwo-levelという語の意味

皆さん、

ミーティングでも言いましたが、simple rubyでtwo-levelという語
を私が選んだのは、XeroxのInterscriptからです。

http://www.bitsavers.org/pdf/xerox/interscript/XSIS000000_Interscript.pdf


Multi-level pours

Frequently, one pour operation will cascade into another.  ...

This cannot be treated purely as one complete pour followed by
another, since the two pours influence one another....

....

Given that the first pour results in a number of best/good results, we
cannot, at that time, decide on one and continue.  Rather we must,
logically, use all the initial pours as input to the second pour, and
only choose after all pours have been completed.

情報の切り分けが大事

重要なのは、上位のpour operationと下位のpour operation
に情報を切り分けることです。上位のもつほとんどの情報は、下位
には見せません。逆に、下位のもつほとんどの情報は、上位には
見せません。

simple rubyの文脈でいうと、親文字とルビの相対的な配置は、
上位には見えません。まとまった箱として見えるだけです。
逆に、ルビを処理しているpour operationには、前後にどんな
文字があるかは見えません。これが敏先生のsimple ruby提案の
本質だと思います。

実行の順番はどうでもいい

上位のpour operationと下位のpour operationが、実行のとき
どう呼び出すかというのは、いろんな実装形態があり得ます。
下位をサブルーチンにすることが多いですが、概念的には
コルーチン(coroutine)というか別プロセスにするほうが
すっきりします。

各pour operationが、文書を先頭から一回見るだけで
終わるのか、それとも何度も見直すのかは、どうでもいいです。
また、各pour operationがバックトラックしても(つまり、
いったん作った箱を消して作りなおしても)構いません。その意味で、
passという言葉は使いたくない。

stepという言葉が嫌なのは、コルーチンというか別プロセス
でもいいからです。順番に実行が終わることを示唆する
言葉はよくないと思います。

phaseも、下位のpour operationが終了してから、
上位のpour operationが終わることを示唆している
ような気がするので好ましくないと思います。極端な
ことを言えば、上位のpour operationの結果を残し、
下位のpour operationの結果は捨ててしまい、表示・印刷
のときやり直すこともあり得ます(というか、文字組版
はそうするのが普通ですよね)。しかし、phaseへの
反対を強くは主張しません。

layerは、実行順番を意味しないので、level
以外なら、私にはいちばんしっくり来ます。

-- 
 --
慶應義塾大学政策・メディア研究科特任教授
村田 真

Received on Tuesday, 30 November 2021 02:51:06 UTC