マルチスレッドは時代の流れ的に必須だし、それをも包括的に解決しようとすると継続とかコルーチンってものは外せないので型システム側の再考に立ち返らないといかん。
2010-07-24 01:58:40全部TMPで組めばいいのですよ! RT @PG_kura: マルチスレッドは時代の流れ的に必須だし、それをも包括的に解決しようとすると継続とかコルーチンってものは外せないので型システム側の再考に立ち返らないといかん。
2010-07-24 02:00:27一つはインターフェイスが変化する型。これは悪くないはず。それだけでも考え出すと止まらないけれども、もう一つ何か・・・・
2010-07-24 02:00:47@melponn TMP も悪くないのですが、必要以上の共通化を伴うので、コードが持つ重みが過度に凝集されがちじゃないかにゃーと思うです。
2010-07-24 02:04:28コードの再利用という観点では静的/動的多態を前提とした共通処理の記述ってのは意味があるけど、実際の開発で生産性を落としているのはそれ以外の部分。
2010-07-24 02:06:00パラダイムを足すと TMP がさらに複雑になるからそっち方向への進化は C++ とか Scala とかがやったらいいと思う。
2010-07-24 02:07:55オブ指では、処理のサブセットの一括切り替えを継承で実現した。コールバックをいちいち用意して一つずつ切り替えていく、という無駄な処理を消した。
2010-07-24 02:14:18例えば obj.property1 = value1; obj.property2 = value2; obj.property3 = value3; みたいな記述をするけど、これは意味的に順序はどうでもいい。
2010-07-24 02:20:27obj.property1 = value1; obj.property2 = obj.property1 * 2; obj.property2 = value1 * 2; だと順序依存。
2010-07-24 02:21:18順序依存してるコードとそうでないコードを同じように書いてるわけなので、後で修正するときには順序依存性を目視確認していかないといけない。ここに無駄がある。コンピュータになんとかしてもらえよ、と。
2010-07-24 02:22:58一方でスレッドをたてるときは仰々しくスレッドクラスみたいなものを用意して、先の順序依存してるのかしてないのか分からないところに thread.join() みたいなのを紛れ込ませるコードを書く。わかりにくすぎる。
2010-07-24 02:25:37@PG_kura 「横に並べて書いた式は、順序に依存しないところは自動的に並列実行、依存するところも考えて自動でなんとかします」とかあれば便利でしょうね
2010-07-24 02:29:38スタック呼び出しも今や必要性が薄い。コンパイラが頑張って末尾再起最適化したりするのはほんとありがたいが、意味的にはスタック呼び出しとあまり変わらなくて、深階層の処理が終わるまで呼び出し側スコープの型を保持しないといけない、という縛りを伴うのでこれも足かせ。
2010-07-24 02:30:45ですね。そういう機構は要ると思うですよ。RT @tana_ash: @PG_kura 「横に並べて書いた式は、順序に依存しないところは自動的に並列実行、依存するところも考えて自動でなんとかします」とかあれば便利でしょうね
2010-07-24 02:31:26@PG_kura そもそもプログラム全体で依存関係を自動的に解析して並列になるようにしたら最強なんじゃないかとw
2010-07-24 02:35:24「処理の集合を1パックにして再利用するための関数」「関数呼び出しをテンポ良く行うメソッドチェイン」「マルチスレッドによる並列実行」「一旦処理を中断するコルーチン」のいいとこどりをするような機構で包括的になんとかしたいから。(これは前 post の補足も兼ねて。)
2010-07-24 02:35:53