1 名前:デフォルトの名無しさん [2007/09/05(水) 22:01:42 ] 最強のLL=軽量プログラム言語は、どれよ? エントリーは、 Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!!
751 名前:デフォルトの名無しさん [2008/04/18(金) 00:39:06 ] 馬鹿でも使えるようにという思想で、本当に馬鹿ばっかりが集まってしまったのは、 むしろPHPだと思う。
752 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:40:02 ] Python使う奴って頭悪いってデータどこかで見た気がするわ
753 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:53:50 ] >>751 >馬鹿でも使えるようにという思想で、本当に馬鹿ばっかりが集まってしまったのは、 >むしろPHPだと思う。 PHPは言語もバカだろ。なぜなら使っている奴らばかりでなく,作ってる奴らもバカだからだ。
754 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:27:22 ] PHPなんていろんな言語の良いトコ取りしようとして 単にでかいゴミ溜めになったって感じだな 無駄に関数多すぎ
755 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:44:29 ] >>752 昨日お前がノートに書いたデータじゃないのか?
756 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:49:35 ] どこかで見ただけのデータで何か言おうとしてるほうが、よっぽどB
757 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:55:03 ] >>740 アクセス制御は3.0から出来るようになる。 代入文に戻り値が無いというか、まず、式と文を完全に分離するべきだという 思想があって、そこからの帰結として、代入文は文なので戻り値がないという必然的な結論。 別に、if(x=y): ... を許可したら、間違いやすいから禁止するとかそういう個別な判断からきたものではない。 >>739 while ((line = file.readline()) != ""): に関して言えば、 for line in file.readlines(): があるから別に、上の書き方が無くても十分すっきり書ける。し、常識的に見て可読性が上がってる。 さらに言えば for line in file: もできる。
758 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:55:34 ] スレタイらしくなってきたな。 perl は特殊記号や省略が多過ぎて他人のコードが読める気がしない。 俺みたいなバカには向かない言語だな。
759 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 02:09:25 ] perlは自分で書く手間を最小限にできる事に価値があると思ってる。
760 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 03:12:35 ] 後で自分のコード読んで ??? ってなるけどな
761 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 08:43:21 ] もう一回最初から書けばいいじゃん^^
762 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:21:54 ] まあ端的に言うと 馬鹿度 Python>>>>>>>>>>>>PHP>>>>|超えられぬ壁|>>>>>>>>>Perl>=Ruby って感じで、PythonとPHP使ってる奴が馬鹿ってことはスレッドから読み取れた。
763 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:28:21 ] >>759 最小限の手間で書いたコードは、書いた瞬間に最大限劣化して メンテナンスができなくなるよね それがPerlの素敵なところ Perl大好き(*-*)
764 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:53:05 ] >>759 perl脳?
765 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 10:28:42 ] だからお前らRuby使えって。 宗教観変わるぞ。
766 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 11:44:19 ] >746 Rubyの場合は「関数」というと「トップレベルでレシーバ無しに呼べるメソッド」のことだからなぁ。 「関数」は無いと言っても良い。あるのはメソッドとブロックだけ。 一応UnboundMethodという所属のないメソッドはあるけど、所属を決めないと起動できない。 メソッドを起動するためにどこかのオブジェクトに所属する必要があって ブロックは所属が無い。 lambdaもprocもProc.newも、ブロックを生成するためのものとして存在する。 >765 作者のブログは確かに宗教らしいなw 俺は読んでない。
767 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 11:57:00 ] Rubyの作者はカルト教信者だって聞いたんですが、本当ですか?
768 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 13:45:28 ] while(<>) { print } を他の言語だとどんだけ書かなきゃならないかって考えるとPerlサイコー! しかし、他の言語に慣れてる奴が見たらPerlサイテーなんだろうなw
769 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 13:52:17 ] いや、配列から順次プリントが簡単にできるとか、魅力じゃないんだよ。 他のLL言語では、抽象的なクラスやメソッドをどう作るかとかが主力なわけで、 その点ではPerlはクソだろ。
770 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 14:05:49 ] >>768 の論理は帳簿とCOBOLの癒着っぷりの原因を示唆する貴重なものだと思う そうでもないか イヤモンド演算子は発明だとは思うけどね
771 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 14:08:32 ] ダが抜けた… >>769 Perl4 は当時は神だったんだが、あの手法は今では時代遅れで、 その上に構築された Perl5.6 もかなりいびつで… すっきり再構築したのが Perl6 になる予定だけど、それなら Perl でなくてもいいじゃん、みたいな まあ、初心者に薦めるような言語ではないな
772 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 15:00:27 ] いや、実際何が出来るかを言っているのではなく 省略の美wについての定番のコードな訳だ、アレは
773 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 15:06:09 ] # Perl while (<>) { print; } # Python import sys, fileinput for line in fileinput.input(): sys.stdout.write(line) # Ruby ARGF.each do |line| print line end
774 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 15:26:25 ] >>768 AWK {print $0}
775 名前:デフォルトの名無しさん [2008/04/18(金) 17:37:04 ] >>774 それがありなら、 # Ruby print ARGF.read
776 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:38:36 ] どういう意図のコードかにもよるなあ >>773 Rubyで 「引数に与えられたファイルまたは標準入力の文字列を1行ずつすべて表示する」 は、おおむね puts readlines だ まあこれだと改行変わっちゃうけどな
777 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:52:32 ] 純粋なPHP言語批判がなぜかPHP利用者叩きにシフトする流れはもううんざり
778 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:34:06 ] だからRuby選べって。
779 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:36:35 ] わかってるんだよ、すべてRuby信者の工作ってことをね
780 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:38:12 ] Rubyはすばらしい言語だぞ
781 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:49:30 ] >>748 のような意見が素だとするとかなり根は深い
782 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:57:16 ] Rubyを使ってから、 他の言語を選択しなさい。 出口が見えるはずです。
783 名前:デフォルトの名無しさん [2008/04/18(金) 19:52:29 ] てか、Rubyさー、ワンライナーとか、ゴルフやっているうちが楽しいんだが、 開発規模がでかくなるにつけ、キツクなってくる・・・ 動的型やダックタイピングのせいで、コンパイルというかラン時に最低限のエラーすら 発見できないので、テスト書きまくるハメになる。 テストが多すぎて、従来の静的型と同じくらいコードかかなくちゃいけない orz なんのために、Rubyにしたんだーってなる。 他の動的型の言語もそうなのかもしれないけど・・・ みんなどうしてるんだろう
784 名前:デフォルトの名無しさん [2008/04/18(金) 19:53:13 ] 訂正 > 動的型やダックタイピングのせいで、コンパイルというかラン時に最低限のエラーすら 動的型やダックタイピングのせいで、コンパイルというか起動したときの最初に、最低限のエラーすら
785 名前:デフォルトの名無しさん [2008/04/18(金) 19:54:51 ] InfoQ: David Pollak氏 lift と Scala を語る www.infoq.com/jp/news/2008/03/liftweb 今、このキレた外人の気持ちが本当にわかるw 型ありScalaに走りたくなる気持ちも
786 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:32:31 ] 動的型の場合はむしろテストテストテストテストテストが基本じゃね
787 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:36:13 ] その基本のテストテストテストテストテストのせいで結局手間が静的言語より余分にかかってたんじゃ意味がないのではって話じゃないの?
788 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:43:50 ] 事前コンパイル時間が不要(つまりLL)かつ動的言語であることは、テスト前提の開発手法を加速する 静的言語と比較するなら、テスト込みとの時間で比較しなければならない
789 名前:デフォルトの名無しさん [2008/04/18(金) 21:52:00 ] >>783 それはRubyだけの問題じゃないのか?
790 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 22:05:20 ] Rubyを使えば世界は救われるんだ!!!!!!!
791 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 22:14:51 ] 動的言語であることによる余分なテスト量ってそんなに増えるかな? 静的言語にはないテスト区分が必要というのは理解するけど、相対的にそう増えてるようにも見えないぞ。 あと、JavaやC++以外の言語は原理的に大規模開発には向かないんで、対応範囲の見極めに注意。
792 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:39:50 ] >>791 まじめにテストを行うとなると結局型チェックと同じようなことを 自分でやらないといけなくなるからな。 スコープの広い変数の名前を変えたときなんて、ほんとにちゃんと動くかガクブルだよ。 > あと、JavaやC++以外の言語は原理的に大規模開発には向かないんで、対応範囲の見極めに注意。 > これはそのとおり。 ただ最初小規模でも時間の経過と共に中規模〜大規模になることはよくあるんで、 そういうときに動的言語だと対応が難しくなる。 あと、最近はエンタープライズとかなんとかで、大規模開発に駆り出される機会が増えているような気がする。 matzが「Rubyは大規模に向かない」という事実に気づいてくれるといいのだけど。
793 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:51:16 ] >matzが「Rubyは大規模に向かない」という事実に気づいてくれるといいのだけど うまく言ってるのかどうかわからんけど楽天がすでにRubyによる大規模開発に着手していて opentechpress.jp/news/article.pl?sid=07/03/16/0944252 まつもとがそれに参加しちゃってるので itpro.nikkeibp.co.jp/article/NEWS/20070531/273225/ 事実がどうだろうと絶対にまつもとはそんなこと言わないだろうなw
794 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:17:41 ] まつもとが参加して失敗すれば言い訳できない例証になるな。
795 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:39:15 ] お前ら言語の用途がおかしい。 LLは、自分が楽をするための言語だぞ。ツール作ったり、テストの 自動化したりするためのツールだ。大規模開発にむいてるわけないだろう。 適用分野が違いすぎるのだよ、何言ってんだオマエラ。
796 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:40:17 ] 楽天に言えよw
797 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:47:13 ] >>792 www.rubyist.net/~matz/20080324.html#p01
798 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 02:02:29 ] ソケット通信するのに最適なLLは何?
799 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 07:22:20 ] あたかも静的型言語ではテストしなくてもいいかのような物言いをする香具師がいるようだが、 それはあまりにも認識が甘いのでは。
800 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 07:35:17 ] >>798 perlかpython
801 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 09:15:10 ] >>798 俺ならPython使うな。 生ソケットでも各種プロトコルでも標準ライブラリで結構カバーされてるし。
802 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 09:20:42 ] >>795 ググルに言ってやれ。お前らpythonの使い方まちがってるってwww
803 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 10:58:52 ] Pythonのサクシャがググル社員になっちゃってるからな
804 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:09:24 ] >>799 誰もそんなこと言ってない 印象操作乙
805 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:10:57 ] 優秀なプログラマならモジュール化ぐらいあれば大抵の言語で大規模開発できるでしょ。
806 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:16:42 ] >>804 実際には言ってないから「あたかも〜かのような」って表現になるんだよ。 実際に誰かが言っているのに、こんな表現したらアホだろw
807 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:19:15 ] その言語の優秀なプログラマなんて日本に100人いるかいないなのが問題だな ほとんどのプロジェクトは「下の中から中の上までの普通のプログラマたち」によって回される よって、ほとんどのプロジェクトは大規模になると破綻、それはLL系列で顕著 まあ当たり前の話っちゃそうなんだが
808 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:21:10 ] ぐぐるみたいに優秀な人材あつめてるところならちゃんとできるんだろうな。
809 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:23:18 ] >>807 てかむしろ逆で、その言語自体の中枢開発者がいるから大規模案件を回せるんだよな まつもとゆきひろの力を借りれなかったのなら楽天がRubyを選択したかどうか怪しいし Python開発者がGoogleにいなかったらGoogleでPythonが使用されたかどうか激しく疑問だ
810 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:24:10 ] >>805 優秀な開発者を何人集められるのだ?
811 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:25:07 ] 会社に富と名声があれば何人でも集められるだろ。
812 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:28:32 ] 富士通のことですね わかります
813 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:33:34 ] >>806 だから、そう思ってるのはお前だけって意味だよ 印象操作乙
814 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:36:50 ] >>812 日立のことですよ。心外な。
815 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:43:58 ] >>809 >まつもとゆきひろの力を借りれなかったのなら楽天がRubyを選択したかどうか怪しい 時系列的には楽天がRuby案件を発表した数ヵ月後にまつもとを招聘したって形だけどなw
816 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:46:06 ] >>815 前日の電話一発でコトが済むと思ってるニート君乙
817 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:56:29 ] GoogleだってPythonを負荷の高いサービス構築には使っていないのに Rubyはどうなのか? と。 RoRで実装されたTwitterの遅っぷり,メンテで止まりまくりな体たらくを見て思うのです。
818 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:58:57 ] >>816 スラッシュドットのまつもとの書き込みを見る限りでは報道時点では まつもとが楽天の招聘を受け入れること以外は何も決まってなかったみたいだな これも本当かどうかわからんけどソースのないことで水掛け論しても意味ないだろ
819 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 12:52:40 ] >>817 Twitter が Ruby で実装されてるのは Ruby の責任だよね!
820 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 13:03:46 ] >>813 そんな意味にはならない。それはさっきと別の意見を書いてるだけ。 そんでもって、お前にわかるのはお前のことだけ。他の全員の思考を勝手に決めないように。 ほんと痛いね。
821 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 14:03:19 ] >>820 横レスだが静的言語だとテスト要らない的なことはまだ誰も言ってないだろと
822 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 14:26:28 ] >>820 >他の全員の思考を勝手に決めないように オマエモナー
823 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 17:14:22 ] >>799 はどの発言をさしてそのように思ったんだ? 耳元で誰かがささやいたのか?
824 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 17:43:07 ] >>820 × TwitterがRubyで実装されてるのはRubyの責任 ○ Twitterがよく落ちるのはRubyとRoRにも責任がある
825 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 18:12:26 ] >>787 とかかなあ。よくわからんけど。
826 名前:デフォルトの名無しさん [2008/04/19(土) 20:57:42 ] >>795 Railsの作者にも言ってくれ >>799 誰もそんなこといってない。動的型だと飛躍的に多くなるということだ >>817 TwitteのバックエンドはRubyじゃないっしょ
827 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:07:43 ] >>826 twitterのバックエンドにerlang使ってるというのはガセだったはず。
828 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:40:32 ] 大規模で負荷がでかい奴はJavaなのかねえ
829 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:01:00 ] どれくらいが大規模なんだよ
830 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:47:10 ] >>824 2chが落っこちたらLarry Wallに抗議しないといかんな
831 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:02:25 ] 2chは半分がc(Apache module)で実装されてる
832 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:03:24 ] もう半分は
833 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:04:41 ] perl
834 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:08:03 ] 2chはPerlとmod_cgidso(C言語のCGIをモジュールとして動かすモジュール)で作ってるよ
835 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:31:53 ] >>829 並以下のPGを使わなければいけない規模。
836 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:57:14 ] 派遣入れないとどうしようもないってのは大規模の証かもしれん
837 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 01:30:20 ] >>830 落ちたらLarryに文句いってもいいと思うぞ。 まあ、明らかな攻撃を受けたときくらいしか落ちないけどね。
838 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 01:36:10 ] 2chってどの程度perlつかってんの?
839 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 06:56:43 ] >>838 (低レベルな)ファイル操作以外の部分。
840 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 08:11:39 ] >>826 いや、C0でもC1でも、同じテスト基準を満たすために必要なテストケースの量は 動的型だろうが静的型だろうが同じだと思うが。 もし静的型のほうが少ないのなら、それは静的型でのテストをサボってるだけ。
841 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:23:44 ] >動的型だろうが静的型だろうが同じだと思うが。 実績はそうじゃない事を示している話。 >>785 参照。
842 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:35:07 ] 動的だとtypoをいぶり出す努力も必要だから仕方なしや
843 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 13:00:46 ] >>842 typoやメソッドの有無によるバグはC0で完全にカバーされるだろ。 静的型でもC0を満たそうとしたら同じ量のテストケースが必要になるぞ。
844 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 13:46:02 ] 静的で必要でないことも動的では必要になる。つまり同じ量ではない
845 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 14:08:50 ] >>844 具体的には、どんなこと? C0ではカバーされないようなことがコンパイル時に検査できるとは思えないのだが。
846 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 14:23:46 ] 言語仕様でエラーにならない部分のテスト
847 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 15:08:34 ] >>846 全然具体的なじゃいじゃん。 変数の型に関するバグもC0で十分発見できるし、 メソッドの有無もC0でほぼカバーできる。 変数名やメソッド名のtypoなんかは言うまでもなくC0テストで十分。 C0で発見できないが静的型のコンパイル時チェックで発見できるバグの実例を見せてくれ。
848 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:03:42 ] type=1; typo=type*2;//<-本当はtypeを2倍したい print(type);
849 名前:デフォルトの名無しさん [2008/04/20(日) 16:12:22 ] Perl のリスト操作を Ruby 風に - naoyaのはてなダイアリー d.hatena.ne.jp/naoya/20080419/1208579525 . -―- . やったッ!! さすがnaoya! / ヽ // ', おれたちにできないことを | { _____ | 平然とやってのけるッ! (⌒ヽ7´ ``ヒニ¨ヽ ヽ、..二二二二二二二. -r‐''′ そこにシビれる! /´ 〉'">、、,,.ィ二¨' {. ヽ _ _ あこがれるゥ! `r、| ゙._(9,)Y´_(9_l′ ) ( , -'′ `¨¨´ ̄`ヽ、 {(,| `'''7、,. 、 ⌒ |/ニY { \ ヾ| ^'^ ′-、 ,ノr')リ ,ゝ、ー`――-'- ∠,_ ノ | 「匸匸匚| '"|ィ'( (,ノ,r'゙へ. ̄ ̄,二ニ、゙}了 , ヘー‐- 、 l | /^''⌒| | | ,ゝ )、,>(_9,`!i!}i!ィ_9,) |人 -‐ノ .ヘー‐-ィ ヽ !‐}__,..ノ || /-‐ヽ| -イ,__,.>‐ ハ } ''"//ヽー、 ノヽ∧ `ー一'´ / |′ 丿! , -===- 、 }くー- ..._ //^\ ヾ-、 :| ハ  ̄ / ノ |. { {ハ. V'二'二ソ ノ| | `ヽ ,ノ ヽ,_ ヽノヽ_)ノ:l 'ーー<. / |. ヽヽヽ._ `二¨´ /ノ ノ / <^_,.イ `r‐'゙ :::ヽ \ `丶、 |、 \\'ー--‐''"// \___,/| ! ::::::l、 \ \| \ \ヽ / ノ
850 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:28:36 ] >>848 普通にC0のテストケースで検出できるはずだが。
851 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:32:20 ] >>847 結合テストや実際の運用時には 単体テストでは意図しない型でメソッドが呼び出される可能性がある。 そのような前提の場合、カバレッジ率を100%にしても型エラーが発生する可能性がある。
852 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:40:58 ] >>851 呼び出す側では単体テストしないのか?
853 名前:848 mailto:sage [2008/04/20(日) 17:43:56 ] >>850 本質だけぬきだしてみた。 条件分岐が入ったら、境界値を含むテストでなければ検出できない物になる場合がある。 そういう場合を想像できないか?
854 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:47:47 ] >>853 境界条件上でのバグは確かに存在するな。 で、それは静的型言語でも同じだと思うのだが。 動的型言語だからテストの量が増えるという根拠を示してくれよ。
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 ] 俺は素数を数えて落ちつく