プログラマが今よりも楽をしてお金を稼ぐには

@PG_kura先生がプログラマがより楽になるにはどうするべきなのかを説いていらっしゃったのでまとめてみました。
26
くっくっkura 🇯🇵🦀 @PG_kura

例外は今ある言語のパラダイムをを 6 割くらい切り崩さないと解決しないと思ってる。

2010-07-24 01:55:29
くっくっkura 🇯🇵🦀 @PG_kura

次の言語では例外耐性の著しい向上が必須だろうけども、それだけの言語なら普及なんかしないだろうね。

2010-07-24 01:56:43
くっくっkura 🇯🇵🦀 @PG_kura

マルチスレッドは時代の流れ的に必須だし、それをも包括的に解決しようとすると継続とかコルーチンってものは外せないので型システム側の再考に立ち返らないといかん。

2010-07-24 01:58:40
めるぽん.am @melponn

全部TMPで組めばいいのですよ! RT @PG_kura: マルチスレッドは時代の流れ的に必須だし、それをも包括的に解決しようとすると継続とかコルーチンってものは外せないので型システム側の再考に立ち返らないといかん。

2010-07-24 02:00:27
くっくっkura 🇯🇵🦀 @PG_kura

つはインターフェイスが変化する型。これは悪くないはず。それだけでも考え出すと止まらないけれども、もう一つ何か・・・・

2010-07-24 02:00:47
くっくっkura 🇯🇵🦀 @PG_kura

@melponn TMP も悪くないのですが、必要以上の共通化を伴うので、コードが持つ重みが過度に凝集されがちじゃないかにゃーと思うです。

2010-07-24 02:04:28
くっくっkura 🇯🇵🦀 @PG_kura

コードの再利用という観点では静的/動的多態を前提とした共通処理の記述ってのは意味があるけど、実際の開発で生産性を落としているのはそれ以外の部分。

2010-07-24 02:06:00
くっくっkura 🇯🇵🦀 @PG_kura

まぁ、だからといってパラダイムを足せばいいかというとそうでもない。

2010-07-24 02:06:48
くっくっkura 🇯🇵🦀 @PG_kura

パラダイムを足すと TMP がさらに複雑になるからそっち方向への進化は C++ とか Scala とかがやったらいいと思う。

2010-07-24 02:07:55
くっくっkura 🇯🇵🦀 @PG_kura

概念を消して、言語が持つ機能に余白を設けないと収束しないんじゃないかな。

2010-07-24 02:10:19
くっくっkura 🇯🇵🦀 @PG_kura

例えば null を消した Option とか、型名を消した Generics とかの功績は大きい。

2010-07-24 02:11:41
くっくっkura 🇯🇵🦀 @PG_kura

オブ指では、処理のサブセットの一括切り替えを継承で実現した。コールバックをいちいち用意して一つずつ切り替えていく、という無駄な処理を消した。

2010-07-24 02:14:18
くっくっkura 🇯🇵🦀 @PG_kura

関数型言語は副作用を消す、ということを明確に打ち出した。

2010-07-24 02:14:49
くっくっkura 🇯🇵🦀 @PG_kura

あとオブ指は実装隠蔽ってのもがっつりやったんだよなー。副作用を消す、というベクトルと相性が悪いわけだけども。

2010-07-24 02:16:24
くっくっkura 🇯🇵🦀 @PG_kura

まだ下手くそなのは処理順序を操る機構と、時間軸に応じた処理フローの掛け合わせ・・・というかなんというか。

2010-07-24 02:19:07
くっくっkura 🇯🇵🦀 @PG_kura

例えば obj.property1 = value1; obj.property2 = value2; obj.property3 = value3; みたいな記述をするけど、これは意味的に順序はどうでもいい。

2010-07-24 02:20:27
くっくっkura 🇯🇵🦀 @PG_kura

obj.property1 = value1; obj.property2 = obj.property1 * 2; obj.property2 = value1 * 2; だと順序依存。

2010-07-24 02:21:18
くっくっkura 🇯🇵🦀 @PG_kura

順序依存してるコードとそうでないコードを同じように書いてるわけなので、後で修正するときには順序依存性を目視確認していかないといけない。ここに無駄がある。コンピュータになんとかしてもらえよ、と。

2010-07-24 02:22:58
くっくっkura 🇯🇵🦀 @PG_kura

一方でスレッドをたてるときは仰々しくスレッドクラスみたいなものを用意して、先の順序依存してるのかしてないのか分からないところに thread.join() みたいなのを紛れ込ませるコードを書く。わかりにくすぎる。

2010-07-24 02:25:37
tana@人間らしく生きたい @tana_ash

@PG_kura 「横に並べて書いた式は、順序に依存しないところは自動的に並列実行、依存するところも考えて自動でなんとかします」とかあれば便利でしょうね

2010-07-24 02:29:38
くっくっkura 🇯🇵🦀 @PG_kura

スタック呼び出しも今や必要性が薄い。コンパイラが頑張って末尾再起最適化したりするのはほんとありがたいが、意味的にはスタック呼び出しとあまり変わらなくて、深階層の処理が終わるまで呼び出し側スコープの型を保持しないといけない、という縛りを伴うのでこれも足かせ。

2010-07-24 02:30:45
くっくっkura 🇯🇵🦀 @PG_kura

ですね。そういう機構は要ると思うですよ。RT @tana_ash: @PG_kura 「横に並べて書いた式は、順序に依存しないところは自動的に並列実行、依存するところも考えて自動でなんとかします」とかあれば便利でしょうね

2010-07-24 02:31:26
くっくっkura 🇯🇵🦀 @PG_kura

横に並べて書くと順序依存しない、という発想は良いと思う。でもそれだけだときっと物足りないはず。

2010-07-24 02:33:21
tana@人間らしく生きたい @tana_ash

@PG_kura そもそもプログラム全体で依存関係を自動的に解析して並列になるようにしたら最強なんじゃないかとw

2010-07-24 02:35:24
くっくっkura 🇯🇵🦀 @PG_kura

処理の集合を1パックにして再利用するための関数」「関数呼び出しをテンポ良く行うメソッドチェイン」「マルチスレッドによる並列実行」「一旦処理を中断するコルーチン」のいいとこどりをするような機構で包括的になんとかしたいから。(これは前 post の補足も兼ねて。)

2010-07-24 02:35:53