- 1 名前:デフォルトの名無しさん [2007/09/05(水) 22:01:42 ]
- 最強のLL=軽量プログラム言語は、どれよ?
エントリーは、 Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!!
- 855 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:48:38 ]
- >>852
そこは動的型付けの言語だから増える部分だろ。 それ以前に、呼び出される側が、渡って来る可能性のある全ての型を知る必要があるのは、動的型付けの言語での開発としては、ナンセンスだな。
- 856 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:49:44 ]
- 静的言語なら宣言してない識別子が出たところで検出できるだろうに。
- 857 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:54:36 ]
- 静的言語を知らないやつが質問してるから、
自分で何を聞いてるのか解らなくなってるって事か。
- 858 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:55:06 ]
- >>855
だからさ、呼び出す側だってどうせC0テストぐらいするだろ。 それとも静的型なら呼び出す側はC0すら通さなくていいって話か? >>856 宣言していない識別子が出ているだけならC0で発見できるだろ。
- 859 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:56:22 ]
- >>857
というより、C0テストすら知らない奴が話を混乱させていると思われ。
- 860 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:57:26 ]
- >宣言していない識別子が出ているだけならC0で発見できるだろ。
無理言うなwww
- 861 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:59:57 ]
- 全てのコード上の式およびステートメントが1通り以上実行されているのだから、
宣言していない識別子が出ていれば当然発見できるでしょ。
- 862 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:00:39 ]
- ああ、やっぱり知らないのか。
C0君は動的言語について、すこし勉強してから来るように。
- 863 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:05:40 ]
- >>861
宣言されてない識別子を使った時点で、宣言されたことになる言語はごまんとあるわけだが
- 864 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:06:43 ]
- >>848が意図的にtypoという別の変数に入れたものなのか変数名を間違えただけなのかを明確に区別できる方法があるなら教えてほしい
- 865 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:10:31 ]
- 条件1: 静的型言語L1で記述されたプログラムP1に対して、
テスト基準C0を満たすテストケースT1を実行し、エラー0の結果を得る。 条件2:動的型言語L2で記述されたプログラムP2に対して、 において、テスト基準C0を満たすテストケースT2を実行し、エラー0の結果を得る。 また、P1およびP2は同じ仕様に基く、内容も1対1に対応するものとする。 一般に動的型言語のほうが有意にテスト量が大きくなることを示すためには、 以下の1いずれかを満たす必要がある。 結論1: | T2 | が | T1 | よりも有意に大きくなる。 結論2: P1もP2も未発見のバグを含んでいる可能性は残っているが、 条件2で未発見のバグが同様の実装をされた条件1で発見されるものが 条件1で未発見のバグが同様の実装をされた条件2で発見されるものよりも 有意に大きくなる。 さあ、結論1でも結論2でも、実例なり根拠なりを示してくれ。
- 866 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:12:01 ]
- 3行にまとめて欲しい
- 867 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:13:00 ]
- >>863
で、その宣言されていない変数を使っても、仕様通りの結果が得られるわけか? C0を満たすというのはそういう意味なのだが。 >>864 仕様で求められている結果が得られるかどうか。つまり、>>848の例でいえば、 仕様は「2を印字する」であるはずだから、>>848のコードは仕様を満たさず、 テストでエラーとして検出される。
- 868 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:13:45 ]
- 結論: 動的言語でテストが増えると言ってる奴は、C0テストの意味すら知らない香具師だった。
- 869 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:14:47 ]
- >>848が端的に表現してるのに・・・
- 870 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:16:22 ]
- >>869
>>848を通してしまうようなテストはテストとは言わない。 C0テストで一発で発見できる。
- 871 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:16:52 ]
- 宣言されていない変数を使っても、仕様通りの結果が得られるパターンなんか無限にあるだろうに
- 872 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:19:30 ]
- >>871
そう。宣言されている変数を使っていても、仕様通りの結果が得られるパターンなんか無限にあるだろうに。
- 873 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:19:55 ]
- しかもC0は条件の組み合わせや通すコードの順番には無頓着だから、
入力と結果の組み合わせは網羅できないんだがな。 C0通ると全ての場合について網羅されると勘違いしてるのかな。
- 874 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:19:58 ]
-
宣言されている別の変数を使っていても、仕様通りの結果が得られるパターンなんか無限にあるだろうに。
- 875 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:22:35 ]
- >>873
単純なtypoや実装されていないメソッド叩いたりするのは検出できるだろ。 >>848がまさにいい例だ。
- 876 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:23:22 ]
- >>853
- 877 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:24:20 ]
- >>876 >>854読め
- 878 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:25:59 ]
- //ほらよ
type=arg1;//arg1,arg2:入力値 typo=type*arg2; if(type>200)print('big');
- 879 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:26:54 ]
- 今どき境界値すら試さないテストしてるマヌケがいるのか?
- 880 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:27:40 ]
- >>878
で、C0を満たすテストケースは?
- 881 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:29:23 ]
- // これは?
int type, typo; type = arg1; typo = arg2; typo = type * arg3; if (type > 200) print ('big'); これと>>878との本質的な違いは何だ?
- 882 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:30:11 ]
- >>878
それは境界値テストで発見されるだろ。テストの初歩だよ、初歩。
- 883 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:32:57 ]
- 存在する境界値を網羅するのは、C0の範疇じゃ無いんだが・・・
- 884 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:35:26 ]
- (arg1='2',arg3=5)なんてのが飛んで来るかもしれないのが動的言語。
- 885 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:35:48 ]
- >>883
そうだね、C0の範疇じゃないね。でも実際には境界値はまっさきにテストする項目だよね。
- 886 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:38:36 ]
- お、C0で全部検出できるって言ってたのにいつの間にか話を変えてるな
- 887 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:38:47 ]
- >>884
可変長パラメータは静的型言語はデフォルト値が与えられるけど、どのみちC0じゃ検出できない。 ところでいつから動的言語が比較対象になったんだ? てっきり動的型言語が比較対象だと思っていたのだが。
- 888 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:39:22 ]
- >>886
全部検出できるなんて言ってないよ。必要なテストの量に有意な差は出ないとは言ってるが。
- 889 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:40:29 ]
- >>843
>typoやメソッドの有無によるバグはC0で完全にカバーされるだろ。
- 890 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:40:46 ]
- >>865
「100%のカバレッジを達成しないと、タイポや実はメソッドが存在しない等の可能性が残る」 もはやこれだけで、結論1を満たしていると思うのだけど。 カバレッジ100%を保証すべきというのは分かるけど、普通は(特に個人だと)そこまでやらんのではないか。 あと、一部の動的言語では ・実行中に関数が定義 できたり ・実行時にメソッドが定義 できたり ・実行中にほとんどのクラスが使っているような基本的なオブジェクトの振る舞い(RubyならNilClassとか)を変える ことができたりする。 この前提だと、結論1か結論2(もしくは両方)を満たさざるを得ないのではないか? 特にこういう機構をふんだんに使っている(メタプログラミング)場合、テスト自体が困難を極めると思う。
- 891 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:49:19 ]
- >>887
静的型付けの動的言語については考えていなかった。 すこし反省している。
- 892 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:59:02 ]
- > 特にこういう機構をふんだんに使っている(メタプログラミング)場合、テスト自体が困難を極めると思う。
ヤバい箇所が機械的に限られるJavaのほうが どこが地雷源かわからないRubyよりましだと思うんだ
- 893 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 19:03:13 ]
- >>884
そして、'2'*5を評価した値が10の実装もあれば、"22222"の実装もあったりする。
- 894 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:45:52 ]
- 849がスルーされてワロタ
- 895 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:56:48 ]
- 結局のところ小規模か大規模かの問題じゃないよな
- 896 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 03:32:41 ]
- 強いて言えば、型指定のある言語の方が
IDEの補助を受けやすいってのはあるかな。
- 897 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 05:31:34 ]
- >>890
そうなんだよな。テスト屋殺すにゃevalの1つもあれば十分なんだよ。
- 898 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 06:38:01 ]
- >>893
俺もC0で型チェックのかわりは無茶だと思うが、 '2'*5が10か'22222'かは言語仕様で一意に決まるだろwww つーか、どっちになるか知らずにコード書く馬鹿は どんな言語使ってもどのみちバグまみれだって。
- 899 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 07:17:24 ]
- >>898
前者は一見して期待した結果になるからやっかいだ。 まぁ、一意に決まらない言語もあるが、それはおいといて。
- 900 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 07:54:33 ]
- >>898
演算子オーバーロードを忘れてる
- 901 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 09:56:43 ]
- もう動的型言語とか関係ないな
- 902 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 10:32:07 ]
- つまり、なでしこ最強
- 903 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 16:35:10 ]
- scalaに乗り換えますた。
- 904 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 16:58:02 ]
- まあLLにこだわるこたないからな
erlangとかも面白いしね
- 905 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 19:30:09 ]
- >>843 C0で全部カバーできると言い
>>847 C0で発見できないバグの実例を見せてくれとまで言ってたのに 微妙にそういう話が出てくると >>883 境界線は真っ先にテストする項目だろと全部カバーできる発言を覆すあたり 負けず嫌いがこのスレに常駐してるようですね
- 906 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:27:38 ]
- 結論は>>890だな。
C0基準でもカバレッジ100%のテストをする香具師なんて滅多にいない。 静的言語はコンパイラさえ通っちゃえばコマンドライン2-3度叩いてヌルポ出なきゃOK。
- 907 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:44:27 ]
- つまりぬるぽが出ない言語ならなんもしなくてOK。
- 908 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:09:43 ]
- さすがに引いた
- 909 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:29:41 ]
- じゃあ俺は押そう。
- 910 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:27:04 ]
- だったら俺は、はさまってみよう。
- 911 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 02:07:05 ]
- そして私は潰される。
- 912 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 02:53:10 ]
- 俺は素数を数えて落ちつく
|

|