2013 Minori Yamashita ympbyc@gmail.com
この宇宙から一段メタな世界について考えたことをメモする。
2013/1/23
- 人間をパケットに乗せる。人間のデジタルコピー。 Pastaで実験
- メッセージに乗って宇宙旅行
- オブジェクトはオブジェクトではない
- 換気扇に高さや幅を聞いても教えてくれない。自分で測る必要がある
- バールは自分自身の使われ方を決定できない
2013/1/24
- 高階関数はクラスより強い
- 似た関数が複数あるなら高階関数を作るべき。駅を作る機械はないからフレームワークで妥協している。
- Pastaはプログラムを作る関数と言えるか?
- 世界がオートマトンならルールがわかれば短期の予想ができる。
- 多世界解釈とオートマトン
- 僕が今このタイルを踏んだということは(多世界、オートマトンによらず)少なくとも踏む未来があったということ
- 多世界でもオートマトンでも未来はすでにある
- 僕は今川に飛び込む事ができたか?
- リストの中のどの要素がが選ばれるかはプログラム実行前に決定しているが、リストの中の要素はそれを知らない
- プログラムに乱数を使ったとして、それが乱数かどうかをプログラム内で調べさせるか?
- 真性乱数があるなら多世界かも。ただし話がもう一段メタる。
- 乱数かを調べさせるコードが含まれるならそれはシミュレーションを目的としたプログラムの可能性が高い
- 世界が純粋関数のみで構成されているならオートマトン
- プログラムの中の人間がプログラムのパラダイムを探りあてることは可能か
2013/1/25
- 見える物は描画結果(view)で、データ(model)は別のところにあるかもしれない
2013/1/31
- 世界と歴史を全てシミュレーションするのと、一人の人間に触覚情報付きの3D映像を見せるのとどちらが楽か。この2つは等価と言えるか。
- ダックタイピング的には、常に同じ刺激に同じ反応を返す2つのものは同じ物として扱える。洗脳によってクローンが作れる。
2013/4/17
- 実世界でシステムはデータ(人)のアドレスを知らない
- 個人が勝手に動く
- 関数型は上からかぶさるがこれがあてはまらない
2013/4/18
-
ある値に関数を適用すると新しい値が作られるが、元の値に影響はない。
-
不倫(自分, 誰か)
は自分にも誰かにも影響を及ぼさない. -
この不倫に意味があるかは疑問.
-
git branchで安全に不倫ができるが、 mergeはできない。
-
多世界解釈
-
僕らが知覚できるのはmasterブランチだけ.
-
オブジェクト指向はその場で物を変更していくのでずっとmasterで作業しているようなもの. 不倫はできない.
-
脳はModel、もしくはModelへの参照
-
人体はView
-
参照だとしたら同じModelを持つ人が複数いてもいい
2013/5/27
- A function takes values and creates a value
- A process is a stream of functions
- Walking is a process
[move_left_feet, move_right_arm, move_right_feet, ...]
- An app is a process -- User as event stream
var user = [click_a, input_text, click_b, ...]; //process
_.reduce(user, function (app, f) { render(app); return f(app); }, app);
- Pasta is fairly close to this model
2013/6/3
- オブジェクト指向は現実の世界をモデルできない
- 物は答えない。
- OOPでは「測れ」って物に命令したら物が自分が持っている「測るメソッド」を選んで自分自身を測って返事する
- 頭おかしい
- ポリモーフィズムは「測る」という行為が持つはず。 -> CLOS
- 関数型プログラマは神の視点でプログラムを作る
- OOPは僕らの感覚に近いか? -> NO
- OOPプログラマはオブジェクト同士を配線する -> 神の視点
- 時間は小学生でも知っている。
- OOPでは過去に遡って値をかきかえてしまうから、「昨日の晩ご飯なんだった?」に答えられない
- OOPでは1度お腹に入ったら食べているプロセスが全て破棄される
- 時間も表現できないのに現実を表現しているというのはナンセンス
- 関数型では傷のついていない机を傷をつける関数に渡して傷がついた机を得る。時間を遡れば傷がついていない机がある。
- OOPでは傷をつけるメソッドを呼んだ瞬間に過去の机にまで傷が付く
- OOPでMacBook Airはケーキを切れない
- 「切る」という行為にMacBook Airとケーキを渡したら切れる -> 関数
- これを表現するためにミックスインだDCIだデザパタだとコンセプトを発明している時点で基本が壊れていることに気付かなくちゃ行けない。
- 固い地盤の上に木と釘だけで家を建てるのが関数型。ゆるゆるの地盤の上に家を建てようとして色々とんちんかんな道具を発明しているのがOOP。
- 関数型は「値」と「関数」の2つのコンセプトしか必要ない。モナドとかだって関数と値
2013/6/28
- 僕らは目(と他の感覚器官)以外は4次元
- 感覚器官はスナップショットを捉える。スナップショットはある次元-1次元
- ご飯を食べたから生きている。働いたからお金を持っている。
- OOはトランザクションもリビジョン管理もないDBを使っているようなもの
2013/6/29
- 時間を考慮しない事はどういう意味を持つか
- n次元のスナップショットはn-1次元。
- 3次元で考えると写真。3次元物体のスライス。
- 写真を使って実際の物体をモデルしようとしている事になる。
- 世界をモデルするなら時間は絶対必要
2013/7/6
- 時間の矢の一方向性と関数の一方向性、そして
P /= NP
が似ている - 時間の矢はエントロピーの増大に向かう
- 関数適用はエントロピーの縮小に向かう
- 関数は一つの値を返すが、反対から入れると(例: 論理プログラミング)複数の値が出てくるから。
- Aが未来へタイムトラベルしてなにかしても、過去にタイムトラベルしたBがなにかパラメタを変えたら別の枝が選択されるため、Aの行動は無駄になる
type Universe = [Particle]
proceed :: Universe -> Universe
を再帰させ続ける。
type Multiverse = [Universe]
- 宇宙のリストを
filter
して良い物を残す - 宇宙がシングルトンなわけがない
2013/7/11
- 遅延評価世界
- 地域毎に分割
- それぞれの地域に固有のシードを付与
- システムは時間(ステップ数)をもつ
- ある地域が知覚される度にシードから時間ステップまで各ステップの変化が比較的ゆるやかなセルオートマトンを走らせる
- もちろんキャッシュしてもいい
2013/7/15
- 時間に沿って人間を生やす
- 意識がその列を移動していく
- 意識が一つとは限らない。(未来や過去の自分が今意識を持っている可能性もある)
- もしくは
- 人間Aが意識とともに生える
- 意識は人間Aを行動させる
- 人間Aは枯れ、人間Bが生える