静的型付け言語の潜在開発生産性は今の100倍 ×5
■ このスレッドは過去ログ倉庫に格納されています
int a = 1; a = "a"; ← エラーになる。 型がない言語ではできない芸当です。(爆笑) 人間がやっていたことを、コンピュータにやらせる。 これが生産性を上げる最大の方法。 コンピュータは間違わない、同じ事を何度も高速に行える。 その為に、コンピュータがコードの意味を正確に 認識できる方法が必要。実行しないとわからないことは コンピュータは認識できない。 すなわち静的型付け言語であれば、実行しなくてもわかるので コンピュータが理解できる。そうすれば様々な コンピュータの高度な情報支援が得られる。 コンピュータのバックアップを受け、人間の生産性は 限りなく向上する。 前スレ 静的型付け言語の潜在開発生産性は今の100倍 ×4 http://toro.2ch.net/test/read.cgi/tech/1383572174/ >>30 キチガイに対してじゃね? > だけど、ここまでヒント上げて気づかない奴に > 俺は興味ないかな。じゃあね。 俺もキチガイに興味はないなw >>24 じゃあ正しく設計したNumOrStringを書いてみろよ。 >>25 そういう時は素直にテンプレート使おうよ。 union NumOrString { std::string str; int n; }; その「正しい定義」って動的型では実装不可能なんだよな。 >>29 それわかるわ〜。 結局なんでも入れられるってめんどくさくなるだけなんだよねえ。 頑張って損した気分になる。 >>30 知らない。前スレの静的厨が言った言葉だ。 逃げ口上としてもっともらしいことを言おうとしただけで深い意味はないだろ。 彼女いない歴=年齢のやつが「俺女に興味ないから」と言ってるようなもの。 完全に防衛機制における合理化。Dの烙印を押された奴の断末魔。 >>34 >>24 に聞けよw>>24 は正しい設計だと思うって言ってんだから その「正しい」の定義にしたがって実装していただければ幸いでございます。 >>35 そりゃ単に同じメモリ領域にぶちこんでるだけじゃないか "1"が1と同値になるような実装でないと認めません >>13 type NumOrStr= |Str of string |Num of int let s=Str "hoge" let n=Num 100 n|>function |Num v->数値処理 |Str v->文字処理 F#だとこんな感じか。 めんどいのでintに限定したけど他の数値型が入るようにも出来る。 上のnとかsを使うところで場合わけで処理分岐可能。上の例は直後で分岐してるので間抜けだけど。 静的厨は童貞。 静的を性的と脳内変換して悦楽に浸っている現実逃避の変態。 つまり、NumOrStringとは童貞が創りだした最高の女。 ゆえにそれを見せろと言ったら即座に逃亡をはかる。静的厨は卑劣極まりない。 何でも入れられるといいなと思う時の代表が構文解析とかだろね。 スタックに積む値に意味動作から返される値を含めて積めると便利だから。 次にスタックから取り出されて還元されるときは、それが何であるか 意味動作自体が知っているから値自体に状態が必要ないし。 僕は共用体を良く使うよ。 読み込むBNFに還元されるときの型を書いておくんだ。 頭いいでしょ? まあ普通にこうするか。 別に頭良くないね。 >>37 頑張って損というのは、企業への忠誠と努力が無駄だったときくらいだな。 >>46 943+1 :デフォルトの名無しさん [↓] :2013/11/24(日) 14:38:53.62 >>942 Javaで書くならこんな感じかねぇ。 NumOrString a; a.setValue(1); a.setValue("a"); setValueの実装はオーバーロードで。 >>37 頑張って損したとは思わない。 社長が女たらしで売上げの半分を社長が独占している会社で努力することだろ。 >>45 ジジイの介護みたいな会社で努力するなら、 ホンモノの高齢者の介護をした方がマダましなんじゃないかって 爺どもはあと10年でいなくなる、そしたら俺の天下だと思って頑張ってるけど、 そうでもないの? 動的型使ってる奴がみんな同レベルと思わないでくれ NumOrStringなんて考えた奴が低能なだけ >>52 重役の息子や孫がヘッドハンティングとか言ってコネで入ってきてスピード昇進なんてよくあること。 コネで入ってきたやつに負ける程度の実力なら、下についたほうがお得な気がするけど、 そうでもないの? 静的動的の違いより、DFAとNFAの差のほうが気になる。 DFAは実際ほとんど使われていないけど、今後はDFAじゃないとダメなんじゃないのかな? いまDFAが使われる場所ってコンパイラとかデスクトップで完結してるような NFAでもいいようなとこだと思うんだ。 NFAってネットワーク越しにやってくる指令の解析にさえ使われていてこれ凄く危険。 そう思わない? >>55 日本社会において実力っていう物の5割はコネのことだからな。 Javaが画期的だったのはDFAであることが保障されてたことじゃないのかなあ。 あんまり話題にならないけど。 オートマトンなんかどうでもいいよ。そんなところがユーザーが気にすべきところならその言語はお粗末だ。 決定性がないってことは、外部からの入力に対して計算を実時間内に 終了できることを保証できないってことだよ。 事実上無限ループさせられるってことじゃないの? 30秒で打ち切るとかそういう場当たり的な対策でいいの? 記憶領域をいくらでも使わされるとか。 そんなんでいいの? これは言語関係ありません。 たぶん。 全然話が見えてないんだけど、DFAとNFAは等価ですよ? >>41 > "1"が1と同値になるような実装でないと認めません いきなり後出し追加要件笑たわ 静的型付け言語=平気で嘘をつく人格障害者向けの言語 >>41 そんな仕様の言語は動的型でもゴミの部類ですよ さすがに自演だな こんなバカが1日に2人も来るわけない 1と"1"が同値かはともかく16と"16"だと基数は何なのよとか"0x10"は受け付けるのか とか日本語対応で漢数字"十六"にも対応しようぜとかフランス語は16までは単語が 有るけれども17からは"10と7"の合成なんだぜとか生産性のさほど無い話に発展すれば よいのに。 >>68 DFAで保証の人? 何を保証してるのか説明plz ポアソン分布について話してるとこに足し算の説明求められても そこは自分でってなるよ。 なるよ。 ならなかったっけ? そんな感じであります!隊長! うそです! そんな感じじゃないです。 馬鹿にされたからひがんだだけっす!隊長! つまりJavaのJVMが行うgcの待ち行列はポアソン分布に従う とにかくJSネタに我田引水して「ES7で解決している」と言ってみるとかネタは無くとも とりあえず「Cの10倍速い」と言うのが訓練されたJSerであって、「呼んだ?」だけでは物足りない。 定価1万円くらいのJavaの本がブックオフで105円だったので買ってきました。 2011年初版です。 なんでこんなに安くなってたんだろ。 見たところ新品みたいなのに。 これ出した人一度も読んでないよね。 こういうの流行ってるのかな? Javaの第二形態がJS。 もちろん進化した分Javaより強い。 俺JS使いだけど、 JavaScriptは Cの100倍速いよ JavaScript は C の10倍 名前が長い S(100); /* C */ int S(int n){ int i, sum; for( i = 1; i <= n; i++ ){ sum += i; } return sum; } /* js */ function S(n){ return n * (n+1) / 2; } そう、JavaScriptはCの100倍速い ジャバスクリプトとシーなら4倍だ。10倍って大げさすぎたいしたことない。 >>90 それJavaScriptにおける最適化手法の進化について理解していない。 将来的にはn * (n+1) / 2という式から「あぁ、この人は1からnまでの総和を求めようと しているんだな・・・」と自動的に解釈してループを使ったコードに書き直してくれる ようになるらしい。 >>97 何のためにSIMD対応を進めているとおもっているのか。 ループに展開してGPUで並列計算するに決まっているじゃ無いか。 最終的には5050という数字を見つけると、1から100までたしたいんだなと解釈してループコードに書き換えてくれる MAPが並列で速くなるのはわかるけど REDUCEが並列で速くなる…? >>100 もちろん、帰納的に100個のルーチンを展開してそれぞれ実行する >>100 隣接する偶数番目と奇数番目でペア作って並列で足し算するに決まっているでしょ。 100までの総和なら最初のイテレーションで50まで要素が減る。 100回ループ回さなくても5〜6回のイテレーションで計算できるぞ。 アホプログラマは5歳のガウス少年よりアホってことが良く分かりますね なあに、才能と計算リソースは無駄遣いされるものと相場が決まっている。 ラズパイにUbuntu入れてJSでソフトを作りました。 結果、オープンハードで2倍、オープンOSで2倍、オープン言語で2倍、合わせて 100倍速くなりました。 これを32台つなげたクラスタは京より少しだけ速くなりました。 次は64台つなげてみたいです。 おまえら元気だよな。ネカマとJSerになりきるのはよう続かんわ。 総和ならこれくらいのことはやって欲しい。;p {Color red. Color green. Color blue} sum "=> Color white " ネタ扱いされてるけど、JSがCの二倍速いのはほんとだよ。 やってみた人だけが知ってること。 やってもいないくせにネタ扱いするのやめてくんない? 迷惑。 >>108 CMYKへの対応はどうするんだとか言うツッコミはともかくHTMLとかのカラーコード表 を取り込めばさっくり実装できそうな気もする。 ねぇ、動的型つき言語でのテスト方法教えて。 まずさ、クラスAがあるでしょ? そのクラスAが内部で使ってるクラスBがあるでしょ? クラスBの単体テストは簡単だよね。 クラスAの単体テストをする時、クラスBの代わりにモックを使うよね? つまり、クラスA+偽クラスBでテストをしているわけさ。 この時、クラスBの仕様が変わるとするよね? でも偽クラスBはクラスBのモックというだけで、クラスBとは無関係だよね? 動的型付き言語の場合。 クラスBの仕様が変わってるのに、クラスAはテストに通ってしまう。 こういう場合どうするの? 静的型付け言語ならコンパイルエラーで見つけられるけどさ。 クラスBの要件についてのテストを書いておけば テスト通らなくなるだろ >>110 メソッド sum の実装はコンテナ(コレクション)クラスに属してて、 {1. 2. 3} sum でも同じメソッドをコールし、演算可能ところがミソかな。 Haskell や Scalaの型クラスとかだと可能なのだろうか? >>112 そりゃクラスBの要件のテストを書いておけば、 そのテストは通らなくなるよ。 でも今の問題は、クラスAのテストなんだよね。 クラスBを修正してもクラスBのモックは変わらない。 クラスBのモックを修正することを忘れれば クラスAはテストに通ってしまう。 >>114 >そのテストは通らなくなるよ。 >でも今の問題は、クラスAのテストなんだよね。 要件のテスト通らないって事は変更できないってことだ まさかテストを書き換えるなんて馬鹿なことはしないよな? 1、テスト志向を徹底するためには、まずデバッガを捨て去らねばならない つまりダックタイピングの限界ってことだね。 本物とモックで同じインターフェースを使っていないから インターフェースが変わっても気づかない。 >>116 いやさ、変更するのはクラスBだよ? クラスAと(変更前の)クラスBのモックは 変更する必要ないじゃん? テストを書き換えるなんて馬鹿なことはしないんだからさ。 >>119 納期が迫っているときは、その馬鹿でも しないようなことをしてしまうんだよ。 人間はミスをするという前提にたとうぜ? Bの要件を満たさないBを作る事がダメだと言ってるんだが 伝わってるか? >>120 なら問題ないだろ 変更しても要件のテストに通らなければそれはクラスBではない >>122 クラスBとクラスBのモックは 別のものだってわかってる? 今はクラスBの話はしてないの。 クラスAの単体テストの話。 クラスAから使うのはクラスBのモックであり クラスBはでてこない。 >>124 クラスBのモックは当然クラスBの要件を満たしているんだろ? 何の問題があるんだよ クラスAのテストは通る クラスBのテストも通る。 だけど、組み合わせた場合 動かないってことがあるわけだよね。 組み合わせた時インターフェースが 一致していないことを どうやって知ればいいの? >>125 え? まさか、 クラスBのモックを作ったら、 クラスBのモックもテスト書くの? いや多分逆だな。 クラスBのテストを書いて、 そのテストを通るようにクラスBのモックを 作るんだね? クラスBがないからクラスBのモックを書くのに、 クラスAのテストをするために、クラスBのテストを書くんだ。 で、テストを通るようにクラスBのモックを実装するんだ。 動的言語ってすごい二度手間・・・ まあ静的型でも変更を検出出来るのはメソッドのシグネチャの変更程度であって振る舞いの 変更はやはりモックを見つけ出して振る舞いを書き換える必要はあるかな。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる