X



静的型付け言語の潜在開発生産性は今の100倍 ×5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:06:08.63
int a = 1;
a = "a"; ← エラーになる。
型がない言語ではできない芸当です。(爆笑)


人間がやっていたことを、コンピュータにやらせる。
これが生産性を上げる最大の方法。
コンピュータは間違わない、同じ事を何度も高速に行える。

その為に、コンピュータがコードの意味を正確に
認識できる方法が必要。実行しないとわからないことは
コンピュータは認識できない。

すなわち静的型付け言語であれば、実行しなくてもわかるので
コンピュータが理解できる。そうすれば様々な
コンピュータの高度な情報支援が得られる。

コンピュータのバックアップを受け、人間の生産性は
限りなく向上する。

前スレ
静的型付け言語の潜在開発生産性は今の100倍 ×4
http://toro.2ch.net/test/read.cgi/tech/1383572174/
0031デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:37:03.09
>>30
キチガイに対してじゃね?

> だけど、ここまでヒント上げて気づかない奴に
> 俺は興味ないかな。じゃあね。

俺もキチガイに興味はないなw
0032デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:37:19.66
>>24
じゃあ正しく設計したNumOrStringを書いてみろよ。
0033デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:37:39.46
>>25
そういう時は素直にテンプレート使おうよ。
0035デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:39:40.84
union NumOrString
{
  std::string str;
  int n;
};
0037デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:42:00.33
>>29
それわかるわ〜。
結局なんでも入れられるってめんどくさくなるだけなんだよねえ。
頑張って損した気分になる。
0038デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:42:13.05
>>30
知らない。前スレの静的厨が言った言葉だ。
逃げ口上としてもっともらしいことを言おうとしただけで深い意味はないだろ。
彼女いない歴=年齢のやつが「俺女に興味ないから」と言ってるようなもの。
完全に防衛機制における合理化。Dの烙印を押された奴の断末魔。
0039デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:44:17.87
>>34
>>24に聞けよw>>24は正しい設計だと思うって言ってんだから
その「正しい」の定義にしたがって実装していただければ幸いでございます。
0041デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:47:10.07
>>35
そりゃ単に同じメモリ領域にぶちこんでるだけじゃないか

"1"が1と同値になるような実装でないと認めません
0042デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:47:24.40
>>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を使うところで場合わけで処理分岐可能。上の例は直後で分岐してるので間抜けだけど。
0043デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:48:03.29
静的厨は童貞。
静的を性的と脳内変換して悦楽に浸っている現実逃避の変態。
つまり、NumOrStringとは童貞が創りだした最高の女。
ゆえにそれを見せろと言ったら即座に逃亡をはかる。静的厨は卑劣極まりない。
0044デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:48:59.31
何でも入れられるといいなと思う時の代表が構文解析とかだろね。
スタックに積む値に意味動作から返される値を含めて積めると便利だから。
次にスタックから取り出されて還元されるときは、それが何であるか
意味動作自体が知っているから値自体に状態が必要ないし。
僕は共用体を良く使うよ。
読み込むBNFに還元されるときの型を書いておくんだ。
頭いいでしょ?
まあ普通にこうするか。
別に頭良くないね。
0045デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:50:39.73
>>37
頑張って損というのは、企業への忠誠と努力が無駄だったときくらいだな。
0047デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:51:43.05
>>46
共用体のことらしいよ。
0048デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:52:42.13
>>46

943+1 :デフォルトの名無しさん [↓] :2013/11/24(日) 14:38:53.62
 >>942
 Javaで書くならこんな感じかねぇ。

 NumOrString a;
 a.setValue(1);
 a.setValue("a");

 setValueの実装はオーバーロードで。
0049デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:53:11.04
>>37
頑張って損したとは思わない。
社長が女たらしで売上げの半分を社長が独占している会社で努力することだろ。
0050デフォルトの名無しさん
垢版 |
2013/11/24(日) 15:55:00.51
社名を出せないヘタレがそんなこと書いちゃダメ!
0051デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:03:43.15
>>45
ジジイの介護みたいな会社で努力するなら、
ホンモノの高齢者の介護をした方がマダましなんじゃないかって
0052デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:05:38.13
爺どもはあと10年でいなくなる、そしたら俺の天下だと思って頑張ってるけど、
そうでもないの?
0053デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:06:09.56
動的型使ってる奴がみんな同レベルと思わないでくれ
NumOrStringなんて考えた奴が低能なだけ
0054デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:08:27.45
>>52
重役の息子や孫がヘッドハンティングとか言ってコネで入ってきてスピード昇進なんてよくあること。
0055デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:12:16.74
コネで入ってきたやつに負ける程度の実力なら、下についたほうがお得な気がするけど、
そうでもないの?
0056デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:17:52.12
静的動的の違いより、DFAとNFAの差のほうが気になる。
DFAは実際ほとんど使われていないけど、今後はDFAじゃないとダメなんじゃないのかな?
いまDFAが使われる場所ってコンパイラとかデスクトップで完結してるような
NFAでもいいようなとこだと思うんだ。
NFAってネットワーク越しにやってくる指令の解析にさえ使われていてこれ凄く危険。
そう思わない?
0057デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:19:43.29
>>55
日本社会において実力っていう物の5割はコネのことだからな。
0058デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:22:19.48
Javaが画期的だったのはDFAであることが保障されてたことじゃないのかなあ。
あんまり話題にならないけど。
0059デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:28:27.58
オートマトンなんかどうでもいいよ。そんなところがユーザーが気にすべきところならその言語はお粗末だ。
0060デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:32:24.15
決定性がないってことは、外部からの入力に対して計算を実時間内に
終了できることを保証できないってことだよ。
事実上無限ループさせられるってことじゃないの?
30秒で打ち切るとかそういう場当たり的な対策でいいの?
記憶領域をいくらでも使わされるとか。
そんなんでいいの?
これは言語関係ありません。
たぶん。
0068デフォルトの名無しさん
垢版 |
2013/11/24(日) 17:05:12.14
理解できませんでしたか。
0069デフォルトの名無しさん
垢版 |
2013/11/24(日) 17:07:57.68
1と"1"が同値かはともかく16と"16"だと基数は何なのよとか"0x10"は受け付けるのか
とか日本語対応で漢数字"十六"にも対応しようぜとかフランス語は16までは単語が
有るけれども17からは"10と7"の合成なんだぜとか生産性のさほど無い話に発展すれば
よいのに。
0070デフォルトの名無しさん
垢版 |
2013/11/24(日) 17:10:52.26
いやここ生産性のスレだから。
0072デフォルトの名無しさん
垢版 |
2013/11/24(日) 17:17:20.32
ポアソン分布について話してるとこに足し算の説明求められても
そこは自分でってなるよ。
なるよ。
ならなかったっけ?

そんな感じであります!隊長!
0073デフォルトの名無しさん
垢版 |
2013/11/24(日) 17:26:07.95
うそです!
そんな感じじゃないです。
馬鹿にされたからひがんだだけっす!隊長!
0076デフォルトの名無しさん
垢版 |
2013/11/24(日) 18:24:40.50
違う!全然違うよ!
0079デフォルトの名無しさん
垢版 |
2013/11/24(日) 18:54:53.09
呼んだ?
0081デフォルトの名無しさん
垢版 |
2013/11/24(日) 21:33:56.48
じゃあ呼ぶなよ。
めんどくさい奴だな。
0082デフォルトの名無しさん
垢版 |
2013/11/24(日) 21:42:39.70
とにかくJSネタに我田引水して「ES7で解決している」と言ってみるとかネタは無くとも
とりあえず「Cの10倍速い」と言うのが訓練されたJSerであって、「呼んだ?」だけでは物足りない。
0083デフォルトの名無しさん
垢版 |
2013/11/24(日) 21:50:39.71
定価1万円くらいのJavaの本がブックオフで105円だったので買ってきました。
2011年初版です。
なんでこんなに安くなってたんだろ。
見たところ新品みたいなのに。
これ出した人一度も読んでないよね。
こういうの流行ってるのかな?
0084デフォルトの名無しさん
垢版 |
2013/11/24(日) 21:54:31.23
Javaの第二形態がJS。
もちろん進化した分Javaより強い。
0086デフォルトの名無しさん
垢版 |
2013/11/24(日) 22:06:23.81
100倍は無理でしょ。
常識で考えなよ。
0090デフォルトの名無しさん
垢版 |
2013/11/24(日) 23:40:11.03
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倍速い
0092デフォルトの名無しさん
垢版 |
2013/11/24(日) 23:41:34.27
くっそwミスったw
0094デフォルトの名無しさん
垢版 |
2013/11/24(日) 23:51:56.76
>>90
それJavaScriptにおける最適化手法の進化について理解していない。

将来的にはn * (n+1) / 2という式から「あぁ、この人は1からnまでの総和を求めようと
しているんだな・・・」と自動的に解釈してループを使ったコードに書き直してくれる
ようになるらしい。
0095デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:09:49.56
3倍なら可能!
0096デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:11:41.64
JSはCの二倍速い。
0098デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:25:42.16
>>97
何のためにSIMD対応を進めているとおもっているのか。
ループに展開してGPUで並列計算するに決まっているじゃ無いか。
0099デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:25:52.26
最終的には5050という数字を見つけると、1から100までたしたいんだなと解釈してループコードに書き換えてくれる
0102デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:35:59.64
JSなら速くなる。
ES7で実装される予定。
0103デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:44:37.69
>>100
隣接する偶数番目と奇数番目でペア作って並列で足し算するに決まっているでしょ。
100までの総和なら最初のイテレーションで50まで要素が減る。
100回ループ回さなくても5〜6回のイテレーションで計算できるぞ。
0106デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:52:26.29
ラズパイにUbuntu入れてJSでソフトを作りました。
結果、オープンハードで2倍、オープンOSで2倍、オープン言語で2倍、合わせて
100倍速くなりました。
これを32台つなげたクラスタは京より少しだけ速くなりました。
次は64台つなげてみたいです。
0108デフォルトの名無しさん
垢版 |
2013/11/25(月) 00:57:32.82
総和ならこれくらいのことはやって欲しい。;p

{Color red. Color green. Color blue} sum "=> Color white "
0109デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:00:12.87
ネタ扱いされてるけど、JSがCの二倍速いのはほんとだよ。
やってみた人だけが知ってること。
やってもいないくせにネタ扱いするのやめてくんない?
迷惑。
0110デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:05:01.46
>>108
CMYKへの対応はどうするんだとか言うツッコミはともかくHTMLとかのカラーコード表
を取り込めばさっくり実装できそうな気もする。
0111デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:21:52.31
ねぇ、動的型つき言語でのテスト方法教えて。

まずさ、クラスAがあるでしょ?
そのクラスAが内部で使ってるクラスBがあるでしょ?

クラスBの単体テストは簡単だよね。
クラスAの単体テストをする時、クラスBの代わりにモックを使うよね?

つまり、クラスA+偽クラスBでテストをしているわけさ。
この時、クラスBの仕様が変わるとするよね?
でも偽クラスBはクラスBのモックというだけで、クラスBとは無関係だよね?
動的型付き言語の場合。

クラスBの仕様が変わってるのに、クラスAはテストに通ってしまう。
こういう場合どうするの?

静的型付け言語ならコンパイルエラーで見つけられるけどさ。
0113デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:33:38.72
>>110
メソッド sum の実装はコンテナ(コレクション)クラスに属してて、
{1. 2. 3} sum でも同じメソッドをコールし、演算可能ところがミソかな。
Haskell や Scalaの型クラスとかだと可能なのだろうか?
0114デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:35:19.64
>>112
そりゃクラスBの要件のテストを書いておけば、
そのテストは通らなくなるよ。

でも今の問題は、クラスAのテストなんだよね。
クラスBを修正してもクラスBのモックは変わらない。
クラスBのモックを修正することを忘れれば
クラスAはテストに通ってしまう。
0116デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:40:28.72
>>114
>そのテストは通らなくなるよ。
>でも今の問題は、クラスAのテストなんだよね。
要件のテスト通らないって事は変更できないってことだ
まさかテストを書き換えるなんて馬鹿なことはしないよな?
0118デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:42:43.12
つまりダックタイピングの限界ってことだね。
本物とモックで同じインターフェースを使っていないから
インターフェースが変わっても気づかない。
0120デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:44:21.22
>>116
いやさ、変更するのはクラスBだよ?

クラスAと(変更前の)クラスBのモックは
変更する必要ないじゃん?

テストを書き換えるなんて馬鹿なことはしないんだからさ。
0121デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:45:06.75
>>119
納期が迫っているときは、その馬鹿でも
しないようなことをしてしまうんだよ。
人間はミスをするという前提にたとうぜ?
0124デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:46:40.20
>>122
クラスBとクラスBのモックは
別のものだってわかってる?
今はクラスBの話はしてないの。

クラスAの単体テストの話。
クラスAから使うのはクラスBのモックであり
クラスBはでてこない。
0126デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:50:23.40
クラスAのテストは通る
クラスBのテストも通る。

だけど、組み合わせた場合
動かないってことがあるわけだよね。

組み合わせた時インターフェースが
一致していないことを
どうやって知ればいいの?
0128デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:54:39.05
>>125
え? まさか、
クラスBのモックを作ったら、
クラスBのモックもテスト書くの?

いや多分逆だな。
クラスBのテストを書いて、
そのテストを通るようにクラスBのモックを
作るんだね?

クラスBがないからクラスBのモックを書くのに、
クラスAのテストをするために、クラスBのテストを書くんだ。
で、テストを通るようにクラスBのモックを実装するんだ。


動的言語ってすごい二度手間・・・
0129デフォルトの名無しさん
垢版 |
2013/11/25(月) 01:54:44.66
まあ静的型でも変更を検出出来るのはメソッドのシグネチャの変更程度であって振る舞いの
変更はやはりモックを見つけ出して振る舞いを書き換える必要はあるかな。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況