やっぱり動的言語では安全なソフトは作れない

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
型をしっかり明記してこそ
安全で堅牢、バグのないソフトは作れる
2デフォルトの名無しさん:2011/05/22(日) 03:35:31.37
せめて、そう思う根拠ぐらいを書こうよ、自分の主張に説得力をもたせるためにさ。

俺は天才だ。って言って、誰が信じると思うの?

そんなこともわからないぐらいに>>1は池沼なのかな?
3デフォルトの名無しさん:2011/05/22(日) 07:34:05.10
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
4デフォルトの名無しさん:2011/05/22(日) 08:07:12.29
>>1 はMLかHaskell使ってればいいじゃない。
まさかC言語で「安全」とか思ってないよね?
5デフォルトの名無しさん:2011/05/22(日) 08:37:53.05
どうして、京都大学霊長類研究所は、アイちゃんの、
スレ乱立を見過ごしてるの?

独自の板立ててそっちで実験するとかできないの?
いまどき、主婦だって専用の板ぐらい立てられるぞ。

「関係者以外は書きこまないで下さい。」とか、何
お前らがエラソーに仕切ってんだよ、ハゲ!

糞スレをあちこちにポンポン乱立されちゃ迷惑なんだよ。
ったく、京都大学霊長類研究所は能無しの集まりかよ!
6デフォルトの名無しさん:2011/05/22(日) 08:51:00.92
Haskellだって本当に安全ってわけじゃないぜ?
unsafeな関数がゴロゴロしてる
7デフォルトの名無しさん:2011/05/22(日) 09:16:30.99
せやな
8デフォルトの名無しさん:2011/05/22(日) 09:19:50.88
関数型が開発効率上がるならもっと普及してる
9デフォルトの名無しさん:2011/05/22(日) 09:28:27.14
>>4
むしろC言語って実質的には型がない言語じゃね?
10デフォルトの名無しさん:2011/05/22(日) 09:32:36.49
静的に型チェックすることが重要ってことだろ
11デフォルトの名無しさん:2011/05/22(日) 09:58:19.50
静的言語でも動的言語っぽい書き方はできる。
単にそういう書き方を許さない空気があるだけで、空気読まずに書こうと思えば書ける。
つまり、安全を機械的にチェックしているというのは半分嘘で、
実は人間のモラルに頼っている部分が大きい。
12デフォルトの名無しさん:2011/05/22(日) 09:59:14.49
面倒なことはやらない
13デフォルトの名無しさん:2011/05/22(日) 10:48:55.63
型推論をうまくやってくれて色々省略可能にした静的言語がつおい、でFA
14デフォルトの名無しさん:2011/05/22(日) 10:50:23.60
     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 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   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶
15デフォルトの名無しさん:2011/05/22(日) 11:12:28.80
C++に型推論が必要だと思えない
16デフォルトの名無しさん:2011/05/22(日) 11:22:35.30
C++に型推論は必要。templateやlambdaを書いてみれば分かる。
C++自体必要無いという意見は認める。
17デフォルトの名無しさん:2011/05/22(日) 11:29:18.28
templateには必要ないしそもそもlambdaとか必要ない。
マルチパラダイムを存続させたいならCとC++の間にもうひとつ言語用意すべき。
18デフォルトの名無しさん:2011/05/22(日) 11:34:21.09
Cを拡張した言語なんてこれ以上いらん
19デフォルトの名無しさん:2011/05/22(日) 11:34:36.00
Objective-C最高
20デフォルトの名無しさん:2011/05/22(日) 11:42:53.19
C++とかごった煮過ぎてプロジェクトで使えない
21デフォルトの名無しさん:2011/05/22(日) 11:43:37.66
Objective-CとかCベースである必要性がない
22デフォルトの名無しさん:2011/05/22(日) 11:53:44.47
静的 vs. 動的の話題が C++ vs. ObjC になるとかw
23デフォルトの名無しさん:2011/05/22(日) 12:08:29.69
そんなにおかしくないじゃん
24デフォルトの名無しさん:2011/05/22(日) 12:31:26.77
EclipseでPHP開発しようとしてがっかりした俺が来ました。
25デフォルトの名無しさん:2011/05/22(日) 13:05:02.46
スペルミスしても動いてしまうからなぁ。
26デフォルトの名無しさん:2011/05/22(日) 13:09:09.15
C言語もポインタ経由したりすると型無視されたりしてしまうし
C++もテンプレート使いまくると動的型みたいな状態になるな
27デフォルトの名無しさん:2011/05/22(日) 13:17:29.48
え?え?
28デフォルトの名無しさん:2011/05/22(日) 14:00:02.33
>>26
ならんが?w

それに使い方の問題は関係ない。
静的言語であっても動的言語みたいなことはできる。
だが逆に動的言語では静的言語みたいなことはできない。
29デフォルトの名無しさん:2011/05/22(日) 14:15:59.09
せやな
30デフォルトの名無しさん:2011/05/22(日) 14:57:37.69
>>28
できるよ。
31デフォルトの名無しさん:2011/05/22(日) 15:02:38.60
うそつきました
32デフォルトの名無しさん:2011/05/22(日) 15:34:20.63
>>28
オプションを両建てできてもあんまり嬉しくない
33デフォルトの名無しさん:2011/05/22(日) 15:54:51.48
動的な言語ならメタな機能を使って、
関数の引数や返り値の型だとか変数の型をアノテーションで宣言できるし、
モジュールロード時に型検査することもできる。

で、動的言語だと何ができないの?
34デフォルトの名無しさん:2011/05/22(日) 15:58:21.42
静的チェック・メモリの自前管理
35デフォルトの名無しさん:2011/05/22(日) 15:59:37.92
どこかで Ruby 「で」GC を実装する話を読んだ事がある希ガス
36デフォルトの名無しさん:2011/05/22(日) 16:02:52.01
>>34
どうして>>33を読んで静的チェックが可能だと理解できないの?
37デフォルトの名無しさん:2011/05/22(日) 16:08:12.04
>>33
それができるのはなんて言語だよw
38デフォルトの名無しさん:2011/05/22(日) 16:10:03.14
つーか実行時にできてもしょうがないんだよな。
実行前に検査できるのが重要であって。
39デフォルトの名無しさん:2011/05/22(日) 16:10:54.11
既にあるのかどうかは知らんが、たぶんpythonのアノテーションなら可能だと思うが。
40デフォルトの名無しさん:2011/05/22(日) 16:11:37.14
>>38
どうして>>33を読んで実行前にチェックが可能だと理解できないの? 馬鹿だから?
41デフォルトの名無しさん:2011/05/22(日) 16:21:49.66
静的チェックができる動的言語ってC++のことじゃん
42デフォルトの名無しさん:2011/05/22(日) 16:23:43.44
動的言語のメリットは記述が簡潔になる事なのに、
簡潔じゃない言語で動的な仕組みが使えても嬉しくないなあ
43デフォルトの名無しさん:2011/05/22(日) 16:23:58.45
静的に決めないから動的なんであって。
44デフォルトの名無しさん:2011/05/22(日) 16:25:20.67
記述の簡潔さのために可読性や保守性や静的なエラーチェックを下げるのか。
45デフォルトの名無しさん:2011/05/22(日) 16:31:54.16
>>40
だからなんて言語か言えって(爆笑)
怖いのか? お前の脳内言語か?
46デフォルトの名無しさん:2011/05/22(日) 16:32:07.69
可読性は下がらない
47デフォルトの名無しさん:2011/05/22(日) 16:34:22.41
メンバ変数が追加できる言語は宣言の概念がないか複雑なので可読性が下がってる。
48デフォルトの名無しさん:2011/05/22(日) 16:37:39.74
>>45
書いてあるのが読めないの?気が狂ってるの?
さっさと病院いけやキチガイ
49デフォルトの名無しさん:2011/05/22(日) 16:38:02.43
Objective-Cなんて昔は注目もされなかった言語だが。


それよりOS/9とかまだあるの?
50デフォルトの名無しさん:2011/05/22(日) 16:39:06.52
静的言語だと、よく使われる単語であるget()というメソッドをfetch()に
変えようと思ったとき使用箇所が何百とあったとしても、
すべてを安全に変更できるし、エディタの力を借りればほんの数秒で終わる作業だが
動的言語ではそれができない。
51デフォルトの名無しさん:2011/05/22(日) 16:41:28.81
最近はPythonのように、もともと動的言語だった物を
静的言語にしようという流れがある。

やっぱりそれは動的言語では安全なソフトを作れないからなのだろう。
52デフォルトの名無しさん:2011/05/22(日) 16:43:35.87
>>50
そのコードを使うのがお前一人なら、という前提が抜けてるぞ。

ま、ホビーストならそれでいいんじゃないか?
しかしチームで開発するようになったら、そんなナイーブな発想じゃだめだ。
ましてや分散レポジトリを使うような開発になったら、そんな変更を勝手にやるカスは追い出されるぞ。
53デフォルトの名無しさん:2011/05/22(日) 16:43:56.17
ActionScriptでもその流れ。
浸透すればするほど大規模に使おうとして静的になっていく。
54デフォルトの名無しさん:2011/05/22(日) 16:44:28.70
>>51
違うよ。
動的言語はメタ機能が充実していることが多いから、
その気になれば静的言語の機能を取り入れることが可能なだけ。
55デフォルトの名無しさん:2011/05/22(日) 16:46:58.32
>>52
50じゃないが大規模で動的言語自体危険なんだが。
変更の必要性を否定したら硬直化して一定規模以上で破綻するし
変更に安全性が保証されなかったらこれまた破綻する。
56デフォルトの名無しさん:2011/05/22(日) 16:47:50.84
その気になればw
57デフォルトの名無しさん:2011/05/22(日) 16:49:05.26
>>52
勝手にやるわけ無いだろ?
それは許可を得るというチーム開発の
マナーの話であって、

メソッド名を簡単に変えるという技術的な話とは一切関係ない
58デフォルトの名無しさん:2011/05/22(日) 16:50:59.32
>>54
> 動的言語はメタ機能が充実していることが多いから、

動的言語のメタ機能っていうのは、実行時にしかわからんメタ機能だ。

実行前に分かるメタ機能 = 静的言語が備えている機能
59デフォルトの名無しさん:2011/05/22(日) 16:52:48.80
決して愛用の動的言語名は明かさない。
60デフォルトの名無しさん:2011/05/22(日) 16:54:51.86
>>53
安全は規模に反比例する
大規模に使おうとする流れは危険だ
61デフォルトの名無しさん:2011/05/22(日) 16:57:45.37
動的言語だと、このメソッドがどこで使われてるか?の判断に
grep使うしか無いからな。

だから、英単語一つのメソッドは作らないとか
メソッドの頭にはクラス名を付けるのような
コード規約がよく使われている。

たとえば、obj.get_customer や obj.custmer_getだと
grepで関係ないものまで引っかかったりしないでしょ?
62デフォルトの名無しさん:2011/05/22(日) 16:58:56.48
>>60
おまえは最新OSもGNUも使うな
63デフォルトの名無しさん:2011/05/22(日) 17:13:08.44
Javaが安全すぎる
異論は認めない
64デフォルトの名無しさん:2011/05/22(日) 17:23:29.57
やはり、Javaか
65デフォルトの名無しさん:2011/05/22(日) 17:27:17.54
ちか、動的言語と動的型付けって意味が違うよね。>>1はバカなの?
66デフォルトの名無しさん:2011/05/22(日) 17:36:19.14
×ちか、
○つか、
67デフォルトの名無しさん:2011/05/22(日) 17:41:39.08
>>61
あるメソッドがどこで使われてるか実行時にしか分からないのは、
静的言語でもポリモーフィズムとかを使ったら一緒
変数の型付けの問題じゃない
68デフォルトの名無しさん:2011/05/22(日) 17:48:46.93
>>67
> あるメソッドがどこで使われてるか実行時にしか分からないのは、
> 静的言語でもポリモーフィズムとかを使ったら一緒

お前が言っている「分からない」ってのは一つに絞れないって意味だろ?

俺がいってるのは、一つに絞りたいということではなく
関係がある物を知りたいってことだよ。

ポリモーフィズムを使った場合、実装された関数だけを知りたいとは限らない。
インターフェースも知りたいし、そのインターフェースを使ってる関数も知りたい。
静的言語ならそれが見つかる。

だから、お前がいってるのは何の問題にもなってないよ。
69デフォルトの名無しさん:2011/05/22(日) 17:53:31.68
>69
へー、じゃあ動的言語で何が問題なの?
7069:2011/05/22(日) 17:54:07.75
間違えた
>>68
71デフォルトの名無しさん:2011/05/22(日) 17:54:26.40
検索すればわかるじゃん
72デフォルトの名無しさん:2011/05/22(日) 18:01:24.21
>>69
たとえばgetでgrepしたとき
全く無関係のgetまで見つかって、
コードを修正するとき、どれが影響あるものなのか
調べるのに時間がかかる。
73デフォルトの名無しさん:2011/05/22(日) 18:21:24.87
>>72
基本的に同意なんだけど、
動的言語でも名前空間使ったりして読む範囲を減らす努力はしてる
74デフォルトの名無しさん:2011/05/22(日) 18:26:28.45
>>72
interface型でgetメソッドを宣言していて、
継承関係のない複数のclassがそのinterfaceを実装していたら、
結局同じことになるぜ?

こんなこともわからずに静的型マンセーしてるの?
恥ずかしいねえ
75デフォルトの名無しさん:2011/05/22(日) 18:32:49.45
Pythonが静的型になったとか、このスレの静的型厨は頭がおかしいの?
76デフォルトの名無しさん:2011/05/22(日) 18:35:25.38
>>74
ならないよ。少なくとも、
「interfaceを実装している複数のクラス」だけを見ればいい
これらはそもそも無関係のクラスではない。
77デフォルトの名無しさん:2011/05/22(日) 18:36:56.73
>>73
名前空間使っても参照使われたらアウトだね。

インスタンス変数->メソッド ってなったとき
名前空間は役に立たないものになる。
78デフォルトの名無しさん:2011/05/22(日) 18:41:28.77
>>76
「interfaceを実装している複数のクラス」が相互依存してると考えるの?
interfaceってそういうのじゃないぜ
79デフォルトの名無しさん:2011/05/22(日) 18:44:42.62
>>78
interfaceに依存してるだろ。

例えばあるクラスのgetをfetchに変えようとしたとき、
静的言語なら、このクラスを変えただけでは駄目だ!
interfaceも変えなければ駄目だ!と分かるし

interfaceを変えただけではでだめだ!
このinterfaceを使っているすべてのクラスでも変えないと駄目だ!
ってわかるだろ?

これでも関係ないって言える?
80デフォルトの名無しさん:2011/05/22(日) 18:46:47.89
しかし、そんなことで困る状況って、そんなにあるもんなの?
そもそもがスパゲッティな作りじゃない限り、それで困ることってある?
探すときも、まずクラス名やインターフェース名で探してからメソッド名で
絞り込めばいいわけだし。
81デフォルトの名無しさん:2011/05/22(日) 18:47:54.59
>>80
そりゃ、個人で作っていたり
小さいプログラムなら、
時間はかからないだろうさ。
82デフォルトの名無しさん:2011/05/22(日) 18:48:23.72
>>77
Pythonだとクラスじゃなく関数使うことも多い
83デフォルトの名無しさん:2011/05/22(日) 18:48:37.80
>>79
ユニットテストクラスつくっとけや!
84デフォルトの名無しさん:2011/05/22(日) 18:49:56.12
>>83
ユニットテストを作る時間がかかる

できるできないの話をしてるんじゃないんだよ。
時間がかかるかどうかの話。

ユニットテストを使わないでも分かることを
ユニットテストを使ってからじゃないとわからなければ、
それは時間がかかるということ。
85デフォルトの名無しさん:2011/05/22(日) 18:51:51.57
ユニットテストを使っていても
結局は「ユニットテストで使っているgetを手動で書き換える」という
作業が増えてるだけなんだけどな。
86デフォルトの名無しさん:2011/05/22(日) 18:54:55.56
動的言語の生産性 - テスト書く手間 > 静的言語の生産性

なら動的言語を使えばいいさ
87デフォルトの名無しさん:2011/05/22(日) 18:55:54.35
テストも書いたらメンテしなきゃいけないからな。

書かずに同じ効果が得られるのなら
書かないほうがいい。
88デフォルトの名無しさん:2011/05/22(日) 18:56:45.28
動的言語の生産性 は
静的言語より劣るよ。

つーか動的言語が生産性高いって
何を根拠にそう思ってるんだろうな。
89デフォルトの名無しさん:2011/05/22(日) 19:01:04.78
そんなら、Webサービスも、バッチ処理も、コマンドラインツールも、全部C/C++でつくればいいじゃん。
90デフォルトの名無しさん:2011/05/22(日) 19:03:20.35
>>89
だからC/C++は別の問題、文字列が扱いにくいのと
メモリ管理が手間がかかるんで、Javaで作ってるよ。
91デフォルトの名無しさん:2011/05/22(日) 19:07:05.52
つーか静的言語だろうが何だろうがテストは書けよ
92デフォルトの名無しさん:2011/05/22(日) 19:08:19.06
誰がテストを書かないっていったんだ?
それにテストを書く前に分かる方が優れてるだろ?
93デフォルトの名無しさん:2011/05/22(日) 19:09:03.71
>>88
静的言語で総称型使って頑張ってるのを見ると
動的言語は楽なんだなって思う
94デフォルトの名無しさん:2011/05/22(日) 19:11:43.10
総称型しかないから総称型で頑張ってるのは
動的言語の方だろう?
95デフォルトの名無しさん:2011/05/22(日) 19:13:12.38
>>90
テキストファイルの処理とか、正規表現使ったりとか、置換処理とか、パース処理とか、日付の処理とか、
これ全部Javaでやるの? 面倒くさくない?
96デフォルトの名無しさん:2011/05/22(日) 19:14:13.70
Javaがウンコだからといって
静的言語全部がウンコってわけじゃない
97デフォルトの名無しさん:2011/05/22(日) 19:15:15.14
>>95
全部普通にできるし。
98デフォルトの名無しさん:2011/05/22(日) 19:16:35.28
Perlで一行でできることが、Javaだと普通に10行ぐらいかかるな。
99デフォルトの名無しさん:2011/05/22(日) 19:17:07.01
>>97
できる出来ないの話はしてないんじゃね?
だって動的言語でもテスト書けば安全なプログラムは書ける
100デフォルトの名無しさん:2011/05/22(日) 19:20:15.07
良スレ
101デフォルトの名無しさん:2011/05/22(日) 19:22:32.47
>>98
かからねーよw

>>99
だから、テストは実行しなければわからないんだから
そもそもレイヤーが違うもんだってば。
102デフォルトの名無しさん:2011/05/22(日) 19:23:39.33
Javaは、Webとモバイルアプリ用途だろ。
103デフォルトの名無しさん:2011/05/22(日) 19:23:53.28
動的言語を使うやつって、
どうも「関数を作る」という発想が少ないらしい。

だから毎回同じようなコードを書くやつが多い。
104デフォルトの名無しさん:2011/05/22(日) 19:24:25.81
>>76
へー、そのcloneableを実装しているクラスなんて世の中に何個あるかもわからないのに
全てのクラスを見れるんだー(棒読み
105デフォルトの名無しさん:2011/05/22(日) 19:25:10.02
>>79
うわー、シロウトだー
106デフォルトの名無しさん:2011/05/22(日) 19:25:33.62
>>101
「動的言語で安全なソフトが作れるかどうか」を議論してるんじゃないの?
テストでバグ潰せるならいいじゃん
107デフォルトの名無しさん:2011/05/22(日) 19:26:28.04
>>104
お前は何をいってるんだ?

自分が今やってるプロジェクトで
使っているところを知れば十分だろ。

お前はなぜ世の中すべてを見たいという話をしてるのか?
108デフォルトの名無しさん:2011/05/22(日) 19:27:05.56
>>105
うわー、反論したいけど、こいつ何も言ってない。うわー
109デフォルトの名無しさん:2011/05/22(日) 19:27:43.55
どう読んでも、静的厨のほうがチーム開発経験ないとしか思えんw

関数やメソッドのシグネチャ変える時に、手元のコードの型が辻褄あえばいいって発想からして
多数での分散開発の経験がないとしか言いようがない。
110デフォルトの名無しさん:2011/05/22(日) 19:30:01.01
>>106
テストでバグ潰せるならどうでもいいという理屈なら
ユニットテストは不要という結論になるぞ。

完成品をブラウザで動かして全部手動でテストすればいいよな?


バグって言うものは、なるべく早い段階で見つけるものだ。
早い段階で見つかるものほど、修正にかかる手間は少ない。

統合テストよりも単体テストで見つけるほうが修正は楽だし、
単体テストを動かす前に見つかるテスト(構文チェックなど)で
見つけるほうが修正は更に楽。
111デフォルトの名無しさん:2011/05/22(日) 19:30:08.05
>>107
じゃあ、おまえが勝手に変更したインターフェースを使っている他のプロジェクトの連中はどうする?
おまえが勝手に変更したクラス参照している他のプロジェクトの連中はどうする?

おまえ、チーム開発やったことないだろ
112デフォルトの名無しさん:2011/05/22(日) 19:30:54.22
なんだ、結局、Java厨のLL叩きスレだったか...
こいつら、何言っても聞く耳もたねーぞ、
一生オブジェクトを生成し続けてろよw
113デフォルトの名無しさん:2011/05/22(日) 19:32:03.64
>>110
だから自動化テストを書くっていってんだよwww
なんで手動でテストすることになってんだ
あと動的言語でも構文チェックはテスト書かなくてもするわい
114デフォルトの名無しさん:2011/05/22(日) 19:32:08.43
静的検査で洗える部分なんて、ほんの一部だ。
セマンティックな部分はほとんどノーチェック。
結局は安全はテストに大きく依存していることを自覚しろっての。
115デフォルトの名無しさん:2011/05/22(日) 19:32:15.34
>>109
だから手元のコードの方のつじつまだけじゃなくて、
そのコードと関連している部分をすべて見つけなきゃいかんのだよ。
だからinterfaceを使っていると関連コードが全て見つかるじゃないか。

見つけるべきものが見つけられず、
見つからなくていいものが、じゃまをする。
それが動的言語なんだよ。
116デフォルトの名無しさん:2011/05/22(日) 19:32:37.91
>>111
> じゃあ、おまえが勝手に変更したインターフェースを使っている他のプロジェクトの連中はどうする?
> おまえが勝手に変更したクラス参照している他のプロジェクトの連中はどうする?

コンパイルエラーが出るからすぐに分かる。
117デフォルトの名無しさん:2011/05/22(日) 19:33:42.31
>>113
お前前半部分しか読んでねーだろ?

自動テストを書くよりも前に先にわかるようが、
修正も楽だということだよ。
118デフォルトの名無しさん:2011/05/22(日) 19:35:23.11
>>117
とりあえずテストは書くんだよね?
だったら一度テスト書いたら、修正のたびに再度テスト走らせるだけだが?
119デフォルトの名無しさん:2011/05/22(日) 19:35:30.13
>>114
ほんの一部だろうが、スペルチェックの間違いのような
簡単なケアミスを、いちいちユニットテストを実行して調べるなんて
時間がかかることをしてられるか。

120デフォルトの名無しさん:2011/05/22(日) 19:36:55.58
>>118
テストを走らせるなんて時間がかかるじゃない。
テストを走らせないほうが時間は短いよね。
121デフォルトの名無しさん:2011/05/22(日) 19:39:05.91
>>119>>120
でもコンパイラは走らせるんでしょう?
122デフォルトの名無しさん:2011/05/22(日) 19:39:31.87
Java厨の言ってることは、わからんでもないが、
生産性を左右するものってそれだけじゃないだろ?
お前んとこでは、メソッド名の変更ばっかりやってんのかよ。
123デフォルトの名無しさん:2011/05/22(日) 19:40:27.33
関数名を変えたら、テストコードを実行してバグがあるということがわかるが、
実際はテストコードが間違っているわけで、テストを修正する必要がある。

その時、テストが間違っているのかコードが間違っているのか
調べるのは大変なことだ。だから動的言語ではリファクタリングに時間がかかる。

>>121
スクリプト言語だってインタプリタを走らせるのだから
何の反論にもなってないぞ。
124デフォルトの名無しさん:2011/05/22(日) 19:41:58.53
>>122
スペルミスなどのケアミスを甘く見てはいけない。

そんな下らないことで大きなバグを引き起こしたり
修正するのに時間がかかることはよくあること。
125デフォルトの名無しさん:2011/05/22(日) 19:42:39.12
Java厨房の仕事が、メソッド名の変更担当だということは分った。
126デフォルトの名無しさん:2011/05/22(日) 19:43:54.91
スペルミス等のほとんどのケアレスミスは、動的言語でも構文の厳密化パラメータの使用でチェックできるけどな。
127デフォルトの名無しさん:2011/05/22(日) 19:44:28.71
>>123
だから(テスト/コンパイラ/インタプリタ)走らせる手間なんて
安全なソフトを書く上ではどうでも良いって言ってんの
テスト走らせるの面倒って言ってんのJava厨だろ
128デフォルトの名無しさん:2011/05/22(日) 19:45:02.38
>>127
面倒なんて言ってねーだろ。
時間がかかるって言ってるんだよ。
129デフォルトの名無しさん:2011/05/22(日) 19:46:26.01
>>116
おまえ馬鹿だろw
「コンパイルエラーでるからわかるだろ」で済むかよカス
130デフォルトの名無しさん:2011/05/22(日) 19:46:44.58
動的言語で書く時間 + テスト走らせる時間 < 静的言語を書く時間 + コンパイル時間

なら動的言語を使えば良いさ
131デフォルトの名無しさん:2011/05/22(日) 19:47:17.49
>>129
馬鹿はお前だ。

コンパイルエラーでわかるのと
全くわからないのと、

この二つを比べて言ったセリフかそれは?
132デフォルトの名無しさん:2011/05/22(日) 19:47:45.17
テストケース書くのは時間がかかるとか言ってる奴は、ユニットテストを理解してないだろ。つか、実際使ってないだろ。
133デフォルトの名無しさん:2011/05/22(日) 19:48:27.44
>>115
> そのコードと関連している部分をすべて見つけなきゃいかんのだよ。

全て見つけるなんてできるわけねえだろカス
おまえが使ってるインターフェースを使ってるプロジェクトなんて
世界中そこら中にあるんだよ

静的厨ってみんなこんな馬鹿なの?
自分さえコンパイルエラーが出なければ
世界中に迷惑をふりまいても平気なの?
134デフォルトの名無しさん:2011/05/22(日) 19:49:44.94
いいんだよ、メソッド名をきままに変えてまわるのが仕事なんだから。
135デフォルトの名無しさん:2011/05/22(日) 19:49:59.76
>>113
だから、なんで世界中の話してるの?

作っている側が、使っている側をすべて把握するとか
なんでそんな話になってるの?

Linuxカーネル開発者が、すべてアプリを把握するとか
そういう話をしたいの?
136デフォルトの名無しさん:2011/05/22(日) 19:50:17.42
静的言語の方が型情報の補助がある分コードが読みやすい、
ってことなら部分的に同意するが、コンパイルでバグ見つかるってのを
そんなに重要視されてもなぁ……
137デフォルトの名無しさん:2011/05/22(日) 19:51:54.96
>>131
ヴァーカ、
だから動的言語では合意を重視しながら
元のセマンティクスを残して拡張するんだよ

メソッド名かえましたー
コンパイラがエラー吐きましたー
だからインターフェース定義を勝手にかえましたー

そうやってオレオレインターフェースつくって安全だとか言ってる時点で
おまえは本当の大規模開発の経験がないことを晒してんだよ
138デフォルトの名無しさん:2011/05/22(日) 19:52:17.54
>>132
えとさ、静的言語でもユニットテストってあるんだよ。

ユニットテストがブームになったのはJUnit、すなわち静的言語のJavaじゃん。

その静的言語で
ユニットテストをしなくても分かるのと
ユニットテストを実行しないとわからないのでは
明らかに後者のほうが時間がかかるよね。

実行時間の話じゃないよ。
書いてからミスが発覚するまでの時間だ。
139デフォルトの名無しさん:2011/05/22(日) 19:52:58.44
>>135
おまえはオレオレインターフェースしか使わないのか?
JDKで定義されているインターフェースを使わないのか?
おまえはそこまで馬鹿なのか?
140デフォルトの名無しさん:2011/05/22(日) 19:53:46.29
>>137
全てに伝えられるわけなんてねえだろカス
おまえが使ってるインターフェースを使ってるプロジェクトなんて
世界中そこら中にあるんだよ

世界中から合意を得ないと変えられないとか
どんだけ不便なんだよ
141デフォルトの名無しさん:2011/05/22(日) 19:54:35.07
Java厨が、スペルミスを極端に恐れていることは分った。
何かとんでもないミスをやらかして、トラウマにでもなったんだろうか。
142デフォルトの名無しさん:2011/05/22(日) 19:56:11.42
>>138
> ユニットテストがブームになったのはJUnit、すなわち静的言語のJavaじゃん。

JUnit書いたのはケント ベックで、
彼は動的言語Smalltalkのプロで、
静的言語でのテスト環境があまりにアレなんで
業を煮やしてJUnit書いた、

ってのが真相なのだが、知らなかったの?
Unit testが動的言語の習慣が由来だったことも知らずに
JUnit自慢してたの?
143デフォルトの名無しさん:2011/05/22(日) 19:56:23.88
動的言語は、インターフェース名を変えるとき
世界中の人から合意をとってるのか?

プロジェクト内での話なら
プロジェクトで合意をとればいいだけの話。

世界中で使われてるライブラリなら、
どうぞ世界中に合意をとってくださいなw

つーか、メソッド名を変えるときには
それを使っているところ全て自分の責任で
変えるもんだけどな。
144デフォルトの名無しさん:2011/05/22(日) 19:57:04.08
Java厨が、メソッド名の変更に情熱をかけていることは分った。
一体、一日の何時間をメソッド名の変更に費やしているのだろう。
145デフォルトの名無しさん:2011/05/22(日) 19:57:14.18
スペルミスは怖いよ
だから動的言語はレキシカルスコープと変数宣言の関係が超重要
146デフォルトの名無しさん:2011/05/22(日) 19:57:50.46
>>142
話を勘違いするな。

静的言語でもユニットテストは行われるというだけのことだ。
147デフォルトの名無しさん:2011/05/22(日) 19:58:08.62
動的言語が実用に耐えないことはわかった
148デフォルトの名無しさん:2011/05/22(日) 19:58:29.61
>>140
やっぱりJava習いたての高校生か。
結局、おまえの言う大規模だの整合性だのは、
手元にあるコードの範囲内の話だ。

不特定多数の開発者が参加するプロジェクトでは
到底通用しないよ。
149デフォルトの名無しさん:2011/05/22(日) 19:59:34.39
>>148
その理由は?
150デフォルトの名無しさん:2011/05/22(日) 19:59:37.30
>>143
> つーか、メソッド名を変えるときには
> それを使っているところ全て自分の責任で
> 変えるもんだけどな。

つまり君はその程度の規模の開発しか経験ない

ってことだね。よーくわかったよ。
151デフォルトの名無しさん:2011/05/22(日) 20:00:11.45
>>150
お前も経験浅そうだなw
152デフォルトの名無しさん:2011/05/22(日) 20:00:13.85
>>145
そういうのは殆どはテストで刈り取れるんじゃないの
153デフォルトの名無しさん:2011/05/22(日) 20:00:22.56
>>149
自分が扱っているコードの範囲内にしか考えが及んでいないから。
154デフォルトの名無しさん:2011/05/22(日) 20:00:44.76
>>151
その理由は?(棒読み
155デフォルトの名無しさん:2011/05/22(日) 20:01:03.66
名前解決の不整合がコンパイルでわかるのと
全てのフローを通るテストを書かなきゃわからない。
この差が決定的だと思えない奴が動的マンセーってことだな。
156デフォルトの名無しさん:2011/05/22(日) 20:01:07.13
テストがあるから変化を恐れないってのが
ブームなくせに

なぜか関数名を変えることを恐れるのは
なぜなんだろう?w
157デフォルトの名無しさん:2011/05/22(日) 20:01:15.30
公開されてるインターフェースを変更するのにかかるコストの大部分は
折衝とかのコミュニケーションとかそういう部分であって
静的言語のコンパイルエラー云々なんて誤差
大規模開発ならね
158デフォルトの名無しさん:2011/05/22(日) 20:02:47.11
なぜグーグル様はgwtなんて作ったんだろうね
159デフォルトの名無しさん:2011/05/22(日) 20:02:49.37
>>157
そんなの、ドキュメントに書いていれば済む話。

少なくとも大規模ライブラリの開発者から
ユーザーの俺にドキュメントに書く以外の方法で
連絡が来たことはない。
160デフォルトの名無しさん:2011/05/22(日) 20:02:59.42
Java厨は、コンパイルエラーさえが出なけりゃ、問題無しと思ってそうで怖いな。
161デフォルトの名無しさん:2011/05/22(日) 20:03:44.82
動的厨は支離滅裂だな
162デフォルトの名無しさん:2011/05/22(日) 20:03:55.00
>>160
アホかw

コンパイルエラーが出れば、
「明らかにそこに変化があった」と分かるだろ
それが重要なんだよ。

これも一種のテストだ。
163デフォルトの名無しさん:2011/05/22(日) 20:05:52.14
ここのJava厨は、コンパイル通れば、スペルミス防げるとか思ってるみたいだけど、
多分、リフレクションとか使ったことないんだろうなと思う。つか、使ってたら怖いし。
164デフォルトの名無しさん:2011/05/22(日) 20:07:25.11
>>159
でも勝手にインターフェース変えられたらムカつくでしょう?
場合によってはライブラリの使用を止めるくらいにさ

静的言語のメリットはあるけど、それはインターフェースを手元で
簡単に変更できるとかそういうことじゃない
165デフォルトの名無しさん:2011/05/22(日) 20:07:39.99
どっちが安全かって話と100%安全かの話にすり替えてる時点で終了
166デフォルトの名無しさん:2011/05/22(日) 20:08:52.52
>>163
だから、コンパイルエラーでわからないものは
ユニットテストで捕まえればいいのよ。

要はコードを書いてからバグが発覚するまでの
時間は短いほうがいいってこと。
167デフォルトの名無しさん:2011/05/22(日) 20:09:15.28
Java厨は、ほんと、コンパイルエラーさまさまなんだな。
168デフォルトの名無しさん:2011/05/22(日) 20:09:38.66
どっちが安全かって話を100%安全かの話にすり替えてる時点で終了
169デフォルトの名無しさん:2011/05/22(日) 20:09:55.76
>>164
お前は勘違いしてる。

静的言語のメリットはインターフェースを簡単に変更することではなく、
インターフェースを変更したときに簡単にそれが検出できるってことだ。
170デフォルトの名無しさん:2011/05/22(日) 20:12:28.19
C++最強の結論
171デフォルトの名無しさん:2011/05/22(日) 20:12:32.84
そうか、構文チェックも
一種の「テスト」と考えればいいんだね。

型を明記するっていうのは、
こういう型でなければならないというテスト

引数を明記するのは
こういう引数でなければならないというテスト

そうか、これもテストなんだ。
172デフォルトの名無しさん:2011/05/22(日) 20:14:14.64
ホワイトボックステストで判明するような不具合は、結局はブラックボックステストで判明するよ。
173デフォルトの名無しさん:2011/05/22(日) 20:14:33.53
しねーよ・・・
174デフォルトの名無しさん:2011/05/22(日) 20:15:44.13
>>170
宇宙がビッグバンからやり直しても、その結論には達しないなw
175デフォルトの名無しさん:2011/05/22(日) 20:16:19.59
実際に運用時に不具合が発覚したとき
それと同じことをブラックボックステストしてれば
見つかったはずでしょ?

運用時に起きたバグが
ブラックボックステストで
見つからないなんてことあるのか?
176デフォルトの名無しさん:2011/05/22(日) 20:16:27.94
>>174
これだもん
177デフォルトの名無しさん:2011/05/22(日) 20:16:48.41
テストケース漏れだな。
178デフォルトの名無しさん:2011/05/22(日) 20:17:08.64
>>175
おまえ責任なくていいな・・・
179デフォルトの名無しさん:2011/05/22(日) 20:18:29.21
>>178
なんで話をすり替えるの?
180デフォルトの名無しさん:2011/05/22(日) 20:21:07.27
>>159
そのライブラリ、具体的にどれよ?

俺は静的言語でも動的言語でもオプソなライブラリを公開してきたし、
プロプラなライブラリも提供してきた。
もちろん他所のオプソなライブラリやプロプラなライブラリを使ってきた。

今までAPIを変更する時には必ず、
(1) 変更の提案
(2) 時間を区切った議論
(3) 変更の決定
(4) ソースコードおよびドキュメントでのobsolete宣言をコミット
(4) 変更の周知期間(少なくとも次のメジャーバージョンまで)
(5) 旧インターフェース削除
という段階を踏むし、
もちろん他所のライブラリのインターフェースが変更された時も
上記のプロセスを無視するプロジェクトなんて見たことない。

これは静的型だろうが動的型だろうがかわらんし、
コンパイラのエラーだとか、そんなスウィーツな話とはレベルが違う。

さあ、ドキュメントで事後通告するだけの大型ライブラリの名称を晒せ。
181デフォルトの名無しさん:2011/05/22(日) 20:22:28.08
>>180
お前が先に名称を晒せよ
182デフォルトの名無しさん:2011/05/22(日) 20:23:29.73
難癖だけになった
183デフォルトの名無しさん:2011/05/22(日) 20:23:35.99
>>169
簡単に検出できたからって何?
だからインターフェースころころ変えても良いっての?

もし滅多にインターフェース変更しないなら、簡単に検出できるメリットがあっても
そのメリットは開発全体のコストからみたら誤差だ
184デフォルトの名無しさん:2011/05/22(日) 20:24:02.85
>>180
そのライブラリの中で使われてる
privateメソッドの変更でさえ、
わざわざそういう手順をとってるのか?
185デフォルトの名無しさん:2011/05/22(日) 20:24:45.07
>>171
型のテストなんて、テスト全体から比べて、ほんの極一部だよ。

それに、近頃の動的型言語の開発環境のなかには、
「この変数で叩いてるこれらのメソッドを全て実装したクラスはありませんが、何か?」
みたいな警告をするものもあるぞ。
186デフォルトの名無しさん:2011/05/22(日) 20:25:05.31
>>183
検出できて、かえたらいけないと判断したものは勝手に変えるなと伝えればいいだろ。
変わってるのに検出できないことの問題を考えたことがあるのか?
187デフォルトの名無しさん:2011/05/22(日) 20:25:40.78
>>184
APIって書いてあるの、読めない?馬鹿?文盲?
188デフォルトの名無しさん:2011/05/22(日) 20:26:10.99
どっちが難癖かはっきりした
189デフォルトの名無しさん:2011/05/22(日) 20:26:11.78
>>185
極一部なのがなんか関係あるのか?
すべてのメソッド、変数、が極一部だとは思えないが。
190デフォルトの名無しさん:2011/05/22(日) 20:26:21.50
>>176
あ、ゴメン。ネタで言ってるのかと思った。
191デフォルトの名無しさん:2011/05/22(日) 20:26:42.12
>>186
> 検出できて、かえたらいけないと判断したものは勝手に変えるなと伝えればいいだろ。

だーかーらー、元々APIを変更するってのは、そんなチャチな話じゃないの。まだわかんない?
192デフォルトの名無しさん:2011/05/22(日) 20:26:50.84
>>184
privateメソッドの名称変更ならスコープが限定されてるから
変更の影響がどこまで及ぶか分からない、とか無いよ
193デフォルトの名無しさん:2011/05/22(日) 20:28:03.77
>>187
だから結局合意が取るのはAPIだけだろ?

内部を複数の人が作るという状況だってあるわけだし、
お前のコミュニケーションというのは、
プロジェクト全体の極一部の話しかしてないわけだよ。
194デフォルトの名無しさん:2011/05/22(日) 20:29:14.03
>>192
動的言語はprivateなんて無いものが多いじゃん。
195デフォルトの名無しさん:2011/05/22(日) 20:29:45.86
>>189
型に関する部分だけでは、全体のほんの一部だよ。
あんたが書いた通り、構文チェックもテストの一種だ。これは動的型でも行なわれる。
また、実行によるテストも当然、テストの一種だ。これも動的型でも行なわれる。

型だけで判定でき、かつ、型でしか判定できないバグは、全体の一部でしかない。
196デフォルトの名無しさん:2011/05/22(日) 20:30:30.57
こんな話ですら合意とれないのが日本の現状
197デフォルトの名無しさん:2011/05/22(日) 20:30:36.80
公開されたインターフェースは簡単に変えられない
公開しないインターフェースの名称変更の影響範囲が分からないってなら
それはモジュール化とかそういうのが壊れてる
198デフォルトの名無しさん:2011/05/22(日) 20:30:43.95
>>193
もちろん、privateメソッドでも開発メンバー内で議論するよ。当然だろ。

え、やったことないの?あんた、本当に大規模開発の経験あるの?
199デフォルトの名無しさん:2011/05/22(日) 20:30:44.68
>>192
なら内部だけで使っているpublicメソッドは?
200デフォルトの名無しさん:2011/05/22(日) 20:31:39.72
>>198
さっきと正反対のことを言ってるぞw
201デフォルトの名無しさん:2011/05/22(日) 20:31:51.56
Java厨が、異常なほどのスペルミス恐怖症だということは分った。
202デフォルトの名無しさん:2011/05/22(日) 20:31:52.25
だめだ、静的厨のレベルが低すぎる。誰か、代わってやれ。
203デフォルトの名無しさん:2011/05/22(日) 20:32:12.83
>>195
だから、全体の一部だからってなんなの?
204デフォルトの名無しさん:2011/05/22(日) 20:32:29.33
>>202
どうぞどうぞ
205デフォルトの名無しさん:2011/05/22(日) 20:32:52.06
>>200
はあ?あんたマジで頭おかしいんじゃね?
福島にいってバケツで床の水を汲み出す簡単な仕事やってくれば?
206デフォルトの名無しさん:2011/05/22(日) 20:33:45.42
>>198
そして、議論されずに変えたものは
コンパイルエラーで見つかるから
静的言語のほうが安全という流れになるわけですね。
207デフォルトの名無しさん:2011/05/22(日) 20:33:46.20
>>203
ほんの一部しかカバーできてない検査で「安全になる」なんて妄想は持たないほうがいい。
208デフォルトの名無しさん:2011/05/22(日) 20:35:12.53
>>206
その議論の持っていき方は「Java厨=低能」になるからやめて
209デフォルトの名無しさん:2011/05/22(日) 20:35:24.23
>>206
privateなメソッド名を勝手にかえたら、
C0カバレッジが確保されている単体テストで確実に見つかるよ。

そんなことも知らずにJUnitとかわめいてたの?馬鹿?
210デフォルトの名無しさん:2011/05/22(日) 20:36:20.09
いや、メソッドごと消えたなら、C0カバレッジすら必要ないだろw
211デフォルトの名無しさん:2011/05/22(日) 20:37:08.43
>>207
すべてをカバーできる検査なんて存在しない。

常識じゃん。はぁ全く。呆れるよ。

テストっていうのはね。バグは早く見つけるほうが
修正は早いという考えで、なるべく早く見つかる方法を
使うんだよ。
212デフォルトの名無しさん:2011/05/22(日) 20:37:45.17
>>167
実際そうだよ
文法上のバグを取り除けたと言う保証は大きい
213デフォルトの名無しさん:2011/05/22(日) 20:38:08.30
>>209
> privateなメソッド名を勝手にかえたら、
> C0カバレッジが確保されている単体テストで確実に見つかるよ。

遅い。

変えた時点で見つからなければ修正に時間がかかる。
214デフォルトの名無しさん:2011/05/22(日) 20:39:17.63
まぁ、ある程度の規模のあるWeb開発はJavaかC#でいいよ。
だって、兵隊がこの程度の土方の集団なんだぜ。
そりゃコンパイルエラーの有難味も一層増すってもんだろうぜ。

大規模開発で起こりうる問題に根差す一番の原因はスペルミスとか
じゃないんだけどな。でもま、土方の集団にとっては、コンパイルエラー
の助けが、地獄を照らす希望の光に見えるのもわからなくもない。
215デフォルトの名無しさん:2011/05/22(日) 20:40:06.67
どんだけメソッド名変更したいんだよJava厨はwww
216デフォルトの名無しさん:2011/05/22(日) 20:41:15.97
単体テストもねぇ。
たしかにテストに失敗しましたって画面に表示されるんだけど、

いざそのテストを修正しようと思ったら、
コードを見て調べないといけないわけで。

たくさんの単体テストコードを書いていれば
たくさん失敗しましたってでるわけで。

たくさんの失敗の中から根本的な問題を捜す時間がかかるのを考えると
コンパイル時にわかるなら、そっちの方が、時間がかからずに済むんだよ。

単体テストフェーズ以前で検出できるようなものを
単体テストフェーズまで持っていけるってのがおかしい。
217デフォルトの名無しさん:2011/05/22(日) 20:42:07.46
>>214
一番の原因じゃなければ、無視してもいいのか?
218デフォルトの名無しさん:2011/05/22(日) 20:44:50.63
しかし、どんだけスペルミス恐怖症なんだよ、Java厨はw
219デフォルトの名無しさん:2011/05/22(日) 20:47:36.05
え?スペルミスしないの?
スペルミスをわざわざユニットテスト実行して直してるの?

スペルミスを検出するのに
ユニットテストを実行するのは
すごくめんどくさいんだが、

プログラマの美徳「怠慢」を備えてないんじゃない?w
220デフォルトの名無しさん:2011/05/22(日) 20:53:15.63
実際すべての分岐を通るテストかいてるの?
221デフォルトの名無しさん:2011/05/22(日) 20:55:44.55
パブリックなメソッドの名前を変更するなら、それに依存するクラスへ影響があるから、
関係者へも通知が必要だろうし、設計書への反映も必要だし、修正後の動作確認も
いるだろうから、動的言語だろうが、静的言語だろうが、手間はあまり変わらなくね?
コンパイルが通ったから、万事おっけーって訳にいもいかないだろ。
他のモジュールからクラスを動的にロードしたりとか、継承元とメソッド名がかぶって
しまって意図せずオーバーライドしてたなんて可能性もあるわけだから。

プライベートなメソッドなら、局所的なものだから、自分の判断で直してもいいかもしれ
ないけど、それは影響範囲が限られたものだから、動的言語で、ソース検索して探し
ても、そんなに手間がかかるもんじゃないだろ。
222デフォルトの名無しさん:2011/05/22(日) 20:56:14.63
「変化を抱擁せよ」って言葉が懐かしい。
結局は関数名一つ変えるのに
まだこんなに恐れているんだな。
223デフォルトの名無しさん:2011/05/22(日) 20:57:43.57
>>221
> パブリックなメソッドの名前を変更するなら、それに依存するクラスへ影響があるから、

その依存するクラスを見つけるのが簡単なのが
静的言語なんだよ。

依存するクラスはどれだー!って探さなきゃならないのは
いやだよね。だから変化するのが怖いってなっちゃう。
224デフォルトの名無しさん:2011/05/22(日) 20:58:20.74
静的がjava,C++を指してることはわかるが動的か何を指してるか不明
225デフォルトの名無しさん:2011/05/22(日) 20:59:35.30
>>214
コンパイルエラーは、希望の光と言うより、一里塚だな
文法上のバグは無い事が保証されたから、ロジック上のバグか、ライブラリのバグかに絞られる

スペルミス心配してる人が居るみたいだけど、ここでは、文法のスペルミスは文法上のバグに
変数名やクラス名のスペルミスはロジック上のバグになる
226デフォルトの名無しさん:2011/05/22(日) 21:01:02.70
>>223
検索すればすぐわかるじゃん。
最近は、ソースからクラス図を吐いてくれるツールとかもある。
そんなに時間かかんないよ。
227デフォルトの名無しさん:2011/05/22(日) 21:01:49.95
>>226
あぁ、静的言語じゃないと
使い物にならないあれねw
228デフォルトの名無しさん:2011/05/22(日) 21:02:33.48
ま、最近のIDEとか、エディタはかしこいから、変数や関数のスペルミスなんかは、
間違ったそばから、色付けて教えてくれるけどね。
229デフォルトの名無しさん:2011/05/22(日) 21:03:32.35

 なにこのスレw 低レベル杉、ワロタw

230デフォルトの名無しさん:2011/05/22(日) 21:03:51.55
動的言語とIDEの相性がわるいのは
やっぱり静的言語にある情報が抜けてるからだろうな。

JavaとEclipseの相性は最高。
リファクタリングの機能を知らない人は
使ってみたほうが良い。
231デフォルトの名無しさん:2011/05/22(日) 21:04:37.56
でここでの使える動的言語はなにさしてるの?
232デフォルトの名無しさん:2011/05/22(日) 21:05:19.04
>>229
立場を明示せよ
233デフォルトの名無しさん:2011/05/22(日) 21:05:28.67
実際、IDEと静的言語の相性は良い
234デフォルトの名無しさん:2011/05/22(日) 21:05:59.33
つまり、Objective-CとXCodeの組み合わせが最高ということか。
235デフォルトの名無しさん:2011/05/22(日) 21:07:12.24
ようやくIDEで一段階進んだ。
236デフォルトの名無しさん:2011/05/22(日) 21:08:29.81
大規模開発に向いてる動的言語教えて
237デフォルトの名無しさん:2011/05/22(日) 21:09:08.26
動的言語でIDEが流行らないのは色付けぐらいしか、
コード書いているときにやれることがないからなんだろうな。

コード書いているときにバックグラウンドで
今書いているコードのユニットテストを常に
走らせ続けているなんてIDEぐらいなら
作れると思うんだが。
238デフォルトの名無しさん:2011/05/22(日) 21:09:24.21
>>236
Common Lisp
239デフォルトの名無しさん:2011/05/22(日) 21:10:06.48
Objective-C まじお勧め。 静的言語と動的言語のよいとこどりだぜ。
まぁ、Web開発にはオヌヌメしないが。
240デフォルトの名無しさん:2011/05/22(日) 21:15:17.52
要らないとこ取りの間違いないだろw
241デフォルトの名無しさん:2011/05/22(日) 21:15:25.52
>>237
>今書いているコードのユニットテストを常に
>走らせ続けているなんてIDEぐらいなら

そんなウザったい機能いらねーよ!
242デフォルトの名無しさん:2011/05/22(日) 21:16:45.80
>>223
だから、人様に使ってもらえるようなコードは書かない
カスPGだって自己紹介はもういいよ
243デフォルトの名無しさん:2011/05/22(日) 21:16:58.17
>>241
なぜウザったいと思うんだ?
244デフォルトの名無しさん:2011/05/22(日) 21:17:31.51
決して具体的な言語名を挙げない動的言語派
245デフォルトの名無しさん:2011/05/22(日) 21:17:35.85
>>242
ようカスPGw

結局人を罵倒するだけしかできなくなったなw
246デフォルトの名無しさん:2011/05/22(日) 21:19:15.11
>>243
コード書いてる途中のテストに何の意味があるんだよw
そんなこともわかんねーのかよw
247デフォルトの名無しさん:2011/05/22(日) 21:21:08.98
>>245
>>221を読んで、それでもまだコンパイルチェックで
減らせる手間が全体の手間と比べて誤差だって分からないなら
ちょっと頭が残念すぎるだろ
248デフォルトの名無しさん:2011/05/22(日) 21:22:09.86
>>247
誤差って言い切るお前の頭が残念すぎる
249デフォルトの名無しさん:2011/05/22(日) 21:23:53.24
勘違いしないで
ここで暴れてるのはJava厨だよ
決して静的型付け言語ユーザが皆こんなアホだと思わないでね
250デフォルトの名無しさん:2011/05/22(日) 21:23:57.98
ここのJava厨は、クロージャとか使ったこともなさそうだな。
つか、クロージャの用途とか便利さとかも分らないだろ。
クロージャこそ、動的言語の特徴のひとつといってもいいだろう。
最近のJavaでも使えるんだが、毎日、毎日、スペルミスの修正
にやっきになってるお前らに使えるわけもなく。
251デフォルトの名無しさん:2011/05/22(日) 21:25:21.25
>>246
そうだね。
それこそ、ユニットテストと
文法テストの大きな違いじゃね?

ユニットテストは文法テストに比べれば
あとの段階にならないとテストとしての意味を持たない。

逆に言えば文法テストはユニットテストよりも先にわかる
早いテストは修正も早い。

根本的にテストの種類が違っているわけで
ユニットテストで一緒に文法テストの代わりをしようっていうのは
ビッグバンテストでユニットテストの代わりをしようというのと同じこと

すごく間抜けな考え。
252デフォルトの名無しさん:2011/05/22(日) 21:26:19.04
>>250
最近のJavaでも使えるので
クロージャは動的言語の特徴ではありませんよ
253デフォルトの名無しさん:2011/05/22(日) 21:26:23.92
クロージャが便利だと思ったことない。
Javascriptでクラスのメンバ変数隠蔽のために使ってるけど
素直にクラスが欲しい。
254デフォルトの名無しさん:2011/05/22(日) 21:28:01.75
てかhtml組み込みでJavaとJavascript両方使えるならJavaだよね?
この条件でJavaより便利な動的言語ってなにが考えられるの?
255デフォルトの名無しさん:2011/05/22(日) 21:29:00.75
>>250
haskellは。。。
256デフォルトの名無しさん:2011/05/22(日) 21:32:42.94
JavaScriptの良さがわかってない時点で、Java厨はダメだ
Prototype型とクラス型の違いとか、ホントにわかってんのか?
257デフォルトの名無しさん:2011/05/22(日) 21:33:26.44
ああ真性なのね・・・
258デフォルトの名無しさん:2011/05/22(日) 21:33:52.50
CoffeeScript最強
Javaはウンコ
259デフォルトの名無しさん:2011/05/22(日) 21:35:14.61
文法テストなんて、テストがあるとは始めて知った。
Java土方の世界では、当たり前の用語なのか?
260デフォルトの名無しさん:2011/05/22(日) 21:36:06.72
>>259
つまらないから黙ってて
261デフォルトの名無しさん:2011/05/22(日) 21:37:05.09
すげー盛り上がってるなw
262デフォルトの名無しさん:2011/05/22(日) 21:37:46.83
文法テストは、プログラマ向けじゃなくて、コーダー向けじゃないかな。
263デフォルトの名無しさん:2011/05/22(日) 21:38:04.78
文法テストがない言語では文法ミスが
ロジックエラーにまで悪化してしまう。
264デフォルトの名無しさん:2011/05/22(日) 21:38:36.77
おれはタイプミスしないプログラマーです!
・・・レベル低っ・・・
265デフォルトの名無しさん:2011/05/22(日) 21:39:20.84
タイプミスぐらい誰でもするだろ。
266デフォルトの名無しさん:2011/05/22(日) 21:39:49.40
えーと、動的型付け言語でも構文チェックは行われるけど
Java厨のいう文法テストってのはそれとは違うの?
267デフォルトの名無しさん:2011/05/22(日) 21:40:08.03
動的言語野郎が嫌ってるのは静的言語じゃなくてC++とJavaなんじゃないか?

静的言語のC#(3.0以上)、scala、Haskellは素晴らしいぞ
268デフォルトの名無しさん:2011/05/22(日) 21:40:27.60
実用的な動的言語の例が一向に上がらないんだが
269デフォルトの名無しさん:2011/05/22(日) 21:41:14.31
関数型は黙ってて
270デフォルトの名無しさん:2011/05/22(日) 21:41:32.93
>>266
構文チェックと識別子のチェックは別だろ?
そんなこともわかんねーの?
271デフォルトの名無しさん:2011/05/22(日) 21:41:50.92
>>267
嫌ってないよ
公開インターフェースを簡単に変更するとか
アホなことばかり言ってるので突っ込んでる
静的言語使いがアホに見えるので止めていただきたい
272デフォルトの名無しさん:2011/05/22(日) 21:42:50.12
>>266
構文チェックというよりか、
このクラスはこのメソッドを持っている。
このメソッド以外は持ってない。

この変数にはこの型と互換性があるものだけ入る。
それ以外は入らないというテストだな。


もしユニットテストとして書くなら
ASSERT(instanceof 変数 is MyClass)
を書いているようなもんだよ。
273デフォルトの名無しさん:2011/05/22(日) 21:42:57.16
で実用的な動的言語って具体的に何?
274デフォルトの名無しさん:2011/05/22(日) 21:45:16.83
>>269
クロージャとかの本家がコンパイラが多いから都合が悪いんじゃろか。。。
275デフォルトの名無しさん:2011/05/22(日) 21:45:33.96
>>271
> 公開インターフェースを簡単に変更するとか

誰もそんな事言ってないと思うが?

言ってるのは、interface型を変更するって話だろ。
抽象クラス、クラス、インターフェースのインターフェースだよ。

private/public関係なく、オープンソースかどうか
ライブラリかどうかも関係ない話。

もしかして今まで勘違いして書き込んでたの?
276デフォルトの名無しさん:2011/05/22(日) 21:45:37.58
静的言語は関数型の力を取り込んで年々強力になっていく
一方、動的言語は10年前からほとんど変わっていない
(ライブラリは色々と良い物が出てきたが、言語仕様に大きな進歩は無い)

静的言語と動的言語、どうして差がついたのか…慢心、環境の違い
277デフォルトの名無しさん:2011/05/22(日) 21:47:03.06
動的言語って実際何を指してるの?
278デフォルトの名無しさん:2011/05/22(日) 21:47:50.35
>>275
都合が悪くなったら言ってなかったことにするとかwww
>>159とか何なんだよ
アホすぎる
279デフォルトの名無しさん:2011/05/22(日) 21:48:29.77
>>276
やっとLispに追いついてきただけ
280デフォルトの名無しさん:2011/05/22(日) 21:49:33.01
で動的言語って実際何を指してるの?
281デフォルトの名無しさん:2011/05/22(日) 21:50:58.54
>>280
lispじゃね?
282デフォルトの名無しさん:2011/05/22(日) 21:51:02.07
>>278
いや、公開インターフェースと言い出したのはお前だろ?
今まで付き合ってやっていたが、通りは話がずれていると思った。
283デフォルトの名無しさん:2011/05/22(日) 21:51:45.12
え?Lispなの?
284デフォルトの名無しさん:2011/05/22(日) 21:53:01.52
Objective-C も動的型付け言語だけど、何か問題があるんだっけ?
285デフォルトの名無しさん:2011/05/22(日) 21:53:08.33
>>282
付き合ってやってただけwww
なら最初から違うって言ってれば良かったのに
分が悪くなってから言い出すとかw
やっぱJava厨はアホだな
286デフォルトの名無しさん:2011/05/22(日) 21:53:09.42
静的がJava,C++なのはいいと思うけど(原理主義者はJavaもだめだろうが)
動的はなにを念頭においてるのかわからないとそもそも議論にならないだろ
287デフォルトの名無しさん:2011/05/22(日) 21:53:14.84
コンパイラチェックの恩恵がうけられないから、動的言語は嫌だと
敬遠しているようなプログラマは、まだまだひょっこだよ。
288デフォルトの名無しさん:2011/05/22(日) 21:53:50.08
>>284
話にならない
289デフォルトの名無しさん:2011/05/22(日) 21:54:08.15
静的言語の代表がJava,C++とか止めてよね
290デフォルトの名無しさん:2011/05/22(日) 21:54:28.76
Objective-Cは最強だな。もう言語は、Objective-Cだけでいいと思う。
291デフォルトの名無しさん:2011/05/22(日) 21:54:31.99
>>287
曲芸プログラムに興味はない
292デフォルトの名無しさん:2011/05/22(日) 21:54:45.15
>>288
話出来ないなら別に良いけど・・
293デフォルトの名無しさん:2011/05/22(日) 21:55:12.98
>>289
そういう時は代案言ってね
294デフォルトの名無しさん:2011/05/22(日) 21:56:51.39
>>292
smalltalk由来のオブジェクト指向なのに問題点もわからない時点で終了
295デフォルトの名無しさん:2011/05/22(日) 21:56:59.40
>>287
敬遠してないけど、大規模開発に動的言語は嫌だな
デバッグで最後の最後まで文法上のバグを捨てきれないとか嫌すぎる
デバッグが大変になるほど、切り分けは重要だもんよ
296デフォルトの名無しさん:2011/05/22(日) 21:57:00.91
297デフォルトの名無しさん:2011/05/22(日) 21:57:02.95
しかし、こいつらスペルミスがそんなに怖いのかね。
ちょっと異常すぎないか..
298デフォルトの名無しさん:2011/05/22(日) 21:57:23.88
>>294
君が終了する分には何も困らんけど?
299デフォルトの名無しさん:2011/05/22(日) 21:58:03.91
>>296
なんだつまらん
300デフォルトの名無しさん:2011/05/22(日) 21:58:32.58
>>297
一人なら良いんだよ
大人数になるとスペルミスも笑えない
301デフォルトの名無しさん:2011/05/22(日) 21:59:15.61
Smalltalkが普及しましたか?
Objective-Cがなぜ他の処理系に普及しないのか考えたこともないんだな
302デフォルトの名無しさん:2011/05/22(日) 21:59:29.98
あぁ、そうか土方の集団が相手なんだったな。
303デフォルトの名無しさん:2011/05/22(日) 22:00:23.92
Smalltalkと関数型は同じにおいがする
304デフォルトの名無しさん:2011/05/22(日) 22:00:24.45
>>301
答えが見つかったら教えてくれ
305デフォルトの名無しさん:2011/05/22(日) 22:01:04.52
>>304
使いたいと思わないから以外にあるの?
306デフォルトの名無しさん:2011/05/22(日) 22:01:11.72
>>300
それは「動的言語では安全なソフトは作れない」が真になるほど
問題だと思うの?
そうじゃなければスレ違いの話をしていることになるよ
307デフォルトの名無しさん:2011/05/22(日) 22:02:00.68
>>305
ホラ、もっとよく考えて良いんだぜ
308デフォルトの名無しさん:2011/05/22(日) 22:02:27.82
Java厨はJavaマンセーの持論を展開したいだけで
スレタイとかどうでもいいのかも
309デフォルトの名無しさん:2011/05/22(日) 22:02:28.84
JavaはGNUがさっさと作って普及したのにね
SmalltalkやObjective-Cがそのレベルで使われてるとでもいうつもりなのかな
310デフォルトの名無しさん:2011/05/22(日) 22:03:11.52
>>302
あながち間違っても無い
大規模って事は、レベルも色んな人が関わるから

それでも動的言語使いますか?と聞かれたら、答えは絶対に、ノー
311デフォルトの名無しさん:2011/05/22(日) 22:03:33.84
>>309
>JavaはGNUがさっさと作って普及したのにね

どういう意味か、誰か解説キボンヌ
312デフォルトの名無しさん:2011/05/22(日) 22:03:47.87
集団開発はJavaでしょうがないかなと思うけど、個人でやるにはJavaは嫌だな。
何が嫌かって、まず開発環境と実行環境を整えるのが面倒臭すぎる。
313デフォルトの名無しさん:2011/05/22(日) 22:04:15.41
動的言語のメリット語るときは具体的な言語も添えてください。
現在、Lisp、Smalltalk、Objective-C。
314デフォルトの名無しさん:2011/05/22(日) 22:05:00.29
>>313
Common Lisp
315デフォルトの名無しさん:2011/05/22(日) 22:05:29.33
普及してる言語じゃないじゃんw
316デフォルトの名無しさん:2011/05/22(日) 22:06:10.11
>>313
JavaScript(ついでにCoffeeScript)も出てたよ
317デフォルトの名無しさん:2011/05/22(日) 22:06:30.37
>>313
主要なLLは含めていいよ。
Perl, Ruby, Python, PHP
318デフォルトの名無しさん:2011/05/22(日) 22:06:38.95
>>315
Dylan
319デフォルトの名無しさん:2011/05/22(日) 22:07:07.26
>>313
PythonとPerlも出てたよ
320デフォルトの名無しさん:2011/05/22(日) 22:07:21.46
>>313
Lua
321デフォルトの名無しさん:2011/05/22(日) 22:07:34.11
え、Perl, Ruby, Python, PHP,JavaScriptが大規模開発で使えるって話してたの?
322デフォルトの名無しさん:2011/05/22(日) 22:07:58.37
>>321
Io
323デフォルトの名無しさん:2011/05/22(日) 22:08:18.08
Pythonは、プロトタイプがちゃっちゃっと作れるのがいいな。
324デフォルトの名無しさん:2011/05/22(日) 22:08:19.90
キチガイだろw
325デフォルトの名無しさん:2011/05/22(日) 22:08:29.56
>>313
Scheme
326デフォルトの名無しさん:2011/05/22(日) 22:08:53.96
>>321
そりゃプログラマ次第だろ
少なくとも勝手にメソッド名変更したりする馬鹿が居れば
どんな言語使ってても大規模開発は困難だわ
327デフォルトの名無しさん:2011/05/22(日) 22:09:14.62
>>285
じゃあ、今から違うという前提で話をしよう。
それだけの話だ。
328デフォルトの名無しさん:2011/05/22(日) 22:09:17.03
結局動的言語はプロトタイピング専用言語ってことでいい?
329デフォルトの名無しさん:2011/05/22(日) 22:09:39.98
JavaScript もプロトタイプを作るのに最適
330デフォルトの名無しさん:2011/05/22(日) 22:09:58.17
言語名が出てきたとたんに終戦ムードw
331デフォルトの名無しさん:2011/05/22(日) 22:10:49.63
自分の作りたい物をサクッと実装出来るのが良いね
後はテストケースを増やしながら熟成
332デフォルトの名無しさん:2011/05/22(日) 22:10:58.46
Java厨の想定は、大勢の土方でWeb開発をしているという想定だから。
それに沿って話をしてあげて。 コンパイルエラーのメッセージが何より
もありがたい人達の集まりだから。
333デフォルトの名無しさん:2011/05/22(日) 22:11:04.82
>>297
> しかし、こいつらスペルミスがそんなに怖いのかね。

ロジックエラーが怖いといえばいいのか?

動的言語に置いてスペルミスは
ロジックエラーになるんだよ。
スペルミスしていたとしても動くからね。
334デフォルトの名無しさん:2011/05/22(日) 22:11:17.29
大きくなったらJavaかC++で書き直すだろ普通
335デフォルトの名無しさん:2011/05/22(日) 22:12:32.97
安全なソフトが作れるか否かが論点だろ?

動的言語派はテストをちゃんと書けば作れると主張しているが、
静的言語派はテストは面倒としか言ってないので、動的言語派の主張を否定できてない
336デフォルトの名無しさん:2011/05/22(日) 22:12:41.29
>>334
速度が必要な所だけね
337デフォルトの名無しさん:2011/05/22(日) 22:13:29.17
>>335
>静的言語派はテストは面倒としか言ってない
要らないテストコードを書く手間が省けるな
338デフォルトの名無しさん:2011/05/22(日) 22:14:03.14
俺の最近の流行りは、Drupal(PHP製のCMSね)でWeb開発。
これ最強。 たぶん生産効率はJavaの5倍〜10倍ぐらい。
339デフォルトの名無しさん:2011/05/22(日) 22:14:17.22
バインディングとか面倒だしロジック整理できるし動的のまま残す理由がない
340デフォルトの名無しさん:2011/05/22(日) 22:15:09.74
>>338
こういうこと想定してるのとJava/C++派の想定しているものは前提が違いすぎる。
341デフォルトの名無しさん:2011/05/22(日) 22:15:42.56
スペルミスが見つけられるということは
このクラスがどんなメソッドを持っているのが分かるということを意味する。
このクラスが持っているメソッドが分かるということは
適切なドキュメントを素早く表示できる。

大規模プロジェクトでpublic/private関係なくすべての関数を
把握出るわけがないんだから、素早くドキュメントを見れる仕組みは必要。

このようにたかがスペルミスだと思うかもしれないが、
その技術の応用は計り知れず、それが積み重なって
生産性の向上につながる
342デフォルトの名無しさん:2011/05/22(日) 22:15:54.22
>>339
沢山のサイトが普通に PHP のままリリースされてるじゃん
343デフォルトの名無しさん:2011/05/22(日) 22:16:40.85
>>342
だってレンタルサーバーでJava動かないんだから
仕方ないじゃない。
344デフォルトの名無しさん:2011/05/22(日) 22:17:20.53
>>343
みんなはそれで納得していると言う事
345デフォルトの名無しさん:2011/05/22(日) 22:17:24.53
>>306
個人的には思う
346デフォルトの名無しさん:2011/05/22(日) 22:18:03.21
みんなが諦めているの間違いだろw

てかレンタルサーバーってw
小規模すぎ。
347デフォルトの名無しさん:2011/05/22(日) 22:18:07.41
>>342
PHPが必要とされてるドメインとJava派が言ってる大規模開発は異なる
348デフォルトの名無しさん:2011/05/22(日) 22:18:44.05
しかし、メソッド名を変えたくなることって、そんなにあることなの?
349デフォルトの名無しさん:2011/05/22(日) 22:19:03.02
>>341
静的型付けじゃなくても、インターフェイスの定義をコンパイラが参照出来れば良いだけでしょ
Objective-C みたいに
350デフォルトの名無しさん:2011/05/22(日) 22:19:35.39
>>341
動的言語でも全てのスペルミスが見つからないわけじゃないし
静的言語でも全てのスペルミスが見つかるわけじゃない

Scala等ならともかく、Javaなんて生産性高くないだろ
351デフォルトの名無しさん:2011/05/22(日) 22:20:14.97
>>347
Facebook は PHP じゃなかったっけ?

高速化の為に PHP to C++ のトランスレータがあるらしいけど・・
352デフォルトの名無しさん:2011/05/22(日) 22:20:56.59
>>348
Java厨はメソッド名を変えて廻るのがお仕事です
353デフォルトの名無しさん:2011/05/22(日) 22:21:05.22
PHPってシステムの中の定型的なカスタマイズ部分用だろ。
最近はネットワーク上のマッシュアップ的なシステムも主流だから
動的言語の役割もわかる。
OS見たいな単一的なシステムはC/C++みたいな静的な言語になるでしょう。
354デフォルトの名無しさん:2011/05/22(日) 22:21:38.34
>>347
PHPでいう大規模ってのは
個人・小規模開発者が自分でサーバーに入れて使う
そういう人が”たくさんいる”という意味での大規模で

Javaの場合の大規模ってのは、一つのシステムを
たくさんの人で作る、開発費も膨大でそれを
支払ってくれる大会社が顧客としている
という意味の大規模だよな
355デフォルトの名無しさん:2011/05/22(日) 22:21:51.89
>Scala等ならともかく
こいつ絶対大規模開発やったことない
356デフォルトの名無しさん:2011/05/22(日) 22:23:02.95
Java開発って、結局Web開発でしょ? 大規模とはいえ、ただ画面が多いだけじゃん。
どうせ、ちゃんとクラス設計とかしてないでしょ? マンパワーでごり押しでしょ?
ユースケースからロバネスト分析やったりとか、シーケンス図書いたりとかしてないでしょ?
そりゃ、コンパイラのエラーメッセージに藁をもすがる思いになるのもなんとなくわかるわ。
357デフォルトの名無しさん:2011/05/22(日) 22:23:27.93
>>355
大規模開発経験者は簡単にメソッド名変えるんですよね?www
358デフォルトの名無しさん:2011/05/22(日) 22:23:58.14
>>356
画面程度ならPHPだろ・・・
359デフォルトの名無しさん:2011/05/22(日) 22:24:02.21
>>356
お前が思っていることを並べただけじゃ
何の意味もない
360デフォルトの名無しさん:2011/05/22(日) 22:24:32.31
テストが面倒とか言ってるアホが大規模開発してるわけないじゃん
361デフォルトの名無しさん:2011/05/22(日) 22:24:51.41
>>356
>ロバネスト分析

robustness?
362デフォルトの名無しさん:2011/05/22(日) 22:25:48.65
>>357
簡単には変えないぞ?

ちゃんと影響箇所を調べて関係者を洗い出してから
変えるメリットとデメリットを考慮する。

その影響箇所を調べる手間が
かからないのが静的言語なわけ。

お前が言ってるほど単純な話じゃないんだよ。
ここらへん、実践経験がものをいうよね。
363デフォルトの名無しさん:2011/05/22(日) 22:26:15.81
あ、ロバストネスだった。恥ずかしいorz...
364デフォルトの名無しさん:2011/05/22(日) 22:26:16.16
100万行レベルのコンシューマーゲーム開発者としては静的言語一択というかC/C++
365デフォルトの名無しさん:2011/05/22(日) 22:26:22.36
>>313
Erlang
366デフォルトの名無しさん:2011/05/22(日) 22:26:37.38
っていうか、文法チェックも一種のテストだって
わからんものかね。

「この変数はこの型である」
ユニットテストみたいだろ?
367デフォルトの名無しさん:2011/05/22(日) 22:27:30.48
いやー、静的言語の方が大規模開発に向いてると思うけど、
このスレにいるJava厨が面子にいたら地獄だわ
368デフォルトの名無しさん:2011/05/22(日) 22:27:39.82
ニコニコ動画は大規模になる?
369デフォルトの名無しさん:2011/05/22(日) 22:28:07.35
ユーザーが大規模なのと
システムが大規模なのは
話が違う。
370デフォルトの名無しさん:2011/05/22(日) 22:28:19.37
>>368
Java派はノー
動的言語はイエス
ということみたい
371デフォルトの名無しさん:2011/05/22(日) 22:29:44.82
>>364だけどドメインによるよね
ネットゲー開発やったらここの動的言語派のいいたいこともわかるようになってきた
でも関数型はわからん。
372デフォルトの名無しさん:2011/05/22(日) 22:30:35.87
このリストには文字列と文字と数字と配列が入りますよー

みたいなのは動的言語+テストじゃないと面倒いよな・・
373デフォルトの名無しさん:2011/05/22(日) 22:30:43.74
じゃそろそろ結論

大規模開発には、土方も大勢いるから、静的型チェックやスペルミスのチェックをコンパイル時にしてくれる、静的言語が望ましい。
それ以下の規模の開発で、スキルの高い人達が開発する場合は、動的言語の方がむしろ生産効率が高い。

で、おk?
374デフォルトの名無しさん:2011/05/22(日) 22:31:21.20
俺くらいになるとstd::stringも排除する
375デフォルトの名無しさん:2011/05/22(日) 22:31:52.27
>>356
静的言語と動的言語は重要視してるモノが違うだけでしょ
システムの信頼性重視なら静的言語
多少運用中に問題が出ても構わないシステムは開発効率の高い動的言語

静的言語で作ったシステムでも運用中に問題が出るのも有るだろうけど、その時の損失は動的言語のそれとは訳が違う
376デフォルトの名無しさん:2011/05/22(日) 22:32:24.99
>>362
実務経験豊富だと、メソッド名変えたときにコンパイルエラーが出るのが
静的言語のメリットとか言っちゃうの?www
377デフォルトの名無しさん:2011/05/22(日) 22:32:48.03
こんなの3年も前に結論でてるだろw

http://www.infoq.com/jp/news/2008/03/liftweb
> しかし、私は気が付いてしまいました。Ruby の動的型付けは多くのエラーを引きおこ
> すことに。そして、安心してデプロイするためには 95% ものテストカバレッジを達成
> しなければいけないことに。95% のテストカバレッジを得ることの代償として、私の
> 書いたコードは(テストコードも含めて) Java で書いたものと同等のサイズにまでふ
> くれあがってしまいました。その上、Rails では動的なコードの変更が可能なため、
> 開発・テスト・デプロイ中にトラブルが続出するようになりました。高いテストカバ
> レッジを確保しているにも関わらずです。これらの問題にくわえて、MRI(Matz Ruby
> Implementation: まつもとゆきひろ氏による Rubyの実装)は速度が遅く、言語仕様も
> 安定していません。それなのに開発コミュニティはそのことに見向きもしません。
378デフォルトの名無しさん:2011/05/22(日) 22:33:57.88
>>377
真性からかってたのに何してくれるんだ
379デフォルトの名無しさん:2011/05/22(日) 22:34:25.20
Mixiって Perlじゃなかったっけ? LivedoorのいろんなサービスもPerlだったような。
Ruby on Rails 製のWebサービスもいっぱああるよね。 Twitter って最初RoRだった?
GreeはPHPだったよね。

大規模システムでも、ハードで負荷分散すれは、動的言語でも十分でしょ。
最近じゃクラウドでリソースをどんどん追加できるし。

動的言語が大規模に向かないってことは全然ないと思う。
380デフォルトの名無しさん:2011/05/22(日) 22:34:43.79
>>367
実際、javaしか使えない奴と一緒になると地獄を見る可能性大だったりするから困る
381デフォルトの名無しさん:2011/05/22(日) 22:34:59.89
>>377
Rubyは動的言語でも極めつけに大規模開発に向かないと思う
382デフォルトの名無しさん:2011/05/22(日) 22:35:36.30
>>379
問題領域が違うんだって
383デフォルトの名無しさん:2011/05/22(日) 22:37:10.89
>>381
具体的なちがいに言及できないの?
384デフォルトの名無しさん:2011/05/22(日) 22:39:12.39
>>383
遅く、言語仕様が安定していなく(これは改善されつつある)、
オープンクラスとか活用するのが普通だから
385デフォルトの名無しさん:2011/05/22(日) 22:39:26.79

Javaは、マンパワー重視。いけいけどんどん。体育会系言語。
ただしミスは断じて許さねぇ。

LLは、効率重視。気軽にいきましょ。文系言語。
ミスしてもすぐにやり直せるよぉ。

って感じ?
386デフォルトの名無しさん:2011/05/22(日) 22:39:39.66
>>372

> このリストには文字列と文字と数字と配列が入りますよー
>
> みたいなのは動的言語+テストじゃないと面倒いよな・・

そんなリストをあちこちで使うたびに、同じテストを書いていたら効率が悪い。
やるとしたら、文字列と文字と数字と配列が入るクラスを作って
このクラスのユニットテストを行う。

あとはこのクラス専用のリストを作ればいい。(JavaならGenericsでもいい)

そうすればユニットテストは一箇所だけでよくなる。
このリストをどこで使おうがあとはコンパイラがチェックしてくれる。
387デフォルトの名無しさん:2011/05/22(日) 22:40:19.56
>>379
大規模の意味が違う
基幹業務とか、宇宙開発とか、予算の規模の事だボケ
388デフォルトの名無しさん:2011/05/22(日) 22:42:11.23
Pythonは、NASAで使われてるけどね。
389デフォルトの名無しさん:2011/05/22(日) 22:43:15.74
>>384
まったく的外れ
390デフォルトの名無しさん:2011/05/22(日) 22:43:20.66
使われてるっていうだけなら、どんな言語だってNASAで使われてるだろうさ。
391デフォルトの名無しさん:2011/05/22(日) 22:43:45.46
392デフォルトの名無しさん:2011/05/22(日) 22:44:38.36
CでさえDJBにかかれば安全なプログラムが書ける
動的言語で書けないなんて甘え
393デフォルトの名無しさん:2011/05/22(日) 22:44:42.32
数学科は関数型
物理学科はOOPL
おれはOOPL
394デフォルトの名無しさん:2011/05/22(日) 22:45:04.16
ただひとつ言えることは、

Javaの開発は楽しくない (・∀・) 

ということ。
395デフォルトの名無しさん:2011/05/22(日) 22:45:31.38
>>394
めちゃ楽しいじゃん
396デフォルトの名無しさん:2011/05/22(日) 22:46:24.87
このスレにいるJava厨みたいなのと一緒に仕事とか
どう考えても楽しくない
397デフォルトの名無しさん:2011/05/22(日) 22:46:28.82
昔はJavaなんてVM上で動くおもちゃじゃんなんて思ったもんだな
398デフォルトの名無しさん:2011/05/22(日) 22:46:30.52
土方相手が楽しいとか、マゾだろ
399デフォルトの名無しさん:2011/05/22(日) 22:47:11.20
>>386
> そんなリストをあちこちで使うたびに、同じテストを書いていたら効率が悪い。
> やるとしたら、文字列と文字と数字と配列が入るクラスを作って
> このクラスのユニットテストを行う。

静的言語だと、そのユニットテストすら不要になるとおもう。

このクラスのsetterとして
文字列のsetter、文字のsetter、数字のsetter、配列のsetter
を用意すればいい。

そうすればこのクラスは、文字列と文字と数字と配列だけが入るということを
保証するテストと同等の信頼性と言うことができる。
400デフォルトの名無しさん:2011/05/22(日) 22:47:12.00
>>386
静的型付け言語で複数の型が入るリストのクラスを作るの面倒でしょ
動的型付け言語なら組み込みのリストを使うだけ
401デフォルトの名無しさん:2011/05/22(日) 22:47:25.18
土方にすら相手にされないのにw
402デフォルトの名無しさん:2011/05/22(日) 22:47:52.16
そういえば、エンタメ系のWebサービスで、Javaで作りましたっての聞いたことないな。
403デフォルトの名無しさん:2011/05/22(日) 22:48:09.84
>>400
std::stringすら排除する俺には理解できない
404デフォルトの名無しさん:2011/05/22(日) 22:48:23.51
>>399
>そのユニットテストすら不要になるとおもう。

医者で言ったらブラックジャック級のプログラマが揃っていて
そのクラスの実装に絶対にバグが出ないならね
405デフォルトの名無しさん:2011/05/22(日) 22:48:45.60
>>399
お前、ユニットテストのこと理解してないだろ?
406デフォルトの名無しさん:2011/05/22(日) 22:50:27.36
>>400
> 静的型付け言語で複数の型が入るリストのクラスを作るの面倒でしょ
> 動的型付け言語なら組み込みのリストを使うだけ

組み込みのリストは、指定された複数の型 ”以外”も入るから
使うだけって事にはならないだろ。

動的型付け言語でも、そんな手抜き実装でいいなら
JavaならObject型を使うだけだって。

それが危険だから「文字列と文字と数字と配列が入る」という
制約をつけたいわけ。
407デフォルトの名無しさん:2011/05/22(日) 22:51:59.60
>>406
その危険はテストで刈り取れば良いじゃん
408デフォルトの名無しさん:2011/05/22(日) 22:52:40.20
>>404
>>405
リストの実装なら、特定の型用のListをGenericsで生成して使えばいいじゃん。

ここで作る必要があるのは「特定の型だけ入れられるクラス」だよ。
Javaならね。
409デフォルトの名無しさん:2011/05/22(日) 22:53:05.17
>>407
うん。だからテストを書かないといけないわけでしょ?
410デフォルトの名無しさん:2011/05/22(日) 22:53:39.74
411デフォルトの名無しさん:2011/05/22(日) 22:53:48.91
>>408
特定の型が入るリストじゃなくて
複数の型が同時に入るリストの話だよ?
412デフォルトの名無しさん:2011/05/22(日) 22:53:59.28
大規模開発ならなおさらテストも書くだろ
413デフォルトの名無しさん:2011/05/22(日) 22:54:30.71
ここの動的言語派が必要なテストを書いてるとはとても思えないわけだが
414デフォルトの名無しさん:2011/05/22(日) 22:54:30.98
>>409
こっちで一緒にテスト書こうぜ
415デフォルトの名無しさん:2011/05/22(日) 22:54:58.76
しかし、そんなに広範囲に渡って影響を及ぼすようなスペルミスを
Java厨の人たちってそんなにしょっちゅうやらかしていまうものなの?
416デフォルトの名無しさん:2011/05/22(日) 22:55:20.35
>>415
わかってないなら黙ってて
417デフォルトの名無しさん:2011/05/22(日) 22:55:45.79
>>410
だからRubyを動的言語の代表にするなよ
418デフォルトの名無しさん:2011/05/22(日) 22:56:20.23
>>411
違うよ。

> このリストには文字列と文字と数字と配列が入りますよー

って書いてあるだろ。例えば日付型は入らない。

だから作る必要があるのは、文字列と文字と数字と配列の
setterを持った新しいクラスだけ。
あとはこの新しいクラス用のListを使えばいい。
419デフォルトの名無しさん:2011/05/22(日) 22:56:20.28
>>413
Java厨と一緒にすんなよ
420デフォルトの名無しさん:2011/05/22(日) 22:56:22.49
>>417
じゃあどの動的言語ならこの問題が起こらないかいってみ?
421デフォルトの名無しさん:2011/05/22(日) 22:57:04.19
>>419
暇なんだね
422デフォルトの名無しさん:2011/05/22(日) 22:57:21.10
>>418
そんな面倒な事しないで、こっち来て一緒にテスト書こうぜ
423デフォルトの名無しさん:2011/05/22(日) 22:57:32.08
今の時間に忙しい人は仕事してんの?
424デフォルトの名無しさん:2011/05/22(日) 22:58:21.28
>>400
> 動的型付け言語なら組み込みのリストを使うだけ
その程度ならobject型のリストを使えばいいだけ

型安全な共用体と相称型をサポートしている言語なら、
特定の複数の型以外でコンパイルエラーになるリストだって作れる
425デフォルトの名無しさん:2011/05/22(日) 22:58:47.76
>>420
PythonとObjective-Cでは問題になったことが無いな
426デフォルトの名無しさん:2011/05/22(日) 22:59:21.97
>>422
その甘い言葉に誘われた人の末路


> しかし、私は気が付いてしまいました。Ruby の動的型付けは多くのエラーを引きおこ
> すことに。そして、安心してデプロイするためには 95% ものテストカバレッジを達成
> しなければいけないことに。95% のテストカバレッジを得ることの代償として、私の
> 書いたコードは(テストコードも含めて) Java で書いたものと同等のサイズにまでふ
> くれあがってしまいました。その上、Rails では動的なコードの変更が可能なため、
> 開発・テスト・デプロイ中にトラブルが続出するようになりました。高いテストカバ
> レッジを確保しているにも関わらずです。これらの問題にくわえて、MRI(Matz Ruby
> Implementation: まつもとゆきひろ氏による Rubyの実装)は速度が遅く、言語仕様も
> 安定していません。それなのに開発コミュニティはそのことに見向きもしません。
427デフォルトの名無しさん:2011/05/22(日) 22:59:30.77
>>425
>>377が理解できてないと判明
428デフォルトの名無しさん:2011/05/22(日) 22:59:31.14
なんでJava厨はテスト書くの嫌がんの?
テスト書いたら死ぬの?
429デフォルトの名無しさん:2011/05/22(日) 22:59:37.53
>>424
そんな面倒な物をわざわざ実装しないで、こっちに来てテストの続きを書こうぜ
430デフォルトの名無しさん:2011/05/22(日) 22:59:47.61
>>411
だったら、要素がTupleのリストを使えばいいだけだろ
431デフォルトの名無しさん:2011/05/22(日) 23:00:11.55
しかし、Javaの開発現場で、ユニットテストのクラス書いてるとこってあるのか?
未だかつてみたことも聞いたこともないんだが。
未だに昔ながらの、テスト仕様書かいて、マンパワーでひたすら人力テストというパターンでしょ。
432デフォルトの名無しさん:2011/05/22(日) 23:00:24.61
>>428
お前がうそつきだから。
静的言語レベルで保証してくれる安全性を全部手書きのテストかいてる奴見たことない。
433デフォルトの名無しさん:2011/05/22(日) 23:00:59.37
>>430
それ分かりにくくない?
434デフォルトの名無しさん:2011/05/22(日) 23:01:19.73
>>428
え? コストがかかるからに決まってるじゃん。
テストはなんでも書けばいいってもんじゃない。
効率良く書かなければ時間は無限にかかる。

遊びでやってるんじゃないよ。
435デフォルトの名無しさん:2011/05/22(日) 23:02:52.49
>>400
代数データ型やdiscriminated unionのようなキーワードでぐぐるとよい
以下はF#の例
type Foo =
 | Int of int
 | Char of char
 | String of str

let xs = [ Int 1; Char 'c'; String "xyz ] # Fooのリスト

関数型言語では、このような型をパターンマッチとともに用いる
パターン漏れに対してはコンパイラが警告を出してくれるので
isinstanceのようなもので泥臭く分岐するより楽な上に安全
436デフォルトの名無しさん:2011/05/22(日) 23:02:57.56
>>427
Rubyは(RORは)ものすごく動的だけど、
Pythonとかはそこまで動的なコード変更なんてしないからね
変数に型が無いからって何でも一緒にすんなよ
437デフォルトの名無しさん:2011/05/22(日) 23:04:13.41
>>436
そこまでって問題じゃないんだが・・・
438デフォルトの名無しさん:2011/05/22(日) 23:05:47.74
>>437
高いテストカバレッジを保っててもエラーがでちゃうのは、
まさに「そこまで」って問題なんだが・・・
439デフォルトの名無しさん:2011/05/22(日) 23:06:50.37
>>438
>そこまで動的なコード変更なんてしないから
動的言語のメリット否定してるのに気づかないの?
440デフォルトの名無しさん:2011/05/22(日) 23:07:01.28
だから繰り返し言ってるじゃん
静的言語の方が大規模開発に向いてるけど、
Java厨と一緒なら地獄だって
441デフォルトの名無しさん:2011/05/22(日) 23:07:46.13
>>435
ああ、そういうのは良いね
欲を言えば、そのシグネチャみたいなのを書かないで済むともっと良いんだけど・・
442デフォルトの名無しさん:2011/05/22(日) 23:08:23.21
>>439
必要なとこだけ使えばいいじゃん
静的言語でも、動的な変更がしたければクロージャとか使うだろ
どっちかでしか安全に開発できないとかアホすぎ
443デフォルトの名無しさん:2011/05/22(日) 23:09:25.49
>>442
どうやって動的言語で必要なとこだけ、
静的言語特有のことをやれっていうんだよw

静的言語で動的言語っぽいことならできるけどさ。
444デフォルトの名無しさん:2011/05/22(日) 23:09:36.45

1.要求分析

2.ユースケース書く(できれば客も交えて)

3.ユーザレビュー

3.クラス図書く

4.シーケンス図書く

5.場合よっちゃ、コラボレーション図やステート図書く

6.暫く2〜5を行ったり来たり

7.ユニットテストクラス書く

8.テストエラーがなくなるまで、ひたすら実装

9.ユースケースに照らしながら、結合テスト、総合テスト

10.受入テスト、納品

11.ボーナスもらって長期休暇

445デフォルトの名無しさん:2011/05/22(日) 23:10:00.17
>>433
どうせドキュメントに面倒な事を書くんだろ?
だったら、コードにしてコンパイラにチェックさせた方がいい

そもそも、 >>372 の説明では
tupleを使うべき場面なのかunionを使うべきなのかすら曖昧なので
ドキュメントを作ったところで役に立たない

静的言語で書けば、屑ドキュメントなんかよりよっぽどわかりやすい説明になる
446デフォルトの名無しさん:2011/05/22(日) 23:11:02.34
>>443
静的言語特有のことをやるなんて書いてないよ?
「動的なコード変更」を必要なだけやるって書いたの?
おわかり?
447デフォルトの名無しさん:2011/05/22(日) 23:11:44.58
>>446
大規模開発はお前が思う「おばかな」開発者とともにやるんだけどな
448デフォルトの名無しさん:2011/05/22(日) 23:12:17.40
>>445
だから静的言語の方が向いてるのは皆認めてる
ただJava厨と一緒に仕事したくないだけで
449デフォルトの名無しさん:2011/05/22(日) 23:12:28.10
>>466
必要なときだけやるのなら、
必要なときだけやれる言語の方がいいじゃんw
450デフォルトの名無しさん:2011/05/22(日) 23:12:31.53
>>445
ああ、そういうのはいいや
451デフォルトの名無しさん:2011/05/22(日) 23:12:36.53
>>448
いやこのスレ真性がいるぞ
452デフォルトの名無しさん:2011/05/22(日) 23:13:31.69
なぜ必要なときだけ動的なコード変更を使って、
そうでないときは動的なコード変更を使わないのかというと
やっぱり、危険だからなんだろうな。
453デフォルトの名無しさん:2011/05/22(日) 23:21:53.06
急に止まったw
454デフォルトの名無しさん:2011/05/22(日) 23:23:16.81
>>373
生産効率の話に変わったのか?w
455デフォルトの名無しさん:2011/05/22(日) 23:24:00.15
だってもう投了レベルじゃん
456デフォルトの名無しさん:2011/05/22(日) 23:24:55.09
静的言語を見直した動的言語派がF#でもインストールしてるんじゃねーの?
457デフォルトの名無しさん:2011/05/22(日) 23:26:04.51
じゃあ関数型の是非でもやる?
純粋関数型は実用性ない。
458デフォルトの名無しさん:2011/05/22(日) 23:26:43.75
じゃあ、動的言語側の圧勝ということで、今日の所はひとまずお開きにしますか。
459デフォルトの名無しさん:2011/05/22(日) 23:27:12.62
新喜劇かよw
460デフォルトの名無しさん:2011/05/22(日) 23:52:20.25
>>458
さすが勝利宣言だけはしとかないと気が済まないんだなww
461デフォルトの名無しさん:2011/05/23(月) 00:02:10.93
動的言語のほうが開発効率がいいと
勘違いされたことの方が興味があるな。
462デフォルトの名無しさん:2011/05/23(月) 00:02:46.79
>>453
急に止まったのは、
暴れてるのが一人しかいなかったってことじゃね?
463デフォルトの名無しさん:2011/05/23(月) 00:03:18.71
明日朝から仕事だからじゃないの
464デフォルトの名無しさん:2011/05/23(月) 00:04:42.53
動的な関数型か、静的なオブジェクト指向が良い
HaskellとRubyは駄目だ
465デフォルトの名無しさん:2011/05/23(月) 00:14:27.31
>>461
むしろこのスレタイから開発効率の話をしてると
勘違いしてる馬鹿が多い方が驚き
466デフォルトの名無しさん:2011/05/23(月) 00:16:58.79
つーか、開発効率の話したら
圧倒的に静的言語のほうがいいでしょ。
467デフォルトの名無しさん:2011/05/23(月) 00:17:41.29
>>1-466
ケースバイケース
468デフォルトの名無しさん:2011/05/23(月) 00:19:16.16
>>466
ちょっとしたプロトタイプとかスクリプトなら動的言語がいい
規模が大きくなったら静的言語のが楽
469デフォルトの名無しさん:2011/05/23(月) 00:20:36.01
動的言語のメリットが感じられない。
インタプリタやブラウザ組み込み言語のメリットはわかるけど。
470デフォルトの名無しさん:2011/05/23(月) 00:29:05.84
>>469
巷に喧伝されているメリットで納得出来ないなら、君にはメリットが無いって事じゃないの
簡単な話
471デフォルトの名無しさん:2011/05/23(月) 00:30:25.36
動的言語のメリットなんて
みんな眉唾ものじゃないか。
472デフォルトの名無しさん:2011/05/23(月) 00:33:38.09
473デフォルトの名無しさん:2011/05/23(月) 00:35:32.90
>>470
動的言語のメリットなんて
みんな眉唾ものじゃないか。
474デフォルトの名無しさん:2011/05/23(月) 00:35:34.55
ちなみに巷に喧伝されているメリットってなに?
475デフォルトの名無しさん:2011/05/23(月) 00:36:29.45
>>474
ググリんしゃい
476デフォルトの名無しさん:2011/05/23(月) 00:36:46.20
世の中には動的型付けの恩恵に預かれる人もいれば、そうじゃない人もいるんだな
477デフォルトの名無しさん:2011/05/23(月) 00:37:37.63
知らないのかw
478デフォルトの名無しさん:2011/05/23(月) 00:38:18.37
お前が考える「巷に喧伝されているメリット」を聞きたいんだが
479デフォルトの名無しさん:2011/05/23(月) 00:39:56.41
スレ立てるまでもない質問はここで 111匹目
http://hibari.2ch.net/test/read.cgi/tech/1302963535/
480デフォルトの名無しさん:2011/05/23(月) 00:40:14.98
決して答えることはなかったw
481デフォルトの名無しさん:2011/05/23(月) 01:09:33.08
PerlとかRuby、Pythonの一番のメリットはお手軽ってところでしょ。
思い立ったときに、ちゃっちゃっとコーディングして試せる。

いちいちクソ重いEclipse立ち上げて、フロジェクトつくってとかしなくても
すぐにできる。ちゃっちゃっとできる。

Pythonとか、Rubyは、標準で対話型のインタプリタがついてるから、トライ&エラー
ですぐに試せる。すぐに。あれ、構文これでいいんだっけ?って時もちゃっと試せる。
外部ライブラリもお手軽に使えて、PythonのBeautifulSoupとか、便利すぎて涙が
出てくる。

Perlは、コマンドラインオプションの機能が強力だから、ちょっとしたテキスト加工とか、
サイトのコンテンツを取得して加工とか解析とか、エディタを開くまでもなくできたりする。

ワンライナーで、ほんと、Javaなら何行も書かないとできないようなこともパッと試せる。

このお手軽さは、コンパイル言語にはない気楽さであり、楽しさでもある。

ライブラリのインストールも超お手軽。PerlならCPAN、RubyならGems、PythonならPyPI
しゅっと入れて、しゅっと試せる。ちょーお手軽。

とにかく、思い立った時に、しゅっと書けて、しゅっと試せるのが便利。なれたら、脊髄反射
で、手が勝手に動いてる。

Javaだとこうわいかない。さぁコーディングするぞという心構えが必要。ちょっと汗かく。
482デフォルトの名無しさん:2011/05/23(月) 01:14:44.11
それってコマンドラインツールってだけでは?
ライブラリインストール以外はJDKなら差がない。
構文のチェックはコンパイラのほうが優しいし。
ワンライナーはそうだろうね。
そういうメリットは大規模になるとなくなる。
ちなみにワンライナー以上のプロトタイプならブラウザでJavascriptのほうが楽しい。
この話は動的とは直接関係ないな。
483デフォルトの名無しさん:2011/05/23(月) 01:15:12.11
動的言語と性的言語の違いがわかんないんです(´・ω・`)
484デフォルトの名無しさん:2011/05/23(月) 01:16:10.79
>>481
ワンライナーにユニットテスト書くかい?

ユニットテストが必要となるようなものは
もとから気軽に作っていいものじゃない。

今話しているのはそういう大規模なアプリだ。
485デフォルトの名無しさん:2011/05/23(月) 01:18:14.22
>>481
動的言語だから気楽にできるというのではなく
気楽に作っていい程度の物は動的言語でいいってだけの話。

ソフトウェアを作るときは言語を先に決めるもんじゃない。
486デフォルトの名無しさん:2011/05/23(月) 01:19:23.06
Java厨ってなんでこんなに必死なの?
何やるにもJavaじゃないと気が済まないの?
Javaしか知らないんじゃないかしらと勘ぐってしまうわ。
487デフォルトの名無しさん:2011/05/23(月) 01:20:16.74
大規模は静的じゃないと実質無理って言ってるのになんでJavaを眼の敵にするんだろうね
488デフォルトの名無しさん:2011/05/23(月) 01:21:50.15
動的言語と静的言語が合体したものとか、中間のものはないの?
489デフォルトの名無しさん:2011/05/23(月) 01:22:18.69
JavaScriptはPrototype型のOOPだから、Javaプロジェクトの
プロトタイプ作りとしてはあまり約にたたないわな。
490デフォルトの名無しさん:2011/05/23(月) 01:23:00.45
ActionScript3.0とかそんな感じ。
おれはもっと動的な機能削除して欲しいけど。
491デフォルトの名無しさん:2011/05/23(月) 01:23:56.92
>>489
クラス型風にかけるよ。プロトタイピングなら十分。
そのまま最後まで書こうとは思わないけど。
492デフォルトの名無しさん:2011/05/23(月) 01:24:01.91
>>487
大規模開発ってのを、土方率いて開発しろって意味だというなら
まったくもってその通りだわ。
493デフォルトの名無しさん:2011/05/23(月) 01:25:03.44
>>492
土方と書けば自分が優位に立った気分なんだろうけど
実際おまえも土方レベルだよ。そしてお前のレスは正しい。
494デフォルトの名無しさん:2011/05/23(月) 01:25:29.23
なんだ、クソつまらん業務系アプリ限定の話だったのかよ。
そりゃJava土方の独壇場だもんな。技術的優位性という意味ではなくて。
495デフォルトの名無しさん:2011/05/23(月) 01:27:08.55
>>494
じゃあ、お前にとってつまらなくないアプリは何だ?
496デフォルトの名無しさん:2011/05/23(月) 01:28:21.98
>>488
Java。

つーか最近の静的言語は
動的言語の機能を取り入れてるんだよ。
497デフォルトの名無しさん:2011/05/23(月) 01:28:24.49
ケンカはやめて(><)
498デフォルトの名無しさん:2011/05/23(月) 01:28:48.24
わざわざJavaScriptとか使ってプロトタイプ作るなよw
設計レベルのレビューなら、PlantUMLで十分だろ。ちゃっちゃっとできるよ。
499デフォルトの名無しさん:2011/05/23(月) 01:29:02.67
業務用アプリ以外で大規模アプリ作ってる奴が少ないだけ。
業務用以外で大規模アプリ作ってから粋がってね。
オープンソースでももちろんいいよ。
500デフォルトの名無しさん:2011/05/23(月) 01:30:48.52
>>498
コード書かずに設計する人間を信用しろといわれましても・
501デフォルトの名無しさん:2011/05/23(月) 01:30:55.23
>>495
業務系アプリ以外ならなんでも楽しいよ。
502デフォルトの名無しさん:2011/05/23(月) 01:32:16.37
>>501
なんだって聞いてるだろ。

言っとくがな、ほとんどのアプリは
業務アプリとしても作られてるんだぞ。
503デフォルトの名無しさん:2011/05/23(月) 01:33:19.54
>>500
お前まさか、DBアクセスのプロトもJavaScript使ってんの? すごいね。執念だね。
504デフォルトの名無しさん:2011/05/23(月) 01:33:49.95
>>503
つまんね
505デフォルトの名無しさん:2011/05/23(月) 01:34:18.98
Java土方でも土方って呼ばれると怒るんだねwww
506デフォルトの名無しさん:2011/05/23(月) 01:36:33.10
>>505
いや別にお前も土方だし
507デフォルトの名無しさん:2011/05/23(月) 01:36:54.72
じゃあお前の使ってる言語に
土方って付けてやろう。
で、お前は何の動的言語を使ってるんだ?

動的言語土方
508デフォルトの名無しさん:2011/05/23(月) 01:37:24.78
土方と言われると悔しいので
何の言語を使っているかは言いません。
509デフォルトの名無しさん:2011/05/23(月) 01:38:54.43
>>506>>507
顔真っ赤すぎるwww
510デフォルトの名無しさん:2011/05/23(月) 01:39:13.14
>>509
鏡見たの?
511デフォルトの名無しさん:2011/05/23(月) 01:40:08.98
業務系アプリの開発者がなぜ、土方と呼ばれているか。
それは、既存のルールに縛られざるを得ないからだよ。

ルールの作成者こそが絶対神であり、そのルールの施行者
が神の下僕であり。その施行者のために、虐げられながら
神がつくったルールに背くことなく、尽くさなければなら
ないからだよ。

創造力とか、工夫とか、人間としての好奇心とか、そんな
ものがはなから否定されてる世界だからだよ。

神の理不尽なお告げにひたすらしたがわなければならない
からだよ。
512デフォルトの名無しさん:2011/05/23(月) 01:41:25.32
>>511
いや、別に業務系じゃなくても
Java使ってるし。

何を勘違いしてるんだ?
恥ずかしいぞ。
513デフォルトの名無しさん:2011/05/23(月) 01:43:00.74
>>511
で想像力溢れるお前の作ったプログラムはなんですか?
514デフォルトの名無しさん:2011/05/23(月) 01:44:12.17
>>511
業務系じゃなくても
大規模で、大人数でやってるなら
ルールは必要なもんだ。

そのルールを作るのが創意工夫ってもんだ。

お前は使われる人間の器だから
ルールは誰かが作る物って発想しか出てこないんだよ。
515デフォルトの名無しさん:2011/05/23(月) 01:45:22.74
Googleがアンドロイドの開発言語にJavaを採用した時には驚いたね。
Googleさえも、大衆に迎合したかと。
ま、でも、掴みだけ抑えて、そのうちGo言語に移行するだろうけどね。
516デフォルトの名無しさん:2011/05/23(月) 01:46:35.81
>>515
おまえ薄っぺらさがにじみ出てるぞ
517デフォルトの名無しさん:2011/05/23(月) 01:47:39.03
Javaが楽しいとか言ってる奴は、人生の半分ぐらいを損してると思う。
まさに、丼の中のトンカツ
518デフォルトの名無しさん:2011/05/23(月) 01:48:25.35
Javaで楽しめない奴は人生も楽しんでないと思う。
まさに、丼の中のトンカツ
519デフォルトの名無しさん:2011/05/23(月) 01:48:47.81
>>516
それは、つまらないことを、
一行しか書いてないお前よりもか?w
520デフォルトの名無しさん:2011/05/23(月) 01:53:12.17
つか、楽しくやりたいなら、開発は一人でやってろよ感じだな。
そしたら自分のルールで好き勝手やれるんだからさ。

ただそいういうやつはチーム開発に向かない。
ちっさな人生で終わっとけ。
521デフォルトの名無しさん:2011/05/23(月) 01:56:19.86
Mixiも、Greeも、Googleも、Yahooも、MSも、Twitterも、Facebookも、Evernoteも
世の中のイノベーションは、個人の力で始まるんだぜ。
522デフォルトの名無しさん:2011/05/23(月) 01:58:10.73
始まるのは個人の力ってだけで結局は多数の人で開発が進む
そうなるとルールは絶対に必要になる。
ルールという言い方が嫌なら、アーキテクチャと言い換えてもいい。
何にせよ、それに従った開発が求められる。
523デフォルトの名無しさん:2011/05/23(月) 01:59:19.55
プロタイピングにがちがちの静的言語使えって誰か言ったの?
524デフォルトの名無しさん:2011/05/23(月) 02:00:55.08
業務アプリは、どこのバカがつくったかわからんビジネスルールに縛られるから嫌い。つか、性に合わない。俺には無理。つうことで寝る。
525デフォルトの名無しさん:2011/05/23(月) 02:01:51.11
>>524
それはお前が偉くないからだ。

悔しかったら力をつけろ。
526デフォルトの名無しさん:2011/05/23(月) 02:03:41.42
土方以下の雑魚の愚痴スレだったな
527デフォルトの名無しさん:2011/05/23(月) 02:03:47.89
いや別に悔しくないからw
528デフォルトの名無しさん:2011/05/23(月) 02:05:31.13
土方が自分の土方っぷりを自慢してるのを
周りが憐れむだけのスレでしたね
529デフォルトの名無しさん:2011/05/23(月) 02:06:04.20
>>527
涙目でそんなこと言われてもなーw
530デフォルトの名無しさん:2011/05/23(月) 02:11:06.73
結局、延長戦も、動的言語側の圧勝だったな。
Java厨の負け惜しみが心地よいわ。ふぅ..
531デフォルトの名無しさん:2011/05/23(月) 02:12:41.33
いいか、動的言語側の勝ちだからな
絶対だぞ。
532デフォルトの名無しさん:2011/05/23(月) 02:16:01.80
面白いほどの
負け犬の遠吠えだなw
533デフォルトの名無しさん:2011/05/23(月) 02:19:23.76

【今日の格言】

Java厨は丼の中のトンカツ


534デフォルトの名無しさん:2011/05/23(月) 02:20:13.14
はいはい、また遠吠えw
535デフォルトの名無しさん:2011/05/23(月) 02:36:29.48
>>50のJava厨が静的言語ならメソッド名を簡単に変更できるとか
アホなこと言い出してスレが伸びただけ。
勝敗をつけるなら静的言語の勝ちだけど、恥をさらしたのはJava厨。
536デフォルトの名無しさん:2011/05/23(月) 02:37:32.22
結局お前はわからなかったんだw
537デフォルトの名無しさん:2011/05/23(月) 02:40:01.15
うん、どうやらメソッド名が簡単に変更できるということは
他にどんなことが可能になるかって考える発想力がなかったんだな。
538デフォルトの名無しさん:2011/05/23(月) 02:44:40.68
>>536>>537
具体的なことを書くと突っ込まれるから
そうやってトボケることをやっと覚えたんだねwww
539デフォルトの名無しさん:2011/05/23(月) 02:45:12.43
そんな告白しなくていいから
540デフォルトの名無しさん:2011/05/23(月) 02:46:34.25
>>538
具体的なことを言わなかったのは
お前も一緒じゃね?
541デフォルトの名無しさん:2011/05/23(月) 03:17:51.46
結論から言えば、設計も実装もしっかり作り込めば動的型言語でも大規模開発は出来ると思うよ
ただ、テストやコンパイルも含めて、その保証が出来るか。信用して貰えるかの問題

静的型言語でさえ、バグが潜んでるのに、コンパイラ通さない動的型言語がお偉いさんに信用して貰えるか?
ココだけだな。問題は

人間はミスをするもの
テストの想定外のケースも有る

それを念頭に置かないとな
542デフォルトの名無しさん:2011/05/23(月) 04:04:46.13
まともにテスト書いてないのに
テストをやってれば大丈夫っていうのは
一体何の冗談なのかね?w
543デフォルトの名無しさん:2011/05/23(月) 04:08:06.07
>>541
そもそもの話にしてしまうと、既に話は決まってる
どちらも等質で、不合理が起こったときに「いつ」「誰が」不便を被るかの違いに過ぎない
夜寝ない人の暇潰しに付き合う義理はないよ
544デフォルトの名無しさん:2011/05/23(月) 08:07:33.11
>>542
テストを書かないどころか実行することさえ
面倒って書いてたのはJava土方だけwww
まったく恥ずかしくないのかねw
545デフォルトの名無しさん:2011/05/23(月) 08:32:53.23
なんだ、またただの言いがかりかw
テスト書かないのはお前だけ。
お前は土方だからな。
546デフォルトの名無しさん:2011/05/23(月) 09:03:53.27
真面目な話、動的言語でテストを書かないと
言ってた奴はひとりもいない
547デフォルトの名無しさん:2011/05/23(月) 10:13:17.73
>>543がそのまんまなんだよな
最初にファイル作ってからアプリケーションを公開してしばらくデバグするまでの総合時間及び手間の総計は、
よっぽどどっちかの言語に特化した尖ったプログラムでもない限り、どっちもだいたい同じだと思う
548デフォルトの名無しさん:2011/05/23(月) 12:13:03.83
Java土方を除けば、静的/動的に関わらず
安全なプログラムを組むことは可能ってことでFA
549デフォルトの名無しさん:2011/05/23(月) 12:35:29.41
ドウテキガー、セイテキガーなどと言ってる奴は、学生か新人君だろ
550デフォルトの名無しさん:2011/05/23(月) 16:24:32.67
動的言語は初心者用
551デフォルトの名無しさん:2011/05/23(月) 17:04:20.54
むしろ初心者には、静的言語をお勧めしたい。
552デフォルトの名無しさん:2011/05/23(月) 18:09:27.45
むしろ、性的言語が欲しい (*´д`*)
553デフォルトの名無しさん:2011/05/23(月) 18:13:44.71
クリムゾン語ってのがあるって聞いたことがある

しかしスレがここまで伸びるとは
やっぱり静的/動的言語の間の壁って半端ないのな
554デフォルトの名無しさん:2011/05/23(月) 18:17:05.06
クリンゴン語じゃないので?
555デフォルトの名無しさん:2011/05/23(月) 18:20:58.65
このスレのレスの半分は、Java厨が1人でカキコんだものだろ
556デフォルトの名無しさん:2011/05/23(月) 18:42:40.83
昔からずっと手で計算してたような人達は型にこだわらない
個人競技しか想定してないし
集合知(笑)では安全なソフトは作れないと思ってる
557デフォルトの名無しさん:2011/05/23(月) 19:00:34.52
>>213
> 変えた時点で見つからなければ修正に時間がかかる。

CIサーバつかってれば、*手元でコンパイルする前に*privateメソッドの欠如が判明するが?
おまえ、他の奴も言ってたけど、マジでチーム開発経験ないだろ…
558デフォルトの名無しさん:2011/05/23(月) 20:02:18.45
テストを言語(もしくはIDE)の中に組み込むべきだな
関数単位程度でいいから自動的にコンパイル時にテストするぐらいしてくれ
559デフォルトの名無しさん:2011/05/23(月) 20:09:04.80
>>554
さっきスタートレックみたばっかりの俺もクリンゴン語を思い出してしまった
560デフォルトの名無しさん:2011/05/23(月) 20:10:53.32
>>558
Eiffelのように、関数ごとに事前条件と事後条件をアサーションとして記述すれば、
あと10年もしたら各関数の事前条件と事後条件からテストデータを自動生成してくれるようになる。
561デフォルトの名無しさん:2011/05/23(月) 21:56:09.11
ドウテキガー、セイテキガー、ドカタガー(笑)
562デフォルトの名無しさん:2011/05/23(月) 21:58:54.89
>>557
> CIサーバつかってれば、*手元でコンパイルする前に*privateメソッドの欠如が判明するが?

サーバー側でコンパイルすればわかるって話だろ?
静的言語なら。
563デフォルトの名無しさん:2011/05/23(月) 22:01:25.16
CIサーバー使ってもリアルタイムじゃないから、
サーバーに処理を投げてから
答えが帰ってくるまで時間がかかる
564デフォルトの名無しさん:2011/05/23(月) 23:08:45.04
土方同士、仲良くしようや。
565デフォルトの名無しさん:2011/05/23(月) 23:20:47.06
            _,,,-v''7 ̄'';;フ-,,_
          _,,;;=二,ヾ ! / /~ _,,--''''~ゝ
         ./'~ヾ,ヽ ヽ!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◎    :|       / :| /       ヽ
566デフォルトの名無しさん:2011/05/24(火) 01:28:26.22
そんなもん言語じゃなくてIDEで対応できるだろ
567デフォルトの名無しさん:2011/05/24(火) 01:54:56.35
土方さんじゃなくて井出さんだったみたいだな
568デフォルトの名無しさん:2011/05/24(火) 03:28:45.31
ところでこのスレでテスト書いてる人って網羅率どのくらいなの?
どのくらいまでいってコンパイラが出す程度のエラーはテストで出し切れるって認識なのか知りたい。
569デフォルトの名無しさん:2011/05/24(火) 04:54:48.86
みんなが勉強する前にテストをばらしておくと
テストに出ない所を勉強するやつはいなくなる
570デフォルトの名無しさん:2011/05/24(火) 05:02:00.89
>>562
CIサーバがチェックインのたびに単体テスト動かせば、
動的言語だろうが静的言語だろうが、
チームメンバーがチェックアウトする前にprivateメソッドの欠如が判明する。

安全うんぬん言うんだから、これぐらい常識だと思っていたのだが。。。
571デフォルトの名無しさん:2011/05/24(火) 05:03:31.73
>>568
カバー率90%、テスト成功率100%を切ったらチェックイン拒否してます。
572デフォルトの名無しさん:2011/05/24(火) 05:09:13.71
>>566
つうかさ、privateメソッドの話だろ?
privateメソッドなんてそもそも同名なメソッドは少ないんだから、
その名前のメソッド叩いてる箇所を総チェックしても問題ない。

ポリモーフィズムが高くなって単純な文字列検索じゃ厳しいのはpublicなメソッドだ。
publicなメソッドだったらどのみち自分勝手な変更は許されないだろ。
まずはチーム内外のコンセンサスを得る必要がある。
だから静的型だろうが動的型だろうが大差ない。

したがって、privateメソッドでもpublicメソッドでも、
メソッド名変更とかやる程度の話じゃ、動的型も静的型も大差なし。Q.E.D.
573デフォルトの名無しさん:2011/05/24(火) 06:43:48.20
>>572
たぶんJava厨はEclipseのリファクタリング機能で
メソッド名の変更が出来るのを開発に重要な機能だと
勘違いしたんだろうね
574デフォルトの名無しさん:2011/05/24(火) 08:32:21.61
大差ないて
575デフォルトの名無しさん:2011/05/24(火) 10:13:22.84
あらあら
576デフォルトの名無しさん:2011/05/24(火) 11:32:00.64
まあまあ
577デフォルトの名無しさん:2011/05/24(火) 11:47:33.54
「Java土方には安全なソフトは作れない」が正しいスレタイだったな
勝手にインターフェース変更すんなよw
578デフォルトの名無しさん:2011/05/24(火) 12:11:00.20
土方ってJavaかPHPのイメージ。
579デフォルトの名無しさん:2011/05/24(火) 12:46:30.97
土方といえば、Javaと.NET(C#,VB,APS...)だろ
580デフォルトの名無しさん:2011/05/24(火) 13:50:36.99
PHPは土方っていうより、デザイナー流れみたいな人が使ってるイメージなんだが
581デフォルトの名無しさん:2011/05/24(火) 14:58:25.21
本物の土方はperlを使う。
582デフォルトの名無しさん:2011/05/24(火) 14:58:29.40
PHP屋はPerl屋に嫌われているけどな
583デフォルトの名無しさん:2011/05/24(火) 16:25:46.07
Java厨はみんなに嫌われてるね。
584デフォルトの名無しさん:2011/05/24(火) 16:54:02.35
MATLABかOctave使おうよ
585デフォルトの名無しさん:2011/05/24(火) 17:51:30.06
Rだろ
586デフォルトの名無しさん:2011/05/24(火) 17:57:51.06
Rが素晴らしいことに異論は無いが
書き込むスレ間違ってない?
587デフォルトの名無しさん:2011/05/24(火) 19:52:29.18
究極超人か..
588デフォルトの名無しさん:2011/05/24(火) 20:24:35.07
>>581
Perlはあんま土方ってイメージない。おっさんとか爺さん、老害ってイメージ。
589デフォルトの名無しさん:2011/05/24(火) 21:45:02.15
PerlとPythonはハッカー御用達の言語だからな
590デフォルトの名無しさん:2011/05/25(水) 01:27:56.57
>>572
> その名前のメソッド叩いてる箇所を総チェックしても問題ない。

その名前のメソッド叩いてる箇所を総チェックする必要がある。



> まずはチーム内外のコンセンサスを得る必要がある。

得たあとはどうする? 結局変更するだろ?


反論終わり
591デフォルトの名無しさん:2011/05/25(水) 01:30:09.92
どうも理論バカなのかな?
現実として起こっていることを
知らないみたいだよね。
592デフォルトの名無しさん:2011/05/25(水) 01:39:33.20
そして
593デフォルトの名無しさん:2011/05/25(水) 01:49:29.46
コンセンサスを得る必要があるかどうかはコードを
修正するのとは別のレイヤーの話であって全く関係ないよね。

むしろ簡単な修正であっても同意が得られないとしたら
それは動的言語だと静的言語に比べて影響範囲が分かりづらいからじゃね?
って話になるだろうね。

一回作成したpublicメソッドを、何があっても絶対に変更してはならない。
なんてコーディング規約の会社だったら、開発はすごく窮屈だろうね。

あ、何万のユーザーがいるオープンソースライブラリの話なんかしてないよ。
よくある一般的なソース非公開のデスクトップアプリやウェブサービスの話だ。

ということでpublicメソッドでも変更することはありえます。そーいう前提で。

変更しやすいのはどっちなのか、言うまでもない。
594568:2011/05/25(水) 01:49:41.02
>>571
冗談とか嫌味抜きで羨ましいな。そこまでテストに理解のある人間が上にいる会社なのか。
595デフォルトの名無しさん:2011/05/25(水) 01:53:45.69
Java厨の開発行程の50%は
メソッド名の変更作業です
596デフォルトの名無しさん:2011/05/25(水) 01:58:01.06
などという悪口しか言えなくなった動的言語厨でした。
597デフォルトの名無しさん:2011/05/25(水) 02:04:09.90
実際に開発の大半を占めるのは間違ってもメソッド名の変更ではないよなw
598デフォルトの名無しさん: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.
599デフォルトの名無しさん:2011/05/25(水) 02:07:52.53
>>597
リファクタリングを適用しやすいのは明らかに静的言語だよ。

リファクタリングカタログ(英語)
http://www.refactoring.com/catalog/index.html
こっちに93個のリファクタリング技法がのってるけど
半分ぐらいは静的言語なら簡単に適用できるはず。
600デフォルトの名無しさん:2011/05/25(水) 02:16:03.01
静的言語の場合に適用が楽なリファクタリング例

> Add Parameter
引数が変わるとンパイルエラーがでるから修正箇所が分かりやすい

> Collapse Hierarchy
Salesmanクラスを参照しているところを見つけやすし。

> Extract Class
Extractしたクラスで元のクラスの参照を見逃しているとエラーが起きる

> Extract Method
引数にし忘れるとエラーになる


ほんの少し見ただけだけど、静的言語のほうがリファクタリングが楽だね。
601デフォルトの名無しさん:2011/05/25(水) 02:22:10.03
最近の土方は、リファクタリングという言葉を使えるようになったんだな。
めでたいことだ。
602デフォルトの名無しさん:2011/05/25(水) 02:26:27.04
リファクタリングなら>>123でとっくにに出てますが・・・
603デフォルトの名無しさん:2011/05/25(水) 02:28:00.06
「土方」という言葉は>>214が初出。

土方なんて言うヤツのほうが無知なのでは?
604デフォルトの名無しさん:2011/05/25(水) 02:29:28.64
とっくにって、つい2,3日前じゃん。
605デフォルトの名無しさん:2011/05/25(水) 02:32:10.40
2,3日前でも「土方」という言葉を使うやつは、
このスレでリファクタリングという言葉が使われていることを見れたはずだ。

つまり「土方」という言葉を使ってるやつは、過去レスみないで叩いている。
しかもメソッド名の変更が、リファクタリングカタログにも乗っている
テクニックであることを知らずに馬鹿にしているだけと露呈してるんだよ。
606デフォルトの名無しさん:2011/05/25(水) 02:35:06.12
「無知」という言葉は>>603が初出。
無知なんて言う奴のほうが池沼なのでは?
607デフォルトの名無しさん:2011/05/25(水) 02:43:11.59
つまり、「無知」とう言葉を使うやつは、
このスレで土方という言葉が使われていることを見れたはずだ。

つまり「無知」という言葉を使ってるやつは、過去スレみないで叩いている。
しかも、Java厨が、土方のカタログにも乗っている
底辺であることを知らずに馬鹿にしているだけだと露呈してるんだよ。
608デフォルトの名無しさん:2011/05/25(水) 02:48:46.14
あーあw


あーあw
609デフォルトの名無しさん:2011/05/25(水) 02:53:45.17
テストコードが書いてあるから、静的言語の構文チェックは必要ないってのも違うよね。

たしかにテストコードがあれば、エラーが出たということは分かる。
だけど、どこでエラーがでたか具体的な場所を表示できるかどうかでみれば、
構文チェックがあれば、テストコードよりも具体的な場所を
指摘できることがある。

例えば引数の数が増えたときとか。

構文チェックもテストコードの一つと考えれば、
テストコードは多いほうがいいと気づくと思うんだがねぇ。
610デフォルトの名無しさん:2011/05/25(水) 03:04:05.27
つまり、MixiもGreeもTwitterもGoogleもFacebookも安全じゃないってこと?
そりゃやぺーな、JavaScriptとか危険すぎるな。Ajaxとか使ってる場合じゃないな。
おー、こわい、こわい
611デフォルトの名無しさん:2011/05/25(水) 03:05:56.15
もうみんな、Javaで作ればいいのに。そしたらみんな安心できるのにね。
612デフォルトの名無しさん:2011/05/25(水) 03:17:18.78
>>610
静的型言語も必ずしも安全と言う訳じゃないけど、危険度で言えばイエス

結局は開発者の技量の方が重要だけど
613デフォルトの名無しさん:2011/05/25(水) 03:20:35.90
> 静的型言語も必ずしも安全と言う訳じゃないけど、危険度で言えばイエス
国語力も必要ですね
614デフォルトの名無しさん:2011/05/25(水) 05:56:46.39
>>590
> その名前のメソッド叩いてる箇所を総チェックする必要がある。

privateメソッドの話だよな?
たかがクラス内の参照をチェックするのがそんな大変なのか?
だとしたら、おまえ、プログラマの適性ないわ。

> 得たあとはどうする? 結局変更するだろ?

コンセンサスを得たあと、一人で全部修正するのか?
depricateしたりして「穏やかに」移行していくんだろが。
断言できる。お前は「本物の」開発にプログラマとして参加した経験がない。
615デフォルトの名無しさん:2011/05/25(水) 06:00:55.73
リファクタリングが元々動的OO言語から来ていることも知らずに
Java衷がドヤ顔してるねぇw
616デフォルトの名無しさん:2011/05/25(水) 07:51:58.99
自動テストを実行すればインターフェースの変更くらい
動的言語でもエラーチェックできる。
ただ、自動テストの実行終了が待てないくらい
Java厨は頻繁にインターフェース変更するんだってwww
617デフォルトの名無しさん:2011/05/25(水) 08:31:09.11
>>614
お前はプログラマに向いてないな。
機械で自動化できることをしないで、
自分の目で捜すということをしている時点で
向いてないよ。

大変かどうかではない。どれだけ楽をするか。
怠慢というプログラマ三大美徳を知らんようだ。

> コンセンサスを得たあと、一人で全部修正するのか?

一人で修正しようが、なんだろうが修正することに変わりはないだろ。
静的言語なら、@deprecatedとマークを付けることでコンパイル時に
このメソッドを使っていると警告を出すことだってできる。
何にせよ修正するとき静的言語のほうがリファクタリングが楽になることは事実なのだ。

> お前は「本物の」開発にプログラマとして参加した経験がない。
そうやって決め付ける。決め付けないと満足できないんだな。
そういうのは「お前の母ちゃんデベソ」と言ってるレベルだと気づけ。
618デフォルトの名無しさん:2011/05/25(水) 08:34:17.25
難癖しかつけなくなったな
619デフォルトの名無しさん:2011/05/25(水) 08:37:43.45
>>614
「俺の開発が本物だ!」キリッ
とか言いたいのか?www
620デフォルトの名無しさん:2011/05/25(水) 09:04:21.55
Java土方が参加するような大規模開発では、
とてもプログラマとは呼べないカスが多数チームに居る。
彼らはバグだらけのコードをチェックインしたりするので
居るだけでマイナスの存在なんだが、だからといって
簡単にチームから外したりクビにすることも出来ない。

ではどうするか。

Javaのような静的言語なら、そういうカスPGにはどこからも参照されない
無害なモジュールを延々リファクタリングさせる。
これなら正しいコードを破壊されることも無いし、少なくともコンパイルできない
コードがチェックインされる心配も無い。
しかも、実際には穴掘って埋めるような虚しい行為にも関わらず
何故かJava土方は嬉々としてやるので、彼らが鬱になったりする心配もなし。

というわけで、底辺における大規模開発ではJavaのような静的言語しか
使えないわけ。Q.E.D.
621デフォルトの名無しさん:2011/05/25(水) 09:22:38.24
もうすっかり、静的言語 = Java という前提で語られてるな。
622デフォルトの名無しさん:2011/05/25(水) 09:49:12.64
Java厨 vs. その他の静的/動的言語PG、だからね
623デフォルトの名無しさん:2011/05/25(水) 09:51:25.77
c++でもそのまま通じる論調ばかりなのに
624デフォルトの名無しさん:2011/05/25(水) 10:11:34.91
オーバーロードかオーバーライドができるという前提で語れば
他の言語でも同じだよな

動的言語ではOOPしない方が良い
OOPに懐疑的な人に向いている
625デフォルトの名無しさん:2011/05/25(水) 10:46:44.91
正確には、延々とメソッドのリネームばっかりやってる
>>620の土方プログラマには動的言語は荷が重い。
それ以外なら、開発における比重も頻度も低いので問題ない。
626デフォルトの名無しさん:2011/05/25(水) 10:58:45.88
静的言語だと100万行超えたあたりからつらくなる
動的言語だと1万行超えたあたりからつらくなる
627デフォルトの名無しさん:2011/05/25(水) 11:28:01.71
非常に実感に近い
628デフォルトの名無しさん:2011/05/25(水) 11:42:09.57
動的言語が優位なのは100行くらいまでだな
重いIDE立ち上げてプロジェクト作る手間が省ける
それ以上なら静的言語使った方が楽
629デフォルトの名無しさん:2011/05/25(水) 12:03:25.42
それは lib/ とか share/ とか、pipe や socket の相手側の行数を数えてないから。
630デフォルトの名無しさん:2011/05/25(水) 12:15:35.31
バカ発見
631デフォルトの名無しさん:2011/05/25(水) 12:23:27.15
>>626
動的言語で1万行とか、普通そんなにダラダラ書かないぞ。
動的言語の用途だとせいぜい長くとも1000行ぐらい。
632デフォルトの名無しさん:2011/05/25(水) 12:55:22.38
JavaはXMLの設定ファイルの記述だけで1000行超えますが、何か?
633デフォルトの名無しさん:2011/05/25(水) 13:33:07.58
>>631
良くも悪くもFA
634デフォルトの名無しさん:2011/05/25(水) 13:37:48.26
1000行ってうちだと1つの関数の長さだぞw
635デフォルトの名無しさん:2011/05/25(水) 13:42:55.14
分割しろw
636デフォルトの名無しさん:2011/05/25(水) 13:44:23.29
>>632
javaは静的な。

>>634
ムダだらけ。
ビジネスロジックを書いてるなら動的は危険だからやめろ。
637デフォルトの名無しさん:2011/05/25(水) 13:45:41.45
学生時代に友達のひどいコードを書きなおしたら3000行が100行になった。
638デフォルトの名無しさん:2011/05/25(水) 13:49:24.41
Perlはクラス1個でパッケージ1個分の満腹感
639デフォルトの名無しさん:2011/05/25(水) 13:50:07.56
動きゃーいいんだよ、動きゃぁ!
640デフォルトの名無しさん:2011/05/25(水) 13:56:13.95
>>632
設定ファイルはプログラムじゃないよ。
641デフォルトの名無しさん:2011/05/25(水) 16:46:37.60
>>617
動的型言語でも、privateメソッド叩いている箇所は
自動的に処理できるよ。
だって、privateなんだもんw

型に詳しい君には理由は明白だよな?w
642デフォルトの名無しさん:2011/05/25(水) 16:47:55.59
>>636
Javaにも動的型検査があることは無視かい?
643デフォルトの名無しさん:2011/05/25(水) 17:22:10.50
>>626
まあ、そんなもんだな。
そんでもって、同じ仕様から実装しても、それぐらいのコード量の比率になる。
644デフォルトの名無しさん:2011/05/25(水) 17:24:17.59
バカの1万行は普通の人の1000行だからなぁ
645デフォルトの名無しさん:2011/05/25(水) 17:25:26.13
この業界で動的言語使う仕事してるプログラマの9割はプログラマとは名ばかりの
おかしな連中だもん。
日本のIT業界のレベル低すぎだと思う。
646デフォルトの名無しさん:2011/05/25(水) 17:28:54.99
ジャバ厨が、リファクタリングのためにメソッド名を変更するんだと、嬉々として自慢してるけど、
そもそも、メソッド名や変数名の変更なんてものは、リファクタリングのごく一部であって、他に、
メソッドやクラス、インターフェースの抽出、分岐処理のポリモーフィズム化、メンバの移動、
継承と委譲の変更、デザインパターンの適用、引数オブジェクトの導入...等など、場合によっては
既存コードにドラスティックに手を加える必要もあるわけで、その場合、コンパイルのチェックなど
ほとんど手助けにならないし、これらのリファクタリングを勇気をもって実施するためには、結局、
ユニットテスト用のコードが必要になってくる。そして一般的にリファクタリングという場合、これ
らのケースで実施されることの方が多いだろう。

静的型付け言語だから、テストの手を抜いてよいという話ではないし、静的型付け言語だから安全
なんだと自慢できるほどシステム開発は呑気なものではない。

ジャバ厨の主張は、医療保険に入っているから煙草も酒も気楽にやれるよと言ってるようなものであり、
そもそもなぜ病気にかかるのか、病気にかからないためにはどうすればよいのかいう、より重要なこと
を疎かにしているんだろう。むろん医療保険に入るにこしたことはないが、日頃から健康に気を使い、
検診を受けている健康な人にとっては、それほど大きな問題ではないのだよ。
647デフォルトの名無しさん:2011/05/25(水) 17:30:27.17
だからJava厨の仕事はメソッド名を延々と変えることなの
彼らの仕事を否定しちゃ可哀想だよ
648デフォルトの名無しさん:2011/05/25(水) 17:39:49.45
>>646
静的型付け言語は型テストがコンパイル時に終わるので、
テストが大幅に楽になるよ。
649デフォルトの名無しさん:2011/05/25(水) 17:45:46.36
>>648
静的型言語であっても動的型検査が必要な言語が多いですが。Javaとか。
650デフォルトの名無しさん:2011/05/25(水) 17:48:18.10
今時は動的型言語でもIDEが簡易型検査やってくれたりする。
動的型ではtypoが見つからないとか、いつの時代よ?
651デフォルトの名無しさん:2011/05/25(水) 17:54:10.35
>>648
静的型付け言語だから、テストが楽になるという話は聞いたことないな。
関数の仕様として、INとOUT、引数のとりうる値が明確に定められていて、
それに対するテストが必要だとして、静的型付け言語だからという理由で
いったいどれだけ、テストが楽になるというんだ。

そもそもテストを作るときに、静的型付け言語だからこれはやらなくていい
なとか項目を選りわけて作ってるのか?  そんな話聞いたことない。
652デフォルトの名無しさん:2011/05/25(水) 17:55:29.78
>>650
typoだけでなく、横着して意図的に型を無視した処理を防止する意味でも静的型付けは有効だよ。
653デフォルトの名無しさん:2011/05/25(水) 18:04:20.84
動的型付けだと、例えば引数に整数しか認めていない関数なのに、
引数に文字列を入れてエラーが出る、とかよくあるじゃん。
整数しか認めていないよ、ということをコンパイラが検出してくれるのは大助かり。
654デフォルトの名無しさん:2011/05/25(水) 18:12:09.12
動的言語、例えばPHPで、文字列の前にプレフィックスをつけて返す関数があったとして、

function add_prefix($str) {
 return 'prefix_' . $str;
}

これを
$res = add_prefix('hoge'); // 引数が文字列
と 呼ぼうが、
$res = add_prefix(100); // 引数が数値
と呼ぼうが

PHP的には間違いじゃないんだよ。むしろ、この融通性が動的言語のメリットとも言える。

引数が誤ったものかどうかは、呼び出し側のコンテキストによるが、それを見逃すリスクと
利便性を計りにかけて、利便性をとったのが動的言語といえる。この利便性のおかげで
コード量が減りバグが混在するリスクを減らし、生産性を高めている。

むろん、コーディングする側は、型指定がないことのリスクを認識した上でコーディング
する必要があるが、それに十分見合うだけの利益を享受している。

もし、引数として数値を認めたくない場合は、関数内にassert文なり、型チェックのコード
をいれとくさ。
655デフォルトの名無しさん:2011/05/25(水) 18:20:35.95
>>654
そのメリットを静的型付けで実現するために型推論があるんだよ。
Haskellでは型を明記しなくてもほとんど推論してくれるから、
動的言語のメリットを持ったまま型の安全性を確保できるようになった。
656デフォルトの名無しさん:2011/05/25(水) 18:25:50.28
DBは、DBでいろいろな型をもち、JavaはJavaでJavaの型をもち、
DBにいれるときや、DBから取り出すときに、いちいち相互の型に
変換しなけりゃいけないのが面倒くさいよね。

特に日付まわりとか、Date型だったり、Timestamp型だったり、
文字列型だったりするから、それをJavaの型と相互変換とか、
関数化してはあっても、フィールド数が多かったりすると、いちいち
それを通すのが面倒くさかったりするよね。

まぁ最近は、ORMとかつかったりする場合もあるけど、それでも
設定ファイルを書くときに意識しないといけなかったりとか、面倒
くさいよね。

657デフォルトの名無しさん:2011/05/25(水) 18:36:19.84
>>656
その辺は動的言語だって型変換は必要だろう。
658デフォルトの名無しさん:2011/05/25(水) 18:40:27.45
動的言語は型を意識しなくても使える言語っていう意味じゃないよ。
659デフォルトの名無しさん:2011/05/25(水) 18:41:24.47
い-や。DBから取り出した値を変数に代入するだけ。
オブジェクトをnewして、フォーマッタやカレンダをnewして、パースして、とかしなくていいし。
660デフォルトの名無しさん:2011/05/25(水) 19:12:17.21
>>652
意図的に型を無視したプログラミングをしているのなら、
「きちんと」型を無視したプログラムを書けたほうがいい。

防止なんてされたら、その「意図」が達成されないじゃないか。

まあ、君にとっては動的型=悪なのだろう。
そこで思考停止しているのなら、単なる宗教だ。
661デフォルトの名無しさん:2011/05/25(水) 19:13:47.45
>>655
おいおい、Haskellは「型付け」を自動的に推論してくれるのであって、
「型変換」を自動的にやってくれやしないぞ。

なんだか付け焼刃だなあ。
662デフォルトの名無しさん:2011/05/25(水) 19:57:54.13
勝手にコアージョンしたら型推論自体が成り立たないしw
663デフォルトの名無しさん:2011/05/25(水) 20:13:42.65
>>661
え?なんで型変換?
664デフォルトの名無しさん:2011/05/25(水) 21:12:49.92
a -> Either a (Either b (Either c ...)) がアップキャストで
その逆がダウンキャストだよね
665デフォルトの名無しさん:2011/05/26(木) 01:21:56.37
ここまで契約プログラミング無し
666デフォルトの名無しさん:2011/05/26(木) 01:31:11.14
>>661
>>655じゃないが、>>654への回答として間違ってないだろ
多態性は自動でしてくれる

型変換とか、キャストの事だろ普通
紛らわしい
667デフォルトの名無しさん:2011/05/26(木) 01:51:17.22
>>656
そんなにめんどくさいならObject型を使えばいいよ。
それで静的言語特有の型チェックが失われて、
動的言語レベルまで落ちちゃうけどw

それよりもORMにさせれば面倒さはなくなって
しかも動的言語レベルに落ちない。

>>659
> い-や。DBから取り出した値を変数に代入するだけ。
> オブジェクトをnewして、フォーマッタやカレンダをnewして、パースして、とかしなくていいし。

日付型はアウトだね。データベースから取り出したとき文字なのか数値なのかわからない。
文字であっても、どういうフォーマットなのか不明だしね。

それから、フォーマッタやカレンダが出てくるときは、ユーザーからの入力されたということだから
どっちみちフォーマッタやカレンダが必要だよ。不正な文字列の場合もあるしね。
668デフォルトの名無しさん:2011/05/26(木) 01:56:44.25
実際にやってみたけど、静的言語での
リファクタリングのやりやすさは半端ないね。

テストコードがあってリファクタリングする。
ここまでは動的型言語でも静的型言語でも同じ。

違うのは、リファクタリング作業そのもの。

例えて言うならそうだね。マークシート方式のテスト。
テスト結果は自動化されてすぐに出る。
でもシャーペンで塗るのと、鉛筆で塗るのでは
作業の速さが段違いでしょ? それと一緒。
669デフォルトの名無しさん:2011/05/26(木) 02:02:26.30
>>654
これ、rubyやpythonじゃエラーにならね?
てか、phpでもホントに動くの?

自分、昔こんなコード試して、エラー出た覚え有るんだが

str = "hello" + 100

phpでは正しく動くって事?
$に秘密が?

rubyだとクラス変数が$で始まるんだけど、phpは違うって事?
670デフォルトの名無しさん:2011/05/26(木) 02:06:37.77
Java厨房の仕事の9割方はリファクタリングなんでですぅ。
毎日毎日、9時から22時まで糞コードのリファクタリングしてますぅ。
22時から24までは次の仕様のコーディングしてますぅ。
JavaとEclipseを使ってなかったらと思うとぞっとしますう。

え、テストコードコード? そんなもん書いてませんよぉ。
そんなもん書く暇ないし、書き方しらないし、第一、上司がそんな工数くれませんよぉ。

でもリファクタリングはしますょぉ。えぇもう一日のほとんどはリファクタリングしてますよぉ。えへへっ
671デフォルトの名無しさん:2011/05/26(木) 02:08:04.32
>>670
お前がキモイ
672デフォルトの名無しさん:2011/05/26(木) 02:08:40.17
静的言語ならコーディング全般楽になるね。
673デフォルトの名無しさん:2011/05/26(木) 02:12:26.47
コード補完が正しく動くのも
静的言語ならではだしな。
674デフォルトの名無しさん:2011/05/26(木) 02:13:59.97
プログラマの仕事は設計、考える事であって
コーディングではない。

だからコーディングはサクサク進められる
静的言語がいい。

本質的なところに集中するために
本質的ではないところは極力自動化すべき
675デフォルトの名無しさん:2011/05/26(木) 02:14:06.62
ええぇぇぇぇぇぇぇぇっ!
676デフォルトの名無しさん:2011/05/26(木) 02:16:57.88
えぇその通りです。動的言語なら1行で済むことを10行かかるけど、
コード補完が手伝ってくれるから、全然苦になりませんよぉ。
なんか仕事したぁって気にさせてくれるから、一石二鳥ですよぉ。
677デフォルトの名無しさん:2011/05/26(木) 02:20:07.88
> えぇその通りです。動的言語なら1行で済むことを10行かかるけど
これは嘘です。
678デフォルトの名無しさん:2011/05/26(木) 02:22:09.54
えへっバレた? やっぱり? ゴメン書き直しますぅ。

動的言語なら1行で済むことを20行かかるけどぉ
679デフォルトの名無しさん:2011/05/26(木) 02:22:14.94
結局、動的言語のほうが優れているという点は
何一つ出てないよね。

静的言語じゃなくても、頑張れば追いつけるって話ばかりで。
680デフォルトの名無しさん:2011/05/26(木) 02:25:14.74
>>676
じゃあ、10倍速く作れよとか、
給料1/10でいいな?とか言ったら
たいてい黙るんだよなw
681デフォルトの名無しさん:2011/05/26(木) 02:34:24.99
標準入力から読み込んだテキスト内のhogeをhageに変換して出力する処理。
Perlで書くと、

!/usr/bin/env perl
while (<>) { s/hoge/hage/; print; }

なんと、2行! ロジック部分はなんと1行。

これをJavaで書くと...

えぇぇぇぇぇぇぇぇぇぇぇぇぇぇ!
682デフォルトの名無しさん:2011/05/26(木) 02:39:13.55
ただいまJava厨が一生懸命考え中です。しばらくお待ちください...
683デフォルトの名無しさん:2011/05/26(木) 02:46:35.23
うん。こういうくだらない例ぐらいしかでてこないw
684デフォルトの名無しさん:2011/05/26(木) 02:52:27.67
仕事だと一ファイル数百行×ファイル数十個は
ぐらい簡単に行くからな。

そのレベルになるととても動的言語ではやりたくなくなるよね。
動的言語が優れてるのはテストがいらないような
小さなスクリプトまで
685デフォルトの名無しさん:2011/05/26(木) 02:56:22.49
クラスや関数を5つ以上使いだすレベルになったら、
動的言語はコード量が静的言語とほとんど変わらなくなるよ。
これマジ。やってみ。
686デフォルトの名無しさん:2011/05/26(木) 02:56:26.60
あれれれぇぇぇぇぇぇぇぇ!?

そういえば、Java厨はコードを出してこないよねぇ。なんでだろ。

静的言語は安全っ!(`・ω・?エ)キリッ

こればっかりぃ なんでだろぅ!?

Perlはhtmlのタグを除去する処理も2行でかけちゃうんだよぉ。

#!/usr/bin/env perl
while (<>) { s/<.*?>//g; print; }

Javaで書くと何行かかるぅ?
たまにはコードでみせてちょうだい。土方の汚名を返上したければ。
687デフォルトの名無しさん:2011/05/26(木) 03:03:01.95
ただいま、Eclipseを起動中です。しばらくお待ちください...
688デフォルトの名無しさん:2011/05/26(木) 03:13:04.05
じゃあPerlでクラスを書いてみよう。メソッドは一つ
package Class;
sub new{
 my $class = shift;
 my $self = {};
 return bless $self, $class;
}
sub foo {
 my $self = shift;
 my $value = shift;
 print $value;
}
1;

これをJavaで書くと?
689デフォルトの名無しさん:2011/05/26(木) 03:13:42.22
そうなんだよなぁ。動的言語の欠点は
ある程度の規模になると、逆にコードが長くなってしまう。
690デフォルトの名無しさん:2011/05/26(木) 03:17:37.53
Perl使ってて嫌なのは、
この変数、この関数、このモジュール使われてるの?
ってやつだな。

ソースコード見て一見使ってないように見える。
実際使ってない。

なのにコンピュータはそれを教えてくれない。
馬鹿なのかって思う。
691デフォルトの名無しさん:2011/05/26(木) 03:19:44.19
>>688
なに最後の1ってwwだせええwww

Javaで>>686とか書こうとすると
なんちゃらReaderをchainingするところで心が折れるな
692デフォルトの名無しさん:2011/05/26(木) 03:21:46.59
超短距離なら車より人間のほうが早いってのに似てるね。
あと行数だと改行しなかったもん勝ちだけどほんとにそれで良いのかな…
Perlの得意とする分野の処理はそりゃ短く書ける構文が用意してあるよね。
その代わり上でも書いてるように普通の何てことない処理を書くと長いか無駄な記号が増える。
かと言ってJavaありきで話進めても進展なさそうだから、scalaとかもーちょいまともなもので話進められないもんかね。
693デフォルトの名無しさん:2011/05/26(木) 03:29:08.12
> Perlはhtmlのタグを除去する処理も2行でかけちゃうんだよぉ。
>
> #!/usr/bin/env perl
> while (<>) { s/<.*?>//g; print; }

こう言うのはある意味害になってるよな。簡単にかけると勘違いしてる。

その場で書いてしまうから関数にするって発想に乏しい。
タグを除去するなら、タグを除去するという関数にした方がいい。

で関数にする手間がかかるが、一度関数にすればあとはそれを呼ぶだけ。
だから規模が大きくなるほどコード量の差はなくなってしまう。

あとなんで関数にするかというと、あとでバグを修正するためだよ。
たとえばこの例だと、スクリプトやコメント内の<や>にマッチして誤爆する。
動的言語は簡単なものにしか適用できないというサンプルかよ。
694デフォルトの名無しさん:2011/05/26(木) 03:48:35.51
Padreってしってる? Per用のIDE

Padre, the Perl IDE
http://padre.perlide.org/

これの素晴らしいところは、
PadreのPerl Application Development and Refactoring Environmentの
略からもわかるようにRefactoringに力を入れてるってところ。

つまりPerlでもIDEが自動的にRefactoringを行ってくれるんだよ。

試しにメソッドの抽出を行ってみ。


予想の斜め上をいった全く使いものにならない変換してくれるので
動的言語ではIDEのリファクタリングサポートにも限界があるってわかるw
695デフォルトの名無しさん:2011/05/26(木) 03:51:14.08
この画像すばらしいよね。
http://padre.perlide.org/trac/raw-attachment/wiki/Screenshots/Padre_0.47_Win7_autocomplete.jpg

Perlでもコード補完が動いているように見える。



でも実際には、パッケージ名:: ← この::を使った形式だけで
通常良く使われる$obj->ではコード補完してくれない。

なぜなら$objは型がないから補完すべきメソッドがわからない。
696デフォルトの名無しさん:2011/05/26(木) 03:51:43.15
その例は、動的、静的とは関係がない。
697デフォルトの名無しさん:2011/05/26(木) 05:48:37.67
正規表現って厳密にやろうとすると
途端に難しくならね?
698デフォルトの名無しさん:2011/05/26(木) 07:06:48.22
>>685
関数5つ以上使ってる例

Python実装のSchemeサブセット
http://norvig.com/lis.py
699デフォルトの名無しさん:2011/05/26(木) 07:14:23.62
>>697
厳密というか理論に忠実なものはただのオートマトンだから極めてシンプルだけど
最適化を考えると複雑になってしまうね
単純なクリーネ代数の性質を使った簡約ですら制約付きの項書き換えシステムを組まないといけないので
700デフォルトの名無しさん:2011/05/26(木) 07:47:54.12
C#最強?
701デフォルトの名無しさん:2011/05/26(木) 08:06:07.96
このスレではJavaな人たちが頑張ってるから俺らは黙ってようぜ
702デフォルトの名無しさん:2011/05/26(木) 08:22:44.51
>>697
メールアドレスの正規表現とかも馬鹿らしいしな。
正規表現は各パーツの形(メールアドレスだったら@の左の部分とか)を
識別するもので、全部を正規表現で表すのは見にくいし、
メンテナンスもしづらいだろう。
703デフォルトの名無しさん:2011/05/26(木) 08:24:21.85
>>696
すごく関係あるよ。
704デフォルトの名無しさん:2011/05/26(木) 08:25:57.47
正規表現なしで書こう
→行き当たりばったりで書いて頓挫
→オートマトンを書き始める
→あれこれって正規表現じゃねということに気づく

まで読んだ
705デフォルトの名無しさん:2011/05/26(木) 08:27:22.81
ここまで、Java厨のコードなし。
706デフォルトの名無しさん:2011/05/26(木) 08:35:43.42
今日も一日メソッド名を変換するお仕事
がんばってね!
707デフォルトの名無しさん:2011/05/26(木) 08:41:51.30
このスレ見てわかるのはJavaって普及してんだってことと
動的言語使ってるやつの経験値が低いこと
708デフォルトの名無しさん:2011/05/26(木) 08:51:20.34
メールアドレスのようなものは正規表現じゃなくてパーサジェネレータを使うんですよ
特に再帰を含むような文法定義は正規表現の表現力では力不足でLLとかPEGを使って書く
勿論その実装にはオートマトンが使われてるわけだけどもユーザが直接それを意識することはない
709デフォルトの名無しさん:2011/05/26(木) 08:54:21.80
なんで静的型付けの代表がJavaなんだ、という疑問
710デフォルトの名無しさん:2011/05/26(木) 09:05:56.00
それはC++より人口多いからだと思うけどね
関数型は静的動的が論点になってないっぽいし
711デフォルトの名無しさん:2011/05/26(木) 09:08:22.34
>>707
このスレのJava厨が経験値高いとか
何の冗談だよwww
712デフォルトの名無しさん:2011/05/26(木) 09:16:48.87
論理的な推論ができないんだな
713デフォルトの名無しさん:2011/05/26(木) 09:17:41.21
Java厨ってJavaしかできない印象があるな。

動的言語プログラムは日常的なプログラミングの補助としても使える。
思いついたアイデアをぱっと試したり、プロト作ったり、簡単なタスクを実装したり、
真のプログラマは、静的言語も動的言語も苦にしない。
714デフォルトの名無しさん:2011/05/26(木) 09:19:34.58
「この関数の引数の型はなんだっけ」と忘れる事がよくある動的
715デフォルトの名無しさん:2011/05/26(木) 09:21:17.57
どう論理的な推論(笑)したら
動的言語使ってるやつの経験値低いことがわかったの?ww
716デフォルトの名無しさん:2011/05/26(木) 09:21:37.93
だれも補助として使えないといってないのに。
動的言語で一万行超えてもまったく遜色ないって言うのであれば
そのノウハウを本で出せば大注目されるよ。
717デフォルトの名無しさん:2011/05/26(木) 09:21:53.32
>>714
つ @param
718デフォルトの名無しさん:2011/05/26(木) 09:22:28.47
不便をノウハウで何とかしようというは根本的解決にならないのでは。
719デフォルトの名無しさん:2011/05/26(木) 09:23:30.19
ほらね。予想通りに釣れすぎ。
720デフォルトの名無しさん:2011/05/26(木) 09:23:32.95
>>717
doxygenは言語ではない。
721デフォルトの名無しさん:2011/05/26(木) 09:24:11.09
で@paramは誰もテストしないから間違ってるんですね。
722デフォルトの名無しさん:2011/05/26(木) 09:24:47.05
てか、仮にコメントにちゃんと引数の型を書いといても、わざわざそれを見に行くのがめんどくさい。
静的型付け言語なら型が合わなければコンパイル時に教えてくれるんだから、
最初から静的使っとけばいいんだよ。
723デフォルトの名無しさん:2011/05/26(木) 09:25:40.58
>>717
その記述の妥当性は誰も検証しないから、間違っている可能性もある。
724デフォルトの名無しさん:2011/05/26(木) 09:26:15.95
>>722
たいていにそれをできるIDEがあるってレスが返ってくるね。
俺は同意。
725デフォルトの名無しさん:2011/05/26(木) 09:28:40.00
>>724
IDEでは完全に型検査できないでしょ。
もしそれができるなら最初から実行時に検査するわけなんだから。
726デフォルトの名無しさん:2011/05/26(木) 09:29:06.91
>>725
あごめん。>>722に同意。
727デフォルトの名無しさん:2011/05/26(木) 09:29:57.48
さらに依存型を使った言語ならこれまでコメントで書いていた
引数に求められる条件とか戻り値が保障する性質そのものを型として表現できるんだぜ
実用性はまだまだだけど・・・
728デフォルトの名無しさん:2011/05/26(木) 09:31:46.55
動的言語のメリットは型推論で満足できるのだから、もはや動的言語は不要だという意見もあるよ。
あと、動的言語はコンパイラが作りにくいから、いつまでたってもライトウェイト。
729デフォルトの名無しさん:2011/05/26(木) 09:35:58.99
Java厨は、もうずっと、コンパイルチェックガー、コンパイルチェックガーと
泡ふきながら、うわごとのように唱え続けているね。おもしろいねぇ。
730デフォルトの名無しさん:2011/05/26(木) 09:37:05.51
静的言語=Javaとか思ってる低学歴がいるスレはここですか
731デフォルトの名無しさん:2011/05/26(木) 09:39:02.99
JVMで動く、JRubyとか、JPythonとかあるんだから、使えよもったいない。
お前らの大好きなEclipseでコーディングできるぞ。
732デフォルトの名無しさん:2011/05/26(木) 09:40:46.02
動的言語を積極的に使うべき理由があるなら教えて欲しいもんだ
733デフォルトの名無しさん:2011/05/26(木) 09:42:06.73
そんぐらい自分で気づけよw
734デフォルトの名無しさん:2011/05/26(木) 09:48:54.96
>>729
そのメリットも理解できないもんな
735デフォルトの名無しさん:2011/05/26(木) 09:49:44.33
>>733
まさに狼少年
736デフォルトの名無しさん:2011/05/26(木) 09:50:24.84
静的言語の代表格だしたけりゃjavaじゃなくてscalaもってこいや
java程度だと総合力で動的言語に負ける
737デフォルトの名無しさん:2011/05/26(木) 09:51:52.57
scalaよりStandard MLの方が一般的じゃない?
738デフォルトの名無しさん:2011/05/26(木) 09:53:20.71
トイプログラマは黙ってて
739デフォルトの名無しさん:2011/05/26(木) 09:53:40.36
次世代型javaとしての立場ならscalaかなぁと思って
740デフォルトの名無しさん:2011/05/26(木) 09:55:24.53
scalaってそんなに普及してるの?
741デフォルトの名無しさん:2011/05/26(木) 09:58:59.13
普及してる
普及し始めてる
普及するかもしれない
普及したらいいな
742デフォルトの名無しさん:2011/05/26(木) 10:05:17.87
ポジショントークばっかり。討論するスレじゃないのね。
743デフォルトの名無しさん:2011/05/26(木) 10:06:04.70
scalaの話はやめろーっ! Java厨がついてこれないから...(´・ω・`)
744デフォルトの名無しさん:2011/05/26(木) 10:07:53.65
Perl厨はJavaすら理解できないw
討論ってのは両者がお互いの立場を理解できてこそ成立するのであって、
Perlしか理解していないPerl厨とは討論が成り立たないのは自明。
745デフォルトの名無しさん:2011/05/26(木) 10:09:18.51
まともな議論なんて俺らがせんでも形式手法研究してる奴等がいくらでもしてくれてるからな
746デフォルトの名無しさん:2011/05/26(木) 10:12:58.56
別に俺らがしてもいいんだよ。
やろうぜ。
747デフォルトの名無しさん:2011/05/26(木) 10:13:43.14
じゃ結論持ってきて
748デフォルトの名無しさん:2011/05/26(木) 10:15:57.77
結論だしたら終わるだろ。馬鹿か。
749デフォルトの名無しさん:2011/05/26(木) 10:22:34.60
結論:
強力な型システム持ってる言語ならそうでない言語ではコメントやドキュメントとして表現されていた要求や保証を型等の
言語内の概念で扱う事ができて、その検証を処理系が自動で行うことが可能である
この性質を生かせれば、そうでない言語に比べて安全といえる
ただし生かせれば、の話な
750デフォルトの名無しさん:2011/05/26(木) 10:23:50.54
結論:静的言語でも動的言語でも安全なプログラムは組める。
ただしJava厨だけは論外。
751デフォルトの名無しさん:2011/05/26(木) 10:24:59.65
IronPython使ってみたけど、
普通にC#使った方がいいと思った
752デフォルトの名無しさん:2011/05/26(木) 10:25:33.99
理由を書かないんだな
753デフォルトの名無しさん:2011/05/26(木) 10:29:56.51
>>752
やっぱりVisualStudioじゃない?
754デフォルトの名無しさん:2011/05/26(木) 10:29:56.76
関数型言語、形式手法マンセーのトイプログラマも論外
755デフォルトの名無しさん:2011/05/26(木) 10:30:10.32
このスレは平行線だが確信できた
756デフォルトの名無しさん:2011/05/26(木) 10:32:23.83
今使用してる言語からscalaに移行しろって言われたとき、
動的言語使いの方がJava厨よりあっさり移行できると思うぞwww
ていうか、Java厨ってJava以外何か使えんの?
757デフォルトの名無しさん:2011/05/26(木) 10:33:28.37
C/C++使ってるときにJavaが浸透していくのみてたから
それなりにメリットある言語は流行るはず
758デフォルトの名無しさん:2011/05/26(木) 10:33:32.70
>>754
JRや株関係では関数型言語での案件もあるんだがな。
759デフォルトの名無しさん:2011/05/26(木) 10:35:02.04
トイプログラムならな
760デフォルトの名無しさん:2011/05/26(木) 10:35:44.68
あれ、動的、静的言語の話かと思ったら何時の間にかプログラマーの話になってたのか。
マ板でやった方が良いのか?
761デフォルトの名無しさん:2011/05/26(木) 10:35:48.37
コアシステムだよ。
ロジックを組むのに関数型言語ほど向いた言語はない。
762デフォルトの名無しさん:2011/05/26(木) 10:36:22.31
やはり>>622であることが明らかに
763デフォルトの名無しさん:2011/05/26(木) 10:36:35.81
コアトイシステム
764デフォルトの名無しさん:2011/05/26(木) 11:05:43.12
Java厨が動的言語を批判するのは型付けの問題じゃなくて
単純に「Javaじゃないから」なので、静的型付けでも
scalaや関数型言語は同様に批判します。
765デフォルトの名無しさん:2011/05/26(木) 11:09:00.82
Java厨を批判しても誰も擁護しないということは、Java厨なんてのはこのスレに居ないのでは。
つまり、Java批判厨の一人芝居。
766デフォルトの名無しさん:2011/05/26(木) 11:10:55.43
メソッド名の変更が忙しくて、今それどころじゃないんだろ
767デフォルトの名無しさん:2011/05/26(木) 11:33:43.55
C++ユーザーだけど
768デフォルトの名無しさん:2011/05/26(木) 11:57:47.47
>>666
せめてコアージョンとキャストの違いぐらい理解してから出直してこい
769デフォルトの名無しさん:2011/05/26(木) 11:59:23.56
>>768
コアージョンって何ですか?
770デフォルトの名無しさん:2011/05/26(木) 12:02:55.92
型の議論をするならせめて
型変換、キャスト、コアージョンの違い
静的多態と動的多態の違い
ユニバーサル多態とアドホック多態の違い
パラメトリック多態と包含多態の違い
ぐらいは理解してくれないと議論が成立しない。
771デフォルトの名無しさん:2011/05/26(木) 12:06:00.38
>>770
ああ、君はそういうタイプね。
議論する能が無いから煙に巻く手口か。
772デフォルトの名無しさん:2011/05/26(木) 12:06:49.84
無能な奴ほど煙に巻いて逃げおおせようという奴が多いから相手にしてもしょうがない。
773デフォルトの名無しさん:2011/05/26(木) 12:43:37.59
>>770
すみません

こちらの方はどうなるんでしょう?

>>669
>>654
>これ、rubyやpythonじゃエラーにならね?
>てか、phpでもホントに動くの?

>自分、昔こんなコード試して、エラー出た覚え有るんだが

>str = "hello" + 100

>phpでは正しく動くって事?
>$に秘密が?

>rubyだとクラス変数が$で始まるんだけど、phpは違うって事?

詳しそうなので、お願いします
774デフォルトの名無しさん:2011/05/26(木) 13:04:45.61
phpで、文字列の連結は、
$a . $b

数値の足し算は、
$a + $b


>>654 が使ってるのは、前者
775デフォルトの名無しさん:2011/05/26(木) 13:21:26.01
文字列文脈では数値は文字列に、数値文脈では文字列は数値に自動でcoerceしてるのか
776デフォルトの名無しさん:2011/05/26(木) 15:25:57.39
安全なソフトなんて作る必要ないよ
クラッシュしたら修正して再起動すればいい
777デフォルトの名無しさん:2011/05/26(木) 15:38:40.18
ここは釣堀吊り上げられて俺
778デフォルトの名無しさん:2011/05/26(木) 17:01:21.45
うわ…Java宙は本当にコアージョン知らない馬鹿なの?
779デフォルトの名無しさん:2011/05/26(木) 17:12:31.14
>>774
rubyでエラーが出たのは、文字連結と加算演算子が同じだからと言う理解で良いんでしょうか。。。
780デフォルトの名無しさん:2011/05/26(木) 18:05:51.33
>>778
このスレにコアージョン知ってるやつが何人いると思ってるんだよwww
781デフォルトの名無しさん:2011/05/26(木) 18:10:48.00
>>778
コアージョンがよくわからないので、勉強したいのですが、
おすすめの本などありますか?
782デフォルトの名無しさん:2011/05/26(木) 18:14:08.77
>>780
このスレじゃなくて、この板(一部の底辺WebPG除いて)では常識だと思ってたけど、違うのか?
783デフォルトの名無しさん:2011/05/26(木) 18:23:20.78
scalaのimplicit conversionとかHaskellのunsafeCoerceとかcommon lispのcoerce
とか型理論のnatural isomorphic typeは知ってるけど
一般的なコアージョンというのは聞いたことない説明とか参考文献の紹介を願う
784デフォルトの名無しさん:2011/05/26(木) 18:47:17.55
>>782
そういう幼稚なレッテル貼りは無意味だからやめたら。
せっかく重要なキーワードもってきたのが台無しだよ。
785デフォルトの名無しさん:2011/05/26(木) 20:21:48.33
coercionなんてそもそも静的/動的関係ねー
786デフォルトの名無しさん:2011/05/26(木) 20:27:16.71
ところでどうせカタカナにするならコアーションじゃまいか
787デフォルトの名無しさん:2011/05/26(木) 20:35:15.68
ああ、なんだ、コアーションって言語特有の用語か。
F#とか由来みたい。
言語毎にいろんな用語を勝手に作られるからなぁ。
コアージョンで検索してもそれらしい意味が出てこないし、なんだろうと思った。
788デフォルトの名無しさん:2011/05/26(木) 20:42:32.08
F#由来のわけないじゃん
789デフォルトの名無しさん:2011/05/26(木) 20:47:25.78
どっちにしろ大した意味はない。
大げさに語るほどでもないだろ。
790デフォルトの名無しさん:2011/05/26(木) 20:56:26.59
ま、もともとcoercionの例(>>654)を見て、
何を思ったのかHaskellの型推論なら同じことが出来るとか
アホなこと書いたやつがいたのが発端。
こんなのHaskell使いが書くわけないから多分Java厨だろうね。
791デフォルトの名無しさん:2011/05/26(木) 21:00:22.39
でもいまどきは動的言語であっても型付けは強いのが主流だから
あんまり>>654みたいなのを動的言語とはこういうもんだみたいに言われるのはなあ
792デフォルトの名無しさん:2011/05/26(木) 21:09:59.55
>>790
haskellの型推論なら同じことができるよ。
できないと思っていたのか?
793デフォルトの名無しさん:2011/05/26(木) 21:13:10.31
>>792
Haskellの型は静的に決まるけど>>654の場合は実行時
ぜんぜんちがう
794デフォルトの名無しさん:2011/05/26(木) 21:14:17.46
>>793
動的に決まるとどんないいことがあるの?
795デフォルトの名無しさん:2011/05/26(木) 21:18:16.33
>>654をC#で書くと

string AddPrefix(object str) { return "prefix_" + str; }

なんで静的言語でも簡単にできることを
"動的言語のメリット" とか言い出すのかな?
796デフォルトの名無しさん:2011/05/26(木) 21:31:54.13
C#ならそうかもしらんが、Javaでやる場合、いちいちプリミティブ型からインスタンスを生成して渡さなきゃならないからな。

●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);
797デフォルトの名無しさん: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);
798デフォルトの名無しさん:2011/05/26(木) 21:40:28.15
>>795
そうやって相手の出方を見た後なら簡単に真似できるが
真っ先に自分でやるのは難しいだろ
もっと静的に書きたい気持ちをリセットするのに時間がかかる
799デフォルトの名無しさん:2011/05/26(木) 21:44:28.36
Visual BASIC 最強
800デフォルトの名無しさん:2011/05/26(木) 21:55:41.44
VB6は、静的言語と動的言語の悪い所どりした言語だったね。
801デフォルトの名無しさん:2011/05/26(木) 21:56:57.12
だからcoercionは型付けの静的/動的は関係ないの。
ただHaskellの型推論ならできるとか
無知丸出しの書き込みにツッコミ入れられてるだけ。
802デフォルトの名無しさん:2011/05/26(木) 21:59:07.53
>>801
では、haskellの例をお願いしますm(__)m
803デフォルトの名無しさん:2011/05/26(木) 21:59:12.71
>>801
>>654はコアーションとは無関係だぞ。
804デフォルトの名無しさん:2011/05/26(木) 22:02:14.69
>>802
add_prefix :: (Show a) => a -> String
add_prefix = (++) "prefix_" . show
805デフォルトの名無しさん:2011/05/26(木) 22:09:59.42
コアーションとか言わず実行時の型変換でいいんじゃないか
通じてないもの
806デフォルトの名無しさん:2011/05/26(木) 22:19:45.48
>>803
文字列と数値の連結だよ?なんで無関係だと思ったの?
807デフォルトの名無しさん:2011/05/26(木) 22:29:59.14
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://hibari.2ch.net/test/read.cgi/tech/1155031689/

このスレでwindows+ruby+GUIは鬼門だと書いてたんだが、本当か?

だったら、C#やDelphiの方がwindowsでGUIは有利だな

コンパイラ言語の方がGUIには向いてるって事でおk?
808デフォルトの名無しさん:2011/05/26(木) 22:32:17.59
Windowsなんか使うなよ... (´・ω・`)
809デフォルトの名無しさん:2011/05/26(木) 22:35:19.20
>>807
特定の環境と特定の言語についての
たった一例から一般化しすぎだろ
810デフォルトの名無しさん:2011/05/26(木) 22:36:41.67
Qtは最近JavaScriptを採用したぜ
811デフォルトの名無しさん:2011/05/26(木) 22:39:08.74
JavaScriptの採用自体は結構前じゃなかったか
812デフォルトの名無しさん:2011/05/26(木) 22:44:39.92
その通りなんだけど、強力にJavaScript推すようになったのは最近だよね。
813デフォルトの名無しさん:2011/05/26(木) 22:46:16.55
うん、それは最近だ
814デフォルトの名無しさん:2011/05/26(木) 22:51:21.61
>>808
ごめん……(´・ω・`)でもなんで?
815デフォルトの名無しさん:2011/05/26(木) 22:58:03.22
816デフォルトの名無しさん:2011/05/26(木) 23:05:38.85
>>806
何が言いたいのかさっぱりわからん。
型推論で整数がこようが文字列がこようがバッチリやりたい処理ができてるじゃん。
817デフォルトの名無しさん:2011/05/26(木) 23:58:56.35
やりたいことが出来るか否かじゃなくて
「型推論」で出来るって言ってるのがアホなの。
そりゃShow使って自分でcoerceすれば出来るわい。
818デフォルトの名無しさん:2011/05/27(金) 00:11:23.20
ところで>>804ってどの辺が型推論なんだろう
Showを継承してる型aならなんでもいいよ、的なコードじゃないの?
819デフォルトの名無しさん:2011/05/27(金) 00:28:07.65
>>818
showのどのインスタンスを呼び出すかを推論している。
820デフォルトの名無しさん:2011/05/27(金) 00:48:23.39
アホすぎる。>>804とか思いっきり型の定義書いてるだろ。
多相型(総称型)と型推論を混同してる。
821デフォルトの名無しさん:2011/05/27(金) 00:51:16.86
>>820
混同も何もhaskellでは同じだよ。
822デフォルトの名無しさん:2011/05/27(金) 01:03:56.70
Show a以上に具体的な型が決まることはないように思うんだけどなあ
823デフォルトの名無しさん:2011/05/27(金) 02:12:15.89
今日はJava厨がおとなしいな..
824デフォルトの名無しさん:2011/05/27(金) 02:48:51.83
素直に暇だから来てくださいって言えばいいのにw

来て欲しかったら自分からネタだしたら?
825デフォルトの名無しさん:2011/05/27(金) 06:16:46.16
>>803
え…w
826デフォルトの名無しさん:2011/05/27(金) 06:21:44.65
>>821
パラメトリック多相がない型推論もあるし、
型推論がないパラメトリック多相もある。

パラメトリック多相と(ユニフィケーションベースの)型推論は相性がいいが、
別々の技術要素だ。

君がHaskell村に籠もってるから、どっちも同じに見えるだけ。
827デフォルトの名無しさん:2011/05/27(金) 07:34:44.52
>>826
いやいや、>>803とか書いちゃう低能が
その辺分かってるわけ無いじゃん
おそらくHaskell使ったこと無いJava厨でしょう
828デフォルトの名無しさん:2011/05/27(金) 08:39:28.33
>>819
正確に言えば、>>804だけではshowのインスタンスは確定していない。
例えばどこかで add_prefix (x + 1)とかあったら、showのインスタンスが確定する。

一見するとコアージョンと同等なことを包含多態とパラメトリック多態の組み合わせで実現しているが、
単に文字列に変換するだけでなく、多段階のコアージョンならどうだろう?
式x + yについて、xとyはそれぞれ整数、多倍長整数、浮動小数点数、有理数、複素数のどれかを
互いに独立して与えられるとする。
xが整数でyが浮動小数点数ならば、xを浮動小数点数に変換する。
xが複素数でyが有理数ならば、yを複素数に変換する。

これを型クラスで実現できるか?
829デフォルトの名無しさん:2011/05/27(金) 08:42:26.63
PHPの文字列⇔数値の自動変換はPerlを踏襲したんか?
830デフォルトの名無しさん:2011/05/27(金) 08:48:57.52
Haskellでトイプログラムつくったことが誇りです
831デフォルトの名無しさん:2011/05/27(金) 10:56:56.06
型族でいけそうなけなさそうな
832デフォルトの名無しさん:2011/05/27(金) 12:04:28.23
動的言語は、型に関する条件とそれ以外の条件を区別しない
つまり (Show a) => ... と if ... then ... を区別したくない

それが危険だというなら、問題の本質は if の危険性であって
静的型付けは対症療法の一つにすぎない
833デフォルトの名無しさん:2011/05/27(金) 12:18:01.05
問題の本質は人間の脳味噌の性能だろ
834デフォルトの名無しさん:2011/05/27(金) 15:58:46.94
>>829
あの辺は自動変換というより「演算子が戻り値型を決めてる」って印象が強いかな
835デフォルトの名無しさん:2011/05/27(金) 18:39:40.36
>>681は最新のPerlだと以下のように書けるかな?

print s/hoge/hage/r while <>;

Perlはワンライナーとしては有用だね
836デフォルトの名無しさん:2011/05/27(金) 19:29:44.29
起動オプションを使えばループすら不要だしな。

perl -np -e "s/hage/hoge/g";
837デフォルトの名無しさん:2011/05/27(金) 20:32:50.45
業務でJAVA使ってるけど、RUBYとかと比べるとやっぱひどいと思うわ
インターフェースとか、ジェネリックスはどういうつもりでああいう仕様なのか
小一時間問い詰めたくなる
838デフォルトの名無しさん:2011/05/27(金) 21:17:03.13
言語なんてどうでも良い。

所詮、どんぐりの背比べ。似たり寄ったりだわ
839デフォルトの名無しさん:2011/05/27(金) 21:27:09.47
じゃあ一生バイナリエディタだけ使ってあらゆるファイルを編集してればいいと思うよ
もちろんプログラミングも
840デフォルトの名無しさん:2011/05/27(金) 21:41:40.42
Javaで文字列を引数とするような処理を
俺が動的言語に書き換えるなら引数を文字列化して処理する仕様にするかな
841デフォルトの名無しさん:2011/05/27(金) 22:06:13.11
動と静をあわせ持った言語は無いの?
842デフォルトの名無しさん:2011/05/27(金) 22:10:01.96
>>841
haskell、Ocamlなどの関数型言語はコンパイラとインタプリタ両方インストールされるの多いよ
843デフォルトの名無しさん:2011/05/27(金) 22:15:03.06
貧乏土方は、Javaを使い、セレブ土方は、.NETを使い、その他のオシャレさんは、動的言語を使う
って感じか...
844デフォルトの名無しさん:2011/05/27(金) 22:18:44.48
セレブ土方って何だよ
845デフォルトの名無しさん:2011/05/27(金) 23:07:10.22
>>843
まあ、基幹業務みたいに信頼性重視はネットワーク、ローカル問わず静的
ネットサービスとか、Webや社内LANで情報やファイルのシェアは動的って住み分けになってる感は有るな

土方はどこでも土方だけどな

打ち合わせ相手にデザイナーが顔出すかどうかだけの違い

才能あるデザイナーが全部作ってるとかも耳にする事も有るが
846デフォルトの名無しさん:2011/05/27(金) 23:21:30.58
ぶっちゃけ、静的か動的かは関係なくて、
コンパイラやIDEがどれだけソースコードの意味を理解して、
プログラマの開発をサポートできるかだよね。

それが静的言語なら静的に(実行しなくても)決まることが多いから
動的言語なら実行しないとわからないようなことが
実行する前からわかりやすいってだけで
847デフォルトの名無しさん:2011/05/27(金) 23:22:35.08
煽ることしかできなくなったか
848デフォルトの名無しさん:2011/05/27(金) 23:24:36.71
チームの開発効率の話を個人の資質の話にするバカ
849デフォルトの名無しさん:2011/05/27(金) 23:26:58.83
>>832
> それが危険だというなら、問題の本質は if の危険性であって
> 静的型付けは対症療法の一つにすぎない

いや、問題の本質がどこにあるかは大して重要じゃないんだよ。
問題を解決するための糸口の一つにはなるかもしれないけど、
一番重要なのは、問題を解決するための方法として何が挙げられるか。

1.静的言語を使う。
2.ミスが無いように人間がひたすら頑張る
3.実行前にミスを無くすことは諦め、実行フェーズ以降に問題解決を先送りにする。
850デフォルトの名無しさん:2011/05/27(金) 23:29:16.51
>>848
チームの開発効率と個人の資質も
どちらも大事だと思います。

チームの開発効率は、チーム内で一番優れた人の
個人の資質よりも上にはならない。
851デフォルトの名無しさん:2011/05/27(金) 23:32:42.08
Javaは確かにコンパイルエラーは出してくれるけれど、デプロイに時間がかかるんで、
トライ&エラーが面倒臭いんだよね。
コンパイル時間も短いとはいえ、時間食うんで、チリも積もればなんとやらなんだよね。
852デフォルトの名無しさん:2011/05/27(金) 23:34:07.08
>>850
別の話を混ぜるなと言っている
853デフォルトの名無しさん:2011/05/27(金) 23:36:42.52
>>849
静的な型付けは問題の一部を解決するだけ
=> 残りの部分はテストを書いたりして解決する必要がある
=> あれ?ちゃんとテスト書いたら一緒に型エラーも見つかるわ
=> 動的型付けでも良くね?
854デフォルトの名無しさん:2011/05/27(金) 23:38:17.83
>>850
これは本当
自分、趣味グラマーだが、割とオープンな雰囲気の会社に勤めてた時期が有ったんだが、有能な人は他人のバグを修正しつつ自分の分の開発を進めるって言うのが常で、見てて可哀想だった
855デフォルトの名無しさん:2011/05/27(金) 23:38:58.17
静的型付けで
記述が簡潔で
オブジェクト指向が組み込みで
obj.method() の形式でメソッドが呼び出せて
ネイティブコンパイル出来て
出来れば型推論もあると嬉しいんだけど

そんな言語無いかな

動的型付け言語が安全だろうとなかろうと、使いたい言語が全部動的型付けだから困ったもんだ
856デフォルトの名無しさん:2011/05/27(金) 23:42:08.44
>>853
大規模になるとテストケースは爆発的に増えて、自動化でも網羅出来なくなる
そこに、最後まで型エラーも拭い去れないとか怖過ぎ
857デフォルトの名無しさん:2011/05/27(金) 23:43:23.41
LLスレで教わったんだけどこれなんか

>>855
http://force7.de/nimrod/
858デフォルトの名無しさん:2011/05/27(金) 23:48:06.51
かわいそうなのは有能なひとを集められないから
859デフォルトの名無しさん:2011/05/27(金) 23:48:47.78
>>851
デプロイという言葉を知っているなら
ホットデプロイって言葉も知っていると思うけど?
開発中ならデプロイはコードを修正すると自動で完了する。

それにユニットテストはデプロイ環境でやるもんじゃない。
まさかいちいち手動でブラウザで実行してテストしてるの?

それから動的言語でも大規模になるとmod_perlや
mod_rubyなどを使うわけで、デプロイと同じように
Apacheの再起動が必要。

デプロイに関しては現実的には大差がない。
860デフォルトの名無しさん:2011/05/27(金) 23:49:36.02
>>857
アリガトン
調べてみる!
861デフォルトの名無しさん:2011/05/27(金) 23:50:37.54
>>853
> 静的な型付けは問題の一部を解決するだけ


問題の一部を解決するもの > 問題の一部が解決できない物



例:エアバッグ搭載

交通事故の一部を解決するもの > 交通事故の一部が解決できない物


冷静になれよ。銀の弾丸などない。
どちらがベターかで話せ。
862デフォルトの名無しさん:2011/05/27(金) 23:53:06.48
>>855
OcamlとF#かな。。。
OcamlはC並のネイティブ吐けるとか言われてるけど、haskellの勉強の過程で入門書読んだだけで、実際に使った事は無い
863デフォルトの名無しさん:2011/05/27(金) 23:55:24.80
つーか、エラーは早い段階で分かったほうが
修正も早いってこと知らないのかな?

ソフトウェアだけのことじゃなくてなんでもそうだよ。
ミスは早いうちに対処していれば、リカバリー早くなる。


ユニットテストではすべてのテストを自動化できない。
=> どっちみち人間がすべての機能を実行してテストする必要がある。
=> あれ? 人間がテストするならユニットテストで見つかるエラーも見つかるわ
=> ユニットテストいらなくね?

>>853が言っていることはこれと同じ。

864デフォルトの名無しさん:2011/05/27(金) 23:58:57.09
>>863
静的型言語派だが、それも極端杉
865デフォルトの名無しさん:2011/05/28(土) 00:01:34.62
※個人の感想です
866デフォルトの名無しさん:2011/05/28(土) 00:02:45.56
>>863
俺も静的言語派だが、こんなアホと一緒にされるのは
ごめん被る
867デフォルトの名無しさん:2011/05/28(土) 00:03:02.78
>>859
ホットデプロイでもロードに時間かかるじゃん。
コンパイルにも時間かかる。実行するのにも時間かかる。
数秒の時間ではあるけど、積もれば結構な時間だし、
トライ&エラーでサクサク開発というのとはちょっと違う
んだよなぁ。

例えば、この変数の値をちょっとみたいとか、関数の戻り値
を調べたいなと思った時に、デバッガでブレークポイントはって
止めて調べるといった手順をふむより、ちょっとprint文書いて
出力してみるといったことが、Javaの場合、ちょっと億劫に感じる。
ま、数秒の差ではあるんだけど。でも面倒くさい。
868デフォルトの名無しさん:2011/05/28(土) 00:03:47.41
俺も静的言語派だが○○○○ ← ここに煽ることしかできなくなったセリフを入れてください。
869デフォルトの名無しさん:2011/05/28(土) 00:04:55.11
>>867
> ホットデプロイでもロードに時間かかるじゃん。

だからユニットテストならデプロイは不要。
こっちを無視すんな。

人間がコード上の間違いを捜すほうが時間かかる。
塵も積もればな。
870デフォルトの名無しさん:2011/05/28(土) 00:06:27.95
>>867
デバッガでブレークポイントはるだけなら、
コードの修正いらないんだから
デプロイもいらないじゃん。
871デフォルトの名無しさん:2011/05/28(土) 00:07:48.09
ユニットテストならデプロイは不要って誰が決めたんだ?
872デフォルトの名無しさん:2011/05/28(土) 00:11:45.81
しかし、Eclipseの糞重さは、イライラが積もるな
873デフォルトの名無しさん:2011/05/28(土) 00:14:05.06
>>861
型に対して可能なテストは「その変数の指すオブジェクトに対して
これをすることはできるか?」だけだ。
一方、テストは通常オブジェクトの振る舞いについてテストする。
後者の方が明らかに強いテストで、後者を通るなら前者も通る。
だから、型エラーが出るならテストが不十分ってこと。

実際、動的言語で十分なカバレッジを達成したときには型エラー
なんて見ないぞ?実際に動的言語で開発した経験あるのか?
874デフォルトの名無しさん:2011/05/28(土) 00:17:07.63
これでも読んで落ち着こうか

Strong Typing vs. Strong Testing
https://docs.google.com/View?id=dcsvntt2_25wpjvbbhk
875デフォルトの名無しさん:2011/05/28(土) 00:17:24.04
>>871
そもそも、ユニットテストとはユニットのテストなので
ウェブサーバーはもちろんデータベースなどの
ソースコード以外の外部の何かは使用しないのが常識。
テストを早く実行する妨げにもなる。
876デフォルトの名無しさん:2011/05/28(土) 00:18:48.52
>>873
君は両方やるという考えはないのかな?

両方やると二度手間、無駄ではないかの答えは、
エラーは早く検出し早く直す物というのが答えだ。
877デフォルトの名無しさん:2011/05/28(土) 00:20:27.92
>>873
> 実際、動的言語で十分なカバレッジを達成したときには型エラー
> なんて見ないぞ?実際に動的言語で開発した経験あるのか?

言い換えると

十分なカバレッジを達成しなければ
型エラーを見ることがあることだろ。

十分なカバレッジを得るまで時間がかかる。
878デフォルトの名無しさん:2011/05/28(土) 00:21:26.81
>>873
それは当たり前だがや
そこまで行くのに、コンパイル時にエラーで見つかるのと、テストで見つけるのはどっちが早いかだがや

他のテストは実質的に同じ事するだがや
879デフォルトの名無しさん:2011/05/28(土) 00:21:33.61
実際、動的言語で開発した場合に判明する、型不一致に起因する
エラーの割合なんて、全体の不具合の中で1%にも満たないだろ。
それより、動的言語から得られる恩恵の方がはるかに大きいよ。

Javaでありがちなヌルポとかにもお目にかからないしな。
880デフォルトの名無しさん:2011/05/28(土) 00:21:37.85
「○○という条件なら問題ない」という言い方は、
「○○という条件を達成しないかぎり問題がある。」
と言い換えられます。

注意しましょうw
881デフォルトの名無しさん:2011/05/28(土) 00:22:59.86
> Javaでありがちなヌルポとかにもお目にかからないしな。

え?

$obj = null;
$obj->foo();

これでヌルポにならない言語なんてあるの?
あ、エラーメッセージが違うとかそういう話かw
882デフォルトの名無しさん:2011/05/28(土) 00:24:14.19
>>879
> それより、動的言語から得られる恩恵の方がはるかに大きいよ。

動的言語で得られる恩恵の殆どは
静的言語でできるからなぁ。

恩恵? なにそれ?
883デフォルトの名無しさん:2011/05/28(土) 00:24:48.46
>>875
いやいやいや、ユニットテストでもWWWやDB周りのテストも当然するだろ。
人がしなくていいんだよ、Mechanizeとか使ってテストケース書いて自動化も
できるし。何ゆってんの?
884デフォルトの名無しさん:2011/05/28(土) 00:26:21.41
えーと、見つかるのが早いか遅いかが
争点になってますが、何で早くみつけなきゃいけないの?

静的言語だと、型の不一致が見つかったら
下手すりゃクラス構造とかの設計まで見直す必要が出てきて
修正が大変になるから早く見つかった方が良いだろうけど、
動的言語なら何時見つけても修正の手間は一緒だぞ?
885デフォルトの名無しさん:2011/05/28(土) 00:30:37.33
Javaの設定ファイルは糞。XMLというだけで糞。マジキチ
886デフォルトの名無しさん:2011/05/28(土) 00:30:52.69
>>883
それは機能テスト。

テスト自動化=ユニットテストのように
間違ってる人多いんだよな。
887デフォルトの名無しさん:2011/05/28(土) 00:31:30.98
>>884
> えーと、見つかるのが早いか遅いかが
> 争点になってますが、何で早くみつけなきゃいけないの?

直すまでの時間が短いから
888デフォルトの名無しさん:2011/05/28(土) 00:34:51.61
>>884
> 静的言語だと、型の不一致が見つかったら
> 下手すりゃクラス構造とかの設計まで見直す必要が出てきて
> 修正が大変になるから早く見つかった方が良いだろうけど、
> 動的言語なら何時見つけても修正の手間は一緒だぞ?

その例だと、動的言語のほうが時間がかかる。

型の不一致が見つかる場合は、例えばこの変数に入れてはいけない
値をいれた時。一箇所直しても、他の箇所で入れてるかもしれない。

動的言語だと、あるコードを実行してそのことに気づいても、
気づいたところ以外で同じ間違いしている可能性を排除できない。

つまり捜し回ることになる。
889デフォルトの名無しさん:2011/05/28(土) 00:34:59.19
>>886

ServletのdoPost()やdoGet()メソッドのテストも、立派な単体テストだろが。
何ゆってんの?
890デフォルトの名無しさん:2011/05/28(土) 00:35:25.30
>>881
PythonもRubyもならないよ
Noneやnilのfooを呼んだってCよろしく0番地にアクセスするわけじゃないから
891デフォルトの名無しさん:2011/05/28(土) 00:35:39.04
doPostやdoGetを直接呼べや。
892デフォルトの名無しさん:2011/05/28(土) 00:36:24.61
>>890
エラーが表面化しないだけで、正しく動いてねーだろうがw

こういう状態が一番困る。
893デフォルトの名無しさん:2011/05/28(土) 00:37:07.55
>>884
本気でそう思ってるの?
動的静的関係なく、後から手直しって大変になるのは変わらんぞ?
そりゃあ手直し自体は動的の方が楽だろうさ
でも、その分後から大量に発覚する確率も高いわけよ

一定の規模を超えると、後から発覚するバグの数に違いが大きく出ると感じてるんだがな

どっかで定量的に比較してないもんかね

プログラマが人間だっていう視点から言えば、追い込み時期にバグが見つかるのは心が折れるぞ
実際に逃げる奴も居るらしい
894デフォルトの名無しさん:2011/05/28(土) 00:39:05.47
>>891
そんなもんテストになるかw
まぁ、がんばってフォームの入力値や、認証データ、環境変数、クッキーの値など、
想定する環境と同じようにメソッド渡せればいいかもしれんが、そのテストコードを
用意するだけでひと苦労だなw
895デフォルトの名無しさん:2011/05/28(土) 00:39:27.95
>>889
えーと、単体テストでは出来る限り単体の
クラスをテストするって知ってるかな?

だから単体テストというわけだけど。

あんた、doPostやdoGetで
いろんな処理をしすぎてない?

コントローラではユーザー入力の値のチェックをする程度で
その後の処理はサービスクラスなどに渡すんだよ。
(そしてサービスクラスをユニットテストする)
896デフォルトの名無しさん:2011/05/28(土) 00:40:31.14
動的言語のぬるぽ的なエラーは、Javaほどメンドクサイ事態になることはほとんどない。
897デフォルトの名無しさん:2011/05/28(土) 00:43:06.02
>>894
だから、それはユニットテストじゃないってば。

ユニット=単体。
お前がやってるのは単体ではない。

別に機能テストが無駄という意味じゃない
それはユニットテストではないという話だ。

たぶん初心者のようにコントローラで
コードをがしがし書いてるんだろうが、
まあどの言語でもいいからウェブフレームワークを勉強しろ。

今時doGetとかdoPostを使ってる時点で
15年前かよって思ったがな。
898デフォルトの名無しさん:2011/05/28(土) 00:43:41.35
Java厨は、複数画面の遷移がある処理のテストも人が手動で動かして目視でやってるのか
899デフォルトの名無しさん:2011/05/28(土) 00:44:22.59
○○厨っていってるやつは、
なにか恨みでもあるのか?
900デフォルトの名無しさん:2011/05/28(土) 00:44:38.81
>>892
nil.foo()したらその時点で例外吐いて止まるよ
901デフォルトの名無しさん:2011/05/28(土) 00:44:58.65
>>900
なんて例外?
902デフォルトの名無しさん:2011/05/28(土) 00:45:03.55
ちょっとまて。画面の遷移と表示まで全自動なの?
903デフォルトの名無しさん:2011/05/28(土) 00:46:52.67
nil pointer exceptionなんじゃね?
904デフォルトの名無しさん:2011/05/28(土) 00:47:12.57
>>893
本音を言うと、型エラーが大量に発覚なんて一度も経験無いから、
そういうことを言う人はどういうコード書いてるのかなって思う。

こっちこそ聞きたいよ。あんたはそんなに型エラー発生させてるの?
905デフォルトの名無しさん:2011/05/28(土) 00:47:47.56
C++使いにはあほらしい話題だ
906デフォルトの名無しさん:2011/05/28(土) 00:48:06.06
単体テスト = TT
907デフォルトの名無しさん:2011/05/28(土) 00:48:18.62
ソースを一番最初に読むのはコンパイラじゃなくて、書いた人
網羅しなくていいなら、検出する早さでも人が圧倒的に早いよ
機械でやるべきことは、多少遅くてもいいから網羅すること
908デフォルトの名無しさん:2011/05/28(土) 00:48:29.94
>>897
あぁ、じゃぁStrutsのActionメソッドでもいいよ。Actionメソッドはテストするんだろ?
どっにしても、引数には、HttpServletRequestやHttpServletResponseが含まれるじゃねーか。
この引数とそれに対する挙動が正常なことを確認する単体テストはしないのかよ。気楽なもんだな。
909デフォルトの名無しさん:2011/05/28(土) 00:50:20.74
>>896
バカか
ノウハウありゃ大した差では無いわ

それよりデバッグ終盤の自分が修正した箇所が他に影響してないって保証の方が安心感があるわ

自分自身の自信とは別で、保証されてるんだぜ?
デスマじゃ無い時は余裕もってテストを眺めてられるってもんよ
910デフォルトの名無しさん:2011/05/28(土) 00:50:28.54
>>888
テストで見つかったところだけ直せば良いんだよ。
どうせ最終的には高いテストカバレッジまで持ってくんだろ?
だったら最終的には全部見つかるさ。
911デフォルトの名無しさん:2011/05/28(土) 00:50:43.64
>>908
だから機能テストとしてはするが、
単体テストではしない。

その部分は単体テストをしなくていいように
コードを最小限にする。
912デフォルトの名無しさん:2011/05/28(土) 00:51:32.54
>>902
マクロで書けるだろ
動的静的関係ない
913デフォルトの名無しさん:2011/05/28(土) 00:51:35.06
結局議論は意味なくてシェアで決まるんだよな
Javascriptが今後どう変化していくかは注目。
914デフォルトの名無しさん:2011/05/28(土) 00:52:01.71
>>897
>今時doGetとかdoPostを使ってる

何という俺。
職業プログラマじゃないんでフレームワークとか覚える時間が勿体ない。
どうせ1年に100個も画面を作らないし。
915デフォルトの名無しさん:2011/05/28(土) 00:52:22.56
目視のテストで全自動w
916デフォルトの名無しさん:2011/05/28(土) 00:53:11.42
お前らテスト書く時間あっていいな。
ゲーム業界なんてプロトタイピング=マスターアップだぞ。
917デフォルトの名無しさん:2011/05/28(土) 00:54:34.60
ゲーム業界じゃあ動的言語は実行クソ遅すぎて
別の意味で使い物にならないのでは?
918デフォルトの名無しさん:2011/05/28(土) 00:55:33.64
Strutsももう古いと思うがw
919デフォルトの名無しさん:2011/05/28(土) 00:55:39.24
>>917
GCあった時点でアウト
920デフォルトの名無しさん:2011/05/28(土) 00:55:48.75
>>915
全自動はねーよ
特にデザイン系は人間の感覚しか頼りにならん
921デフォルトの名無しさん:2011/05/28(土) 00:58:02.09
いずれにしても、不具合のほとんどは、実行時に発生する。型の不一致をやらかす
ような奴は、学生か新人君ぐらいだろ。

ほとんどの不具合は、論理的なものや、例外の見逃しや、想定外の仕様や、挙動
によるものだ。

Javaだって、文字列に数値いれたはずが、数値に変換する時に例外発生したとか、
日付の書式変換で例外が発生したとか、そんなんが多いんだろ?
922デフォルトの名無しさん:2011/05/28(土) 00:58:06.58
>>971
Lua が結構使われていると聞いた気が
923デフォルトの名無しさん:2011/05/28(土) 00:58:29.43
Luna
924デフォルトの名無しさん:2011/05/28(土) 00:59:05.01
Lua
925デフォルトの名無しさん:2011/05/28(土) 00:59:24.91
Luaは使われてるけどデメリット解決されてない
926デフォルトの名無しさん:2011/05/28(土) 01:00:04.46
使われているってことはメリットが大きいってことだろ
927デフォルトの名無しさん:2011/05/28(土) 01:00:36.79
>>926
メリットが
・ホットスワップ可能
なんだけどね
928デフォルトの名無しさん:2011/05/28(土) 01:01:30.65
>>921
> Javaだって、文字列に数値いれたはずが、数値に変換する時に例外発生したとか、
> 日付の書式変換で例外が発生したとか、そんなんが多いんだろ?

いまどきのフレームワークを使えば、
ユーザーの数字入力は数値型変数に直接がはいるイメージになる。
型変換コードは書かない。

型に合わない入力はフレームワークの設定で
簡単にエラーメッセージとして表示できるようになってる。
929デフォルトの名無しさん:2011/05/28(土) 01:01:37.41
>>927
総合的なメリットの話をしているんだが
930デフォルトの名無しさん:2011/05/28(土) 01:02:29.36
>>929
931デフォルトの名無しさん:2011/05/28(土) 01:02:54.62
>>921
想定外の仕様ってか使用だな
これが一番厄介だ
GUI作る時はこれが地獄の元

CUIとか、専用機器の組み込みはこっちが処理の流れ作れるから楽
932デフォルトの名無しさん:2011/05/28(土) 01:04:09.97
みんなウィザード気取ってるけどどうしょもないコードしか挙がってこない現実
933デフォルトの名無しさん:2011/05/28(土) 01:04:19.36
>>928
なんでフォームからの入力値のチェック限定なんだよ
DBからの読み込み、ファイルからの読み込み、Webサービスの戻り値、リモートコールの呼び出し
INPUTはいろいろあるだろうが。
934デフォルトの名無しさん:2011/05/28(土) 01:04:19.67
みんなテストの網羅率そんなに高いのか。
そーするとテストコードの量も増えそうだけど、動的言語はその辺不安じゃないのかな?
テストのテストまで書かないだろうし。
あとは型変換でこけるんじゃなくて、呼び出し元の仕様変更でパラメーター数が
変わらないような時もちょっと怖いかなと思ってるんだけどそうでもないのかな?モックにしてると気づかなさそうで。
935デフォルトの名無しさん:2011/05/28(土) 01:05:06.53
new,deleteなんて忘れねーよという奴は信用しない
936デフォルトの名無しさん:2011/05/28(土) 01:09:06.77
>>933
例えばファイルからの入力で
ファイルに数値が入っている前提だとして、
間違って文字列が入っていたとする。

静的言語ならすぐさま数値型変数にいれて
プログラムのメイン処理では全部数値型を使う。
だから、入力して変換する部分ですぐにバグがあることが表面化するけど

これが動的言語なら、文字列のまま
プログラムのメイン処理に進んでしまう。
バグが表面化するまで時間がかかる。
937デフォルトの名無しさん:2011/05/28(土) 01:11:23.72
>>934
高いわけねーだろw

だがそれを認めると
テストコードがあるから動的言語でも大丈夫
という主張が崩れるんだよw
938デフォルトの名無しさん:2011/05/28(土) 01:11:49.66
>>934
んにゃ
素人さん(?)が想像してるより泥臭い人力の場面は多分にあるw
人間の目しか信用出来ない場面って、結構あるべ

第一、ゲーム業界のゲームバランスなんて、人間以外何がやるってんだよwww

自分はプログラマじゃなくてテスターだったんだがなw
(ゲーム業界ではない)
939デフォルトの名無しさん:2011/05/28(土) 01:12:56.53
>>936
% 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'
940デフォルトの名無しさん:2011/05/28(土) 01:14:13.17
>>937
えー、お前の所と一緒にすんなよ
まあテストしないなら静的言語の方が安全なんじゃね?
テストしてある動的言語のプログラムよりはボロいけど
941デフォルトの名無しさん:2011/05/28(土) 01:14:21.24
楽したいじゃんといいつつテストは網羅するぜという矛盾
942デフォルトの名無しさん:2011/05/28(土) 01:15:43.19
ところが実際は、動的言語でもほとんど問題にならないし、問題があってもたいていはすぐにわかる。

その数値を計算や、書式変換する必要があるなら、そこでエラーになるし。たんに表示するだけなら、
そもそも文字列として扱うだけだし。そのことが問題であれば、データの生成元の責任ということになる。

実際、動的言語で型の不一致で致命的なもんだいを引き起こすことなどほとんどないと言っていい。
ほんとうの不具合は、静的言語も動的言語も他のところにある。
型の不一致にたいして、どんだけ悲観的なんだよ。心配しすぎだろ。 他に心配しなきゃならんことが
いくらでもあるだろが。
943デフォルトの名無しさん:2011/05/28(土) 01:16:44.35
どのくらいのコードサイズ前提で語ってるか宣言してから書き込んでくれ
944デフォルトの名無しさん:2011/05/28(土) 01:18:03.98
フラットなコードと、きちんとモジュール化されたコードでは
同じサイズのコードでも取り回しが全然違う件
945デフォルトの名無しさん:2011/05/28(土) 01:19:27.51
>>941
静的言語ならテストは網羅しなくていいとか冗談きついぜ
946デフォルトの名無しさん:2011/05/28(土) 01:19:30.23
さぁ、寝るか
947デフォルトの名無しさん:2011/05/28(土) 01:20:06.85
してないくせに何いってんだ
948デフォルトの名無しさん:2011/05/28(土) 01:21:00.69
何を持って網羅っていってんの?
949デフォルトの名無しさん:2011/05/28(土) 01:22:02.37
業務系に限って言えば、型は数値と文字列と配列と連想配列があれば、ほとんどの処理は大丈夫だな。
950デフォルトの名無しさん:2011/05/28(土) 01:24:21.80
>>942
んなの当たり前
問題わな
製品として出した後から修正出来ないとか、修正が難かしい(許可が下りにくいとか時間が掛かるとか)

そういう環境に動的言語は向かないんよ

一回出したらバグが在ろうが何だろうが、余程ひどいバグじゃない限り走らせ続けるってプログラムは大規模でも組み込みでも多いのよ

修正が容易かどうかじゃなくて、どの位の動作が保証出来るか?が重要なんだよ
951デフォルトの名無しさん:2011/05/28(土) 01:24:42.81
>>948
たぶんC0カバレッジ
952デフォルトの名無しさん:2011/05/28(土) 01:26:31.77
型はbyteしかなくてもいいw
953デフォルトの名無しさん:2011/05/28(土) 01:29:50.71
>>950
本番前のテストでの修正が容易いって言ってんだよ
なんで本番後の話になってんだよ
動作の保証はテストでやれよ
954デフォルトの名無しさん:2011/05/28(土) 01:30:23.54
机上の空論
955デフォルトの名無しさん:2011/05/28(土) 01:40:43.47
実際、動的言語では型はあまり意識しない。という意識はするが、
そこまで神経質に気をはって使うわけではない。だいたい型の種類も
少ないが、基本は文字列。数値として使う場合は、それが数値として
使えればいい。極端にいえば、その変数が数値としての性質もって
いればいい。いわゆる、ダックタイピングってやつで、それが流儀
みたいな感じになってしまった。そいつがガーと鳴けばアヒルだろうと。
956デフォルトの名無しさん:2011/05/28(土) 01:42:50.18
>>953
それは本質的に動的も静的も同じだろ
テストも万能ではないのは結構前から知られてるし、そうなると静的型言語が選ばれる事になる

客にとっては開発が容易とか関係無いのよ
客にとって、オペレーターとか、エンドユーザーの奇想天外な操作でも対応出来るかどうかが問題なだけ
テストとは別の形で保証出来るから採用されるんだよ

本質的に同等のクオリティに出来るとしてもね
作ってる側も、本質的に同等のクオリティだと太鼓判押せないし、そんな責任取りたくないし
957デフォルトの名無しさん:2011/05/28(土) 01:43:20.74
>>953
動作の保証じゃなくて、
文法の保証はいつやるべき?
958デフォルトの名無しさん:2011/05/28(土) 01:44:30.07
100じゃないんだから0でもいっしょだろ!
959デフォルトの名無しさん:2011/05/28(土) 01:45:22.76
>>958
詐欺罪でタイーホ
960デフォルトの名無しさん:2011/05/28(土) 01:45:32.86
静的言語は動作後が楽になるんじゃなくて
動作までが楽になると考えればいい。
961デフォルトの名無しさん:2011/05/28(土) 05:23:43.27
ここまで読んだ。
本気でTDDとかBDDって流行ってないんだね。
962デフォルトの名無しさん:2011/05/28(土) 08:31:24.76
>>961
どの言語でもできる手法では優位に立てない
優位に立てないなら安全とは言えない
という論調が強いからね
要は、克己的なことより他人との比較を重視する人が多い
963デフォルトの名無しさん:2011/05/28(土) 08:47:58.58
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
964デフォルトの名無しさん:2011/05/28(土) 09:09:30.72
動的言語でもプログラム中のAPIドキュメントととして関数なりメソッドなりの入り口に
想定される引数の型と戻り値の型を書くと思うんだけど、これを利用しないのって勿体無くない?
少なくとも処理系作る側になると型情報は欲しい。
965デフォルトの名無しさん:2011/05/28(土) 09:16:30.94
強力な型システムがあればそれをそのまま型としてコード内で2級以上の市民として扱えるいうのはある
ただプログラマがそれを利用できるかは別問題な
966デフォルトの名無しさん:2011/05/28(土) 09:16:53.73
一時期Cで組み込み型排除して全部enumとtypedef用意してた
967デフォルトの名無しさん:2011/05/28(土) 09:28:02.28
>>964
Pythonでtype annotationとかそれっぽいのがあった気がする
よくよく調べたらがっかりした覚えがあるけど
968デフォルトの名無しさん:2011/05/28(土) 09:32:59.47
annotationでは駄目なのだ
言語内で1級市民として扱える仕組みでないと
969デフォルトの名無しさん:2011/05/28(土) 10:00:56.77
Pythonなら俺は、例えば数値を受け取るメソッドを

def foo(n):
    n = int(n)

で書き始めるかな
970デフォルトの名無しさん:2011/05/28(土) 10:24:05.73
動的言語は型の扱いがややこしい。
混乱の元だよね。
971デフォルトの名無しさん:2011/05/28(土) 10:34:34.79
分かって使ってるとへ思えない
理解するくらいなら他の言語のほうがいい
972デフォルトの名無しさん:2011/05/28(土) 10:38:00.96
pythonで
>>> "12"+1
を実行すると
TypeError: cannot concatenate 'str' and 'int' objects
っていうエラーが出てきます。
動的言語なのになんでですか?
973964:2011/05/28(土) 10:40:56.80
>>970
処理系が解釈するのも人間が解釈するのも複雑で、デメリットのほうが多いような気がしてる。
974デフォルトの名無しさん:2011/05/28(土) 10:42:44.88
静的言語に型推論があれば、動的言語のメリットはなくなるよね。
975デフォルトの名無しさん:2011/05/28(土) 10:44:02.94
型推論にメリットがない
976デフォルトの名無しさん:2011/05/28(土) 10:45:23.69
>>972
それは実行時の安全装置なので
コンパイル時に比べると劣っているという噂
977デフォルトの名無しさん:2011/05/28(土) 10:46:35.64
>>975
plus :: Int -> Int -> Int {- ←型推論でこいつが省略できる -}
plus x y = x + y
978デフォルトの名無しさん:2011/05/28(土) 10:48:48.03
>>972
Pythonは型付けが強いから
PerlやPHPは弱くてRubyやPythonは強い

>>976
噂て。
979デフォルトの名無しさん:2011/05/28(土) 10:53:06.77
>>978
pythonもperlも型に関しては大差ないよw
違いはプリミティブ関数や演算子の型に対する柔軟さ。
980デフォルトの名無しさん:2011/05/28(土) 10:56:24.32
>>979
ん、よくわからない
コード貼って例示おねがい
981デフォルトの名無しさん: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の例でよくある文字列<->数値の相互変換というもので使おうとすると
どう変換関数を定義しても自然同型という性質が証明できないんで、自然同型であるものと比べて危険な変換であるというのがわかる
982981:2011/05/28(土) 11:10:38.80
自然同型ってそういうもんだっけ感が・・・
まぁいいやただの思考ダンプなんで雰囲気で
983デフォルトの名無しさん:2011/05/28(土) 11:13:45.12
>>981
それはHaskellのShowとかと違うの?
外見的にはそれっぽいんだけど
984デフォルトの名無しさん:2011/05/28(土) 11:13:52.35
話し変わるんですけど強く型付けされた軽量言語って何がある?
985デフォルトの名無しさん:2011/05/28(土) 11:20:36.68
986デフォルトの名無しさん:2011/05/28(土) 11:22:00.95
>>983
違う
あれは具体的にユーザーが変換関数を両方定義してその定義したものを使用する際には明示的に書く必要があるんだけど、
これはその性質を証明できればその定義がいらないのと、明示的に書く必要が無い

型の定義の構造が同じであるような自明に近いようなな場合はそういう証明はコンピュータで自動的にできる、あるいは
その証明の一部を人の手ですることで残りをコンピュータに任せられることができるんだよね
987デフォルトの名無しさん:2011/05/28(土) 11:32:11.88
>>981
まあ、haskellでも
"122" ++ 45 = "12345"
って言うのは演算子の左側に型を合わせるとか決めれば、型推論の応用で仕様に追加出来るんだろうけど、そのコードが意図的にそう書いたのか、バグなのかはプログラマしか知らないんだよな

明示的に型変換させた方が読む側にとってはバグじゃないって分かって安心出来る
988デフォルトの名無しさん:2011/05/28(土) 11:32:34.45
>>985
ごめん、静的型付け言語でお願い。
989デフォルトの名無しさん:2011/05/28(土) 11:40:32.01
>>988
軽量 = 動的言語

静的で強い型付けって、最近出てる静的はみんな強い型付けだよ
javaもc#もscalaもhaskellも
990デフォルトの名無しさん:2011/05/28(土) 11:41:32.03
静的言語 vs. 動的言語

というより、

コンパイラ vs. インタープリタ

って感じだな。

991デフォルトの名無しさん:2011/05/28(土) 11:42:43.54
>>984
haskell
992デフォルトの名無しさん:2011/05/28(土) 11:43:09.26
Java厨は、メソッド名の変更が問題ないかコンパイル時に教えてくれれば
満足なんだろう。
993デフォルトの名無しさん:2011/05/28(土) 11:43:54.68
>>989
軽量 ≠ 動的言語

軽量言語って対話環境が用意されている言語のことじゃないの?
994デフォルトの名無しさん:2011/05/28(土) 11:44:19.15
>>990
haskellやc言語にもインタプリタ有るし、lispにもコンパイラ有るけど、事実上、二つの対決関係はイコールだからな
995デフォルトの名無しさん:2011/05/28(土) 11:47:03.38
>>993
関数型言語ならともかく、手続き型言語では≒だが
996デフォルトの名無しさん:2011/05/28(土) 11:48:02.47
>>992
おまえは少しは空気読めよ。
997デフォルトの名無しさん:2011/05/28(土) 12:04:33.94
998デフォルトの名無しさん:2011/05/28(土) 12:55:53.11
次スレよろ
999デフォルトの名無しさん:2011/05/28(土) 12:57:55.15
↓このスレの総括
1000デフォルトの名無しさん:2011/05/28(土) 13:01:38.00
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。