やっぱり動的言語では安全なソフトは作れない
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/05/22(日) 03:22:26.61安全で堅牢、バグのないソフトは作れる
0002デフォルトの名無しさん
2011/05/22(日) 03:35:31.37俺は天才だ。って言って、誰が信じると思うの?
そんなこともわからないぐらいに>>1は池沼なのかな?
0003デフォルトの名無しさん
2011/05/22(日) 07:34:05.10言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0004デフォルトの名無しさん
2011/05/22(日) 08:07:12.29まさかC言語で「安全」とか思ってないよね?
0005デフォルトの名無しさん
2011/05/22(日) 08:37:53.05スレ乱立を見過ごしてるの?
独自の板立ててそっちで実験するとかできないの?
いまどき、主婦だって専用の板ぐらい立てられるぞ。
「関係者以外は書きこまないで下さい。」とか、何
お前らがエラソーに仕切ってんだよ、ハゲ!
糞スレをあちこちにポンポン乱立されちゃ迷惑なんだよ。
ったく、京都大学霊長類研究所は能無しの集まりかよ!
0006デフォルトの名無しさん
2011/05/22(日) 08:51:00.92unsafeな関数がゴロゴロしてる
0007デフォルトの名無しさん
2011/05/22(日) 09:16:30.990008デフォルトの名無しさん
2011/05/22(日) 09:19:50.880009デフォルトの名無しさん
2011/05/22(日) 09:28:27.14むしろC言語って実質的には型がない言語じゃね?
0010デフォルトの名無しさん
2011/05/22(日) 09:32:36.490011デフォルトの名無しさん
2011/05/22(日) 09:58:19.50単にそういう書き方を許さない空気があるだけで、空気読まずに書こうと思えば書ける。
つまり、安全を機械的にチェックしているというのは半分嘘で、
実は人間のモラルに頼っている部分が大きい。
0012デフォルトの名無しさん
2011/05/22(日) 09:59:14.490013デフォルトの名無しさん
2011/05/22(日) 10:48:55.630014デフォルトの名無しさん
2011/05/22(日) 10:50:23.60/;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、 / ヽ
/ヽヽ: ://: :!:,X~::|: /;,,;,/: :/ リ!: ::/ノ l`ヽl !: : |: : : :l: :l: リ / そ そ お \
/: : ヽヾ/: : l/::l |/|||llllヾ,、 / |: :/ , -==、 l\:::|: : : :|i: | / う う 前 |
. /: : : //ヾ ; :|!: イ、||ll|||||::|| ノノ イ|||||||ヾ、 |: ::|!: : イ: ::|/ な 思 が
/: : ://: : :ヽソ::ヽl |{ i||ll"ン ´ i| l|||l"l `|: /|: : /'!/l ん う
∠: : : ~: : : : : : : :丶ゝ-―- , ー=z_ソ |/ ハメ;, :: ::|. だ ん
i|::ハ: : : : : : : : : : : 、ヘヘヘヘ 、 ヘヘヘヘヘ /: : : : : \,|. ろ な
|!l |: : : : : : : : :、: ::\ 、-―-, / : : :丶;,,;,:ミヽ う ら
丶: :ハ、lヽ: :ヽ: : ::\__ `~ " /: : ト; lヽ) ゝ
レ `| `、l`、>=ニ´ , _´ : :} ` /
,,、r"^~´"''''"t-`r、 _ -、 ´ヽノ \ノ / お ・
,;'~ _r-- 、__ ~f、_>'、_ | で 前 ・
f~ ,;" ~"t___ ミ、 ^'t | は ん ・
," ,~ ヾ~'-、__ ミ_ξ丶 | な 中 ・
;' ,イ .. ヽ_ ヾ、0ヽ丶 l /
( ;":: |: :: .. .`, ヾ 丶 ! \____/
;;;; :: 入:: :: :: l`ー-、 )l ヾ 丶
"~、ソ:: :い:: : \_ ノ , ヾ 丶
0015デフォルトの名無しさん
2011/05/22(日) 11:12:28.800016デフォルトの名無しさん
2011/05/22(日) 11:22:35.30C++自体必要無いという意見は認める。
0017デフォルトの名無しさん
2011/05/22(日) 11:29:18.28マルチパラダイムを存続させたいならCとC++の間にもうひとつ言語用意すべき。
0018デフォルトの名無しさん
2011/05/22(日) 11:34:21.090019デフォルトの名無しさん
2011/05/22(日) 11:34:36.000020デフォルトの名無しさん
2011/05/22(日) 11:42:53.190021デフォルトの名無しさん
2011/05/22(日) 11:43:37.660022デフォルトの名無しさん
2011/05/22(日) 11:53:44.470023デフォルトの名無しさん
2011/05/22(日) 12:08:29.690024デフォルトの名無しさん
2011/05/22(日) 12:31:26.770025デフォルトの名無しさん
2011/05/22(日) 13:05:02.460026デフォルトの名無しさん
2011/05/22(日) 13:09:09.15C++もテンプレート使いまくると動的型みたいな状態になるな
0027デフォルトの名無しさん
2011/05/22(日) 13:17:29.480028デフォルトの名無しさん
2011/05/22(日) 14:00:02.33ならんが?w
それに使い方の問題は関係ない。
静的言語であっても動的言語みたいなことはできる。
だが逆に動的言語では静的言語みたいなことはできない。
0029デフォルトの名無しさん
2011/05/22(日) 14:15:59.090030デフォルトの名無しさん
2011/05/22(日) 14:57:37.69できるよ。
0031デフォルトの名無しさん
2011/05/22(日) 15:02:38.600032デフォルトの名無しさん
2011/05/22(日) 15:34:20.63オプションを両建てできてもあんまり嬉しくない
0033デフォルトの名無しさん
2011/05/22(日) 15:54:51.48関数の引数や返り値の型だとか変数の型をアノテーションで宣言できるし、
モジュールロード時に型検査することもできる。
で、動的言語だと何ができないの?
0034デフォルトの名無しさん
2011/05/22(日) 15:58:21.420035デフォルトの名無しさん
2011/05/22(日) 15:59:37.920036デフォルトの名無しさん
2011/05/22(日) 16:02:52.01どうして>>33を読んで静的チェックが可能だと理解できないの?
0037デフォルトの名無しさん
2011/05/22(日) 16:08:12.04それができるのはなんて言語だよw
0038デフォルトの名無しさん
2011/05/22(日) 16:10:03.14実行前に検査できるのが重要であって。
0039デフォルトの名無しさん
2011/05/22(日) 16:10:54.110040デフォルトの名無しさん
2011/05/22(日) 16:11:37.14どうして>>33を読んで実行前にチェックが可能だと理解できないの? 馬鹿だから?
0041デフォルトの名無しさん
2011/05/22(日) 16:21:49.660042デフォルトの名無しさん
2011/05/22(日) 16:23:43.44簡潔じゃない言語で動的な仕組みが使えても嬉しくないなあ
0043デフォルトの名無しさん
2011/05/22(日) 16:23:58.450044デフォルトの名無しさん
2011/05/22(日) 16:25:20.670045デフォルトの名無しさん
2011/05/22(日) 16:31:54.16だからなんて言語か言えって(爆笑)
怖いのか? お前の脳内言語か?
0046デフォルトの名無しさん
2011/05/22(日) 16:32:07.690047デフォルトの名無しさん
2011/05/22(日) 16:34:22.410048デフォルトの名無しさん
2011/05/22(日) 16:37:39.74書いてあるのが読めないの?気が狂ってるの?
さっさと病院いけやキチガイ
0049デフォルトの名無しさん
2011/05/22(日) 16:38:02.43それよりOS/9とかまだあるの?
0050デフォルトの名無しさん
2011/05/22(日) 16:39:06.52変えようと思ったとき使用箇所が何百とあったとしても、
すべてを安全に変更できるし、エディタの力を借りればほんの数秒で終わる作業だが
動的言語ではそれができない。
0051デフォルトの名無しさん
2011/05/22(日) 16:41:28.81静的言語にしようという流れがある。
やっぱりそれは動的言語では安全なソフトを作れないからなのだろう。
0052デフォルトの名無しさん
2011/05/22(日) 16:43:35.87そのコードを使うのがお前一人なら、という前提が抜けてるぞ。
ま、ホビーストならそれでいいんじゃないか?
しかしチームで開発するようになったら、そんなナイーブな発想じゃだめだ。
ましてや分散レポジトリを使うような開発になったら、そんな変更を勝手にやるカスは追い出されるぞ。
0053デフォルトの名無しさん
2011/05/22(日) 16:43:56.17浸透すればするほど大規模に使おうとして静的になっていく。
0054デフォルトの名無しさん
2011/05/22(日) 16:44:28.70違うよ。
動的言語はメタ機能が充実していることが多いから、
その気になれば静的言語の機能を取り入れることが可能なだけ。
0055デフォルトの名無しさん
2011/05/22(日) 16:46:58.3250じゃないが大規模で動的言語自体危険なんだが。
変更の必要性を否定したら硬直化して一定規模以上で破綻するし
変更に安全性が保証されなかったらこれまた破綻する。
0056デフォルトの名無しさん
2011/05/22(日) 16:47:50.840057デフォルトの名無しさん
2011/05/22(日) 16:49:05.26勝手にやるわけ無いだろ?
それは許可を得るというチーム開発の
マナーの話であって、
メソッド名を簡単に変えるという技術的な話とは一切関係ない
0058デフォルトの名無しさん
2011/05/22(日) 16:50:59.32> 動的言語はメタ機能が充実していることが多いから、
動的言語のメタ機能っていうのは、実行時にしかわからんメタ機能だ。
実行前に分かるメタ機能 = 静的言語が備えている機能
0059デフォルトの名無しさん
2011/05/22(日) 16:52:48.800060デフォルトの名無しさん
2011/05/22(日) 16:54:51.86安全は規模に反比例する
大規模に使おうとする流れは危険だ
0061デフォルトの名無しさん
2011/05/22(日) 16:57:45.37grep使うしか無いからな。
だから、英単語一つのメソッドは作らないとか
メソッドの頭にはクラス名を付けるのような
コード規約がよく使われている。
たとえば、obj.get_customer や obj.custmer_getだと
grepで関係ないものまで引っかかったりしないでしょ?
0062デフォルトの名無しさん
2011/05/22(日) 16:58:56.48おまえは最新OSもGNUも使うな
0063デフォルトの名無しさん
2011/05/22(日) 17:13:08.44異論は認めない
0064デフォルトの名無しさん
2011/05/22(日) 17:23:29.570065デフォルトの名無しさん
2011/05/22(日) 17:27:17.540066デフォルトの名無しさん
2011/05/22(日) 17:36:19.14○つか、
0067デフォルトの名無しさん
2011/05/22(日) 17:41:39.08あるメソッドがどこで使われてるか実行時にしか分からないのは、
静的言語でもポリモーフィズムとかを使ったら一緒
変数の型付けの問題じゃない
0068デフォルトの名無しさん
2011/05/22(日) 17:48:46.93> あるメソッドがどこで使われてるか実行時にしか分からないのは、
> 静的言語でもポリモーフィズムとかを使ったら一緒
お前が言っている「分からない」ってのは一つに絞れないって意味だろ?
俺がいってるのは、一つに絞りたいということではなく
関係がある物を知りたいってことだよ。
ポリモーフィズムを使った場合、実装された関数だけを知りたいとは限らない。
インターフェースも知りたいし、そのインターフェースを使ってる関数も知りたい。
静的言語ならそれが見つかる。
だから、お前がいってるのは何の問題にもなってないよ。
0069デフォルトの名無しさん
2011/05/22(日) 17:53:31.68へー、じゃあ動的言語で何が問題なの?
0071デフォルトの名無しさん
2011/05/22(日) 17:54:26.400072デフォルトの名無しさん
2011/05/22(日) 18:01:24.21たとえばgetでgrepしたとき
全く無関係のgetまで見つかって、
コードを修正するとき、どれが影響あるものなのか
調べるのに時間がかかる。
0073デフォルトの名無しさん
2011/05/22(日) 18:21:24.87基本的に同意なんだけど、
動的言語でも名前空間使ったりして読む範囲を減らす努力はしてる
0074デフォルトの名無しさん
2011/05/22(日) 18:26:28.45interface型でgetメソッドを宣言していて、
継承関係のない複数のclassがそのinterfaceを実装していたら、
結局同じことになるぜ?
こんなこともわからずに静的型マンセーしてるの?
恥ずかしいねえ
0075デフォルトの名無しさん
2011/05/22(日) 18:32:49.450076デフォルトの名無しさん
2011/05/22(日) 18:35:25.38ならないよ。少なくとも、
「interfaceを実装している複数のクラス」だけを見ればいい
これらはそもそも無関係のクラスではない。
0077デフォルトの名無しさん
2011/05/22(日) 18:36:56.73名前空間使っても参照使われたらアウトだね。
インスタンス変数->メソッド ってなったとき
名前空間は役に立たないものになる。
0078デフォルトの名無しさん
2011/05/22(日) 18:41:28.77「interfaceを実装している複数のクラス」が相互依存してると考えるの?
interfaceってそういうのじゃないぜ
0079デフォルトの名無しさん
2011/05/22(日) 18:44:42.62interfaceに依存してるだろ。
例えばあるクラスのgetをfetchに変えようとしたとき、
静的言語なら、このクラスを変えただけでは駄目だ!
interfaceも変えなければ駄目だ!と分かるし
interfaceを変えただけではでだめだ!
このinterfaceを使っているすべてのクラスでも変えないと駄目だ!
ってわかるだろ?
これでも関係ないって言える?
0080デフォルトの名無しさん
2011/05/22(日) 18:46:47.89そもそもがスパゲッティな作りじゃない限り、それで困ることってある?
探すときも、まずクラス名やインターフェース名で探してからメソッド名で
絞り込めばいいわけだし。
0081デフォルトの名無しさん
2011/05/22(日) 18:47:54.59そりゃ、個人で作っていたり
小さいプログラムなら、
時間はかからないだろうさ。
0082デフォルトの名無しさん
2011/05/22(日) 18:48:23.72Pythonだとクラスじゃなく関数使うことも多い
0083デフォルトの名無しさん
2011/05/22(日) 18:48:37.80ユニットテストクラスつくっとけや!
0084デフォルトの名無しさん
2011/05/22(日) 18:49:56.12ユニットテストを作る時間がかかる
できるできないの話をしてるんじゃないんだよ。
時間がかかるかどうかの話。
ユニットテストを使わないでも分かることを
ユニットテストを使ってからじゃないとわからなければ、
それは時間がかかるということ。
0085デフォルトの名無しさん
2011/05/22(日) 18:51:51.57結局は「ユニットテストで使っているgetを手動で書き換える」という
作業が増えてるだけなんだけどな。
0086デフォルトの名無しさん
2011/05/22(日) 18:54:55.56なら動的言語を使えばいいさ
0087デフォルトの名無しさん
2011/05/22(日) 18:55:54.35書かずに同じ効果が得られるのなら
書かないほうがいい。
0088デフォルトの名無しさん
2011/05/22(日) 18:56:45.28静的言語より劣るよ。
つーか動的言語が生産性高いって
何を根拠にそう思ってるんだろうな。
0089デフォルトの名無しさん
2011/05/22(日) 19:01:04.780090デフォルトの名無しさん
2011/05/22(日) 19:03:20.35だからC/C++は別の問題、文字列が扱いにくいのと
メモリ管理が手間がかかるんで、Javaで作ってるよ。
0091デフォルトの名無しさん
2011/05/22(日) 19:07:05.520092デフォルトの名無しさん
2011/05/22(日) 19:08:19.06それにテストを書く前に分かる方が優れてるだろ?
0093デフォルトの名無しさん
2011/05/22(日) 19:09:03.71静的言語で総称型使って頑張ってるのを見ると
動的言語は楽なんだなって思う
0094デフォルトの名無しさん
2011/05/22(日) 19:11:43.10動的言語の方だろう?
0095デフォルトの名無しさん
2011/05/22(日) 19:13:12.38テキストファイルの処理とか、正規表現使ったりとか、置換処理とか、パース処理とか、日付の処理とか、
これ全部Javaでやるの? 面倒くさくない?
0096デフォルトの名無しさん
2011/05/22(日) 19:14:13.70静的言語全部がウンコってわけじゃない
0097デフォルトの名無しさん
2011/05/22(日) 19:15:15.14全部普通にできるし。
0098デフォルトの名無しさん
2011/05/22(日) 19:16:35.280099デフォルトの名無しさん
2011/05/22(日) 19:17:07.01できる出来ないの話はしてないんじゃね?
だって動的言語でもテスト書けば安全なプログラムは書ける
0100デフォルトの名無しさん
2011/05/22(日) 19:20:15.070101デフォルトの名無しさん
2011/05/22(日) 19:22:32.47かからねーよw
>>99
だから、テストは実行しなければわからないんだから
そもそもレイヤーが違うもんだってば。
0102デフォルトの名無しさん
2011/05/22(日) 19:23:39.330103デフォルトの名無しさん
2011/05/22(日) 19:23:53.28どうも「関数を作る」という発想が少ないらしい。
だから毎回同じようなコードを書くやつが多い。
0104デフォルトの名無しさん
2011/05/22(日) 19:24:25.81へー、そのcloneableを実装しているクラスなんて世の中に何個あるかもわからないのに
全てのクラスを見れるんだー(棒読み
0105デフォルトの名無しさん
2011/05/22(日) 19:25:10.02うわー、シロウトだー
0106デフォルトの名無しさん
2011/05/22(日) 19:25:33.62「動的言語で安全なソフトが作れるかどうか」を議論してるんじゃないの?
テストでバグ潰せるならいいじゃん
0107デフォルトの名無しさん
2011/05/22(日) 19:26:28.04お前は何をいってるんだ?
自分が今やってるプロジェクトで
使っているところを知れば十分だろ。
お前はなぜ世の中すべてを見たいという話をしてるのか?
0108デフォルトの名無しさん
2011/05/22(日) 19:27:05.56うわー、反論したいけど、こいつ何も言ってない。うわー
0109デフォルトの名無しさん
2011/05/22(日) 19:27:43.55関数やメソッドのシグネチャ変える時に、手元のコードの型が辻褄あえばいいって発想からして
多数での分散開発の経験がないとしか言いようがない。
0110デフォルトの名無しさん
2011/05/22(日) 19:30:01.01テストでバグ潰せるならどうでもいいという理屈なら
ユニットテストは不要という結論になるぞ。
完成品をブラウザで動かして全部手動でテストすればいいよな?
バグって言うものは、なるべく早い段階で見つけるものだ。
早い段階で見つかるものほど、修正にかかる手間は少ない。
統合テストよりも単体テストで見つけるほうが修正は楽だし、
単体テストを動かす前に見つかるテスト(構文チェックなど)で
見つけるほうが修正は更に楽。
0111デフォルトの名無しさん
2011/05/22(日) 19:30:08.05じゃあ、おまえが勝手に変更したインターフェースを使っている他のプロジェクトの連中はどうする?
おまえが勝手に変更したクラス参照している他のプロジェクトの連中はどうする?
おまえ、チーム開発やったことないだろ
0112デフォルトの名無しさん
2011/05/22(日) 19:30:54.22こいつら、何言っても聞く耳もたねーぞ、
一生オブジェクトを生成し続けてろよw
0113デフォルトの名無しさん
2011/05/22(日) 19:32:03.64だから自動化テストを書くっていってんだよwww
なんで手動でテストすることになってんだ
あと動的言語でも構文チェックはテスト書かなくてもするわい
0114デフォルトの名無しさん
2011/05/22(日) 19:32:08.43セマンティックな部分はほとんどノーチェック。
結局は安全はテストに大きく依存していることを自覚しろっての。
0115デフォルトの名無しさん
2011/05/22(日) 19:32:15.34だから手元のコードの方のつじつまだけじゃなくて、
そのコードと関連している部分をすべて見つけなきゃいかんのだよ。
だからinterfaceを使っていると関連コードが全て見つかるじゃないか。
見つけるべきものが見つけられず、
見つからなくていいものが、じゃまをする。
それが動的言語なんだよ。
0116デフォルトの名無しさん
2011/05/22(日) 19:32:37.91> じゃあ、おまえが勝手に変更したインターフェースを使っている他のプロジェクトの連中はどうする?
> おまえが勝手に変更したクラス参照している他のプロジェクトの連中はどうする?
コンパイルエラーが出るからすぐに分かる。
0117デフォルトの名無しさん
2011/05/22(日) 19:33:42.31お前前半部分しか読んでねーだろ?
自動テストを書くよりも前に先にわかるようが、
修正も楽だということだよ。
0118デフォルトの名無しさん
2011/05/22(日) 19:35:23.11とりあえずテストは書くんだよね?
だったら一度テスト書いたら、修正のたびに再度テスト走らせるだけだが?
0119デフォルトの名無しさん
2011/05/22(日) 19:35:30.13ほんの一部だろうが、スペルチェックの間違いのような
簡単なケアミスを、いちいちユニットテストを実行して調べるなんて
時間がかかることをしてられるか。
0120デフォルトの名無しさん
2011/05/22(日) 19:36:55.58テストを走らせるなんて時間がかかるじゃない。
テストを走らせないほうが時間は短いよね。
0121デフォルトの名無しさん
2011/05/22(日) 19:39:05.91でもコンパイラは走らせるんでしょう?
0122デフォルトの名無しさん
2011/05/22(日) 19:39:31.87生産性を左右するものってそれだけじゃないだろ?
お前んとこでは、メソッド名の変更ばっかりやってんのかよ。
0123デフォルトの名無しさん
2011/05/22(日) 19:40:27.33実際はテストコードが間違っているわけで、テストを修正する必要がある。
その時、テストが間違っているのかコードが間違っているのか
調べるのは大変なことだ。だから動的言語ではリファクタリングに時間がかかる。
>>121
スクリプト言語だってインタプリタを走らせるのだから
何の反論にもなってないぞ。
0124デフォルトの名無しさん
2011/05/22(日) 19:41:58.53スペルミスなどのケアミスを甘く見てはいけない。
そんな下らないことで大きなバグを引き起こしたり
修正するのに時間がかかることはよくあること。
0125デフォルトの名無しさん
2011/05/22(日) 19:42:39.120126デフォルトの名無しさん
2011/05/22(日) 19:43:54.910127デフォルトの名無しさん
2011/05/22(日) 19:44:28.71だから(テスト/コンパイラ/インタプリタ)走らせる手間なんて
安全なソフトを書く上ではどうでも良いって言ってんの
テスト走らせるの面倒って言ってんのJava厨だろ
0128デフォルトの名無しさん
2011/05/22(日) 19:45:02.38面倒なんて言ってねーだろ。
時間がかかるって言ってるんだよ。
0129デフォルトの名無しさん
2011/05/22(日) 19:46:26.01おまえ馬鹿だろw
「コンパイルエラーでるからわかるだろ」で済むかよカス
0130デフォルトの名無しさん
2011/05/22(日) 19:46:44.58なら動的言語を使えば良いさ
0131デフォルトの名無しさん
2011/05/22(日) 19:47:17.49馬鹿はお前だ。
コンパイルエラーでわかるのと
全くわからないのと、
この二つを比べて言ったセリフかそれは?
0132デフォルトの名無しさん
2011/05/22(日) 19:47:45.170133デフォルトの名無しさん
2011/05/22(日) 19:48:27.44> そのコードと関連している部分をすべて見つけなきゃいかんのだよ。
全て見つけるなんてできるわけねえだろカス
おまえが使ってるインターフェースを使ってるプロジェクトなんて
世界中そこら中にあるんだよ
静的厨ってみんなこんな馬鹿なの?
自分さえコンパイルエラーが出なければ
世界中に迷惑をふりまいても平気なの?
0134デフォルトの名無しさん
2011/05/22(日) 19:49:44.940135デフォルトの名無しさん
2011/05/22(日) 19:49:59.76だから、なんで世界中の話してるの?
作っている側が、使っている側をすべて把握するとか
なんでそんな話になってるの?
Linuxカーネル開発者が、すべてアプリを把握するとか
そういう話をしたいの?
0136デフォルトの名無しさん
2011/05/22(日) 19:50:17.42ってことなら部分的に同意するが、コンパイルでバグ見つかるってのを
そんなに重要視されてもなぁ……
0137デフォルトの名無しさん
2011/05/22(日) 19:51:54.96ヴァーカ、
だから動的言語では合意を重視しながら
元のセマンティクスを残して拡張するんだよ
メソッド名かえましたー
コンパイラがエラー吐きましたー
だからインターフェース定義を勝手にかえましたー
そうやってオレオレインターフェースつくって安全だとか言ってる時点で
おまえは本当の大規模開発の経験がないことを晒してんだよ
0138デフォルトの名無しさん
2011/05/22(日) 19:52:17.54えとさ、静的言語でもユニットテストってあるんだよ。
ユニットテストがブームになったのはJUnit、すなわち静的言語のJavaじゃん。
その静的言語で
ユニットテストをしなくても分かるのと
ユニットテストを実行しないとわからないのでは
明らかに後者のほうが時間がかかるよね。
実行時間の話じゃないよ。
書いてからミスが発覚するまでの時間だ。
0139デフォルトの名無しさん
2011/05/22(日) 19:52:58.44おまえはオレオレインターフェースしか使わないのか?
JDKで定義されているインターフェースを使わないのか?
おまえはそこまで馬鹿なのか?
0140デフォルトの名無しさん
2011/05/22(日) 19:53:46.29全てに伝えられるわけなんてねえだろカス
おまえが使ってるインターフェースを使ってるプロジェクトなんて
世界中そこら中にあるんだよ
世界中から合意を得ないと変えられないとか
どんだけ不便なんだよ
0141デフォルトの名無しさん
2011/05/22(日) 19:54:35.07何かとんでもないミスをやらかして、トラウマにでもなったんだろうか。
0142デフォルトの名無しさん
2011/05/22(日) 19:56:11.42> ユニットテストがブームになったのはJUnit、すなわち静的言語のJavaじゃん。
JUnit書いたのはケント ベックで、
彼は動的言語Smalltalkのプロで、
静的言語でのテスト環境があまりにアレなんで
業を煮やしてJUnit書いた、
ってのが真相なのだが、知らなかったの?
Unit testが動的言語の習慣が由来だったことも知らずに
JUnit自慢してたの?
0143デフォルトの名無しさん
2011/05/22(日) 19:56:23.88世界中の人から合意をとってるのか?
プロジェクト内での話なら
プロジェクトで合意をとればいいだけの話。
世界中で使われてるライブラリなら、
どうぞ世界中に合意をとってくださいなw
つーか、メソッド名を変えるときには
それを使っているところ全て自分の責任で
変えるもんだけどな。
0144デフォルトの名無しさん
2011/05/22(日) 19:57:04.08一体、一日の何時間をメソッド名の変更に費やしているのだろう。
0145デフォルトの名無しさん
2011/05/22(日) 19:57:14.18だから動的言語はレキシカルスコープと変数宣言の関係が超重要
0146デフォルトの名無しさん
2011/05/22(日) 19:57:50.46話を勘違いするな。
静的言語でもユニットテストは行われるというだけのことだ。
0147デフォルトの名無しさん
2011/05/22(日) 19:58:08.620148デフォルトの名無しさん
2011/05/22(日) 19:58:29.61やっぱりJava習いたての高校生か。
結局、おまえの言う大規模だの整合性だのは、
手元にあるコードの範囲内の話だ。
不特定多数の開発者が参加するプロジェクトでは
到底通用しないよ。
0149デフォルトの名無しさん
2011/05/22(日) 19:59:34.39その理由は?
0150デフォルトの名無しさん
2011/05/22(日) 19:59:37.30> つーか、メソッド名を変えるときには
> それを使っているところ全て自分の責任で
> 変えるもんだけどな。
つまり君はその程度の規模の開発しか経験ない
ってことだね。よーくわかったよ。
0151デフォルトの名無しさん
2011/05/22(日) 20:00:11.45お前も経験浅そうだなw
0152デフォルトの名無しさん
2011/05/22(日) 20:00:13.85そういうのは殆どはテストで刈り取れるんじゃないの
0153デフォルトの名無しさん
2011/05/22(日) 20:00:22.56自分が扱っているコードの範囲内にしか考えが及んでいないから。
0154デフォルトの名無しさん
2011/05/22(日) 20:00:44.76その理由は?(棒読み
0155デフォルトの名無しさん
2011/05/22(日) 20:01:03.66全てのフローを通るテストを書かなきゃわからない。
この差が決定的だと思えない奴が動的マンセーってことだな。
0156デフォルトの名無しさん
2011/05/22(日) 20:01:07.13ブームなくせに
なぜか関数名を変えることを恐れるのは
なぜなんだろう?w
0157デフォルトの名無しさん
2011/05/22(日) 20:01:15.30折衝とかのコミュニケーションとかそういう部分であって
静的言語のコンパイルエラー云々なんて誤差
大規模開発ならね
0158デフォルトの名無しさん
2011/05/22(日) 20:02:47.110159デフォルトの名無しさん
2011/05/22(日) 20:02:49.37そんなの、ドキュメントに書いていれば済む話。
少なくとも大規模ライブラリの開発者から
ユーザーの俺にドキュメントに書く以外の方法で
連絡が来たことはない。
0160デフォルトの名無しさん
2011/05/22(日) 20:02:59.420161デフォルトの名無しさん
2011/05/22(日) 20:03:44.820162デフォルトの名無しさん
2011/05/22(日) 20:03:55.00アホかw
コンパイルエラーが出れば、
「明らかにそこに変化があった」と分かるだろ
それが重要なんだよ。
これも一種のテストだ。
0163デフォルトの名無しさん
2011/05/22(日) 20:05:52.14多分、リフレクションとか使ったことないんだろうなと思う。つか、使ってたら怖いし。
0164デフォルトの名無しさん
2011/05/22(日) 20:07:25.11でも勝手にインターフェース変えられたらムカつくでしょう?
場合によってはライブラリの使用を止めるくらいにさ
静的言語のメリットはあるけど、それはインターフェースを手元で
簡単に変更できるとかそういうことじゃない
0165デフォルトの名無しさん
2011/05/22(日) 20:07:39.990166デフォルトの名無しさん
2011/05/22(日) 20:08:52.52だから、コンパイルエラーでわからないものは
ユニットテストで捕まえればいいのよ。
要はコードを書いてからバグが発覚するまでの
時間は短いほうがいいってこと。
0167デフォルトの名無しさん
2011/05/22(日) 20:09:15.280168デフォルトの名無しさん
2011/05/22(日) 20:09:38.660169デフォルトの名無しさん
2011/05/22(日) 20:09:55.76お前は勘違いしてる。
静的言語のメリットはインターフェースを簡単に変更することではなく、
インターフェースを変更したときに簡単にそれが検出できるってことだ。
0170デフォルトの名無しさん
2011/05/22(日) 20:12:28.190171デフォルトの名無しさん
2011/05/22(日) 20:12:32.84一種の「テスト」と考えればいいんだね。
型を明記するっていうのは、
こういう型でなければならないというテスト
引数を明記するのは
こういう引数でなければならないというテスト
そうか、これもテストなんだ。
0172デフォルトの名無しさん
2011/05/22(日) 20:14:14.640173デフォルトの名無しさん
2011/05/22(日) 20:14:33.530174デフォルトの名無しさん
2011/05/22(日) 20:15:44.13宇宙がビッグバンからやり直しても、その結論には達しないなw
0175デフォルトの名無しさん
2011/05/22(日) 20:16:19.59それと同じことをブラックボックステストしてれば
見つかったはずでしょ?
運用時に起きたバグが
ブラックボックステストで
見つからないなんてことあるのか?
0176デフォルトの名無しさん
2011/05/22(日) 20:16:27.94これだもん
0177デフォルトの名無しさん
2011/05/22(日) 20:16:48.410178デフォルトの名無しさん
2011/05/22(日) 20:17:08.64おまえ責任なくていいな・・・
0179デフォルトの名無しさん
2011/05/22(日) 20:18:29.21なんで話をすり替えるの?
0180デフォルトの名無しさん
2011/05/22(日) 20:21:07.27そのライブラリ、具体的にどれよ?
俺は静的言語でも動的言語でもオプソなライブラリを公開してきたし、
プロプラなライブラリも提供してきた。
もちろん他所のオプソなライブラリやプロプラなライブラリを使ってきた。
今までAPIを変更する時には必ず、
(1) 変更の提案
(2) 時間を区切った議論
(3) 変更の決定
(4) ソースコードおよびドキュメントでのobsolete宣言をコミット
(4) 変更の周知期間(少なくとも次のメジャーバージョンまで)
(5) 旧インターフェース削除
という段階を踏むし、
もちろん他所のライブラリのインターフェースが変更された時も
上記のプロセスを無視するプロジェクトなんて見たことない。
これは静的型だろうが動的型だろうがかわらんし、
コンパイラのエラーだとか、そんなスウィーツな話とはレベルが違う。
さあ、ドキュメントで事後通告するだけの大型ライブラリの名称を晒せ。
0181デフォルトの名無しさん
2011/05/22(日) 20:22:28.08お前が先に名称を晒せよ
0182デフォルトの名無しさん
2011/05/22(日) 20:23:29.730183デフォルトの名無しさん
2011/05/22(日) 20:23:35.99簡単に検出できたからって何?
だからインターフェースころころ変えても良いっての?
もし滅多にインターフェース変更しないなら、簡単に検出できるメリットがあっても
そのメリットは開発全体のコストからみたら誤差だ
0184デフォルトの名無しさん
2011/05/22(日) 20:24:02.85そのライブラリの中で使われてる
privateメソッドの変更でさえ、
わざわざそういう手順をとってるのか?
0185デフォルトの名無しさん
2011/05/22(日) 20:24:45.07型のテストなんて、テスト全体から比べて、ほんの極一部だよ。
それに、近頃の動的型言語の開発環境のなかには、
「この変数で叩いてるこれらのメソッドを全て実装したクラスはありませんが、何か?」
みたいな警告をするものもあるぞ。
0186デフォルトの名無しさん
2011/05/22(日) 20:25:05.31検出できて、かえたらいけないと判断したものは勝手に変えるなと伝えればいいだろ。
変わってるのに検出できないことの問題を考えたことがあるのか?
0187デフォルトの名無しさん
2011/05/22(日) 20:25:40.78APIって書いてあるの、読めない?馬鹿?文盲?
0188デフォルトの名無しさん
2011/05/22(日) 20:26:10.990189デフォルトの名無しさん
2011/05/22(日) 20:26:11.78極一部なのがなんか関係あるのか?
すべてのメソッド、変数、が極一部だとは思えないが。
0190デフォルトの名無しさん
2011/05/22(日) 20:26:21.50あ、ゴメン。ネタで言ってるのかと思った。
0191デフォルトの名無しさん
2011/05/22(日) 20:26:42.12> 検出できて、かえたらいけないと判断したものは勝手に変えるなと伝えればいいだろ。
だーかーらー、元々APIを変更するってのは、そんなチャチな話じゃないの。まだわかんない?
0192デフォルトの名無しさん
2011/05/22(日) 20:26:50.84privateメソッドの名称変更ならスコープが限定されてるから
変更の影響がどこまで及ぶか分からない、とか無いよ
0193デフォルトの名無しさん
2011/05/22(日) 20:28:03.77だから結局合意が取るのはAPIだけだろ?
内部を複数の人が作るという状況だってあるわけだし、
お前のコミュニケーションというのは、
プロジェクト全体の極一部の話しかしてないわけだよ。
0194デフォルトの名無しさん
2011/05/22(日) 20:29:14.03動的言語はprivateなんて無いものが多いじゃん。
0195デフォルトの名無しさん
2011/05/22(日) 20:29:45.86型に関する部分だけでは、全体のほんの一部だよ。
あんたが書いた通り、構文チェックもテストの一種だ。これは動的型でも行なわれる。
また、実行によるテストも当然、テストの一種だ。これも動的型でも行なわれる。
型だけで判定でき、かつ、型でしか判定できないバグは、全体の一部でしかない。
0196デフォルトの名無しさん
2011/05/22(日) 20:30:30.570197デフォルトの名無しさん
2011/05/22(日) 20:30:36.80公開しないインターフェースの名称変更の影響範囲が分からないってなら
それはモジュール化とかそういうのが壊れてる
0198デフォルトの名無しさん
2011/05/22(日) 20:30:43.95もちろん、privateメソッドでも開発メンバー内で議論するよ。当然だろ。
え、やったことないの?あんた、本当に大規模開発の経験あるの?
0199デフォルトの名無しさん
2011/05/22(日) 20:30:44.68なら内部だけで使っているpublicメソッドは?
0200デフォルトの名無しさん
2011/05/22(日) 20:31:39.72さっきと正反対のことを言ってるぞw
0201デフォルトの名無しさん
2011/05/22(日) 20:31:51.560202デフォルトの名無しさん
2011/05/22(日) 20:31:52.250203デフォルトの名無しさん
2011/05/22(日) 20:32:12.83だから、全体の一部だからってなんなの?
0204デフォルトの名無しさん
2011/05/22(日) 20:32:29.33どうぞどうぞ
0205デフォルトの名無しさん
2011/05/22(日) 20:32:52.06はあ?あんたマジで頭おかしいんじゃね?
福島にいってバケツで床の水を汲み出す簡単な仕事やってくれば?
0206デフォルトの名無しさん
2011/05/22(日) 20:33:45.42そして、議論されずに変えたものは
コンパイルエラーで見つかるから
静的言語のほうが安全という流れになるわけですね。
0207デフォルトの名無しさん
2011/05/22(日) 20:33:46.20ほんの一部しかカバーできてない検査で「安全になる」なんて妄想は持たないほうがいい。
0208デフォルトの名無しさん
2011/05/22(日) 20:35:12.53その議論の持っていき方は「Java厨=低能」になるからやめて
0209デフォルトの名無しさん
2011/05/22(日) 20:35:24.23privateなメソッド名を勝手にかえたら、
C0カバレッジが確保されている単体テストで確実に見つかるよ。
そんなことも知らずにJUnitとかわめいてたの?馬鹿?
0210デフォルトの名無しさん
2011/05/22(日) 20:36:20.090211デフォルトの名無しさん
2011/05/22(日) 20:37:08.43すべてをカバーできる検査なんて存在しない。
常識じゃん。はぁ全く。呆れるよ。
テストっていうのはね。バグは早く見つけるほうが
修正は早いという考えで、なるべく早く見つかる方法を
使うんだよ。
0212デフォルトの名無しさん
2011/05/22(日) 20:37:45.17実際そうだよ
文法上のバグを取り除けたと言う保証は大きい
0213デフォルトの名無しさん
2011/05/22(日) 20:38:08.30> privateなメソッド名を勝手にかえたら、
> C0カバレッジが確保されている単体テストで確実に見つかるよ。
遅い。
変えた時点で見つからなければ修正に時間がかかる。
0214デフォルトの名無しさん
2011/05/22(日) 20:39:17.63だって、兵隊がこの程度の土方の集団なんだぜ。
そりゃコンパイルエラーの有難味も一層増すってもんだろうぜ。
大規模開発で起こりうる問題に根差す一番の原因はスペルミスとか
じゃないんだけどな。でもま、土方の集団にとっては、コンパイルエラー
の助けが、地獄を照らす希望の光に見えるのもわからなくもない。
0215デフォルトの名無しさん
2011/05/22(日) 20:40:06.670216デフォルトの名無しさん
2011/05/22(日) 20:41:15.97たしかにテストに失敗しましたって画面に表示されるんだけど、
いざそのテストを修正しようと思ったら、
コードを見て調べないといけないわけで。
たくさんの単体テストコードを書いていれば
たくさん失敗しましたってでるわけで。
たくさんの失敗の中から根本的な問題を捜す時間がかかるのを考えると
コンパイル時にわかるなら、そっちの方が、時間がかからずに済むんだよ。
単体テストフェーズ以前で検出できるようなものを
単体テストフェーズまで持っていけるってのがおかしい。
0217デフォルトの名無しさん
2011/05/22(日) 20:42:07.46一番の原因じゃなければ、無視してもいいのか?
0218デフォルトの名無しさん
2011/05/22(日) 20:44:50.630219デフォルトの名無しさん
2011/05/22(日) 20:47:36.05スペルミスをわざわざユニットテスト実行して直してるの?
スペルミスを検出するのに
ユニットテストを実行するのは
すごくめんどくさいんだが、
プログラマの美徳「怠慢」を備えてないんじゃない?w
0220デフォルトの名無しさん
2011/05/22(日) 20:53:15.630221デフォルトの名無しさん
2011/05/22(日) 20:55:44.55関係者へも通知が必要だろうし、設計書への反映も必要だし、修正後の動作確認も
いるだろうから、動的言語だろうが、静的言語だろうが、手間はあまり変わらなくね?
コンパイルが通ったから、万事おっけーって訳にいもいかないだろ。
他のモジュールからクラスを動的にロードしたりとか、継承元とメソッド名がかぶって
しまって意図せずオーバーライドしてたなんて可能性もあるわけだから。
プライベートなメソッドなら、局所的なものだから、自分の判断で直してもいいかもしれ
ないけど、それは影響範囲が限られたものだから、動的言語で、ソース検索して探し
ても、そんなに手間がかかるもんじゃないだろ。
0222デフォルトの名無しさん
2011/05/22(日) 20:56:14.63結局は関数名一つ変えるのに
まだこんなに恐れているんだな。
0223デフォルトの名無しさん
2011/05/22(日) 20:57:43.57> パブリックなメソッドの名前を変更するなら、それに依存するクラスへ影響があるから、
その依存するクラスを見つけるのが簡単なのが
静的言語なんだよ。
依存するクラスはどれだー!って探さなきゃならないのは
いやだよね。だから変化するのが怖いってなっちゃう。
0224デフォルトの名無しさん
2011/05/22(日) 20:58:20.740225デフォルトの名無しさん
2011/05/22(日) 20:59:35.30コンパイルエラーは、希望の光と言うより、一里塚だな
文法上のバグは無い事が保証されたから、ロジック上のバグか、ライブラリのバグかに絞られる
スペルミス心配してる人が居るみたいだけど、ここでは、文法のスペルミスは文法上のバグに
変数名やクラス名のスペルミスはロジック上のバグになる
0226デフォルトの名無しさん
2011/05/22(日) 21:01:02.70検索すればすぐわかるじゃん。
最近は、ソースからクラス図を吐いてくれるツールとかもある。
そんなに時間かかんないよ。
0227デフォルトの名無しさん
2011/05/22(日) 21:01:49.95あぁ、静的言語じゃないと
使い物にならないあれねw
0228デフォルトの名無しさん
2011/05/22(日) 21:02:33.48間違ったそばから、色付けて教えてくれるけどね。
0229デフォルトの名無しさん
2011/05/22(日) 21:03:32.35なにこのスレw 低レベル杉、ワロタw
0230デフォルトの名無しさん
2011/05/22(日) 21:03:51.55やっぱり静的言語にある情報が抜けてるからだろうな。
JavaとEclipseの相性は最高。
リファクタリングの機能を知らない人は
使ってみたほうが良い。
0231デフォルトの名無しさん
2011/05/22(日) 21:04:37.560232デフォルトの名無しさん
2011/05/22(日) 21:05:19.04立場を明示せよ
0233デフォルトの名無しさん
2011/05/22(日) 21:05:28.670234デフォルトの名無しさん
2011/05/22(日) 21:05:59.330235デフォルトの名無しさん
2011/05/22(日) 21:07:12.240236デフォルトの名無しさん
2011/05/22(日) 21:08:29.810237デフォルトの名無しさん
2011/05/22(日) 21:09:08.26コード書いているときにやれることがないからなんだろうな。
コード書いているときにバックグラウンドで
今書いているコードのユニットテストを常に
走らせ続けているなんてIDEぐらいなら
作れると思うんだが。
0238デフォルトの名無しさん
2011/05/22(日) 21:09:24.21Common Lisp
0239デフォルトの名無しさん
2011/05/22(日) 21:10:06.48まぁ、Web開発にはオヌヌメしないが。
0240デフォルトの名無しさん
2011/05/22(日) 21:15:17.520241デフォルトの名無しさん
2011/05/22(日) 21:15:25.52>今書いているコードのユニットテストを常に
>走らせ続けているなんてIDEぐらいなら
そんなウザったい機能いらねーよ!
0242デフォルトの名無しさん
2011/05/22(日) 21:16:45.80だから、人様に使ってもらえるようなコードは書かない
カスPGだって自己紹介はもういいよ
0243デフォルトの名無しさん
2011/05/22(日) 21:16:58.17なぜウザったいと思うんだ?
0244デフォルトの名無しさん
2011/05/22(日) 21:17:31.510245デフォルトの名無しさん
2011/05/22(日) 21:17:35.85ようカスPGw
結局人を罵倒するだけしかできなくなったなw
0246デフォルトの名無しさん
2011/05/22(日) 21:19:15.11コード書いてる途中のテストに何の意味があるんだよw
そんなこともわかんねーのかよw
0247デフォルトの名無しさん
2011/05/22(日) 21:21:08.98>>221を読んで、それでもまだコンパイルチェックで
減らせる手間が全体の手間と比べて誤差だって分からないなら
ちょっと頭が残念すぎるだろ
0248デフォルトの名無しさん
2011/05/22(日) 21:22:09.86誤差って言い切るお前の頭が残念すぎる
0249デフォルトの名無しさん
2011/05/22(日) 21:23:53.24ここで暴れてるのはJava厨だよ
決して静的型付け言語ユーザが皆こんなアホだと思わないでね
0250デフォルトの名無しさん
2011/05/22(日) 21:23:57.98つか、クロージャの用途とか便利さとかも分らないだろ。
クロージャこそ、動的言語の特徴のひとつといってもいいだろう。
最近のJavaでも使えるんだが、毎日、毎日、スペルミスの修正
にやっきになってるお前らに使えるわけもなく。
0251デフォルトの名無しさん
2011/05/22(日) 21:25:21.25そうだね。
それこそ、ユニットテストと
文法テストの大きな違いじゃね?
ユニットテストは文法テストに比べれば
あとの段階にならないとテストとしての意味を持たない。
逆に言えば文法テストはユニットテストよりも先にわかる
早いテストは修正も早い。
根本的にテストの種類が違っているわけで
ユニットテストで一緒に文法テストの代わりをしようっていうのは
ビッグバンテストでユニットテストの代わりをしようというのと同じこと
すごく間抜けな考え。
0252デフォルトの名無しさん
2011/05/22(日) 21:26:19.04最近のJavaでも使えるので
クロージャは動的言語の特徴ではありませんよ
0253デフォルトの名無しさん
2011/05/22(日) 21:26:23.92Javascriptでクラスのメンバ変数隠蔽のために使ってるけど
素直にクラスが欲しい。
0254デフォルトの名無しさん
2011/05/22(日) 21:28:01.75この条件でJavaより便利な動的言語ってなにが考えられるの?
0255デフォルトの名無しさん
2011/05/22(日) 21:29:00.75haskellは。。。
0256デフォルトの名無しさん
2011/05/22(日) 21:32:42.94Prototype型とクラス型の違いとか、ホントにわかってんのか?
0257デフォルトの名無しさん
2011/05/22(日) 21:33:26.440258デフォルトの名無しさん
2011/05/22(日) 21:33:52.50Javaはウンコ
0259デフォルトの名無しさん
2011/05/22(日) 21:35:14.61Java土方の世界では、当たり前の用語なのか?
0260デフォルトの名無しさん
2011/05/22(日) 21:36:06.72つまらないから黙ってて
0261デフォルトの名無しさん
2011/05/22(日) 21:37:05.090262デフォルトの名無しさん
2011/05/22(日) 21:37:46.830263デフォルトの名無しさん
2011/05/22(日) 21:38:04.78ロジックエラーにまで悪化してしまう。
0264デフォルトの名無しさん
2011/05/22(日) 21:38:36.77・・・レベル低っ・・・
0265デフォルトの名無しさん
2011/05/22(日) 21:39:20.840266デフォルトの名無しさん
2011/05/22(日) 21:39:49.40Java厨のいう文法テストってのはそれとは違うの?
0267デフォルトの名無しさん
2011/05/22(日) 21:40:08.03静的言語のC#(3.0以上)、scala、Haskellは素晴らしいぞ
0268デフォルトの名無しさん
2011/05/22(日) 21:40:27.600269デフォルトの名無しさん
2011/05/22(日) 21:41:14.310270デフォルトの名無しさん
2011/05/22(日) 21:41:32.93構文チェックと識別子のチェックは別だろ?
そんなこともわかんねーの?
0271デフォルトの名無しさん
2011/05/22(日) 21:41:50.92嫌ってないよ
公開インターフェースを簡単に変更するとか
アホなことばかり言ってるので突っ込んでる
静的言語使いがアホに見えるので止めていただきたい
0272デフォルトの名無しさん
2011/05/22(日) 21:42:50.12構文チェックというよりか、
このクラスはこのメソッドを持っている。
このメソッド以外は持ってない。
この変数にはこの型と互換性があるものだけ入る。
それ以外は入らないというテストだな。
もしユニットテストとして書くなら
ASSERT(instanceof 変数 is MyClass)
を書いているようなもんだよ。
0273デフォルトの名無しさん
2011/05/22(日) 21:42:57.160274デフォルトの名無しさん
2011/05/22(日) 21:45:16.83クロージャとかの本家がコンパイラが多いから都合が悪いんじゃろか。。。
0275デフォルトの名無しさん
2011/05/22(日) 21:45:33.96> 公開インターフェースを簡単に変更するとか
誰もそんな事言ってないと思うが?
言ってるのは、interface型を変更するって話だろ。
抽象クラス、クラス、インターフェースのインターフェースだよ。
private/public関係なく、オープンソースかどうか
ライブラリかどうかも関係ない話。
もしかして今まで勘違いして書き込んでたの?
0276デフォルトの名無しさん
2011/05/22(日) 21:45:37.58一方、動的言語は10年前からほとんど変わっていない
(ライブラリは色々と良い物が出てきたが、言語仕様に大きな進歩は無い)
静的言語と動的言語、どうして差がついたのか…慢心、環境の違い
0277デフォルトの名無しさん
2011/05/22(日) 21:47:03.060278デフォルトの名無しさん
2011/05/22(日) 21:47:50.35都合が悪くなったら言ってなかったことにするとかwww
>>159とか何なんだよ
アホすぎる
0279デフォルトの名無しさん
2011/05/22(日) 21:48:29.77やっとLispに追いついてきただけ
0280デフォルトの名無しさん
2011/05/22(日) 21:49:33.010281デフォルトの名無しさん
2011/05/22(日) 21:50:58.54lispじゃね?
0282デフォルトの名無しさん
2011/05/22(日) 21:51:02.07いや、公開インターフェースと言い出したのはお前だろ?
今まで付き合ってやっていたが、通りは話がずれていると思った。
0283デフォルトの名無しさん
2011/05/22(日) 21:51:45.120284デフォルトの名無しさん
2011/05/22(日) 21:53:01.520285デフォルトの名無しさん
2011/05/22(日) 21:53:08.33付き合ってやってただけwww
なら最初から違うって言ってれば良かったのに
分が悪くなってから言い出すとかw
やっぱJava厨はアホだな
0286デフォルトの名無しさん
2011/05/22(日) 21:53:09.42動的はなにを念頭においてるのかわからないとそもそも議論にならないだろ
0287デフォルトの名無しさん
2011/05/22(日) 21:53:14.84敬遠しているようなプログラマは、まだまだひょっこだよ。
0288デフォルトの名無しさん
2011/05/22(日) 21:53:50.08話にならない
0289デフォルトの名無しさん
2011/05/22(日) 21:54:08.150290デフォルトの名無しさん
2011/05/22(日) 21:54:28.760291デフォルトの名無しさん
2011/05/22(日) 21:54:31.99曲芸プログラムに興味はない
0292デフォルトの名無しさん
2011/05/22(日) 21:54:45.15話出来ないなら別に良いけど・・
0293デフォルトの名無しさん
2011/05/22(日) 21:55:12.98そういう時は代案言ってね
0294デフォルトの名無しさん
2011/05/22(日) 21:56:51.39smalltalk由来のオブジェクト指向なのに問題点もわからない時点で終了
0295デフォルトの名無しさん
2011/05/22(日) 21:56:59.40敬遠してないけど、大規模開発に動的言語は嫌だな
デバッグで最後の最後まで文法上のバグを捨てきれないとか嫌すぎる
デバッグが大変になるほど、切り分けは重要だもんよ
0296デフォルトの名無しさん
2011/05/22(日) 21:57:00.91>>267
0297デフォルトの名無しさん
2011/05/22(日) 21:57:02.95ちょっと異常すぎないか..
0298デフォルトの名無しさん
2011/05/22(日) 21:57:23.88君が終了する分には何も困らんけど?
0299デフォルトの名無しさん
2011/05/22(日) 21:58:03.91なんだつまらん
0300デフォルトの名無しさん
2011/05/22(日) 21:58:32.58一人なら良いんだよ
大人数になるとスペルミスも笑えない
0301デフォルトの名無しさん
2011/05/22(日) 21:59:15.61Objective-Cがなぜ他の処理系に普及しないのか考えたこともないんだな
0302デフォルトの名無しさん
2011/05/22(日) 21:59:29.980303デフォルトの名無しさん
2011/05/22(日) 22:00:23.920304デフォルトの名無しさん
2011/05/22(日) 22:00:24.45答えが見つかったら教えてくれ
0305デフォルトの名無しさん
2011/05/22(日) 22:01:04.52使いたいと思わないから以外にあるの?
0306デフォルトの名無しさん
2011/05/22(日) 22:01:11.72それは「動的言語では安全なソフトは作れない」が真になるほど
問題だと思うの?
そうじゃなければスレ違いの話をしていることになるよ
0307デフォルトの名無しさん
2011/05/22(日) 22:02:00.68ホラ、もっとよく考えて良いんだぜ
0308デフォルトの名無しさん
2011/05/22(日) 22:02:27.82スレタイとかどうでもいいのかも
0309デフォルトの名無しさん
2011/05/22(日) 22:02:28.84SmalltalkやObjective-Cがそのレベルで使われてるとでもいうつもりなのかな
0310デフォルトの名無しさん
2011/05/22(日) 22:03:11.52あながち間違っても無い
大規模って事は、レベルも色んな人が関わるから
それでも動的言語使いますか?と聞かれたら、答えは絶対に、ノー
0311デフォルトの名無しさん
2011/05/22(日) 22:03:33.84>JavaはGNUがさっさと作って普及したのにね
どういう意味か、誰か解説キボンヌ
0312デフォルトの名無しさん
2011/05/22(日) 22:03:47.87何が嫌かって、まず開発環境と実行環境を整えるのが面倒臭すぎる。
0313デフォルトの名無しさん
2011/05/22(日) 22:04:15.41現在、Lisp、Smalltalk、Objective-C。
0314デフォルトの名無しさん
2011/05/22(日) 22:05:00.29Common Lisp
0315デフォルトの名無しさん
2011/05/22(日) 22:05:29.330316デフォルトの名無しさん
2011/05/22(日) 22:06:10.11JavaScript(ついでにCoffeeScript)も出てたよ
0317デフォルトの名無しさん
2011/05/22(日) 22:06:30.37主要なLLは含めていいよ。
Perl, Ruby, Python, PHP
0318デフォルトの名無しさん
2011/05/22(日) 22:06:38.95Dylan
0319デフォルトの名無しさん
2011/05/22(日) 22:07:07.26PythonとPerlも出てたよ
0320デフォルトの名無しさん
2011/05/22(日) 22:07:21.46Lua
0321デフォルトの名無しさん
2011/05/22(日) 22:07:34.110322デフォルトの名無しさん
2011/05/22(日) 22:07:58.37Io
0323デフォルトの名無しさん
2011/05/22(日) 22:08:18.080324デフォルトの名無しさん
2011/05/22(日) 22:08:19.900325デフォルトの名無しさん
2011/05/22(日) 22:08:29.56Scheme
0326デフォルトの名無しさん
2011/05/22(日) 22:08:53.96そりゃプログラマ次第だろ
少なくとも勝手にメソッド名変更したりする馬鹿が居れば
どんな言語使ってても大規模開発は困難だわ
0327デフォルトの名無しさん
2011/05/22(日) 22:09:14.62じゃあ、今から違うという前提で話をしよう。
それだけの話だ。
0328デフォルトの名無しさん
2011/05/22(日) 22:09:17.030329デフォルトの名無しさん
2011/05/22(日) 22:09:39.980330デフォルトの名無しさん
2011/05/22(日) 22:09:58.170331デフォルトの名無しさん
2011/05/22(日) 22:10:49.63後はテストケースを増やしながら熟成
0332デフォルトの名無しさん
2011/05/22(日) 22:10:58.46それに沿って話をしてあげて。 コンパイルエラーのメッセージが何より
もありがたい人達の集まりだから。
0333デフォルトの名無しさん
2011/05/22(日) 22:11:04.82> しかし、こいつらスペルミスがそんなに怖いのかね。
ロジックエラーが怖いといえばいいのか?
動的言語に置いてスペルミスは
ロジックエラーになるんだよ。
スペルミスしていたとしても動くからね。
0334デフォルトの名無しさん
2011/05/22(日) 22:11:17.290335デフォルトの名無しさん
2011/05/22(日) 22:12:32.97動的言語派はテストをちゃんと書けば作れると主張しているが、
静的言語派はテストは面倒としか言ってないので、動的言語派の主張を否定できてない
0336デフォルトの名無しさん
2011/05/22(日) 22:12:41.29速度が必要な所だけね
0337デフォルトの名無しさん
2011/05/22(日) 22:13:29.17>静的言語派はテストは面倒としか言ってない
要らないテストコードを書く手間が省けるな
0338デフォルトの名無しさん
2011/05/22(日) 22:14:03.14これ最強。 たぶん生産効率はJavaの5倍〜10倍ぐらい。
0339デフォルトの名無しさん
2011/05/22(日) 22:14:17.220340デフォルトの名無しさん
2011/05/22(日) 22:15:09.74こういうこと想定してるのとJava/C++派の想定しているものは前提が違いすぎる。
0341デフォルトの名無しさん
2011/05/22(日) 22:15:42.56このクラスがどんなメソッドを持っているのが分かるということを意味する。
このクラスが持っているメソッドが分かるということは
適切なドキュメントを素早く表示できる。
大規模プロジェクトでpublic/private関係なくすべての関数を
把握出るわけがないんだから、素早くドキュメントを見れる仕組みは必要。
このようにたかがスペルミスだと思うかもしれないが、
その技術の応用は計り知れず、それが積み重なって
生産性の向上につながる
0342デフォルトの名無しさん
2011/05/22(日) 22:15:54.22沢山のサイトが普通に PHP のままリリースされてるじゃん
0343デフォルトの名無しさん
2011/05/22(日) 22:16:40.85だってレンタルサーバーでJava動かないんだから
仕方ないじゃない。
0344デフォルトの名無しさん
2011/05/22(日) 22:17:20.53みんなはそれで納得していると言う事
0345デフォルトの名無しさん
2011/05/22(日) 22:17:24.53個人的には思う
0346デフォルトの名無しさん
2011/05/22(日) 22:18:03.21てかレンタルサーバーってw
小規模すぎ。
0347デフォルトの名無しさん
2011/05/22(日) 22:18:07.41PHPが必要とされてるドメインとJava派が言ってる大規模開発は異なる
0348デフォルトの名無しさん
2011/05/22(日) 22:18:44.050349デフォルトの名無しさん
2011/05/22(日) 22:19:03.02静的型付けじゃなくても、インターフェイスの定義をコンパイラが参照出来れば良いだけでしょ
Objective-C みたいに
0350デフォルトの名無しさん
2011/05/22(日) 22:19:35.39動的言語でも全てのスペルミスが見つからないわけじゃないし
静的言語でも全てのスペルミスが見つかるわけじゃない
Scala等ならともかく、Javaなんて生産性高くないだろ
0351デフォルトの名無しさん
2011/05/22(日) 22:20:14.97Facebook は PHP じゃなかったっけ?
高速化の為に PHP to C++ のトランスレータがあるらしいけど・・
0352デフォルトの名無しさん
2011/05/22(日) 22:20:56.59Java厨はメソッド名を変えて廻るのがお仕事です
0353デフォルトの名無しさん
2011/05/22(日) 22:21:05.22最近はネットワーク上のマッシュアップ的なシステムも主流だから
動的言語の役割もわかる。
OS見たいな単一的なシステムはC/C++みたいな静的な言語になるでしょう。
0354デフォルトの名無しさん
2011/05/22(日) 22:21:38.34PHPでいう大規模ってのは
個人・小規模開発者が自分でサーバーに入れて使う
そういう人が”たくさんいる”という意味での大規模で
Javaの場合の大規模ってのは、一つのシステムを
たくさんの人で作る、開発費も膨大でそれを
支払ってくれる大会社が顧客としている
という意味の大規模だよな
0355デフォルトの名無しさん
2011/05/22(日) 22:21:51.89こいつ絶対大規模開発やったことない
0356デフォルトの名無しさん
2011/05/22(日) 22:23:02.95どうせ、ちゃんとクラス設計とかしてないでしょ? マンパワーでごり押しでしょ?
ユースケースからロバネスト分析やったりとか、シーケンス図書いたりとかしてないでしょ?
そりゃ、コンパイラのエラーメッセージに藁をもすがる思いになるのもなんとなくわかるわ。
0357デフォルトの名無しさん
2011/05/22(日) 22:23:27.93大規模開発経験者は簡単にメソッド名変えるんですよね?www
0358デフォルトの名無しさん
2011/05/22(日) 22:23:58.14画面程度ならPHPだろ・・・
0359デフォルトの名無しさん
2011/05/22(日) 22:24:02.21お前が思っていることを並べただけじゃ
何の意味もない
0360デフォルトの名無しさん
2011/05/22(日) 22:24:32.310361デフォルトの名無しさん
2011/05/22(日) 22:24:51.41>ロバネスト分析
robustness?
0362デフォルトの名無しさん
2011/05/22(日) 22:25:48.65簡単には変えないぞ?
ちゃんと影響箇所を調べて関係者を洗い出してから
変えるメリットとデメリットを考慮する。
その影響箇所を調べる手間が
かからないのが静的言語なわけ。
お前が言ってるほど単純な話じゃないんだよ。
ここらへん、実践経験がものをいうよね。
0363デフォルトの名無しさん
2011/05/22(日) 22:26:15.810364デフォルトの名無しさん
2011/05/22(日) 22:26:16.160365デフォルトの名無しさん
2011/05/22(日) 22:26:22.36Erlang
0366デフォルトの名無しさん
2011/05/22(日) 22:26:37.38わからんものかね。
「この変数はこの型である」
ユニットテストみたいだろ?
0367デフォルトの名無しさん
2011/05/22(日) 22:27:30.48このスレにいるJava厨が面子にいたら地獄だわ
0368デフォルトの名無しさん
2011/05/22(日) 22:27:39.820369デフォルトの名無しさん
2011/05/22(日) 22:28:07.35システムが大規模なのは
話が違う。
0370デフォルトの名無しさん
2011/05/22(日) 22:28:19.37Java派はノー
動的言語はイエス
ということみたい
0371デフォルトの名無しさん
2011/05/22(日) 22:29:44.82ネットゲー開発やったらここの動的言語派のいいたいこともわかるようになってきた
でも関数型はわからん。
0372デフォルトの名無しさん
2011/05/22(日) 22:30:35.87みたいなのは動的言語+テストじゃないと面倒いよな・・
0373デフォルトの名無しさん
2011/05/22(日) 22:30:43.74大規模開発には、土方も大勢いるから、静的型チェックやスペルミスのチェックをコンパイル時にしてくれる、静的言語が望ましい。
それ以下の規模の開発で、スキルの高い人達が開発する場合は、動的言語の方がむしろ生産効率が高い。
で、おk?
0374デフォルトの名無しさん
2011/05/22(日) 22:31:21.200375デフォルトの名無しさん
2011/05/22(日) 22:31:52.27静的言語と動的言語は重要視してるモノが違うだけでしょ
システムの信頼性重視なら静的言語
多少運用中に問題が出ても構わないシステムは開発効率の高い動的言語
静的言語で作ったシステムでも運用中に問題が出るのも有るだろうけど、その時の損失は動的言語のそれとは訳が違う
0376デフォルトの名無しさん
2011/05/22(日) 22:32:24.99実務経験豊富だと、メソッド名変えたときにコンパイルエラーが出るのが
静的言語のメリットとか言っちゃうの?www
0377デフォルトの名無しさん
2011/05/22(日) 22:32:48.03http://www.infoq.com/jp/news/2008/03/liftweb
> しかし、私は気が付いてしまいました。Ruby の動的型付けは多くのエラーを引きおこ
> すことに。そして、安心してデプロイするためには 95% ものテストカバレッジを達成
> しなければいけないことに。95% のテストカバレッジを得ることの代償として、私の
> 書いたコードは(テストコードも含めて) Java で書いたものと同等のサイズにまでふ
> くれあがってしまいました。その上、Rails では動的なコードの変更が可能なため、
> 開発・テスト・デプロイ中にトラブルが続出するようになりました。高いテストカバ
> レッジを確保しているにも関わらずです。これらの問題にくわえて、MRI(Matz Ruby
> Implementation: まつもとゆきひろ氏による Rubyの実装)は速度が遅く、言語仕様も
> 安定していません。それなのに開発コミュニティはそのことに見向きもしません。
0378デフォルトの名無しさん
2011/05/22(日) 22:33:57.88真性からかってたのに何してくれるんだ
0379デフォルトの名無しさん
2011/05/22(日) 22:34:25.20Ruby on Rails 製のWebサービスもいっぱああるよね。 Twitter って最初RoRだった?
GreeはPHPだったよね。
大規模システムでも、ハードで負荷分散すれは、動的言語でも十分でしょ。
最近じゃクラウドでリソースをどんどん追加できるし。
動的言語が大規模に向かないってことは全然ないと思う。
0380デフォルトの名無しさん
2011/05/22(日) 22:34:43.79実際、javaしか使えない奴と一緒になると地獄を見る可能性大だったりするから困る
0381デフォルトの名無しさん
2011/05/22(日) 22:34:59.89Rubyは動的言語でも極めつけに大規模開発に向かないと思う
0382デフォルトの名無しさん
2011/05/22(日) 22:35:36.30問題領域が違うんだって
0383デフォルトの名無しさん
2011/05/22(日) 22:37:10.89具体的なちがいに言及できないの?
0384デフォルトの名無しさん
2011/05/22(日) 22:39:12.39遅く、言語仕様が安定していなく(これは改善されつつある)、
オープンクラスとか活用するのが普通だから
0385デフォルトの名無しさん
2011/05/22(日) 22:39:26.79Javaは、マンパワー重視。いけいけどんどん。体育会系言語。
ただしミスは断じて許さねぇ。
LLは、効率重視。気軽にいきましょ。文系言語。
ミスしてもすぐにやり直せるよぉ。
って感じ?
0386デフォルトの名無しさん
2011/05/22(日) 22:39:39.66> このリストには文字列と文字と数字と配列が入りますよー
>
> みたいなのは動的言語+テストじゃないと面倒いよな・・
そんなリストをあちこちで使うたびに、同じテストを書いていたら効率が悪い。
やるとしたら、文字列と文字と数字と配列が入るクラスを作って
このクラスのユニットテストを行う。
あとはこのクラス専用のリストを作ればいい。(JavaならGenericsでもいい)
そうすればユニットテストは一箇所だけでよくなる。
このリストをどこで使おうがあとはコンパイラがチェックしてくれる。
0387デフォルトの名無しさん
2011/05/22(日) 22:40:19.56大規模の意味が違う
基幹業務とか、宇宙開発とか、予算の規模の事だボケ
0388デフォルトの名無しさん
2011/05/22(日) 22:42:11.230389デフォルトの名無しさん
2011/05/22(日) 22:43:15.74まったく的外れ
0390デフォルトの名無しさん
2011/05/22(日) 22:43:20.660391デフォルトの名無しさん
2011/05/22(日) 22:43:45.46>>383
0392デフォルトの名無しさん
2011/05/22(日) 22:44:38.36動的言語で書けないなんて甘え
0393デフォルトの名無しさん
2011/05/22(日) 22:44:42.32物理学科はOOPL
おれはOOPL
0394デフォルトの名無しさん
2011/05/22(日) 22:45:04.16Javaの開発は楽しくない (・∀・)
ということ。
0395デフォルトの名無しさん
2011/05/22(日) 22:45:31.38めちゃ楽しいじゃん
0396デフォルトの名無しさん
2011/05/22(日) 22:46:24.87どう考えても楽しくない
0397デフォルトの名無しさん
2011/05/22(日) 22:46:28.820398デフォルトの名無しさん
2011/05/22(日) 22:46:30.520399デフォルトの名無しさん
2011/05/22(日) 22:47:11.20> そんなリストをあちこちで使うたびに、同じテストを書いていたら効率が悪い。
> やるとしたら、文字列と文字と数字と配列が入るクラスを作って
> このクラスのユニットテストを行う。
静的言語だと、そのユニットテストすら不要になるとおもう。
このクラスのsetterとして
文字列のsetter、文字のsetter、数字のsetter、配列のsetter
を用意すればいい。
そうすればこのクラスは、文字列と文字と数字と配列だけが入るということを
保証するテストと同等の信頼性と言うことができる。
0400デフォルトの名無しさん
2011/05/22(日) 22:47:12.00静的型付け言語で複数の型が入るリストのクラスを作るの面倒でしょ
動的型付け言語なら組み込みのリストを使うだけ
0401デフォルトの名無しさん
2011/05/22(日) 22:47:25.180402デフォルトの名無しさん
2011/05/22(日) 22:47:52.160403デフォルトの名無しさん
2011/05/22(日) 22:48:09.84std::stringすら排除する俺には理解できない
0404デフォルトの名無しさん
2011/05/22(日) 22:48:23.51>そのユニットテストすら不要になるとおもう。
医者で言ったらブラックジャック級のプログラマが揃っていて
そのクラスの実装に絶対にバグが出ないならね
0405デフォルトの名無しさん
2011/05/22(日) 22:48:45.60お前、ユニットテストのこと理解してないだろ?
0406デフォルトの名無しさん
2011/05/22(日) 22:50:27.36> 静的型付け言語で複数の型が入るリストのクラスを作るの面倒でしょ
> 動的型付け言語なら組み込みのリストを使うだけ
組み込みのリストは、指定された複数の型 ”以外”も入るから
使うだけって事にはならないだろ。
動的型付け言語でも、そんな手抜き実装でいいなら
JavaならObject型を使うだけだって。
それが危険だから「文字列と文字と数字と配列が入る」という
制約をつけたいわけ。
0407デフォルトの名無しさん
2011/05/22(日) 22:51:59.60その危険はテストで刈り取れば良いじゃん
0408デフォルトの名無しさん
2011/05/22(日) 22:52:40.20>>405
リストの実装なら、特定の型用のListをGenericsで生成して使えばいいじゃん。
ここで作る必要があるのは「特定の型だけ入れられるクラス」だよ。
Javaならね。
0409デフォルトの名無しさん
2011/05/22(日) 22:53:05.17うん。だからテストを書かないといけないわけでしょ?
0410デフォルトの名無しさん
2011/05/22(日) 22:53:39.74>>377
0411デフォルトの名無しさん
2011/05/22(日) 22:53:48.91特定の型が入るリストじゃなくて
複数の型が同時に入るリストの話だよ?
0412デフォルトの名無しさん
2011/05/22(日) 22:53:59.280413デフォルトの名無しさん
2011/05/22(日) 22:54:30.710414デフォルトの名無しさん
2011/05/22(日) 22:54:30.98こっちで一緒にテスト書こうぜ
0415デフォルトの名無しさん
2011/05/22(日) 22:54:58.76Java厨の人たちってそんなにしょっちゅうやらかしていまうものなの?
0416デフォルトの名無しさん
2011/05/22(日) 22:55:20.35わかってないなら黙ってて
0417デフォルトの名無しさん
2011/05/22(日) 22:55:45.79だからRubyを動的言語の代表にするなよ
0418デフォルトの名無しさん
2011/05/22(日) 22:56:20.23違うよ。
> このリストには文字列と文字と数字と配列が入りますよー
って書いてあるだろ。例えば日付型は入らない。
だから作る必要があるのは、文字列と文字と数字と配列の
setterを持った新しいクラスだけ。
あとはこの新しいクラス用のListを使えばいい。
0419デフォルトの名無しさん
2011/05/22(日) 22:56:20.28Java厨と一緒にすんなよ
0420デフォルトの名無しさん
2011/05/22(日) 22:56:22.49じゃあどの動的言語ならこの問題が起こらないかいってみ?
0421デフォルトの名無しさん
2011/05/22(日) 22:57:04.19暇なんだね
0422デフォルトの名無しさん
2011/05/22(日) 22:57:21.10そんな面倒な事しないで、こっち来て一緒にテスト書こうぜ
0423デフォルトの名無しさん
2011/05/22(日) 22:57:32.080424デフォルトの名無しさん
2011/05/22(日) 22:58:21.28> 動的型付け言語なら組み込みのリストを使うだけ
その程度ならobject型のリストを使えばいいだけ
型安全な共用体と相称型をサポートしている言語なら、
特定の複数の型以外でコンパイルエラーになるリストだって作れる
0425デフォルトの名無しさん
2011/05/22(日) 22:58:47.76PythonとObjective-Cでは問題になったことが無いな
0426デフォルトの名無しさん
2011/05/22(日) 22:59:21.97その甘い言葉に誘われた人の末路
> しかし、私は気が付いてしまいました。Ruby の動的型付けは多くのエラーを引きおこ
> すことに。そして、安心してデプロイするためには 95% ものテストカバレッジを達成
> しなければいけないことに。95% のテストカバレッジを得ることの代償として、私の
> 書いたコードは(テストコードも含めて) Java で書いたものと同等のサイズにまでふ
> くれあがってしまいました。その上、Rails では動的なコードの変更が可能なため、
> 開発・テスト・デプロイ中にトラブルが続出するようになりました。高いテストカバ
> レッジを確保しているにも関わらずです。これらの問題にくわえて、MRI(Matz Ruby
> Implementation: まつもとゆきひろ氏による Rubyの実装)は速度が遅く、言語仕様も
> 安定していません。それなのに開発コミュニティはそのことに見向きもしません。
0427デフォルトの名無しさん
2011/05/22(日) 22:59:30.77>>377が理解できてないと判明
0428デフォルトの名無しさん
2011/05/22(日) 22:59:31.14テスト書いたら死ぬの?
0429デフォルトの名無しさん
2011/05/22(日) 22:59:37.53そんな面倒な物をわざわざ実装しないで、こっちに来てテストの続きを書こうぜ
0430デフォルトの名無しさん
2011/05/22(日) 22:59:47.61だったら、要素がTupleのリストを使えばいいだけだろ
0431デフォルトの名無しさん
2011/05/22(日) 23:00:11.55未だかつてみたことも聞いたこともないんだが。
未だに昔ながらの、テスト仕様書かいて、マンパワーでひたすら人力テストというパターンでしょ。
0432デフォルトの名無しさん
2011/05/22(日) 23:00:24.61お前がうそつきだから。
静的言語レベルで保証してくれる安全性を全部手書きのテストかいてる奴見たことない。
0433デフォルトの名無しさん
2011/05/22(日) 23:00:59.37それ分かりにくくない?
0434デフォルトの名無しさん
2011/05/22(日) 23:01:19.73え? コストがかかるからに決まってるじゃん。
テストはなんでも書けばいいってもんじゃない。
効率良く書かなければ時間は無限にかかる。
遊びでやってるんじゃないよ。
0435デフォルトの名無しさん
2011/05/22(日) 23:02:52.49代数データ型やdiscriminated unionのようなキーワードでぐぐるとよい
以下はF#の例
type Foo =
| Int of int
| Char of char
| String of str
let xs = [ Int 1; Char 'c'; String "xyz ] # Fooのリスト
関数型言語では、このような型をパターンマッチとともに用いる
パターン漏れに対してはコンパイラが警告を出してくれるので
isinstanceのようなもので泥臭く分岐するより楽な上に安全
0436デフォルトの名無しさん
2011/05/22(日) 23:02:57.56Rubyは(RORは)ものすごく動的だけど、
Pythonとかはそこまで動的なコード変更なんてしないからね
変数に型が無いからって何でも一緒にすんなよ
0437デフォルトの名無しさん
2011/05/22(日) 23:04:13.41そこまでって問題じゃないんだが・・・
0438デフォルトの名無しさん
2011/05/22(日) 23:05:47.74高いテストカバレッジを保っててもエラーがでちゃうのは、
まさに「そこまで」って問題なんだが・・・
0439デフォルトの名無しさん
2011/05/22(日) 23:06:50.37>そこまで動的なコード変更なんてしないから
動的言語のメリット否定してるのに気づかないの?
0440デフォルトの名無しさん
2011/05/22(日) 23:07:01.28静的言語の方が大規模開発に向いてるけど、
Java厨と一緒なら地獄だって
0441デフォルトの名無しさん
2011/05/22(日) 23:07:46.13ああ、そういうのは良いね
欲を言えば、そのシグネチャみたいなのを書かないで済むともっと良いんだけど・・
0442デフォルトの名無しさん
2011/05/22(日) 23:08:23.21必要なとこだけ使えばいいじゃん
静的言語でも、動的な変更がしたければクロージャとか使うだろ
どっちかでしか安全に開発できないとかアホすぎ
0443デフォルトの名無しさん
2011/05/22(日) 23:09:25.49どうやって動的言語で必要なとこだけ、
静的言語特有のことをやれっていうんだよw
静的言語で動的言語っぽいことならできるけどさ。
0444デフォルトの名無しさん
2011/05/22(日) 23:09:36.451.要求分析
2.ユースケース書く(できれば客も交えて)
3.ユーザレビュー
3.クラス図書く
4.シーケンス図書く
5.場合よっちゃ、コラボレーション図やステート図書く
6.暫く2〜5を行ったり来たり
7.ユニットテストクラス書く
8.テストエラーがなくなるまで、ひたすら実装
9.ユースケースに照らしながら、結合テスト、総合テスト
10.受入テスト、納品
11.ボーナスもらって長期休暇
0445デフォルトの名無しさん
2011/05/22(日) 23:10:00.17どうせドキュメントに面倒な事を書くんだろ?
だったら、コードにしてコンパイラにチェックさせた方がいい
そもそも、 >>372 の説明では
tupleを使うべき場面なのかunionを使うべきなのかすら曖昧なので
ドキュメントを作ったところで役に立たない
静的言語で書けば、屑ドキュメントなんかよりよっぽどわかりやすい説明になる
0446デフォルトの名無しさん
2011/05/22(日) 23:11:02.34静的言語特有のことをやるなんて書いてないよ?
「動的なコード変更」を必要なだけやるって書いたの?
おわかり?
0447デフォルトの名無しさん
2011/05/22(日) 23:11:44.58大規模開発はお前が思う「おばかな」開発者とともにやるんだけどな
0448デフォルトの名無しさん
2011/05/22(日) 23:12:17.40だから静的言語の方が向いてるのは皆認めてる
ただJava厨と一緒に仕事したくないだけで
0449デフォルトの名無しさん
2011/05/22(日) 23:12:28.10必要なときだけやるのなら、
必要なときだけやれる言語の方がいいじゃんw
0450デフォルトの名無しさん
2011/05/22(日) 23:12:31.53ああ、そういうのはいいや
0451デフォルトの名無しさん
2011/05/22(日) 23:12:36.53いやこのスレ真性がいるぞ
0452デフォルトの名無しさん
2011/05/22(日) 23:13:31.69そうでないときは動的なコード変更を使わないのかというと
やっぱり、危険だからなんだろうな。
0453デフォルトの名無しさん
2011/05/22(日) 23:21:53.060454デフォルトの名無しさん
2011/05/22(日) 23:23:16.81生産効率の話に変わったのか?w
0455デフォルトの名無しさん
2011/05/22(日) 23:24:00.150456デフォルトの名無しさん
2011/05/22(日) 23:24:55.090457デフォルトの名無しさん
2011/05/22(日) 23:26:04.51純粋関数型は実用性ない。
0458デフォルトの名無しさん
2011/05/22(日) 23:26:43.750459デフォルトの名無しさん
2011/05/22(日) 23:27:12.620460デフォルトの名無しさん
2011/05/22(日) 23:52:20.25さすが勝利宣言だけはしとかないと気が済まないんだなww
0461デフォルトの名無しさん
2011/05/23(月) 00:02:10.93勘違いされたことの方が興味があるな。
0462デフォルトの名無しさん
2011/05/23(月) 00:02:46.79急に止まったのは、
暴れてるのが一人しかいなかったってことじゃね?
0463デフォルトの名無しさん
2011/05/23(月) 00:03:18.710464デフォルトの名無しさん
2011/05/23(月) 00:04:42.53HaskellとRubyは駄目だ
0465デフォルトの名無しさん
2011/05/23(月) 00:14:27.31むしろこのスレタイから開発効率の話をしてると
勘違いしてる馬鹿が多い方が驚き
0466デフォルトの名無しさん
2011/05/23(月) 00:16:58.79圧倒的に静的言語のほうがいいでしょ。
0467デフォルトの名無しさん
2011/05/23(月) 00:17:41.29ケースバイケース
0468デフォルトの名無しさん
2011/05/23(月) 00:19:16.16ちょっとしたプロトタイプとかスクリプトなら動的言語がいい
規模が大きくなったら静的言語のが楽
0469デフォルトの名無しさん
2011/05/23(月) 00:20:36.01インタプリタやブラウザ組み込み言語のメリットはわかるけど。
0470デフォルトの名無しさん
2011/05/23(月) 00:29:05.84巷に喧伝されているメリットで納得出来ないなら、君にはメリットが無いって事じゃないの
簡単な話
0471デフォルトの名無しさん
2011/05/23(月) 00:30:25.36みんな眉唾ものじゃないか。
0472デフォルトの名無しさん
2011/05/23(月) 00:33:38.09>>470
0473デフォルトの名無しさん
2011/05/23(月) 00:35:32.90動的言語のメリットなんて
みんな眉唾ものじゃないか。
0474デフォルトの名無しさん
2011/05/23(月) 00:35:34.550475デフォルトの名無しさん
2011/05/23(月) 00:36:29.45ググリんしゃい
0476デフォルトの名無しさん
2011/05/23(月) 00:36:46.200477デフォルトの名無しさん
2011/05/23(月) 00:37:37.630478デフォルトの名無しさん
2011/05/23(月) 00:38:18.370479デフォルトの名無しさん
2011/05/23(月) 00:39:56.41http://hibari.2ch.net/test/read.cgi/tech/1302963535/
0480デフォルトの名無しさん
2011/05/23(月) 00:40:14.980481デフォルトの名無しさん
2011/05/23(月) 01:09:33.08思い立ったときに、ちゃっちゃっとコーディングして試せる。
いちいちクソ重いEclipse立ち上げて、フロジェクトつくってとかしなくても
すぐにできる。ちゃっちゃっとできる。
Pythonとか、Rubyは、標準で対話型のインタプリタがついてるから、トライ&エラー
ですぐに試せる。すぐに。あれ、構文これでいいんだっけ?って時もちゃっと試せる。
外部ライブラリもお手軽に使えて、PythonのBeautifulSoupとか、便利すぎて涙が
出てくる。
Perlは、コマンドラインオプションの機能が強力だから、ちょっとしたテキスト加工とか、
サイトのコンテンツを取得して加工とか解析とか、エディタを開くまでもなくできたりする。
ワンライナーで、ほんと、Javaなら何行も書かないとできないようなこともパッと試せる。
このお手軽さは、コンパイル言語にはない気楽さであり、楽しさでもある。
ライブラリのインストールも超お手軽。PerlならCPAN、RubyならGems、PythonならPyPI
しゅっと入れて、しゅっと試せる。ちょーお手軽。
とにかく、思い立った時に、しゅっと書けて、しゅっと試せるのが便利。なれたら、脊髄反射
で、手が勝手に動いてる。
Javaだとこうわいかない。さぁコーディングするぞという心構えが必要。ちょっと汗かく。
0482デフォルトの名無しさん
2011/05/23(月) 01:14:44.11ライブラリインストール以外はJDKなら差がない。
構文のチェックはコンパイラのほうが優しいし。
ワンライナーはそうだろうね。
そういうメリットは大規模になるとなくなる。
ちなみにワンライナー以上のプロトタイプならブラウザでJavascriptのほうが楽しい。
この話は動的とは直接関係ないな。
0483デフォルトの名無しさん
2011/05/23(月) 01:15:12.110484デフォルトの名無しさん
2011/05/23(月) 01:16:10.79ワンライナーにユニットテスト書くかい?
ユニットテストが必要となるようなものは
もとから気軽に作っていいものじゃない。
今話しているのはそういう大規模なアプリだ。
0485デフォルトの名無しさん
2011/05/23(月) 01:18:14.22動的言語だから気楽にできるというのではなく
気楽に作っていい程度の物は動的言語でいいってだけの話。
ソフトウェアを作るときは言語を先に決めるもんじゃない。
0486デフォルトの名無しさん
2011/05/23(月) 01:19:23.06何やるにもJavaじゃないと気が済まないの?
Javaしか知らないんじゃないかしらと勘ぐってしまうわ。
0487デフォルトの名無しさん
2011/05/23(月) 01:20:16.740488デフォルトの名無しさん
2011/05/23(月) 01:21:50.150489デフォルトの名無しさん
2011/05/23(月) 01:22:18.69プロトタイプ作りとしてはあまり約にたたないわな。
0490デフォルトの名無しさん
2011/05/23(月) 01:23:00.45おれはもっと動的な機能削除して欲しいけど。
0491デフォルトの名無しさん
2011/05/23(月) 01:23:56.92クラス型風にかけるよ。プロトタイピングなら十分。
そのまま最後まで書こうとは思わないけど。
0492デフォルトの名無しさん
2011/05/23(月) 01:24:01.91大規模開発ってのを、土方率いて開発しろって意味だというなら
まったくもってその通りだわ。
0493デフォルトの名無しさん
2011/05/23(月) 01:25:03.44土方と書けば自分が優位に立った気分なんだろうけど
実際おまえも土方レベルだよ。そしてお前のレスは正しい。
0494デフォルトの名無しさん
2011/05/23(月) 01:25:29.23そりゃJava土方の独壇場だもんな。技術的優位性という意味ではなくて。
0495デフォルトの名無しさん
2011/05/23(月) 01:27:08.55じゃあ、お前にとってつまらなくないアプリは何だ?
0496デフォルトの名無しさん
2011/05/23(月) 01:28:21.98Java。
つーか最近の静的言語は
動的言語の機能を取り入れてるんだよ。
0497デフォルトの名無しさん
2011/05/23(月) 01:28:24.490498デフォルトの名無しさん
2011/05/23(月) 01:28:48.24設計レベルのレビューなら、PlantUMLで十分だろ。ちゃっちゃっとできるよ。
0499デフォルトの名無しさん
2011/05/23(月) 01:29:02.67業務用以外で大規模アプリ作ってから粋がってね。
オープンソースでももちろんいいよ。
0500デフォルトの名無しさん
2011/05/23(月) 01:30:48.52コード書かずに設計する人間を信用しろといわれましても・
0501デフォルトの名無しさん
2011/05/23(月) 01:30:55.23業務系アプリ以外ならなんでも楽しいよ。
0502デフォルトの名無しさん
2011/05/23(月) 01:32:16.37なんだって聞いてるだろ。
言っとくがな、ほとんどのアプリは
業務アプリとしても作られてるんだぞ。
0503デフォルトの名無しさん
2011/05/23(月) 01:33:19.54お前まさか、DBアクセスのプロトもJavaScript使ってんの? すごいね。執念だね。
0504デフォルトの名無しさん
2011/05/23(月) 01:33:49.95つまんね
0505デフォルトの名無しさん
2011/05/23(月) 01:34:18.980506デフォルトの名無しさん
2011/05/23(月) 01:36:33.10いや別にお前も土方だし
0507デフォルトの名無しさん
2011/05/23(月) 01:36:54.72土方って付けてやろう。
で、お前は何の動的言語を使ってるんだ?
動的言語土方
0508デフォルトの名無しさん
2011/05/23(月) 01:37:24.78何の言語を使っているかは言いません。
0509デフォルトの名無しさん
2011/05/23(月) 01:38:54.43顔真っ赤すぎるwww
0510デフォルトの名無しさん
2011/05/23(月) 01:39:13.14鏡見たの?
0511デフォルトの名無しさん
2011/05/23(月) 01:40:08.98それは、既存のルールに縛られざるを得ないからだよ。
ルールの作成者こそが絶対神であり、そのルールの施行者
が神の下僕であり。その施行者のために、虐げられながら
神がつくったルールに背くことなく、尽くさなければなら
ないからだよ。
創造力とか、工夫とか、人間としての好奇心とか、そんな
ものがはなから否定されてる世界だからだよ。
神の理不尽なお告げにひたすらしたがわなければならない
からだよ。
0512デフォルトの名無しさん
2011/05/23(月) 01:41:25.32いや、別に業務系じゃなくても
Java使ってるし。
何を勘違いしてるんだ?
恥ずかしいぞ。
0513デフォルトの名無しさん
2011/05/23(月) 01:43:00.74で想像力溢れるお前の作ったプログラムはなんですか?
0514デフォルトの名無しさん
2011/05/23(月) 01:44:12.17業務系じゃなくても
大規模で、大人数でやってるなら
ルールは必要なもんだ。
そのルールを作るのが創意工夫ってもんだ。
お前は使われる人間の器だから
ルールは誰かが作る物って発想しか出てこないんだよ。
0515デフォルトの名無しさん
2011/05/23(月) 01:45:22.74Googleさえも、大衆に迎合したかと。
ま、でも、掴みだけ抑えて、そのうちGo言語に移行するだろうけどね。
0516デフォルトの名無しさん
2011/05/23(月) 01:46:35.81おまえ薄っぺらさがにじみ出てるぞ
0517デフォルトの名無しさん
2011/05/23(月) 01:47:39.03まさに、丼の中のトンカツ
0518デフォルトの名無しさん
2011/05/23(月) 01:48:25.35まさに、丼の中のトンカツ
0519デフォルトの名無しさん
2011/05/23(月) 01:48:47.81それは、つまらないことを、
一行しか書いてないお前よりもか?w
0520デフォルトの名無しさん
2011/05/23(月) 01:53:12.17そしたら自分のルールで好き勝手やれるんだからさ。
ただそいういうやつはチーム開発に向かない。
ちっさな人生で終わっとけ。
0521デフォルトの名無しさん
2011/05/23(月) 01:56:19.86世の中のイノベーションは、個人の力で始まるんだぜ。
0522デフォルトの名無しさん
2011/05/23(月) 01:58:10.73そうなるとルールは絶対に必要になる。
ルールという言い方が嫌なら、アーキテクチャと言い換えてもいい。
何にせよ、それに従った開発が求められる。
0523デフォルトの名無しさん
2011/05/23(月) 01:59:19.550524デフォルトの名無しさん
2011/05/23(月) 02:00:55.080525デフォルトの名無しさん
2011/05/23(月) 02:01:51.11それはお前が偉くないからだ。
悔しかったら力をつけろ。
0526デフォルトの名無しさん
2011/05/23(月) 02:03:41.420527デフォルトの名無しさん
2011/05/23(月) 02:03:47.890528デフォルトの名無しさん
2011/05/23(月) 02:05:31.13周りが憐れむだけのスレでしたね
0529デフォルトの名無しさん
2011/05/23(月) 02:06:04.20涙目でそんなこと言われてもなーw
0530デフォルトの名無しさん
2011/05/23(月) 02:11:06.73Java厨の負け惜しみが心地よいわ。ふぅ..
0531デフォルトの名無しさん
2011/05/23(月) 02:12:41.33絶対だぞ。
0532デフォルトの名無しさん
2011/05/23(月) 02:16:01.80負け犬の遠吠えだなw
0533デフォルトの名無しさん
2011/05/23(月) 02:19:23.76【今日の格言】
Java厨は丼の中のトンカツ
0534デフォルトの名無しさん
2011/05/23(月) 02:20:13.140535デフォルトの名無しさん
2011/05/23(月) 02:36:29.48アホなこと言い出してスレが伸びただけ。
勝敗をつけるなら静的言語の勝ちだけど、恥をさらしたのはJava厨。
0536デフォルトの名無しさん
2011/05/23(月) 02:37:32.220537デフォルトの名無しさん
2011/05/23(月) 02:40:01.15他にどんなことが可能になるかって考える発想力がなかったんだな。
0538デフォルトの名無しさん
2011/05/23(月) 02:44:40.68具体的なことを書くと突っ込まれるから
そうやってトボケることをやっと覚えたんだねwww
0539デフォルトの名無しさん
2011/05/23(月) 02:45:12.430540デフォルトの名無しさん
2011/05/23(月) 02:46:34.25具体的なことを言わなかったのは
お前も一緒じゃね?
0541デフォルトの名無しさん
2011/05/23(月) 03:17:51.46ただ、テストやコンパイルも含めて、その保証が出来るか。信用して貰えるかの問題
静的型言語でさえ、バグが潜んでるのに、コンパイラ通さない動的型言語がお偉いさんに信用して貰えるか?
ココだけだな。問題は
人間はミスをするもの
テストの想定外のケースも有る
それを念頭に置かないとな
0542デフォルトの名無しさん
2011/05/23(月) 04:04:46.13テストをやってれば大丈夫っていうのは
一体何の冗談なのかね?w
0543デフォルトの名無しさん
2011/05/23(月) 04:08:06.07そもそもの話にしてしまうと、既に話は決まってる
どちらも等質で、不合理が起こったときに「いつ」「誰が」不便を被るかの違いに過ぎない
夜寝ない人の暇潰しに付き合う義理はないよ
0544デフォルトの名無しさん
2011/05/23(月) 08:07:33.11テストを書かないどころか実行することさえ
面倒って書いてたのはJava土方だけwww
まったく恥ずかしくないのかねw
0545デフォルトの名無しさん
2011/05/23(月) 08:32:53.23テスト書かないのはお前だけ。
お前は土方だからな。
0546デフォルトの名無しさん
2011/05/23(月) 09:03:53.27言ってた奴はひとりもいない
0547デフォルトの名無しさん
2011/05/23(月) 10:13:17.73最初にファイル作ってからアプリケーションを公開してしばらくデバグするまでの総合時間及び手間の総計は、
よっぽどどっちかの言語に特化した尖ったプログラムでもない限り、どっちもだいたい同じだと思う
0548デフォルトの名無しさん
2011/05/23(月) 12:13:03.83安全なプログラムを組むことは可能ってことでFA
0549デフォルトの名無しさん
2011/05/23(月) 12:35:29.410550デフォルトの名無しさん
2011/05/23(月) 16:24:32.670551デフォルトの名無しさん
2011/05/23(月) 17:04:20.540552デフォルトの名無しさん
2011/05/23(月) 18:09:27.450553デフォルトの名無しさん
2011/05/23(月) 18:13:44.71しかしスレがここまで伸びるとは
やっぱり静的/動的言語の間の壁って半端ないのな
0554デフォルトの名無しさん
2011/05/23(月) 18:17:05.060555デフォルトの名無しさん
2011/05/23(月) 18:20:58.650556デフォルトの名無しさん
2011/05/23(月) 18:42:40.83個人競技しか想定してないし
集合知(笑)では安全なソフトは作れないと思ってる
0557デフォルトの名無しさん
2011/05/23(月) 19:00:34.52> 変えた時点で見つからなければ修正に時間がかかる。
CIサーバつかってれば、*手元でコンパイルする前に*privateメソッドの欠如が判明するが?
おまえ、他の奴も言ってたけど、マジでチーム開発経験ないだろ…
0558デフォルトの名無しさん
2011/05/23(月) 20:02:18.45関数単位程度でいいから自動的にコンパイル時にテストするぐらいしてくれ
0559デフォルトの名無しさん
2011/05/23(月) 20:09:04.80さっきスタートレックみたばっかりの俺もクリンゴン語を思い出してしまった
0560デフォルトの名無しさん
2011/05/23(月) 20:10:53.32Eiffelのように、関数ごとに事前条件と事後条件をアサーションとして記述すれば、
あと10年もしたら各関数の事前条件と事後条件からテストデータを自動生成してくれるようになる。
0561デフォルトの名無しさん
2011/05/23(月) 21:56:09.110562デフォルトの名無しさん
2011/05/23(月) 21:58:54.89> CIサーバつかってれば、*手元でコンパイルする前に*privateメソッドの欠如が判明するが?
サーバー側でコンパイルすればわかるって話だろ?
静的言語なら。
0563デフォルトの名無しさん
2011/05/23(月) 22:01:25.16サーバーに処理を投げてから
答えが帰ってくるまで時間がかかる
0564デフォルトの名無しさん
2011/05/23(月) 23:08:45.040565デフォルトの名無しさん
2011/05/23(月) 23:20:47.06_,,;;=二,ヾ ! / /~ _,,--''''~ゝ
./'~ヾ,ヽ ヽ!iノ /,,=二─'''' ̄~~ヽ
)⌒ヾ,厂~''^^''~~''''~''''=二~~ヽi,
ヽ⌒i 土方歳三 )ゞ,,~''-,,_i
ソノi _,,,,,_ ヾ ~ヾ, (
(( /| ,==,, ヽ,-'''' ~' く~ヾ, ヽ,ミ
ヾi .i ;''ゝ''ヽ. ソ'ゝ'''ゝ ミvレ'ヽ
ヽ! ´ ::i ` ´ :i|'ソノ'!ヽ!
'!, /ノ ヽ i-''~i: | |
.i, `_~´ |~ゝiノ'
そうだな> ヽ ~ -- ̄` /ノ~(
'i, _,,-'',/ / |
_,,-''i~ ゝ--=二-''~ //~''ヽ,_
_,,-'i :i'-,,_- ̄ _,,--''_,-| i~'i-,,,,_
_,,-'''' ̄~ / |''--ヾ,ノ,;;-'''~ :|, :| |: ~''''--,,_
,ノ '! | ̄~'ヽ, :| /o'' ∧ :| ' / ヽ
/''- :| /| \| |o | \_,,,,─''''~| / _;;-ゝ,
/ :| / ! | |o :| | / / i
/-,, |:/ :| :| :|o | ,!,! /_,,-'''' ̄''ゝ
/,,_ ~'''-,,_レ :| | :|o;;, | /:| /' '' ̄''|
| ~''-,,_ :| :| | |o◎ :| / :| / ヽ
0566デフォルトの名無しさん
2011/05/24(火) 01:28:26.220567デフォルトの名無しさん
2011/05/24(火) 01:54:56.350568デフォルトの名無しさん
2011/05/24(火) 03:28:45.31どのくらいまでいってコンパイラが出す程度のエラーはテストで出し切れるって認識なのか知りたい。
0569デフォルトの名無しさん
2011/05/24(火) 04:54:48.86テストに出ない所を勉強するやつはいなくなる
0570デフォルトの名無しさん
2011/05/24(火) 05:02:00.89CIサーバがチェックインのたびに単体テスト動かせば、
動的言語だろうが静的言語だろうが、
チームメンバーがチェックアウトする前にprivateメソッドの欠如が判明する。
安全うんぬん言うんだから、これぐらい常識だと思っていたのだが。。。
0571デフォルトの名無しさん
2011/05/24(火) 05:03:31.73カバー率90%、テスト成功率100%を切ったらチェックイン拒否してます。
0572デフォルトの名無しさん
2011/05/24(火) 05:09:13.71つうかさ、privateメソッドの話だろ?
privateメソッドなんてそもそも同名なメソッドは少ないんだから、
その名前のメソッド叩いてる箇所を総チェックしても問題ない。
ポリモーフィズムが高くなって単純な文字列検索じゃ厳しいのはpublicなメソッドだ。
publicなメソッドだったらどのみち自分勝手な変更は許されないだろ。
まずはチーム内外のコンセンサスを得る必要がある。
だから静的型だろうが動的型だろうが大差ない。
したがって、privateメソッドでもpublicメソッドでも、
メソッド名変更とかやる程度の話じゃ、動的型も静的型も大差なし。Q.E.D.
0573デフォルトの名無しさん
2011/05/24(火) 06:43:48.20たぶんJava厨はEclipseのリファクタリング機能で
メソッド名の変更が出来るのを開発に重要な機能だと
勘違いしたんだろうね
0574デフォルトの名無しさん
2011/05/24(火) 08:32:21.610575デフォルトの名無しさん
2011/05/24(火) 10:13:22.840576デフォルトの名無しさん
2011/05/24(火) 11:32:00.640577デフォルトの名無しさん
2011/05/24(火) 11:47:33.54勝手にインターフェース変更すんなよw
0578デフォルトの名無しさん
2011/05/24(火) 12:11:00.200579デフォルトの名無しさん
2011/05/24(火) 12:46:30.970580デフォルトの名無しさん
2011/05/24(火) 13:50:36.990581デフォルトの名無しさん
2011/05/24(火) 14:58:25.210582デフォルトの名無しさん
2011/05/24(火) 14:58:29.400583デフォルトの名無しさん
2011/05/24(火) 16:25:46.070584デフォルトの名無しさん
2011/05/24(火) 16:54:02.350585デフォルトの名無しさん
2011/05/24(火) 17:51:30.060586デフォルトの名無しさん
2011/05/24(火) 17:57:51.06書き込むスレ間違ってない?
0587デフォルトの名無しさん
2011/05/24(火) 19:52:29.180588デフォルトの名無しさん
2011/05/24(火) 20:24:35.07Perlはあんま土方ってイメージない。おっさんとか爺さん、老害ってイメージ。
0589デフォルトの名無しさん
2011/05/24(火) 21:45:02.150590デフォルトの名無しさん
2011/05/25(水) 01:27:56.57> その名前のメソッド叩いてる箇所を総チェックしても問題ない。
その名前のメソッド叩いてる箇所を総チェックする必要がある。
> まずはチーム内外のコンセンサスを得る必要がある。
得たあとはどうする? 結局変更するだろ?
反論終わり
0591デフォルトの名無しさん
2011/05/25(水) 01:30:09.92現実として起こっていることを
知らないみたいだよね。
0592デフォルトの名無しさん
2011/05/25(水) 01:39:33.200593デフォルトの名無しさん
2011/05/25(水) 01:49:29.46修正するのとは別のレイヤーの話であって全く関係ないよね。
むしろ簡単な修正であっても同意が得られないとしたら
それは動的言語だと静的言語に比べて影響範囲が分かりづらいからじゃね?
って話になるだろうね。
一回作成したpublicメソッドを、何があっても絶対に変更してはならない。
なんてコーディング規約の会社だったら、開発はすごく窮屈だろうね。
あ、何万のユーザーがいるオープンソースライブラリの話なんかしてないよ。
よくある一般的なソース非公開のデスクトップアプリやウェブサービスの話だ。
ということでpublicメソッドでも変更することはありえます。そーいう前提で。
変更しやすいのはどっちなのか、言うまでもない。
0594568
2011/05/25(水) 01:49:41.02冗談とか嫌味抜きで羨ましいな。そこまでテストに理解のある人間が上にいる会社なのか。
0595デフォルトの名無しさん
2011/05/25(水) 01:53:45.69メソッド名の変更作業です
0596デフォルトの名無しさん
2011/05/25(水) 01:58:01.060597デフォルトの名無しさん
2011/05/25(水) 02:04:09.900598デフォルトの名無しさん
2011/05/25(水) 02:04:11.76学術的(笑)に書けば権威に騙されるだろうw
静的言語ではRename Methodと呼ばれるリファクタリングが適用しやすい
http://en.wikipedia.org/wiki/Rename_method
> Rename method
> From Wikipedia, the free encyclopedia
> Rename Method is a refactoring that changes a name of
> a method into a new one, that better reveals its purpose.
> To have clearer, more understandable code, programmers
> would optimally want to change method names to reflect exactly what the method does.
0599デフォルトの名無しさん
2011/05/25(水) 02:07:52.53リファクタリングを適用しやすいのは明らかに静的言語だよ。
リファクタリングカタログ(英語)
http://www.refactoring.com/catalog/index.html
こっちに93個のリファクタリング技法がのってるけど
半分ぐらいは静的言語なら簡単に適用できるはず。
0600デフォルトの名無しさん
2011/05/25(水) 02:16:03.01> Add Parameter
引数が変わるとンパイルエラーがでるから修正箇所が分かりやすい
> Collapse Hierarchy
Salesmanクラスを参照しているところを見つけやすし。
> Extract Class
Extractしたクラスで元のクラスの参照を見逃しているとエラーが起きる
> Extract Method
引数にし忘れるとエラーになる
ほんの少し見ただけだけど、静的言語のほうがリファクタリングが楽だね。
0601デフォルトの名無しさん
2011/05/25(水) 02:22:10.03めでたいことだ。
0602デフォルトの名無しさん
2011/05/25(水) 02:26:27.040603デフォルトの名無しさん
2011/05/25(水) 02:28:00.06土方なんて言うヤツのほうが無知なのでは?
0604デフォルトの名無しさん
2011/05/25(水) 02:29:28.640605デフォルトの名無しさん
2011/05/25(水) 02:32:10.40このスレでリファクタリングという言葉が使われていることを見れたはずだ。
つまり「土方」という言葉を使ってるやつは、過去レスみないで叩いている。
しかもメソッド名の変更が、リファクタリングカタログにも乗っている
テクニックであることを知らずに馬鹿にしているだけと露呈してるんだよ。
0606デフォルトの名無しさん
2011/05/25(水) 02:35:06.12無知なんて言う奴のほうが池沼なのでは?
0607デフォルトの名無しさん
2011/05/25(水) 02:43:11.59このスレで土方という言葉が使われていることを見れたはずだ。
つまり「無知」という言葉を使ってるやつは、過去スレみないで叩いている。
しかも、Java厨が、土方のカタログにも乗っている
底辺であることを知らずに馬鹿にしているだけだと露呈してるんだよ。
0608デフォルトの名無しさん
2011/05/25(水) 02:48:46.14あーあw
0609デフォルトの名無しさん
2011/05/25(水) 02:53:45.17たしかにテストコードがあれば、エラーが出たということは分かる。
だけど、どこでエラーがでたか具体的な場所を表示できるかどうかでみれば、
構文チェックがあれば、テストコードよりも具体的な場所を
指摘できることがある。
例えば引数の数が増えたときとか。
構文チェックもテストコードの一つと考えれば、
テストコードは多いほうがいいと気づくと思うんだがねぇ。
0610デフォルトの名無しさん
2011/05/25(水) 03:04:05.27そりゃやぺーな、JavaScriptとか危険すぎるな。Ajaxとか使ってる場合じゃないな。
おー、こわい、こわい
0611デフォルトの名無しさん
2011/05/25(水) 03:05:56.150612デフォルトの名無しさん
2011/05/25(水) 03:17:18.78静的型言語も必ずしも安全と言う訳じゃないけど、危険度で言えばイエス
結局は開発者の技量の方が重要だけど
0613デフォルトの名無しさん
2011/05/25(水) 03:20:35.90国語力も必要ですね
0614デフォルトの名無しさん
2011/05/25(水) 05:56:46.39> その名前のメソッド叩いてる箇所を総チェックする必要がある。
privateメソッドの話だよな?
たかがクラス内の参照をチェックするのがそんな大変なのか?
だとしたら、おまえ、プログラマの適性ないわ。
> 得たあとはどうする? 結局変更するだろ?
コンセンサスを得たあと、一人で全部修正するのか?
depricateしたりして「穏やかに」移行していくんだろが。
断言できる。お前は「本物の」開発にプログラマとして参加した経験がない。
0615デフォルトの名無しさん
2011/05/25(水) 06:00:55.73Java衷がドヤ顔してるねぇw
0616デフォルトの名無しさん
2011/05/25(水) 07:51:58.99動的言語でもエラーチェックできる。
ただ、自動テストの実行終了が待てないくらい
Java厨は頻繁にインターフェース変更するんだってwww
0617デフォルトの名無しさん
2011/05/25(水) 08:31:09.11お前はプログラマに向いてないな。
機械で自動化できることをしないで、
自分の目で捜すということをしている時点で
向いてないよ。
大変かどうかではない。どれだけ楽をするか。
怠慢というプログラマ三大美徳を知らんようだ。
> コンセンサスを得たあと、一人で全部修正するのか?
一人で修正しようが、なんだろうが修正することに変わりはないだろ。
静的言語なら、@deprecatedとマークを付けることでコンパイル時に
このメソッドを使っていると警告を出すことだってできる。
何にせよ修正するとき静的言語のほうがリファクタリングが楽になることは事実なのだ。
> お前は「本物の」開発にプログラマとして参加した経験がない。
そうやって決め付ける。決め付けないと満足できないんだな。
そういうのは「お前の母ちゃんデベソ」と言ってるレベルだと気づけ。
0618デフォルトの名無しさん
2011/05/25(水) 08:34:17.250619デフォルトの名無しさん
2011/05/25(水) 08:37:43.45「俺の開発が本物だ!」キリッ
とか言いたいのか?www
0620デフォルトの名無しさん
2011/05/25(水) 09:04:21.55とてもプログラマとは呼べないカスが多数チームに居る。
彼らはバグだらけのコードをチェックインしたりするので
居るだけでマイナスの存在なんだが、だからといって
簡単にチームから外したりクビにすることも出来ない。
ではどうするか。
Javaのような静的言語なら、そういうカスPGにはどこからも参照されない
無害なモジュールを延々リファクタリングさせる。
これなら正しいコードを破壊されることも無いし、少なくともコンパイルできない
コードがチェックインされる心配も無い。
しかも、実際には穴掘って埋めるような虚しい行為にも関わらず
何故かJava土方は嬉々としてやるので、彼らが鬱になったりする心配もなし。
というわけで、底辺における大規模開発ではJavaのような静的言語しか
使えないわけ。Q.E.D.
0621デフォルトの名無しさん
2011/05/25(水) 09:22:38.240622デフォルトの名無しさん
2011/05/25(水) 09:49:12.640623デフォルトの名無しさん
2011/05/25(水) 09:51:25.770624デフォルトの名無しさん
2011/05/25(水) 10:11:34.91他の言語でも同じだよな
動的言語ではOOPしない方が良い
OOPに懐疑的な人に向いている
0625デフォルトの名無しさん
2011/05/25(水) 10:46:44.91>>620の土方プログラマには動的言語は荷が重い。
それ以外なら、開発における比重も頻度も低いので問題ない。
0626デフォルトの名無しさん
2011/05/25(水) 10:58:45.88動的言語だと1万行超えたあたりからつらくなる
0627デフォルトの名無しさん
2011/05/25(水) 11:28:01.710628デフォルトの名無しさん
2011/05/25(水) 11:42:09.57重いIDE立ち上げてプロジェクト作る手間が省ける
それ以上なら静的言語使った方が楽
0629デフォルトの名無しさん
2011/05/25(水) 12:03:25.420630デフォルトの名無しさん
2011/05/25(水) 12:15:35.310631デフォルトの名無しさん
2011/05/25(水) 12:23:27.15動的言語で1万行とか、普通そんなにダラダラ書かないぞ。
動的言語の用途だとせいぜい長くとも1000行ぐらい。
0632デフォルトの名無しさん
2011/05/25(水) 12:55:22.380633デフォルトの名無しさん
2011/05/25(水) 13:33:07.58良くも悪くもFA
0634デフォルトの名無しさん
2011/05/25(水) 13:37:48.260635デフォルトの名無しさん
2011/05/25(水) 13:42:55.140636デフォルトの名無しさん
2011/05/25(水) 13:44:23.29javaは静的な。
>>634
ムダだらけ。
ビジネスロジックを書いてるなら動的は危険だからやめろ。
0637デフォルトの名無しさん
2011/05/25(水) 13:45:41.450638デフォルトの名無しさん
2011/05/25(水) 13:49:24.410639デフォルトの名無しさん
2011/05/25(水) 13:50:07.560640デフォルトの名無しさん
2011/05/25(水) 13:56:13.95設定ファイルはプログラムじゃないよ。
0641デフォルトの名無しさん
2011/05/25(水) 16:46:37.60動的型言語でも、privateメソッド叩いている箇所は
自動的に処理できるよ。
だって、privateなんだもんw
型に詳しい君には理由は明白だよな?w
0642デフォルトの名無しさん
2011/05/25(水) 16:47:55.59Javaにも動的型検査があることは無視かい?
0643デフォルトの名無しさん
2011/05/25(水) 17:22:10.50まあ、そんなもんだな。
そんでもって、同じ仕様から実装しても、それぐらいのコード量の比率になる。
0644デフォルトの名無しさん
2011/05/25(水) 17:24:17.590645デフォルトの名無しさん
2011/05/25(水) 17:25:26.13おかしな連中だもん。
日本のIT業界のレベル低すぎだと思う。
0646デフォルトの名無しさん
2011/05/25(水) 17:28:54.99そもそも、メソッド名や変数名の変更なんてものは、リファクタリングのごく一部であって、他に、
メソッドやクラス、インターフェースの抽出、分岐処理のポリモーフィズム化、メンバの移動、
継承と委譲の変更、デザインパターンの適用、引数オブジェクトの導入...等など、場合によっては
既存コードにドラスティックに手を加える必要もあるわけで、その場合、コンパイルのチェックなど
ほとんど手助けにならないし、これらのリファクタリングを勇気をもって実施するためには、結局、
ユニットテスト用のコードが必要になってくる。そして一般的にリファクタリングという場合、これ
らのケースで実施されることの方が多いだろう。
静的型付け言語だから、テストの手を抜いてよいという話ではないし、静的型付け言語だから安全
なんだと自慢できるほどシステム開発は呑気なものではない。
ジャバ厨の主張は、医療保険に入っているから煙草も酒も気楽にやれるよと言ってるようなものであり、
そもそもなぜ病気にかかるのか、病気にかからないためにはどうすればよいのかいう、より重要なこと
を疎かにしているんだろう。むろん医療保険に入るにこしたことはないが、日頃から健康に気を使い、
検診を受けている健康な人にとっては、それほど大きな問題ではないのだよ。
0647デフォルトの名無しさん
2011/05/25(水) 17:30:27.17彼らの仕事を否定しちゃ可哀想だよ
0648デフォルトの名無しさん
2011/05/25(水) 17:39:49.45静的型付け言語は型テストがコンパイル時に終わるので、
テストが大幅に楽になるよ。
0649デフォルトの名無しさん
2011/05/25(水) 17:45:46.36静的型言語であっても動的型検査が必要な言語が多いですが。Javaとか。
0650デフォルトの名無しさん
2011/05/25(水) 17:48:18.10動的型ではtypoが見つからないとか、いつの時代よ?
0651デフォルトの名無しさん
2011/05/25(水) 17:54:10.35静的型付け言語だから、テストが楽になるという話は聞いたことないな。
関数の仕様として、INとOUT、引数のとりうる値が明確に定められていて、
それに対するテストが必要だとして、静的型付け言語だからという理由で
いったいどれだけ、テストが楽になるというんだ。
そもそもテストを作るときに、静的型付け言語だからこれはやらなくていい
なとか項目を選りわけて作ってるのか? そんな話聞いたことない。
0652デフォルトの名無しさん
2011/05/25(水) 17:55:29.78typoだけでなく、横着して意図的に型を無視した処理を防止する意味でも静的型付けは有効だよ。
0653デフォルトの名無しさん
2011/05/25(水) 18:04:20.84引数に文字列を入れてエラーが出る、とかよくあるじゃん。
整数しか認めていないよ、ということをコンパイラが検出してくれるのは大助かり。
0654デフォルトの名無しさん
2011/05/25(水) 18:12:09.12function add_prefix($str) {
return 'prefix_' . $str;
}
これを
$res = add_prefix('hoge'); // 引数が文字列
と 呼ぼうが、
$res = add_prefix(100); // 引数が数値
と呼ぼうが
PHP的には間違いじゃないんだよ。むしろ、この融通性が動的言語のメリットとも言える。
引数が誤ったものかどうかは、呼び出し側のコンテキストによるが、それを見逃すリスクと
利便性を計りにかけて、利便性をとったのが動的言語といえる。この利便性のおかげで
コード量が減りバグが混在するリスクを減らし、生産性を高めている。
むろん、コーディングする側は、型指定がないことのリスクを認識した上でコーディング
する必要があるが、それに十分見合うだけの利益を享受している。
もし、引数として数値を認めたくない場合は、関数内にassert文なり、型チェックのコード
をいれとくさ。
0655デフォルトの名無しさん
2011/05/25(水) 18:20:35.95そのメリットを静的型付けで実現するために型推論があるんだよ。
Haskellでは型を明記しなくてもほとんど推論してくれるから、
動的言語のメリットを持ったまま型の安全性を確保できるようになった。
0656デフォルトの名無しさん
2011/05/25(水) 18:25:50.28DBにいれるときや、DBから取り出すときに、いちいち相互の型に
変換しなけりゃいけないのが面倒くさいよね。
特に日付まわりとか、Date型だったり、Timestamp型だったり、
文字列型だったりするから、それをJavaの型と相互変換とか、
関数化してはあっても、フィールド数が多かったりすると、いちいち
それを通すのが面倒くさかったりするよね。
まぁ最近は、ORMとかつかったりする場合もあるけど、それでも
設定ファイルを書くときに意識しないといけなかったりとか、面倒
くさいよね。
0657デフォルトの名無しさん
2011/05/25(水) 18:36:19.84その辺は動的言語だって型変換は必要だろう。
0658デフォルトの名無しさん
2011/05/25(水) 18:40:27.450659デフォルトの名無しさん
2011/05/25(水) 18:41:24.47オブジェクトをnewして、フォーマッタやカレンダをnewして、パースして、とかしなくていいし。
0660デフォルトの名無しさん
2011/05/25(水) 19:12:17.21意図的に型を無視したプログラミングをしているのなら、
「きちんと」型を無視したプログラムを書けたほうがいい。
防止なんてされたら、その「意図」が達成されないじゃないか。
まあ、君にとっては動的型=悪なのだろう。
そこで思考停止しているのなら、単なる宗教だ。
0661デフォルトの名無しさん
2011/05/25(水) 19:13:47.45おいおい、Haskellは「型付け」を自動的に推論してくれるのであって、
「型変換」を自動的にやってくれやしないぞ。
なんだか付け焼刃だなあ。
0662デフォルトの名無しさん
2011/05/25(水) 19:57:54.130663デフォルトの名無しさん
2011/05/25(水) 20:13:42.65え?なんで型変換?
0664デフォルトの名無しさん
2011/05/25(水) 21:12:49.92その逆がダウンキャストだよね
0665デフォルトの名無しさん
2011/05/26(木) 01:21:56.370666デフォルトの名無しさん
2011/05/26(木) 01:31:11.14>>655じゃないが、>>654への回答として間違ってないだろ
多態性は自動でしてくれる
型変換とか、キャストの事だろ普通
紛らわしい
0667デフォルトの名無しさん
2011/05/26(木) 01:51:17.22そんなにめんどくさいならObject型を使えばいいよ。
それで静的言語特有の型チェックが失われて、
動的言語レベルまで落ちちゃうけどw
それよりもORMにさせれば面倒さはなくなって
しかも動的言語レベルに落ちない。
>>659
> い-や。DBから取り出した値を変数に代入するだけ。
> オブジェクトをnewして、フォーマッタやカレンダをnewして、パースして、とかしなくていいし。
日付型はアウトだね。データベースから取り出したとき文字なのか数値なのかわからない。
文字であっても、どういうフォーマットなのか不明だしね。
それから、フォーマッタやカレンダが出てくるときは、ユーザーからの入力されたということだから
どっちみちフォーマッタやカレンダが必要だよ。不正な文字列の場合もあるしね。
0668デフォルトの名無しさん
2011/05/26(木) 01:56:44.25リファクタリングのやりやすさは半端ないね。
テストコードがあってリファクタリングする。
ここまでは動的型言語でも静的型言語でも同じ。
違うのは、リファクタリング作業そのもの。
例えて言うならそうだね。マークシート方式のテスト。
テスト結果は自動化されてすぐに出る。
でもシャーペンで塗るのと、鉛筆で塗るのでは
作業の速さが段違いでしょ? それと一緒。
0669デフォルトの名無しさん
2011/05/26(木) 02:02:26.30これ、rubyやpythonじゃエラーにならね?
てか、phpでもホントに動くの?
自分、昔こんなコード試して、エラー出た覚え有るんだが
str = "hello" + 100
phpでは正しく動くって事?
$に秘密が?
rubyだとクラス変数が$で始まるんだけど、phpは違うって事?
0670デフォルトの名無しさん
2011/05/26(木) 02:06:37.77毎日毎日、9時から22時まで糞コードのリファクタリングしてますぅ。
22時から24までは次の仕様のコーディングしてますぅ。
JavaとEclipseを使ってなかったらと思うとぞっとしますう。
え、テストコードコード? そんなもん書いてませんよぉ。
そんなもん書く暇ないし、書き方しらないし、第一、上司がそんな工数くれませんよぉ。
でもリファクタリングはしますょぉ。えぇもう一日のほとんどはリファクタリングしてますよぉ。えへへっ
0671デフォルトの名無しさん
2011/05/26(木) 02:08:04.32お前がキモイ
0672デフォルトの名無しさん
2011/05/26(木) 02:08:40.170673デフォルトの名無しさん
2011/05/26(木) 02:12:26.47静的言語ならではだしな。
0674デフォルトの名無しさん
2011/05/26(木) 02:13:59.97コーディングではない。
だからコーディングはサクサク進められる
静的言語がいい。
本質的なところに集中するために
本質的ではないところは極力自動化すべき
0675デフォルトの名無しさん
2011/05/26(木) 02:14:06.620676デフォルトの名無しさん
2011/05/26(木) 02:16:57.88コード補完が手伝ってくれるから、全然苦になりませんよぉ。
なんか仕事したぁって気にさせてくれるから、一石二鳥ですよぉ。
0677デフォルトの名無しさん
2011/05/26(木) 02:20:07.88これは嘘です。
0678デフォルトの名無しさん
2011/05/26(木) 02:22:09.54動的言語なら1行で済むことを20行かかるけどぉ
0679デフォルトの名無しさん
2011/05/26(木) 02:22:14.94何一つ出てないよね。
静的言語じゃなくても、頑張れば追いつけるって話ばかりで。
0680デフォルトの名無しさん
2011/05/26(木) 02:25:14.74じゃあ、10倍速く作れよとか、
給料1/10でいいな?とか言ったら
たいてい黙るんだよなw
0681デフォルトの名無しさん
2011/05/26(木) 02:34:24.99Perlで書くと、
!/usr/bin/env perl
while (<>) { s/hoge/hage/; print; }
なんと、2行! ロジック部分はなんと1行。
これをJavaで書くと...
えぇぇぇぇぇぇぇぇぇぇぇぇぇぇ!
0682デフォルトの名無しさん
2011/05/26(木) 02:39:13.550683デフォルトの名無しさん
2011/05/26(木) 02:46:35.230684デフォルトの名無しさん
2011/05/26(木) 02:52:27.67ぐらい簡単に行くからな。
そのレベルになるととても動的言語ではやりたくなくなるよね。
動的言語が優れてるのはテストがいらないような
小さなスクリプトまで
0685デフォルトの名無しさん
2011/05/26(木) 02:56:22.49動的言語はコード量が静的言語とほとんど変わらなくなるよ。
これマジ。やってみ。
0686デフォルトの名無しさん
2011/05/26(木) 02:56:26.60そういえば、Java厨はコードを出してこないよねぇ。なんでだろ。
静的言語は安全っ!(`・ω・�)キリッ
こればっかりぃ なんでだろぅ!?
Perlはhtmlのタグを除去する処理も2行でかけちゃうんだよぉ。
#!/usr/bin/env perl
while (<>) { s/<.*?>//g; print; }
Javaで書くと何行かかるぅ?
たまにはコードでみせてちょうだい。土方の汚名を返上したければ。
0687デフォルトの名無しさん
2011/05/26(木) 03:03:01.950688デフォルトの名無しさん
2011/05/26(木) 03:13:04.05package Class;
sub new{
my $class = shift;
my $self = {};
return bless $self, $class;
}
sub foo {
my $self = shift;
my $value = shift;
print $value;
}
1;
これをJavaで書くと?
0689デフォルトの名無しさん
2011/05/26(木) 03:13:42.22ある程度の規模になると、逆にコードが長くなってしまう。
0690デフォルトの名無しさん
2011/05/26(木) 03:17:37.53この変数、この関数、このモジュール使われてるの?
ってやつだな。
ソースコード見て一見使ってないように見える。
実際使ってない。
なのにコンピュータはそれを教えてくれない。
馬鹿なのかって思う。
0691デフォルトの名無しさん
2011/05/26(木) 03:19:44.19なに最後の1ってwwだせええwww
Javaで>>686とか書こうとすると
なんちゃらReaderをchainingするところで心が折れるな
0692デフォルトの名無しさん
2011/05/26(木) 03:21:46.59あと行数だと改行しなかったもん勝ちだけどほんとにそれで良いのかな…
Perlの得意とする分野の処理はそりゃ短く書ける構文が用意してあるよね。
その代わり上でも書いてるように普通の何てことない処理を書くと長いか無駄な記号が増える。
かと言ってJavaありきで話進めても進展なさそうだから、scalaとかもーちょいまともなもので話進められないもんかね。
0693デフォルトの名無しさん
2011/05/26(木) 03:29:08.12>
> #!/usr/bin/env perl
> while (<>) { s/<.*?>//g; print; }
こう言うのはある意味害になってるよな。簡単にかけると勘違いしてる。
その場で書いてしまうから関数にするって発想に乏しい。
タグを除去するなら、タグを除去するという関数にした方がいい。
で関数にする手間がかかるが、一度関数にすればあとはそれを呼ぶだけ。
だから規模が大きくなるほどコード量の差はなくなってしまう。
あとなんで関数にするかというと、あとでバグを修正するためだよ。
たとえばこの例だと、スクリプトやコメント内の<や>にマッチして誤爆する。
動的言語は簡単なものにしか適用できないというサンプルかよ。
0694デフォルトの名無しさん
2011/05/26(木) 03:48:35.51Padre, the Perl IDE
http://padre.perlide.org/
これの素晴らしいところは、
PadreのPerl Application Development and Refactoring Environmentの
略からもわかるようにRefactoringに力を入れてるってところ。
つまりPerlでもIDEが自動的にRefactoringを行ってくれるんだよ。
試しにメソッドの抽出を行ってみ。
予想の斜め上をいった全く使いものにならない変換してくれるので
動的言語ではIDEのリファクタリングサポートにも限界があるってわかるw
0695デフォルトの名無しさん
2011/05/26(木) 03:51:14.08http://padre.perlide.org/trac/raw-attachment/wiki/Screenshots/Padre_0.47_Win7_autocomplete.jpg
Perlでもコード補完が動いているように見える。
でも実際には、パッケージ名:: ← この::を使った形式だけで
通常良く使われる$obj->ではコード補完してくれない。
なぜなら$objは型がないから補完すべきメソッドがわからない。
0696デフォルトの名無しさん
2011/05/26(木) 03:51:43.150697デフォルトの名無しさん
2011/05/26(木) 05:48:37.67途端に難しくならね?
0698デフォルトの名無しさん
2011/05/26(木) 07:06:48.22関数5つ以上使ってる例
Python実装のSchemeサブセット
http://norvig.com/lis.py
0699デフォルトの名無しさん
2011/05/26(木) 07:14:23.62厳密というか理論に忠実なものはただのオートマトンだから極めてシンプルだけど
最適化を考えると複雑になってしまうね
単純なクリーネ代数の性質を使った簡約ですら制約付きの項書き換えシステムを組まないといけないので
0700デフォルトの名無しさん
2011/05/26(木) 07:47:54.120701デフォルトの名無しさん
2011/05/26(木) 08:06:07.960702デフォルトの名無しさん
2011/05/26(木) 08:22:44.51メールアドレスの正規表現とかも馬鹿らしいしな。
正規表現は各パーツの形(メールアドレスだったら@の左の部分とか)を
識別するもので、全部を正規表現で表すのは見にくいし、
メンテナンスもしづらいだろう。
0703デフォルトの名無しさん
2011/05/26(木) 08:24:21.85すごく関係あるよ。
0704デフォルトの名無しさん
2011/05/26(木) 08:25:57.47→行き当たりばったりで書いて頓挫
→オートマトンを書き始める
→あれこれって正規表現じゃねということに気づく
まで読んだ
0705デフォルトの名無しさん
2011/05/26(木) 08:27:22.810706デフォルトの名無しさん
2011/05/26(木) 08:35:43.42がんばってね!
0707デフォルトの名無しさん
2011/05/26(木) 08:41:51.30動的言語使ってるやつの経験値が低いこと
0708デフォルトの名無しさん
2011/05/26(木) 08:51:20.34特に再帰を含むような文法定義は正規表現の表現力では力不足でLLとかPEGを使って書く
勿論その実装にはオートマトンが使われてるわけだけどもユーザが直接それを意識することはない
0709デフォルトの名無しさん
2011/05/26(木) 08:54:21.800710デフォルトの名無しさん
2011/05/26(木) 09:05:56.00関数型は静的動的が論点になってないっぽいし
0711デフォルトの名無しさん
2011/05/26(木) 09:08:22.34このスレのJava厨が経験値高いとか
何の冗談だよwww
0712デフォルトの名無しさん
2011/05/26(木) 09:16:48.870713デフォルトの名無しさん
2011/05/26(木) 09:17:41.21動的言語プログラムは日常的なプログラミングの補助としても使える。
思いついたアイデアをぱっと試したり、プロト作ったり、簡単なタスクを実装したり、
真のプログラマは、静的言語も動的言語も苦にしない。
0714デフォルトの名無しさん
2011/05/26(木) 09:19:34.580715デフォルトの名無しさん
2011/05/26(木) 09:21:17.57動的言語使ってるやつの経験値低いことがわかったの?ww
0716デフォルトの名無しさん
2011/05/26(木) 09:21:37.93動的言語で一万行超えてもまったく遜色ないって言うのであれば
そのノウハウを本で出せば大注目されるよ。
0717デフォルトの名無しさん
2011/05/26(木) 09:21:53.32つ @param
0718デフォルトの名無しさん
2011/05/26(木) 09:22:28.470719デフォルトの名無しさん
2011/05/26(木) 09:23:30.190720デフォルトの名無しさん
2011/05/26(木) 09:23:32.95doxygenは言語ではない。
0721デフォルトの名無しさん
2011/05/26(木) 09:24:11.090722デフォルトの名無しさん
2011/05/26(木) 09:24:47.05静的型付け言語なら型が合わなければコンパイル時に教えてくれるんだから、
最初から静的使っとけばいいんだよ。
0723デフォルトの名無しさん
2011/05/26(木) 09:25:40.58その記述の妥当性は誰も検証しないから、間違っている可能性もある。
0724デフォルトの名無しさん
2011/05/26(木) 09:26:15.95たいていにそれをできるIDEがあるってレスが返ってくるね。
俺は同意。
0725デフォルトの名無しさん
2011/05/26(木) 09:28:40.00IDEでは完全に型検査できないでしょ。
もしそれができるなら最初から実行時に検査するわけなんだから。
0726デフォルトの名無しさん
2011/05/26(木) 09:29:06.91あごめん。>>722に同意。
0727デフォルトの名無しさん
2011/05/26(木) 09:29:57.48引数に求められる条件とか戻り値が保障する性質そのものを型として表現できるんだぜ
実用性はまだまだだけど・・・
0728デフォルトの名無しさん
2011/05/26(木) 09:31:46.55あと、動的言語はコンパイラが作りにくいから、いつまでたってもライトウェイト。
0729デフォルトの名無しさん
2011/05/26(木) 09:35:58.99泡ふきながら、うわごとのように唱え続けているね。おもしろいねぇ。
0730デフォルトの名無しさん
2011/05/26(木) 09:37:05.510731デフォルトの名無しさん
2011/05/26(木) 09:39:02.99お前らの大好きなEclipseでコーディングできるぞ。
0732デフォルトの名無しさん
2011/05/26(木) 09:40:46.020733デフォルトの名無しさん
2011/05/26(木) 09:42:06.730734デフォルトの名無しさん
2011/05/26(木) 09:48:54.96そのメリットも理解できないもんな
0735デフォルトの名無しさん
2011/05/26(木) 09:49:44.33まさに狼少年
0736デフォルトの名無しさん
2011/05/26(木) 09:50:24.84java程度だと総合力で動的言語に負ける
0737デフォルトの名無しさん
2011/05/26(木) 09:51:52.570738デフォルトの名無しさん
2011/05/26(木) 09:53:20.710739デフォルトの名無しさん
2011/05/26(木) 09:53:40.360740デフォルトの名無しさん
2011/05/26(木) 09:55:24.530741デフォルトの名無しさん
2011/05/26(木) 09:58:59.13普及し始めてる
普及するかもしれない
普及したらいいな
0742デフォルトの名無しさん
2011/05/26(木) 10:05:17.870743デフォルトの名無しさん
2011/05/26(木) 10:06:04.700744デフォルトの名無しさん
2011/05/26(木) 10:07:53.65討論ってのは両者がお互いの立場を理解できてこそ成立するのであって、
Perlしか理解していないPerl厨とは討論が成り立たないのは自明。
0745デフォルトの名無しさん
2011/05/26(木) 10:09:18.510746デフォルトの名無しさん
2011/05/26(木) 10:12:58.56やろうぜ。
0747デフォルトの名無しさん
2011/05/26(木) 10:13:43.140748デフォルトの名無しさん
2011/05/26(木) 10:15:57.770749デフォルトの名無しさん
2011/05/26(木) 10:22:34.60強力な型システム持ってる言語ならそうでない言語ではコメントやドキュメントとして表現されていた要求や保証を型等の
言語内の概念で扱う事ができて、その検証を処理系が自動で行うことが可能である
この性質を生かせれば、そうでない言語に比べて安全といえる
ただし生かせれば、の話な
0750デフォルトの名無しさん
2011/05/26(木) 10:23:50.54ただしJava厨だけは論外。
0751デフォルトの名無しさん
2011/05/26(木) 10:24:59.65普通にC#使った方がいいと思った
0752デフォルトの名無しさん
2011/05/26(木) 10:25:33.990753デフォルトの名無しさん
2011/05/26(木) 10:29:56.51やっぱりVisualStudioじゃない?
0754デフォルトの名無しさん
2011/05/26(木) 10:29:56.760755デフォルトの名無しさん
2011/05/26(木) 10:30:10.320756デフォルトの名無しさん
2011/05/26(木) 10:32:23.83動的言語使いの方がJava厨よりあっさり移行できると思うぞwww
ていうか、Java厨ってJava以外何か使えんの?
0757デフォルトの名無しさん
2011/05/26(木) 10:33:28.37それなりにメリットある言語は流行るはず
0758デフォルトの名無しさん
2011/05/26(木) 10:33:32.70JRや株関係では関数型言語での案件もあるんだがな。
0759デフォルトの名無しさん
2011/05/26(木) 10:35:02.040760デフォルトの名無しさん
2011/05/26(木) 10:35:44.68マ板でやった方が良いのか?
0761デフォルトの名無しさん
2011/05/26(木) 10:35:48.37ロジックを組むのに関数型言語ほど向いた言語はない。
0762デフォルトの名無しさん
2011/05/26(木) 10:36:22.310763デフォルトの名無しさん
2011/05/26(木) 10:36:35.810764デフォルトの名無しさん
2011/05/26(木) 11:05:43.12単純に「Javaじゃないから」なので、静的型付けでも
scalaや関数型言語は同様に批判します。
0765デフォルトの名無しさん
2011/05/26(木) 11:09:00.82つまり、Java批判厨の一人芝居。
0766デフォルトの名無しさん
2011/05/26(木) 11:10:55.430767デフォルトの名無しさん
2011/05/26(木) 11:33:43.550768デフォルトの名無しさん
2011/05/26(木) 11:57:47.47せめてコアージョンとキャストの違いぐらい理解してから出直してこい
0769デフォルトの名無しさん
2011/05/26(木) 11:59:23.56コアージョンって何ですか?
0770デフォルトの名無しさん
2011/05/26(木) 12:02:55.92型変換、キャスト、コアージョンの違い
静的多態と動的多態の違い
ユニバーサル多態とアドホック多態の違い
パラメトリック多態と包含多態の違い
ぐらいは理解してくれないと議論が成立しない。
0771デフォルトの名無しさん
2011/05/26(木) 12:06:00.38ああ、君はそういうタイプね。
議論する能が無いから煙に巻く手口か。
0772デフォルトの名無しさん
2011/05/26(木) 12:06:49.840773デフォルトの名無しさん
2011/05/26(木) 12:43:37.59すみません
こちらの方はどうなるんでしょう?
>>669
>>>654
>これ、rubyやpythonじゃエラーにならね?
>てか、phpでもホントに動くの?
>
>自分、昔こんなコード試して、エラー出た覚え有るんだが
>
>str = "hello" + 100
>
>phpでは正しく動くって事?
>$に秘密が?
>
>rubyだとクラス変数が$で始まるんだけど、phpは違うって事?
詳しそうなので、お願いします
0774デフォルトの名無しさん
2011/05/26(木) 13:04:45.61$a . $b
数値の足し算は、
$a + $b
>>654 が使ってるのは、前者
0775デフォルトの名無しさん
2011/05/26(木) 13:21:26.010776デフォルトの名無しさん
2011/05/26(木) 15:25:57.39クラッシュしたら修正して再起動すればいい
0777デフォルトの名無しさん
2011/05/26(木) 15:38:40.180778デフォルトの名無しさん
2011/05/26(木) 17:01:21.450779デフォルトの名無しさん
2011/05/26(木) 17:12:31.14rubyでエラーが出たのは、文字連結と加算演算子が同じだからと言う理解で良いんでしょうか。。。
0780デフォルトの名無しさん
2011/05/26(木) 18:05:51.33このスレにコアージョン知ってるやつが何人いると思ってるんだよwww
0781デフォルトの名無しさん
2011/05/26(木) 18:10:48.00コアージョンがよくわからないので、勉強したいのですが、
おすすめの本などありますか?
0782デフォルトの名無しさん
2011/05/26(木) 18:14:08.77このスレじゃなくて、この板(一部の底辺WebPG除いて)では常識だと思ってたけど、違うのか?
0783デフォルトの名無しさん
2011/05/26(木) 18:23:20.78とか型理論のnatural isomorphic typeは知ってるけど
一般的なコアージョンというのは聞いたことない説明とか参考文献の紹介を願う
0784デフォルトの名無しさん
2011/05/26(木) 18:47:17.55そういう幼稚なレッテル貼りは無意味だからやめたら。
せっかく重要なキーワードもってきたのが台無しだよ。
0785デフォルトの名無しさん
2011/05/26(木) 20:21:48.330786デフォルトの名無しさん
2011/05/26(木) 20:27:16.710787デフォルトの名無しさん
2011/05/26(木) 20:35:15.68F#とか由来みたい。
言語毎にいろんな用語を勝手に作られるからなぁ。
コアージョンで検索してもそれらしい意味が出てこないし、なんだろうと思った。
0788デフォルトの名無しさん
2011/05/26(木) 20:42:32.080789デフォルトの名無しさん
2011/05/26(木) 20:47:25.78大げさに語るほどでもないだろ。
0790デフォルトの名無しさん
2011/05/26(木) 20:56:26.59何を思ったのかHaskellの型推論なら同じことが出来るとか
アホなこと書いたやつがいたのが発端。
こんなのHaskell使いが書くわけないから多分Java厨だろうね。
0791デフォルトの名無しさん
2011/05/26(木) 21:00:22.39あんまり>>654みたいなのを動的言語とはこういうもんだみたいに言われるのはなあ
0792デフォルトの名無しさん
2011/05/26(木) 21:09:59.55haskellの型推論なら同じことができるよ。
できないと思っていたのか?
0793デフォルトの名無しさん
2011/05/26(木) 21:13:10.31Haskellの型は静的に決まるけど>>654の場合は実行時
ぜんぜんちがう
0794デフォルトの名無しさん
2011/05/26(木) 21:14:17.46動的に決まるとどんないいことがあるの?
0795デフォルトの名無しさん
2011/05/26(木) 21:18:16.33string AddPrefix(object str) { return "prefix_" + str; }
なんで静的言語でも簡単にできることを
"動的言語のメリット" とか言い出すのかな?
0796デフォルトの名無しさん
2011/05/26(木) 21:31:54.13●rubyでの実装
def add_prefix (str)
return 'prefix_' + str.to_s;
end
●perlでの実装
sub add_prefix {
return 'prefix_' . shift;
}
●pythonでの実装
def add_prefix(s):
return 'prefix_' + str(str);
0797デフォルトの名無しさん
2011/05/26(木) 21:33:07.55●rubyでの実装
def add_prefix (str)
return 'prefix_' + str.to_s;
end
●perlでの実装
sub add_prefix {
return 'prefix_' . shift;
}
●pythonでの実装
def add_prefix(s):
return 'prefix_' + str(s);
0798デフォルトの名無しさん
2011/05/26(木) 21:40:28.15そうやって相手の出方を見た後なら簡単に真似できるが
真っ先に自分でやるのは難しいだろ
もっと静的に書きたい気持ちをリセットするのに時間がかかる
0799デフォルトの名無しさん
2011/05/26(木) 21:44:28.360800デフォルトの名無しさん
2011/05/26(木) 21:55:41.440801デフォルトの名無しさん
2011/05/26(木) 21:56:57.12ただHaskellの型推論ならできるとか
無知丸出しの書き込みにツッコミ入れられてるだけ。
0802デフォルトの名無しさん
2011/05/26(木) 21:59:07.53では、haskellの例をお願いしますm(__)m
0803デフォルトの名無しさん
2011/05/26(木) 21:59:12.71>>654はコアーションとは無関係だぞ。
0804デフォルトの名無しさん
2011/05/26(木) 22:02:14.69add_prefix :: (Show a) => a -> String
add_prefix = (++) "prefix_" . show
0805デフォルトの名無しさん
2011/05/26(木) 22:09:59.42通じてないもの
0806デフォルトの名無しさん
2011/05/26(木) 22:19:45.48文字列と数値の連結だよ?なんで無関係だと思ったの?
0807デフォルトの名無しさん
2011/05/26(木) 22:29:59.14http://hibari.2ch.net/test/read.cgi/tech/1155031689/
このスレでwindows+ruby+GUIは鬼門だと書いてたんだが、本当か?
だったら、C#やDelphiの方がwindowsでGUIは有利だな
コンパイラ言語の方がGUIには向いてるって事でおk?
0808デフォルトの名無しさん
2011/05/26(木) 22:32:17.590809デフォルトの名無しさん
2011/05/26(木) 22:35:19.20特定の環境と特定の言語についての
たった一例から一般化しすぎだろ
0810デフォルトの名無しさん
2011/05/26(木) 22:36:41.670811デフォルトの名無しさん
2011/05/26(木) 22:39:08.740812デフォルトの名無しさん
2011/05/26(木) 22:44:39.920813デフォルトの名無しさん
2011/05/26(木) 22:46:16.550814デフォルトの名無しさん
2011/05/26(木) 22:51:21.61ごめん……(´・ω・`)でもなんで?
0815デフォルトの名無しさん
2011/05/26(木) 22:58:03.220816デフォルトの名無しさん
2011/05/26(木) 23:05:38.85何が言いたいのかさっぱりわからん。
型推論で整数がこようが文字列がこようがバッチリやりたい処理ができてるじゃん。
0817デフォルトの名無しさん
2011/05/26(木) 23:58:56.35「型推論」で出来るって言ってるのがアホなの。
そりゃShow使って自分でcoerceすれば出来るわい。
0818デフォルトの名無しさん
2011/05/27(金) 00:11:23.20Showを継承してる型aならなんでもいいよ、的なコードじゃないの?
0819デフォルトの名無しさん
2011/05/27(金) 00:28:07.65showのどのインスタンスを呼び出すかを推論している。
0820デフォルトの名無しさん
2011/05/27(金) 00:48:23.39多相型(総称型)と型推論を混同してる。
0821デフォルトの名無しさん
2011/05/27(金) 00:51:16.86混同も何もhaskellでは同じだよ。
0822デフォルトの名無しさん
2011/05/27(金) 01:03:56.700823デフォルトの名無しさん
2011/05/27(金) 02:12:15.890824デフォルトの名無しさん
2011/05/27(金) 02:48:51.83来て欲しかったら自分からネタだしたら?
0825デフォルトの名無しさん
2011/05/27(金) 06:16:46.16え…w
0826デフォルトの名無しさん
2011/05/27(金) 06:21:44.65パラメトリック多相がない型推論もあるし、
型推論がないパラメトリック多相もある。
パラメトリック多相と(ユニフィケーションベースの)型推論は相性がいいが、
別々の技術要素だ。
君がHaskell村に籠もってるから、どっちも同じに見えるだけ。
0827デフォルトの名無しさん
2011/05/27(金) 07:34:44.52いやいや、>>803とか書いちゃう低能が
その辺分かってるわけ無いじゃん
おそらくHaskell使ったこと無いJava厨でしょう
0828デフォルトの名無しさん
2011/05/27(金) 08:39:28.33正確に言えば、>>804だけではshowのインスタンスは確定していない。
例えばどこかで add_prefix (x + 1)とかあったら、showのインスタンスが確定する。
一見するとコアージョンと同等なことを包含多態とパラメトリック多態の組み合わせで実現しているが、
単に文字列に変換するだけでなく、多段階のコアージョンならどうだろう?
式x + yについて、xとyはそれぞれ整数、多倍長整数、浮動小数点数、有理数、複素数のどれかを
互いに独立して与えられるとする。
xが整数でyが浮動小数点数ならば、xを浮動小数点数に変換する。
xが複素数でyが有理数ならば、yを複素数に変換する。
これを型クラスで実現できるか?
0829デフォルトの名無しさん
2011/05/27(金) 08:42:26.630830デフォルトの名無しさん
2011/05/27(金) 08:48:57.520831デフォルトの名無しさん
2011/05/27(金) 10:56:56.060832デフォルトの名無しさん
2011/05/27(金) 12:04:28.23つまり (Show a) => ... と if ... then ... を区別したくない
それが危険だというなら、問題の本質は if の危険性であって
静的型付けは対症療法の一つにすぎない
0833デフォルトの名無しさん
2011/05/27(金) 12:18:01.050834デフォルトの名無しさん
2011/05/27(金) 15:58:46.94あの辺は自動変換というより「演算子が戻り値型を決めてる」って印象が強いかな
0835デフォルトの名無しさん
2011/05/27(金) 18:39:40.36print s/hoge/hage/r while <>;
Perlはワンライナーとしては有用だね
0836デフォルトの名無しさん
2011/05/27(金) 19:29:44.29perl -np -e "s/hage/hoge/g";
0837デフォルトの名無しさん
2011/05/27(金) 20:32:50.45インターフェースとか、ジェネリックスはどういうつもりでああいう仕様なのか
小一時間問い詰めたくなる
0838デフォルトの名無しさん
2011/05/27(金) 21:17:03.13所詮、どんぐりの背比べ。似たり寄ったりだわ
0839デフォルトの名無しさん
2011/05/27(金) 21:27:09.47もちろんプログラミングも
0840デフォルトの名無しさん
2011/05/27(金) 21:41:40.42俺が動的言語に書き換えるなら引数を文字列化して処理する仕様にするかな
0841デフォルトの名無しさん
2011/05/27(金) 22:06:13.110842デフォルトの名無しさん
2011/05/27(金) 22:10:01.96haskell、Ocamlなどの関数型言語はコンパイラとインタプリタ両方インストールされるの多いよ
0843デフォルトの名無しさん
2011/05/27(金) 22:15:03.06って感じか...
0844デフォルトの名無しさん
2011/05/27(金) 22:18:44.480845デフォルトの名無しさん
2011/05/27(金) 23:07:10.22まあ、基幹業務みたいに信頼性重視はネットワーク、ローカル問わず静的
ネットサービスとか、Webや社内LANで情報やファイルのシェアは動的って住み分けになってる感は有るな
土方はどこでも土方だけどな
打ち合わせ相手にデザイナーが顔出すかどうかだけの違い
才能あるデザイナーが全部作ってるとかも耳にする事も有るが
0846デフォルトの名無しさん
2011/05/27(金) 23:21:30.58コンパイラやIDEがどれだけソースコードの意味を理解して、
プログラマの開発をサポートできるかだよね。
それが静的言語なら静的に(実行しなくても)決まることが多いから
動的言語なら実行しないとわからないようなことが
実行する前からわかりやすいってだけで
0847デフォルトの名無しさん
2011/05/27(金) 23:22:35.080848デフォルトの名無しさん
2011/05/27(金) 23:24:36.710849デフォルトの名無しさん
2011/05/27(金) 23:26:58.83> それが危険だというなら、問題の本質は if の危険性であって
> 静的型付けは対症療法の一つにすぎない
いや、問題の本質がどこにあるかは大して重要じゃないんだよ。
問題を解決するための糸口の一つにはなるかもしれないけど、
一番重要なのは、問題を解決するための方法として何が挙げられるか。
1.静的言語を使う。
2.ミスが無いように人間がひたすら頑張る
3.実行前にミスを無くすことは諦め、実行フェーズ以降に問題解決を先送りにする。
0850デフォルトの名無しさん
2011/05/27(金) 23:29:16.51チームの開発効率と個人の資質も
どちらも大事だと思います。
チームの開発効率は、チーム内で一番優れた人の
個人の資質よりも上にはならない。
0851デフォルトの名無しさん
2011/05/27(金) 23:32:42.08トライ&エラーが面倒臭いんだよね。
コンパイル時間も短いとはいえ、時間食うんで、チリも積もればなんとやらなんだよね。
0852デフォルトの名無しさん
2011/05/27(金) 23:34:07.08別の話を混ぜるなと言っている
0853デフォルトの名無しさん
2011/05/27(金) 23:36:42.52静的な型付けは問題の一部を解決するだけ
=> 残りの部分はテストを書いたりして解決する必要がある
=> あれ?ちゃんとテスト書いたら一緒に型エラーも見つかるわ
=> 動的型付けでも良くね?
0854デフォルトの名無しさん
2011/05/27(金) 23:38:17.83これは本当
自分、趣味グラマーだが、割とオープンな雰囲気の会社に勤めてた時期が有ったんだが、有能な人は他人のバグを修正しつつ自分の分の開発を進めるって言うのが常で、見てて可哀想だった
0855デフォルトの名無しさん
2011/05/27(金) 23:38:58.17記述が簡潔で
オブジェクト指向が組み込みで
obj.method() の形式でメソッドが呼び出せて
ネイティブコンパイル出来て
出来れば型推論もあると嬉しいんだけど
そんな言語無いかな
動的型付け言語が安全だろうとなかろうと、使いたい言語が全部動的型付けだから困ったもんだ
0856デフォルトの名無しさん
2011/05/27(金) 23:42:08.44大規模になるとテストケースは爆発的に増えて、自動化でも網羅出来なくなる
そこに、最後まで型エラーも拭い去れないとか怖過ぎ
0857デフォルトの名無しさん
2011/05/27(金) 23:43:23.41>>855
http://force7.de/nimrod/
0858デフォルトの名無しさん
2011/05/27(金) 23:48:06.510859デフォルトの名無しさん
2011/05/27(金) 23:48:47.78デプロイという言葉を知っているなら
ホットデプロイって言葉も知っていると思うけど?
開発中ならデプロイはコードを修正すると自動で完了する。
それにユニットテストはデプロイ環境でやるもんじゃない。
まさかいちいち手動でブラウザで実行してテストしてるの?
それから動的言語でも大規模になるとmod_perlや
mod_rubyなどを使うわけで、デプロイと同じように
Apacheの再起動が必要。
デプロイに関しては現実的には大差がない。
0860デフォルトの名無しさん
2011/05/27(金) 23:49:36.02アリガトン
調べてみる!
0861デフォルトの名無しさん
2011/05/27(金) 23:50:37.54> 静的な型付けは問題の一部を解決するだけ
問題の一部を解決するもの > 問題の一部が解決できない物
例:エアバッグ搭載
交通事故の一部を解決するもの > 交通事故の一部が解決できない物
冷静になれよ。銀の弾丸などない。
どちらがベターかで話せ。
0862デフォルトの名無しさん
2011/05/27(金) 23:53:06.48OcamlとF#かな。。。
OcamlはC並のネイティブ吐けるとか言われてるけど、haskellの勉強の過程で入門書読んだだけで、実際に使った事は無い
0863デフォルトの名無しさん
2011/05/27(金) 23:55:24.80修正も早いってこと知らないのかな?
ソフトウェアだけのことじゃなくてなんでもそうだよ。
ミスは早いうちに対処していれば、リカバリー早くなる。
ユニットテストではすべてのテストを自動化できない。
=> どっちみち人間がすべての機能を実行してテストする必要がある。
=> あれ? 人間がテストするならユニットテストで見つかるエラーも見つかるわ
=> ユニットテストいらなくね?
>>853が言っていることはこれと同じ。
0864デフォルトの名無しさん
2011/05/27(金) 23:58:57.09静的型言語派だが、それも極端杉
0865デフォルトの名無しさん
2011/05/28(土) 00:01:34.620866デフォルトの名無しさん
2011/05/28(土) 00:02:45.56俺も静的言語派だが、こんなアホと一緒にされるのは
ごめん被る
0867デフォルトの名無しさん
2011/05/28(土) 00:03:02.78ホットデプロイでもロードに時間かかるじゃん。
コンパイルにも時間かかる。実行するのにも時間かかる。
数秒の時間ではあるけど、積もれば結構な時間だし、
トライ&エラーでサクサク開発というのとはちょっと違う
んだよなぁ。
例えば、この変数の値をちょっとみたいとか、関数の戻り値
を調べたいなと思った時に、デバッガでブレークポイントはって
止めて調べるといった手順をふむより、ちょっとprint文書いて
出力してみるといったことが、Javaの場合、ちょっと億劫に感じる。
ま、数秒の差ではあるんだけど。でも面倒くさい。
0868デフォルトの名無しさん
2011/05/28(土) 00:03:47.410869デフォルトの名無しさん
2011/05/28(土) 00:04:55.11> ホットデプロイでもロードに時間かかるじゃん。
だからユニットテストならデプロイは不要。
こっちを無視すんな。
人間がコード上の間違いを捜すほうが時間かかる。
塵も積もればな。
0870デフォルトの名無しさん
2011/05/28(土) 00:06:27.95デバッガでブレークポイントはるだけなら、
コードの修正いらないんだから
デプロイもいらないじゃん。
0871デフォルトの名無しさん
2011/05/28(土) 00:07:48.090872デフォルトの名無しさん
2011/05/28(土) 00:11:45.810873デフォルトの名無しさん
2011/05/28(土) 00:14:05.06型に対して可能なテストは「その変数の指すオブジェクトに対して
これをすることはできるか?」だけだ。
一方、テストは通常オブジェクトの振る舞いについてテストする。
後者の方が明らかに強いテストで、後者を通るなら前者も通る。
だから、型エラーが出るならテストが不十分ってこと。
実際、動的言語で十分なカバレッジを達成したときには型エラー
なんて見ないぞ?実際に動的言語で開発した経験あるのか?
0874デフォルトの名無しさん
2011/05/28(土) 00:17:07.63Strong Typing vs. Strong Testing
https://docs.google.com/View?id=dcsvntt2_25wpjvbbhk
0875デフォルトの名無しさん
2011/05/28(土) 00:17:24.04そもそも、ユニットテストとはユニットのテストなので
ウェブサーバーはもちろんデータベースなどの
ソースコード以外の外部の何かは使用しないのが常識。
テストを早く実行する妨げにもなる。
0876デフォルトの名無しさん
2011/05/28(土) 00:18:48.52君は両方やるという考えはないのかな?
両方やると二度手間、無駄ではないかの答えは、
エラーは早く検出し早く直す物というのが答えだ。
0877デフォルトの名無しさん
2011/05/28(土) 00:20:27.92> 実際、動的言語で十分なカバレッジを達成したときには型エラー
> なんて見ないぞ?実際に動的言語で開発した経験あるのか?
言い換えると
十分なカバレッジを達成しなければ
型エラーを見ることがあることだろ。
十分なカバレッジを得るまで時間がかかる。
0878デフォルトの名無しさん
2011/05/28(土) 00:21:26.81それは当たり前だがや
そこまで行くのに、コンパイル時にエラーで見つかるのと、テストで見つけるのはどっちが早いかだがや
他のテストは実質的に同じ事するだがや
0879デフォルトの名無しさん
2011/05/28(土) 00:21:33.61エラーの割合なんて、全体の不具合の中で1%にも満たないだろ。
それより、動的言語から得られる恩恵の方がはるかに大きいよ。
Javaでありがちなヌルポとかにもお目にかからないしな。
0880デフォルトの名無しさん
2011/05/28(土) 00:21:37.85「○○という条件を達成しないかぎり問題がある。」
と言い換えられます。
注意しましょうw
0881デフォルトの名無しさん
2011/05/28(土) 00:22:59.86え?
$obj = null;
$obj->foo();
これでヌルポにならない言語なんてあるの?
あ、エラーメッセージが違うとかそういう話かw
0882デフォルトの名無しさん
2011/05/28(土) 00:24:14.19> それより、動的言語から得られる恩恵の方がはるかに大きいよ。
動的言語で得られる恩恵の殆どは
静的言語でできるからなぁ。
恩恵? なにそれ?
0883デフォルトの名無しさん
2011/05/28(土) 00:24:48.46いやいやいや、ユニットテストでもWWWやDB周りのテストも当然するだろ。
人がしなくていいんだよ、Mechanizeとか使ってテストケース書いて自動化も
できるし。何ゆってんの?
0884デフォルトの名無しさん
2011/05/28(土) 00:26:21.41争点になってますが、何で早くみつけなきゃいけないの?
静的言語だと、型の不一致が見つかったら
下手すりゃクラス構造とかの設計まで見直す必要が出てきて
修正が大変になるから早く見つかった方が良いだろうけど、
動的言語なら何時見つけても修正の手間は一緒だぞ?
0885デフォルトの名無しさん
2011/05/28(土) 00:30:37.330886デフォルトの名無しさん
2011/05/28(土) 00:30:52.69それは機能テスト。
テスト自動化=ユニットテストのように
間違ってる人多いんだよな。
0887デフォルトの名無しさん
2011/05/28(土) 00:31:30.98> えーと、見つかるのが早いか遅いかが
> 争点になってますが、何で早くみつけなきゃいけないの?
直すまでの時間が短いから
0888デフォルトの名無しさん
2011/05/28(土) 00:34:51.61> 静的言語だと、型の不一致が見つかったら
> 下手すりゃクラス構造とかの設計まで見直す必要が出てきて
> 修正が大変になるから早く見つかった方が良いだろうけど、
> 動的言語なら何時見つけても修正の手間は一緒だぞ?
その例だと、動的言語のほうが時間がかかる。
型の不一致が見つかる場合は、例えばこの変数に入れてはいけない
値をいれた時。一箇所直しても、他の箇所で入れてるかもしれない。
動的言語だと、あるコードを実行してそのことに気づいても、
気づいたところ以外で同じ間違いしている可能性を排除できない。
つまり捜し回ることになる。
0889デフォルトの名無しさん
2011/05/28(土) 00:34:59.19ServletのdoPost()やdoGet()メソッドのテストも、立派な単体テストだろが。
何ゆってんの?
0890デフォルトの名無しさん
2011/05/28(土) 00:35:25.30PythonもRubyもならないよ
Noneやnilのfooを呼んだってCよろしく0番地にアクセスするわけじゃないから
0891デフォルトの名無しさん
2011/05/28(土) 00:35:39.040892デフォルトの名無しさん
2011/05/28(土) 00:36:24.61エラーが表面化しないだけで、正しく動いてねーだろうがw
こういう状態が一番困る。
0893デフォルトの名無しさん
2011/05/28(土) 00:37:07.55本気でそう思ってるの?
動的静的関係なく、後から手直しって大変になるのは変わらんぞ?
そりゃあ手直し自体は動的の方が楽だろうさ
でも、その分後から大量に発覚する確率も高いわけよ
一定の規模を超えると、後から発覚するバグの数に違いが大きく出ると感じてるんだがな
どっかで定量的に比較してないもんかね
プログラマが人間だっていう視点から言えば、追い込み時期にバグが見つかるのは心が折れるぞ
実際に逃げる奴も居るらしい
0894デフォルトの名無しさん
2011/05/28(土) 00:39:05.47そんなもんテストになるかw
まぁ、がんばってフォームの入力値や、認証データ、環境変数、クッキーの値など、
想定する環境と同じようにメソッド渡せればいいかもしれんが、そのテストコードを
用意するだけでひと苦労だなw
0895デフォルトの名無しさん
2011/05/28(土) 00:39:27.95えーと、単体テストでは出来る限り単体の
クラスをテストするって知ってるかな?
だから単体テストというわけだけど。
あんた、doPostやdoGetで
いろんな処理をしすぎてない?
コントローラではユーザー入力の値のチェックをする程度で
その後の処理はサービスクラスなどに渡すんだよ。
(そしてサービスクラスをユニットテストする)
0896デフォルトの名無しさん
2011/05/28(土) 00:40:31.140897デフォルトの名無しさん
2011/05/28(土) 00:43:06.02だから、それはユニットテストじゃないってば。
ユニット=単体。
お前がやってるのは単体ではない。
別に機能テストが無駄という意味じゃない
それはユニットテストではないという話だ。
たぶん初心者のようにコントローラで
コードをがしがし書いてるんだろうが、
まあどの言語でもいいからウェブフレームワークを勉強しろ。
今時doGetとかdoPostを使ってる時点で
15年前かよって思ったがな。
0898デフォルトの名無しさん
2011/05/28(土) 00:43:41.350899デフォルトの名無しさん
2011/05/28(土) 00:44:22.59なにか恨みでもあるのか?
0900デフォルトの名無しさん
2011/05/28(土) 00:44:38.81nil.foo()したらその時点で例外吐いて止まるよ
0901デフォルトの名無しさん
2011/05/28(土) 00:44:58.65なんて例外?
0902デフォルトの名無しさん
2011/05/28(土) 00:45:03.550903デフォルトの名無しさん
2011/05/28(土) 00:46:52.670904デフォルトの名無しさん
2011/05/28(土) 00:47:12.57本音を言うと、型エラーが大量に発覚なんて一度も経験無いから、
そういうことを言う人はどういうコード書いてるのかなって思う。
こっちこそ聞きたいよ。あんたはそんなに型エラー発生させてるの?
0905デフォルトの名無しさん
2011/05/28(土) 00:47:47.560906デフォルトの名無しさん
2011/05/28(土) 00:48:06.060907デフォルトの名無しさん
2011/05/28(土) 00:48:18.62網羅しなくていいなら、検出する早さでも人が圧倒的に早いよ
機械でやるべきことは、多少遅くてもいいから網羅すること
0908デフォルトの名無しさん
2011/05/28(土) 00:48:29.94あぁ、じゃぁStrutsのActionメソッドでもいいよ。Actionメソッドはテストするんだろ?
どっにしても、引数には、HttpServletRequestやHttpServletResponseが含まれるじゃねーか。
この引数とそれに対する挙動が正常なことを確認する単体テストはしないのかよ。気楽なもんだな。
0909デフォルトの名無しさん
2011/05/28(土) 00:50:20.74バカか
ノウハウありゃ大した差では無いわ
それよりデバッグ終盤の自分が修正した箇所が他に影響してないって保証の方が安心感があるわ
自分自身の自信とは別で、保証されてるんだぜ?
デスマじゃ無い時は余裕もってテストを眺めてられるってもんよ
0910デフォルトの名無しさん
2011/05/28(土) 00:50:28.54テストで見つかったところだけ直せば良いんだよ。
どうせ最終的には高いテストカバレッジまで持ってくんだろ?
だったら最終的には全部見つかるさ。
0911デフォルトの名無しさん
2011/05/28(土) 00:50:43.64だから機能テストとしてはするが、
単体テストではしない。
その部分は単体テストをしなくていいように
コードを最小限にする。
0912デフォルトの名無しさん
2011/05/28(土) 00:51:32.54マクロで書けるだろ
動的静的関係ない
0913デフォルトの名無しさん
2011/05/28(土) 00:51:35.06Javascriptが今後どう変化していくかは注目。
0914デフォルトの名無しさん
2011/05/28(土) 00:52:01.71>今時doGetとかdoPostを使ってる
何という俺。
職業プログラマじゃないんでフレームワークとか覚える時間が勿体ない。
どうせ1年に100個も画面を作らないし。
0915デフォルトの名無しさん
2011/05/28(土) 00:52:22.560916デフォルトの名無しさん
2011/05/28(土) 00:53:11.42ゲーム業界なんてプロトタイピング=マスターアップだぞ。
0917デフォルトの名無しさん
2011/05/28(土) 00:54:34.60別の意味で使い物にならないのでは?
0918デフォルトの名無しさん
2011/05/28(土) 00:55:33.640919デフォルトの名無しさん
2011/05/28(土) 00:55:39.24GCあった時点でアウト
0920デフォルトの名無しさん
2011/05/28(土) 00:55:48.75全自動はねーよ
特にデザイン系は人間の感覚しか頼りにならん
0921デフォルトの名無しさん
2011/05/28(土) 00:58:02.09ような奴は、学生か新人君ぐらいだろ。
ほとんどの不具合は、論理的なものや、例外の見逃しや、想定外の仕様や、挙動
によるものだ。
Javaだって、文字列に数値いれたはずが、数値に変換する時に例外発生したとか、
日付の書式変換で例外が発生したとか、そんなんが多いんだろ?
0922デフォルトの名無しさん
2011/05/28(土) 00:58:06.58Lua が結構使われていると聞いた気が
0923デフォルトの名無しさん
2011/05/28(土) 00:58:29.430924デフォルトの名無しさん
2011/05/28(土) 00:59:05.010925デフォルトの名無しさん
2011/05/28(土) 00:59:24.910926デフォルトの名無しさん
2011/05/28(土) 01:00:04.460927デフォルトの名無しさん
2011/05/28(土) 01:00:36.79メリットが
・ホットスワップ可能
なんだけどね
0928デフォルトの名無しさん
2011/05/28(土) 01:01:30.65> Javaだって、文字列に数値いれたはずが、数値に変換する時に例外発生したとか、
> 日付の書式変換で例外が発生したとか、そんなんが多いんだろ?
いまどきのフレームワークを使えば、
ユーザーの数字入力は数値型変数に直接がはいるイメージになる。
型変換コードは書かない。
型に合わない入力はフレームワークの設定で
簡単にエラーメッセージとして表示できるようになってる。
0929デフォルトの名無しさん
2011/05/28(土) 01:01:37.41総合的なメリットの話をしているんだが
0930デフォルトの名無しさん
2011/05/28(土) 01:02:29.36?
0931デフォルトの名無しさん
2011/05/28(土) 01:02:54.62想定外の仕様ってか使用だな
これが一番厄介だ
GUI作る時はこれが地獄の元
CUIとか、専用機器の組み込みはこっちが処理の流れ作れるから楽
0932デフォルトの名無しさん
2011/05/28(土) 01:04:09.970933デフォルトの名無しさん
2011/05/28(土) 01:04:19.36なんでフォームからの入力値のチェック限定なんだよ
DBからの読み込み、ファイルからの読み込み、Webサービスの戻り値、リモートコールの呼び出し
INPUTはいろいろあるだろうが。
0934デフォルトの名無しさん
2011/05/28(土) 01:04:19.67そーするとテストコードの量も増えそうだけど、動的言語はその辺不安じゃないのかな?
テストのテストまで書かないだろうし。
あとは型変換でこけるんじゃなくて、呼び出し元の仕様変更でパラメーター数が
変わらないような時もちょっと怖いかなと思ってるんだけどそうでもないのかな?モックにしてると気づかなさそうで。
0935デフォルトの名無しさん
2011/05/28(土) 01:05:06.530936デフォルトの名無しさん
2011/05/28(土) 01:09:06.77例えばファイルからの入力で
ファイルに数値が入っている前提だとして、
間違って文字列が入っていたとする。
静的言語ならすぐさま数値型変数にいれて
プログラムのメイン処理では全部数値型を使う。
だから、入力して変換する部分ですぐにバグがあることが表面化するけど
これが動的言語なら、文字列のまま
プログラムのメイン処理に進んでしまう。
バグが表面化するまで時間がかかる。
0937デフォルトの名無しさん
2011/05/28(土) 01:11:23.72高いわけねーだろw
だがそれを認めると
テストコードがあるから動的言語でも大丈夫
という主張が崩れるんだよw
0938デフォルトの名無しさん
2011/05/28(土) 01:11:49.66んにゃ
素人さん(?)が想像してるより泥臭い人力の場面は多分にあるw
人間の目しか信用出来ない場面って、結構あるべ
第一、ゲーム業界のゲームバランスなんて、人間以外何がやるってんだよwww
自分はプログラマじゃなくてテスターだったんだがなw
(ゲーム業界ではない)
0939デフォルトの名無しさん
2011/05/28(土) 01:12:56.53% ruby -e 'Float("TNOK")'
-e:1:in `Float': invalid value for Float(): "TNOK" (ArgumentError)
% python -c 'float("TNOK")'
ValueError: could not convert string to float: 'TNOK'
0940デフォルトの名無しさん
2011/05/28(土) 01:14:13.17えー、お前の所と一緒にすんなよ
まあテストしないなら静的言語の方が安全なんじゃね?
テストしてある動的言語のプログラムよりはボロいけど
0941デフォルトの名無しさん
2011/05/28(土) 01:14:21.240942デフォルトの名無しさん
2011/05/28(土) 01:15:43.19その数値を計算や、書式変換する必要があるなら、そこでエラーになるし。たんに表示するだけなら、
そもそも文字列として扱うだけだし。そのことが問題であれば、データの生成元の責任ということになる。
実際、動的言語で型の不一致で致命的なもんだいを引き起こすことなどほとんどないと言っていい。
ほんとうの不具合は、静的言語も動的言語も他のところにある。
型の不一致にたいして、どんだけ悲観的なんだよ。心配しすぎだろ。 他に心配しなきゃならんことが
いくらでもあるだろが。
0943デフォルトの名無しさん
2011/05/28(土) 01:16:44.350944デフォルトの名無しさん
2011/05/28(土) 01:18:03.98同じサイズのコードでも取り回しが全然違う件
0945デフォルトの名無しさん
2011/05/28(土) 01:19:27.51静的言語ならテストは網羅しなくていいとか冗談きついぜ
0946デフォルトの名無しさん
2011/05/28(土) 01:19:30.230947デフォルトの名無しさん
2011/05/28(土) 01:20:06.850948デフォルトの名無しさん
2011/05/28(土) 01:21:00.690949デフォルトの名無しさん
2011/05/28(土) 01:22:02.370950デフォルトの名無しさん
2011/05/28(土) 01:24:21.80んなの当たり前
問題わな
製品として出した後から修正出来ないとか、修正が難かしい(許可が下りにくいとか時間が掛かるとか)
そういう環境に動的言語は向かないんよ
一回出したらバグが在ろうが何だろうが、余程ひどいバグじゃない限り走らせ続けるってプログラムは大規模でも組み込みでも多いのよ
修正が容易かどうかじゃなくて、どの位の動作が保証出来るか?が重要なんだよ
0951デフォルトの名無しさん
2011/05/28(土) 01:24:42.81たぶんC0カバレッジ
0952デフォルトの名無しさん
2011/05/28(土) 01:26:31.770953デフォルトの名無しさん
2011/05/28(土) 01:29:50.71本番前のテストでの修正が容易いって言ってんだよ
なんで本番後の話になってんだよ
動作の保証はテストでやれよ
0954デフォルトの名無しさん
2011/05/28(土) 01:30:23.540955デフォルトの名無しさん
2011/05/28(土) 01:40:43.47そこまで神経質に気をはって使うわけではない。だいたい型の種類も
少ないが、基本は文字列。数値として使う場合は、それが数値として
使えればいい。極端にいえば、その変数が数値としての性質もって
いればいい。いわゆる、ダックタイピングってやつで、それが流儀
みたいな感じになってしまった。そいつがガーと鳴けばアヒルだろうと。
0956デフォルトの名無しさん
2011/05/28(土) 01:42:50.18それは本質的に動的も静的も同じだろ
テストも万能ではないのは結構前から知られてるし、そうなると静的型言語が選ばれる事になる
客にとっては開発が容易とか関係無いのよ
客にとって、オペレーターとか、エンドユーザーの奇想天外な操作でも対応出来るかどうかが問題なだけ
テストとは別の形で保証出来るから採用されるんだよ
本質的に同等のクオリティに出来るとしてもね
作ってる側も、本質的に同等のクオリティだと太鼓判押せないし、そんな責任取りたくないし
0957デフォルトの名無しさん
2011/05/28(土) 01:43:20.74動作の保証じゃなくて、
文法の保証はいつやるべき?
0958デフォルトの名無しさん
2011/05/28(土) 01:44:30.070959デフォルトの名無しさん
2011/05/28(土) 01:45:22.76詐欺罪でタイーホ
0960デフォルトの名無しさん
2011/05/28(土) 01:45:32.86動作までが楽になると考えればいい。
0961デフォルトの名無しさん
2011/05/28(土) 05:23:43.27本気でTDDとかBDDって流行ってないんだね。
0962デフォルトの名無しさん
2011/05/28(土) 08:31:24.76どの言語でもできる手法では優位に立てない
優位に立てないなら安全とは言えない
という論調が強いからね
要は、克己的なことより他人との比較を重視する人が多い
0963デフォルトの名無しさん
2011/05/28(土) 08:47:58.58\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
0964デフォルトの名無しさん
2011/05/28(土) 09:09:30.72想定される引数の型と戻り値の型を書くと思うんだけど、これを利用しないのって勿体無くない?
少なくとも処理系作る側になると型情報は欲しい。
0965デフォルトの名無しさん
2011/05/28(土) 09:16:30.94ただプログラマがそれを利用できるかは別問題な
0966デフォルトの名無しさん
2011/05/28(土) 09:16:53.730967デフォルトの名無しさん
2011/05/28(土) 09:28:02.28Pythonでtype annotationとかそれっぽいのがあった気がする
よくよく調べたらがっかりした覚えがあるけど
0968デフォルトの名無しさん
2011/05/28(土) 09:32:59.47言語内で1級市民として扱える仕組みでないと
0969デフォルトの名無しさん
2011/05/28(土) 10:00:56.77def foo(n):
n = int(n)
で書き始めるかな
0970デフォルトの名無しさん
2011/05/28(土) 10:24:05.73混乱の元だよね。
0971デフォルトの名無しさん
2011/05/28(土) 10:34:34.79理解するくらいなら他の言語のほうがいい
0972デフォルトの名無しさん
2011/05/28(土) 10:38:00.96>>> "12"+1
を実行すると
TypeError: cannot concatenate 'str' and 'int' objects
っていうエラーが出てきます。
動的言語なのになんでですか?
0974デフォルトの名無しさん
2011/05/28(土) 10:42:44.880975デフォルトの名無しさん
2011/05/28(土) 10:44:02.940976デフォルトの名無しさん
2011/05/28(土) 10:45:23.69それは実行時の安全装置なので
コンパイル時に比べると劣っているという噂
0977デフォルトの名無しさん
2011/05/28(土) 10:46:35.64plus :: Int -> Int -> Int {- ←型推論でこいつが省略できる -}
plus x y = x + y
0978デフォルトの名無しさん
2011/05/28(土) 10:48:48.03Pythonは型付けが強いから
PerlやPHPは弱くてRubyやPythonは強い
>>976
噂て。
0979デフォルトの名無しさん
2011/05/28(土) 10:53:06.77pythonもperlも型に関しては大差ないよw
違いはプリミティブ関数や演算子の型に対する柔軟さ。
0980デフォルトの名無しさん
2011/05/28(土) 10:56:24.32ん、よくわからない
コード貼って例示おねがい
0981デフォルトの名無しさん
2011/05/28(土) 11:04:28.13たとえば組み込み型のnilとconsで定義されたリスト[]形とユーザー定義のNIL、CONSで定義されるList形があって
これを大抵fromList::List->[]、toList::[]->Listという変換関数を用いる事で混在して使用するところを
[]に対する操作fがListに対しても同じように適用できてその操作をFと仮定すれば
fをListに適用するときに自動的にFを生成してそれを適用することができる
これが安全に適用可能な条件として変換元の型と変換先の型が自然同型であるというのがあるんだけど
その証明をユーザーが提供することでこの自動変換機構を安全に処理系が提供することができる・・・と
再帰的に定義された型同士なんかではそれこそ処理系がその証明を自動で行うことすら可能だ
でこれを応用すると二つの同型である型を行き来しながら処理を行うコードに対して
変換関数の適用回数を多くても一回にする、というような最適化が可能になるという利点も
そこまでいかなくてもformなんとかとtoなんとかが何回も出てくるコードが見やすくなるというのは確実だ
で、これをphpの例でよくある文字列<->数値の相互変換というもので使おうとすると
どう変換関数を定義しても自然同型という性質が証明できないんで、自然同型であるものと比べて危険な変換であるというのがわかる
0982981
2011/05/28(土) 11:10:38.80まぁいいやただの思考ダンプなんで雰囲気で
0983デフォルトの名無しさん
2011/05/28(土) 11:13:45.12それはHaskellのShowとかと違うの?
外見的にはそれっぽいんだけど
0984デフォルトの名無しさん
2011/05/28(土) 11:13:52.350985デフォルトの名無しさん
2011/05/28(土) 11:20:36.68>>978
0986デフォルトの名無しさん
2011/05/28(土) 11:22:00.95違う
あれは具体的にユーザーが変換関数を両方定義してその定義したものを使用する際には明示的に書く必要があるんだけど、
これはその性質を証明できればその定義がいらないのと、明示的に書く必要が無い
型の定義の構造が同じであるような自明に近いようなな場合はそういう証明はコンピュータで自動的にできる、あるいは
その証明の一部を人の手ですることで残りをコンピュータに任せられることができるんだよね
0987デフォルトの名無しさん
2011/05/28(土) 11:32:11.88まあ、haskellでも
"122" ++ 45 = "12345"
って言うのは演算子の左側に型を合わせるとか決めれば、型推論の応用で仕様に追加出来るんだろうけど、そのコードが意図的にそう書いたのか、バグなのかはプログラマしか知らないんだよな
明示的に型変換させた方が読む側にとってはバグじゃないって分かって安心出来る
0988デフォルトの名無しさん
2011/05/28(土) 11:32:34.45ごめん、静的型付け言語でお願い。
0989デフォルトの名無しさん
2011/05/28(土) 11:40:32.01軽量 = 動的言語
静的で強い型付けって、最近出てる静的はみんな強い型付けだよ
javaもc#もscalaもhaskellも
0990デフォルトの名無しさん
2011/05/28(土) 11:41:32.03というより、
コンパイラ vs. インタープリタ
って感じだな。
0991デフォルトの名無しさん
2011/05/28(土) 11:42:43.54haskell
0992デフォルトの名無しさん
2011/05/28(土) 11:43:09.26満足なんだろう。
0993デフォルトの名無しさん
2011/05/28(土) 11:43:54.68軽量 ≠ 動的言語
軽量言語って対話環境が用意されている言語のことじゃないの?
0994デフォルトの名無しさん
2011/05/28(土) 11:44:19.15haskellやc言語にもインタプリタ有るし、lispにもコンパイラ有るけど、事実上、二つの対決関係はイコールだからな
0995デフォルトの名無しさん
2011/05/28(土) 11:47:03.38関数型言語ならともかく、手続き型言語では≒だが
0996デフォルトの名無しさん
2011/05/28(土) 11:48:02.47おまえは少しは空気読めよ。
0997デフォルトの名無しさん
2011/05/28(土) 12:04:33.940998デフォルトの名無しさん
2011/05/28(土) 12:55:53.110999デフォルトの名無しさん
2011/05/28(土) 12:57:55.151000デフォルトの名無しさん
2011/05/28(土) 13:01:38.00言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。