【Perl,PHP】LLバト ..
809:デフォルトの名無しさん
08/04/19 11:23:18
>>807
てかむしろ逆で、その言語自体の中枢開発者がいるから大規模案件を回せるんだよな
まつもとゆきひろの力を借りれなかったのなら楽天がRubyを選択したかどうか怪しいし
Python開発者がGoogleにいなかったらGoogleでPythonが使用されたかどうか激しく疑問だ
810:デフォルトの名無しさん
08/04/19 11:24:10
>>805
優秀な開発者を何人集められるのだ?
811:デフォルトの名無しさん
08/04/19 11:25:07
会社に富と名声があれば何人でも集められるだろ。
812:デフォルトの名無しさん
08/04/19 11:28:32
富士通のことですね
わかります
813:デフォルトの名無しさん
08/04/19 11:33:34
>>806
だから、そう思ってるのはお前だけって意味だよ
印象操作乙
814:デフォルトの名無しさん
08/04/19 11:36:50
>>812
日立のことですよ。心外な。
815:デフォルトの名無しさん
08/04/19 11:43:58
>>809
>まつもとゆきひろの力を借りれなかったのなら楽天がRubyを選択したかどうか怪しい
時系列的には楽天がRuby案件を発表した数ヵ月後にまつもとを招聘したって形だけどなw
816:デフォルトの名無しさん
08/04/19 11:46:06
>>815
前日の電話一発でコトが済むと思ってるニート君乙
817:デフォルトの名無しさん
08/04/19 11:56:29
GoogleだってPythonを負荷の高いサービス構築には使っていないのに
Rubyはどうなのか? と。
RoRで実装されたTwitterの遅っぷり,メンテで止まりまくりな体たらくを見て思うのです。
818:デフォルトの名無しさん
08/04/19 11:58:57
>>816
スラッシュドットのまつもとの書き込みを見る限りでは報道時点では
まつもとが楽天の招聘を受け入れること以外は何も決まってなかったみたいだな
これも本当かどうかわからんけどソースのないことで水掛け論しても意味ないだろ
819:デフォルトの名無しさん
08/04/19 12:52:40
>>817
Twitter が Ruby で実装されてるのは Ruby の責任だよね!
820:デフォルトの名無しさん
08/04/19 13:03:46
>>813
そんな意味にはならない。それはさっきと別の意見を書いてるだけ。
そんでもって、お前にわかるのはお前のことだけ。他の全員の思考を勝手に決めないように。
ほんと痛いね。
821:デフォルトの名無しさん
08/04/19 14:03:19
>>820
横レスだが静的言語だとテスト要らない的なことはまだ誰も言ってないだろと
822:デフォルトの名無しさん
08/04/19 14:26:28
>>820
>他の全員の思考を勝手に決めないように
オマエモナー
823:デフォルトの名無しさん
08/04/19 17:14:22
>>799はどの発言をさしてそのように思ったんだ?
耳元で誰かがささやいたのか?
824:デフォルトの名無しさん
08/04/19 17:43:07
>>820
× TwitterがRubyで実装されてるのはRubyの責任
○ Twitterがよく落ちるのはRubyとRoRにも責任がある
825:デフォルトの名無しさん
08/04/19 18:12:26
>>787とかかなあ。よくわからんけど。
826:デフォルトの名無しさん
08/04/19 20:57:42
>>795
Railsの作者にも言ってくれ
>>799
誰もそんなこといってない。動的型だと飛躍的に多くなるということだ
>>817
TwitteのバックエンドはRubyじゃないっしょ
827:デフォルトの名無しさん
08/04/19 21:07:43
>>826
twitterのバックエンドにerlang使ってるというのはガセだったはず。
828:デフォルトの名無しさん
08/04/19 21:40:32
大規模で負荷がでかい奴はJavaなのかねえ
829:デフォルトの名無しさん
08/04/19 22:01:00
どれくらいが大規模なんだよ
830:デフォルトの名無しさん
08/04/19 22:47:10
>>824
2chが落っこちたらLarry Wallに抗議しないといかんな
831:デフォルトの名無しさん
08/04/19 23:02:25
2chは半分がc(Apache module)で実装されてる
832:デフォルトの名無しさん
08/04/19 23:03:24
もう半分は
833:デフォルトの名無しさん
08/04/19 23:04:41
perl
834:デフォルトの名無しさん
08/04/19 23:08:03
2chはPerlとmod_cgidso(C言語のCGIをモジュールとして動かすモジュール)で作ってるよ
835:デフォルトの名無しさん
08/04/19 23:31:53
>>829
並以下のPGを使わなければいけない規模。
836:デフォルトの名無しさん
08/04/19 23:57:14
派遣入れないとどうしようもないってのは大規模の証かもしれん
837:デフォルトの名無しさん
08/04/20 01:30:20
>>830
落ちたらLarryに文句いってもいいと思うぞ。
まあ、明らかな攻撃を受けたときくらいしか落ちないけどね。
838:デフォルトの名無しさん
08/04/20 01:36:10
2chってどの程度perlつかってんの?
839:デフォルトの名無しさん
08/04/20 06:56:43
>>838
(低レベルな)ファイル操作以外の部分。
840:デフォルトの名無しさん
08/04/20 08:11:39
>>826
いや、C0でもC1でも、同じテスト基準を満たすために必要なテストケースの量は
動的型だろうが静的型だろうが同じだと思うが。
もし静的型のほうが少ないのなら、それは静的型でのテストをサボってるだけ。
841:デフォルトの名無しさん
08/04/20 12:23:44
>動的型だろうが静的型だろうが同じだと思うが。
実績はそうじゃない事を示している話。
>>785参照。
842:デフォルトの名無しさん
08/04/20 12:35:07
動的だとtypoをいぶり出す努力も必要だから仕方なしや
843:デフォルトの名無しさん
08/04/20 13:00:46
>>842
typoやメソッドの有無によるバグはC0で完全にカバーされるだろ。
静的型でもC0を満たそうとしたら同じ量のテストケースが必要になるぞ。
844:デフォルトの名無しさん
08/04/20 13:46:02
静的で必要でないことも動的では必要になる。つまり同じ量ではない
845:デフォルトの名無しさん
08/04/20 14:08:50
>>844
具体的には、どんなこと?
C0ではカバーされないようなことがコンパイル時に検査できるとは思えないのだが。
846:デフォルトの名無しさん
08/04/20 14:23:46
言語仕様でエラーにならない部分のテスト
847:デフォルトの名無しさん
08/04/20 15:08:34
>>846
全然具体的なじゃいじゃん。
変数の型に関するバグもC0で十分発見できるし、
メソッドの有無もC0でほぼカバーできる。
変数名やメソッド名のtypoなんかは言うまでもなくC0テストで十分。
C0で発見できないが静的型のコンパイル時チェックで発見できるバグの実例を見せてくれ。
848:デフォルトの名無しさん
08/04/20 16:03:42
type=1;
typo=type*2;//<-本当はtypeを2倍したい
print(type);
849:デフォルトの名無しさん
08/04/20 16:12:22
Perl のリスト操作を Ruby 風に - naoyaのはてなダイアリー
URLリンク(d.hatena.ne.jp)
. -―- . やったッ!! さすがnaoya!
/ ヽ
// ', おれたちにできないことを
| { _____ | 平然とやってのけるッ!
(⌒ヽ7´ ``ヒニ¨ヽ
ヽ、..二二二二二二二. -r‐''′ そこにシビれる!
/´ 〉'">、、,,.ィ二¨' {. ヽ _ _ あこがれるゥ!
`r、| ゙._(9,)Y´_(9_l′ ) ( , -'′ `¨¨´ ̄`ヽ、
{(,| `'''7、,. 、 ⌒ |/ニY { \
ヾ| ^'^ ′-、 ,ノr')リ ,ゝ、ー`―-'- ∠,_ ノ
| 「匸匸匚| '"|ィ'( (,ノ,r'゙へ. ̄ ̄,二ニ、゙}了
, ヘー‐- 、 l | /^''⌒| | | ,ゝ )、,>(_9,`!i!}i!ィ_9,) |人
-‐ノ .ヘー‐-ィ ヽ !‐}__,..ノ || /-‐ヽ| -イ,__,.>‐ ハ }
''"//ヽー、 ノヽ∧ `ー一'´ / |′ 丿! , -===- 、 }くー- ..._
//^\ ヾ-、 :| ハ  ̄ / ノ |. { {ハ. V'二'二ソ ノ| | `ヽ
,ノ ヽ,_ ヽノヽ_)ノ:l 'ーー<. / |. ヽヽヽ._ `二¨´ /ノ ノ
/ <^_,.イ `r‐'゙ :::ヽ \ `丶、 |、 \\'ー--‐''"//
\___,/| ! ::::::l、 \ \| \ \ヽ / ノ
850:デフォルトの名無しさん
08/04/20 17:28:36
>>848
普通にC0のテストケースで検出できるはずだが。
851:デフォルトの名無しさん
08/04/20 17:32:20
>>847
結合テストや実際の運用時には
単体テストでは意図しない型でメソッドが呼び出される可能性がある。
そのような前提の場合、カバレッジ率を100%にしても型エラーが発生する可能性がある。
852:デフォルトの名無しさん
08/04/20 17:40:58
>>851
呼び出す側では単体テストしないのか?
853:848
08/04/20 17:43:56
>>850
本質だけぬきだしてみた。
条件分岐が入ったら、境界値を含むテストでなければ検出できない物になる場合がある。
そういう場合を想像できないか?
854:デフォルトの名無しさん
08/04/20 17:47:47
>>853
境界条件上でのバグは確かに存在するな。
で、それは静的型言語でも同じだと思うのだが。
動的型言語だからテストの量が増えるという根拠を示してくれよ。
855:デフォルトの名無しさん
08/04/20 17:48:38
>>852
そこは動的型付けの言語だから増える部分だろ。
それ以前に、呼び出される側が、渡って来る可能性のある全ての型を知る必要があるのは、動的型付けの言語での開発としては、ナンセンスだな。
856:デフォルトの名無しさん
08/04/20 17:49:44
静的言語なら宣言してない識別子が出たところで検出できるだろうに。
857:デフォルトの名無しさん
08/04/20 17:54:36
静的言語を知らないやつが質問してるから、
自分で何を聞いてるのか解らなくなってるって事か。
858:デフォルトの名無しさん
08/04/20 17:55:06
>>855
だからさ、呼び出す側だってどうせC0テストぐらいするだろ。
それとも静的型なら呼び出す側はC0すら通さなくていいって話か?
>>856
宣言していない識別子が出ているだけならC0で発見できるだろ。
859:デフォルトの名無しさん
08/04/20 17:56:22
>>857
というより、C0テストすら知らない奴が話を混乱させていると思われ。
860:デフォルトの名無しさん
08/04/20 17:57:26
>宣言していない識別子が出ているだけならC0で発見できるだろ。
無理言うなwww
861:デフォルトの名無しさん
08/04/20 17:59:57
全てのコード上の式およびステートメントが1通り以上実行されているのだから、
宣言していない識別子が出ていれば当然発見できるでしょ。
862:デフォルトの名無しさん
08/04/20 18:00:39
ああ、やっぱり知らないのか。
C0君は動的言語について、すこし勉強してから来るように。
863:デフォルトの名無しさん
08/04/20 18:05:40
>>861
宣言されてない識別子を使った時点で、宣言されたことになる言語はごまんとあるわけだが
864:デフォルトの名無しさん
08/04/20 18:06:43
>>848が意図的にtypoという別の変数に入れたものなのか変数名を間違えただけなのかを明確に区別できる方法があるなら教えてほしい
865:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/20 18:12:01
3行にまとめて欲しい
867:デフォルトの名無しさん
08/04/20 18:13:00
>>863
で、その宣言されていない変数を使っても、仕様通りの結果が得られるわけか?
C0を満たすというのはそういう意味なのだが。
>>864
仕様で求められている結果が得られるかどうか。つまり、>>848の例でいえば、
仕様は「2を印字する」であるはずだから、>>848のコードは仕様を満たさず、
テストでエラーとして検出される。
868:デフォルトの名無しさん
08/04/20 18:13:45
結論: 動的言語でテストが増えると言ってる奴は、C0テストの意味すら知らない香具師だった。
869:デフォルトの名無しさん
08/04/20 18:14:47
>>848が端的に表現してるのに・・・
870:デフォルトの名無しさん
08/04/20 18:16:22
>>869
>>848を通してしまうようなテストはテストとは言わない。
C0テストで一発で発見できる。
871:デフォルトの名無しさん
08/04/20 18:16:52
宣言されていない変数を使っても、仕様通りの結果が得られるパターンなんか無限にあるだろうに
872:デフォルトの名無しさん
08/04/20 18:19:30
>>871
そう。宣言されている変数を使っていても、仕様通りの結果が得られるパターンなんか無限にあるだろうに。
873:デフォルトの名無しさん
08/04/20 18:19:55
しかもC0は条件の組み合わせや通すコードの順番には無頓着だから、
入力と結果の組み合わせは網羅できないんだがな。
C0通ると全ての場合について網羅されると勘違いしてるのかな。
874:デフォルトの名無しさん
08/04/20 18:19:58
宣言されている別の変数を使っていても、仕様通りの結果が得られるパターンなんか無限にあるだろうに。
875:デフォルトの名無しさん
08/04/20 18:22:35
>>873
単純なtypoや実装されていないメソッド叩いたりするのは検出できるだろ。
>>848がまさにいい例だ。
876:デフォルトの名無しさん
08/04/20 18:23:22
>>853
877:デフォルトの名無しさん
08/04/20 18:24:20
>>876 >>854読め
878:デフォルトの名無しさん
08/04/20 18:25:59
//ほらよ
type=arg1;//arg1,arg2:入力値
typo=type*arg2;
if(type>200)print('big');
879:デフォルトの名無しさん
08/04/20 18:26:54
今どき境界値すら試さないテストしてるマヌケがいるのか?
880:デフォルトの名無しさん
08/04/20 18:27:40
>>878
で、C0を満たすテストケースは?
881:デフォルトの名無しさん
08/04/20 18:29:23
// これは?
int type, typo;
type = arg1;
typo = arg2;
typo = type * arg3;
if (type > 200) print ('big');
これと>>878との本質的な違いは何だ?
882:デフォルトの名無しさん
08/04/20 18:30:11
>>878
それは境界値テストで発見されるだろ。テストの初歩だよ、初歩。
883:デフォルトの名無しさん
08/04/20 18:32:57
存在する境界値を網羅するのは、C0の範疇じゃ無いんだが・・・
884:デフォルトの名無しさん
08/04/20 18:35:26
(arg1='2',arg3=5)なんてのが飛んで来るかもしれないのが動的言語。
885:デフォルトの名無しさん
08/04/20 18:35:48
>>883
そうだね、C0の範疇じゃないね。でも実際には境界値はまっさきにテストする項目だよね。
886:デフォルトの名無しさん
08/04/20 18:38:36
お、C0で全部検出できるって言ってたのにいつの間にか話を変えてるな
887:デフォルトの名無しさん
08/04/20 18:38:47
>>884
可変長パラメータは静的型言語はデフォルト値が与えられるけど、どのみちC0じゃ検出できない。
ところでいつから動的言語が比較対象になったんだ?
てっきり動的型言語が比較対象だと思っていたのだが。
888:デフォルトの名無しさん
08/04/20 18:39:22
>>886
全部検出できるなんて言ってないよ。必要なテストの量に有意な差は出ないとは言ってるが。
889:デフォルトの名無しさん
08/04/20 18:40:29
>>843
>typoやメソッドの有無によるバグはC0で完全にカバーされるだろ。
890:デフォルトの名無しさん
08/04/20 18:40:46
>>865
「100%のカバレッジを達成しないと、タイポや実はメソッドが存在しない等の可能性が残る」
もはやこれだけで、結論1を満たしていると思うのだけど。
カバレッジ100%を保証すべきというのは分かるけど、普通は(特に個人だと)そこまでやらんのではないか。
あと、一部の動的言語では
・実行中に関数が定義
できたり
・実行時にメソッドが定義
できたり
・実行中にほとんどのクラスが使っているような基本的なオブジェクトの振る舞い(RubyならNilClassとか)を変える
ことができたりする。
この前提だと、結論1か結論2(もしくは両方)を満たさざるを得ないのではないか?
特にこういう機構をふんだんに使っている(メタプログラミング)場合、テスト自体が困難を極めると思う。
891:デフォルトの名無しさん
08/04/20 18:49:19
>>887
静的型付けの動的言語については考えていなかった。
すこし反省している。
892:デフォルトの名無しさん
08/04/20 18:59:02
> 特にこういう機構をふんだんに使っている(メタプログラミング)場合、テスト自体が困難を極めると思う。
ヤバい箇所が機械的に限られるJavaのほうが
どこが地雷源かわからないRubyよりましだと思うんだ
893:デフォルトの名無しさん
08/04/20 19:03:13
>>884
そして、'2'*5を評価した値が10の実装もあれば、"22222"の実装もあったりする。
894:デフォルトの名無しさん
08/04/20 20:45:52
849がスルーされてワロタ
895:デフォルトの名無しさん
08/04/20 23:56:48
結局のところ小規模か大規模かの問題じゃないよな
896:デフォルトの名無しさん
08/04/21 03:32:41
強いて言えば、型指定のある言語の方が
IDEの補助を受けやすいってのはあるかな。
897:デフォルトの名無しさん
08/04/21 05:31:34
>>890
そうなんだよな。テスト屋殺すにゃevalの1つもあれば十分なんだよ。
898:デフォルトの名無しさん
08/04/21 06:38:01
>>893
俺もC0で型チェックのかわりは無茶だと思うが、
'2'*5が10か'22222'かは言語仕様で一意に決まるだろwww
つーか、どっちになるか知らずにコード書く馬鹿は
どんな言語使ってもどのみちバグまみれだって。
899:デフォルトの名無しさん
08/04/21 07:17:24
>>898
前者は一見して期待した結果になるからやっかいだ。
まぁ、一意に決まらない言語もあるが、それはおいといて。
900:デフォルトの名無しさん
08/04/21 07:54:33
>>898
演算子オーバーロードを忘れてる
901:デフォルトの名無しさん
08/04/21 09:56:43
もう動的型言語とか関係ないな
902:デフォルトの名無しさん
08/04/21 10:32:07
つまり、なでしこ最強
903:デフォルトの名無しさん
08/04/21 16:35:10
scalaに乗り換えますた。
904:デフォルトの名無しさん
08/04/21 16:58:02
まあLLにこだわるこたないからな
erlangとかも面白いしね
905:デフォルトの名無しさん
08/04/21 19:30:09
>>843 C0で全部カバーできると言い
>>847 C0で発見できないバグの実例を見せてくれとまで言ってたのに
微妙にそういう話が出てくると
>>883 境界線は真っ先にテストする項目だろと全部カバーできる発言を覆すあたり
負けず嫌いがこのスレに常駐してるようですね
906:デフォルトの名無しさん
08/04/21 20:27:38
結論は>>890だな。
C0基準でもカバレッジ100%のテストをする香具師なんて滅多にいない。
静的言語はコンパイラさえ通っちゃえばコマンドライン2-3度叩いてヌルポ出なきゃOK。
907:デフォルトの名無しさん
08/04/21 21:44:27
つまりぬるぽが出ない言語ならなんもしなくてOK。
908:デフォルトの名無しさん
08/04/24 00:09:43
さすがに引いた
909:デフォルトの名無しさん
08/04/24 19:29:41
じゃあ俺は押そう。
910:デフォルトの名無しさん
08/04/24 20:27:04
だったら俺は、はさまってみよう。
911:デフォルトの名無しさん
08/04/25 02:07:05
そして私は潰される。
912:デフォルトの名無しさん
08/04/25 02:53:10
俺は素数を数えて落ちつく
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5382日前に更新/183 KB
担当:undef