2012/07/05
gitと継続の類似性、というのをふと考えた。
gitは変更の依存関係を記録している。マージを考えなければ、これはブランチを葉とする木構造になる。一方、継続がある処理系ではスタックが木構造になる。ただしgitではスタックのポップに相当する操作 (git checkout HEAD^) はあまり一般的ではないが。
call/ccで継続を捕まえるのは、gitの開発ツリーで現在のHEADコミットIDを覚えておく(タグでもつけて)ことに相当する。git checkout HEAD^ で開発を巻き戻しても、コミットIDさえ覚えていればいつでもその状態に戻ってこれる。
- 現在のブランチでcall/ccを発行=現在のコミットBを記録
CALL/CC ---A----B ^SP - いくつかスタックを積む=コミットする
CALL/CC ---A----B----C----D----E ^SP - もいちどcall/ccでコミットEを記憶
CALL/CC CALL/CC ---A----B----C----D----E ^SP - 最初のcall/ccで捕まえた継続を起動する(大域脱出) は
git reset --hard Bに相当CALL/CC CALL/CC ---A----B----C----D----E ^SP
call/cc を使ったコルーチンは、二つのブランチを行ったり来たりする感じ。
- 上の状態から別の変更をいくつかコミットした。
CALL/CC CALL/CC ---A----B----C----D----E \ \ F----G----H ^SP - ここでcall/ccでもってIを記録しておいて…
CALL/CC CALL/CC ---A----B----C----D----E \ \ CALL/CC F----G----H ^SP - Eを記憶していた継続を起動 = git checkoutでブランチを乗り換え
CALL/CC CALL/CC ---A----B----C----D----E \ ^SP \ CALL/CC F----G----H - コルーチンはそれぞれの枝の最先端をどっかに記録しておいて行ったり来たりすることで、 ブランチを切り替えて仕事するのに類似。
部分継続はgit rebaseに少し似ているかもしれない。 git resetと区別するために、部分継続のshift/resetを 大文字でSHIFT/RESETと書くことにする。
- スタックが深くなってゆく途中でRESET、SHIFTを発行したとする。
RESET SHIFT ---A----B----C----D----E ^SP - SHIFT部分の実行を終えると、スタックは自動的にresetまで巻き戻される。
git reset --hard Bしたと思えばいい。RESET SHIFT ---A----B----C----D----E ^SP - ここからもひとつpopしたとする。 (
git checkout HEAD^)RESET SHIFT ---A----B----C----D----E ^SP
- 新たな変更を加えてcommitしてく。
RESET SHIFT ---A----B----C----D----E \ \ F----G ^SP - 途中でRESETしたとする。
RESET SHIFT ---A----B----C----D----E \ \ RESET F----G----H----I ^SP - この時点でさっきのSHIFTで捕まえた部分継続を起動することは、
git rebase --onto G B Eに相当する。RESET SHIFT ---A----B----C----D----E \ \ RESET F----G----C'---D'---E' ^SP
とここまで考えたんだけど、マージとか考え出すとアナロジーが破綻するので やっぱり無理がある気がして放り投げ。オチは無い。
Tags: 継続, git, Programming
2012/06/29
ピアノレッスン52回目
仕事が立て込んでて睡眠時間2時間でレッスンへ行ったが寝てないと思うように弾けてるんだか 弾けてないんだかさえわからないのう。
- Stravinsky: Tango for piano
- MM=92。テンポはこのくらいでいい感じ。でもミスが多かった。
- Janáček: 1.X.1905
- 超スローで展開部の手前までさらった。
- 複数の旋律が出てくるところ、各旋律の線を意識して。どれを出すか選ぶ。
時間切れでKapustinはなし。家ではMM=116。
Tag: Piano
2012/06/25
額に汗して
将来の経済的優位性でもって学習意欲を「釣る」のは間違ってる、という内田先生のいつもの 主張に意を唱えるものではないけれど:
額に汗して働いてちびちび稼ぐ人間より、キーボードをかちゃかちゃ叩いて数分で何億円も稼ぐ人間の方が「賢い」というルールで「世間」が動いているときに、子どもたちが「なぜ、自分たちだけは違うルールを適用されるのか」と抗議してきたときに、彼らに学習することの「本質的なたいせつさ」を説くことのできる人間はいない。
このくらいの世代の人って良く言うね、「額に汗して」。 多分この言い回し、よく考えないで反射的に出ちゃうんじゃなかろうか。 内田先生の文章の中で、上の引用部分前半だけが奇妙に浮いている。
こんな小咄を思い出す。
ある会社に、壊れた機械なら何でも直せる優秀な技術者がいた。 彼は定年まで勤め上げ、引退した。数年後、その会社から連絡があった。 何百万ドルもする大型機械のひとつが動かなくなり、現在のスタッフが どう頑張っても直せない。どうか見てくれないか、という。
老技術者はしぶしぶ古巣に出向いてゆき、一日機械を調べ回ると、 ある部品に小さくチョークで×印をつけた。「ここがいかれてるね。」 現役社員がその部品を取り替えてみると、果たせるかな、機械は 何事も無かったように動き出した。
数日後、会社に老技術者から請求書が届いた。「修理費:5万ドル」とある。 おどろいた会社はその詳細内訳を要求した。老技術者の答えは簡潔なものだった。
「チョークの印ひとつ:1ドル。どこにその印をつけるか知っていること:4万9999ドル」
キーボードをかちゃかちゃ叩いてものすごい額を稼げる理由はふたつある。
- 運
- どのタイミングでどのキーを叩けば良いか正確に知っており、それを叩く権限を有していること
宝くじを当てるのに才能は要らないように、純粋な運のみで一山当ててしまう人は確かにいるけれど、 大成功譚の多くは「運がきた時にそれを掴む準備が出来ていたこと」に由来する。
「額に汗」と「キーボードかちゃかちゃ」を比べる人は、準備に流した汗を見ていない。 ついでに言えば、大汗流して準備して、 結局運に恵まれず消えて行った大多数の人のことも考慮しない。
子どもたちが「なぜ、自分たちだけは違うルールを適用されるのか」と聞いてきたら、 大人はちゃんとこういう仕組みを教えてあげられないとならない:
The myth of overnight success - Chris Dixon
Angry Birds was Rovio’s 52nd game. They spent eight years and almost went bankrupt before finally creating their massive hit.
「ビジネスマンの論理を教育に持ち込むと、子供は学習を費用対効果で測るようになる」という 内田先生の議論は正しいけれど、その「ビジネスの論理」は狭すぎるように思う。 所与のルールの中で他人より優位に立つこと、がゴールであれば確かにその通りだけれど、 ビジネスの世界だってもっと重要なのは「ルールを変えること」の方だ。
私はむしろ、子供のうちに「システムの裏をかく」ことを奨励した方が 良いんじゃないかとさえ思う。サンドボックスを作って、 その中で「キーボードカチャカチャで大儲け」してみろ、とけしかけるのだ (株のシミュレーションをやれ、というわけじゃなくて、校則の抜け穴を探すとか、 成績評価の抜け穴を探すとか)。 そうすると、表面的な成功/失敗は特定のルールに依存したものであることがわかり、 ルールを相対化して考えられる。なぜそのルールが出来たのかの根本に戻って、 より良い(よりおもしろいとか、より多くの人がハッピーになれる)ルールを考える、 という一段メタなゲームに挑戦できるようになる。 (それをやってみて初めて、今残っているルールがいかにうまく考えられているかがわかったりするし。)
関連するかもしれないエントリ:
Tag: 教育
2012/06/24
らむ太の疑問
東京にしばらく滞在して、らむ太は疑問を持ったようだ。
「どうしてにほんではこどもがひとりであるいてるの?」
確かに。日本はそういうものだと思い込んでいたので意識しなかったなあ。
Tag: 生活
2012/06/21
ピアノレッスン51回目
4週間ぶり。日本滞在中は歩いてすぐのところに アップライトだけど生ピアノが置いてある貸しスタジオがあり、 ちょくちょく借りて練習してたおかげで、 帰ってきてからリハビリに苦労するってことはなかった。 (Studio Penta立川。個人練習1時間800円。 立川周辺では他にも宮地楽器とヤマハでも借りられるのだが どちらも30分で千数百円。グランドが使えるとはいえ懐が痛い。 基礎練習からやると30分じゃ足りないし)
- Stravinsky: Tango for piano
- M=80で。一応覚えたけどまだあやふやなところあり。M=88か92くらいが目標かなあ。
- Trio部分、柔らかくしすぎてぼやけてしまうので、柔らかくてもアクセントとメロディには 気をつける。他の部分も、たくさん音が鳴るので常に旋律を意識して。リズムは良い。
- Kapustin: Op40-8
- M=108。目標にはまだ遠い。
- アーティキュレーション、アクセントはgood。
そろそろ次の曲どうする、という話。日本でたまたま全音の Janáčekの楽譜を買ってきたので、こんなん買ったんですけどって見せたら、 じゃあソナタ (『1. X. 1905』) やりましょうということになった。 こういう系統の表現は今まであまり弾いたことがないのでおもしろい挑戦になりそう。
Tag: Piano

Comments (0)