やっぱり動的型付け言語は大規模開発で効率が悪い 4
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/11/21(月) 11:48:03.35やっぱり動的型付け言語は大規模開発で効率が悪い 3
http://hibari.2ch.net/test/read.cgi/tech/1320832914/
0002デフォルトの名無しさん
2011/11/21(月) 12:05:12.06> 163 :デフォルトの名無しさん:2011/11/12(土) 00:37:41.74
> つーか日本の標準的な組織でどうかって話じゃないと意味なくね?
> ファウラーの環境を引用してどうすんの?
> 君らファウラーに匹敵するスキルを持っていて、周りもそういうレベルの奴に囲まれた環境で仕事してんのか?
>
> 165 :デフォルトの名無しさん:2011/11/12(土) 00:42:56.66
> >>163
> つまり日本の底辺ドカタに動的型は使いこなせるか?を議論すればいいのか
> じゃあスレタイも「動的型付け言語ではドカタは大規模開発できない」に変更しなきゃな
仕事で活用できないとあんま意味ないよ派
仕事でプログラミング学んだので他は知らね派
家でも趣味やOSSでプログラミングしてるよ派
仕事なんてしてませんが何か派
ファイッ
0003デフォルトの名無しさん
2011/11/21(月) 13:09:41.07$a = "100";
これが文字列ではなく整数とみなされたりね
0004デフォルトの名無しさん
2011/11/21(月) 14:55:03.000005デフォルトの名無しさん
2011/11/21(月) 15:10:16.01PHPは汎用プログラミング言語ではない
0006デフォルトの名無しさん
2011/11/21(月) 15:12:38.52エラーにならない言語はウンコ
0007デフォルトの名無しさん
2011/11/21(月) 15:27:01.74PHPは知能を持っている。
「10:12」こんなメモを渡されたとする。
これなんだろう?
10対12?10時12分?
これ人間だったら状況に応じて意味をくみ取るわけ。
たとえばさ、秘書に「10:12に集合するよう徹底してください」こんなメモ
渡すでしょ。
ここで秘書が「10対12ってなんですか?ちゃんとわかるように書いてください」
とか言い出したら、この娘アホの子なのか?って思うよね。
結局、JavaとかCってアホの子なんだよね。
っていうか無能なの、知能がないの。
まああたりまえだけど。
でもね、PHPにはこれができる。
やっぱりPHPには知能があるんだよ。
0008デフォルトの名無しさん
2011/11/21(月) 16:05:38.03と書けばいいだけ
0009デフォルトの名無しさん
2011/11/21(月) 16:59:48.040010デフォルトの名無しさん
2011/11/21(月) 17:35:43.840011デフォルトの名無しさん
2011/11/21(月) 21:03:28.780012デフォルトの名無しさん
2011/11/21(月) 21:11:07.630013デフォルトの名無しさん
2011/11/22(火) 07:31:25.341 1と並べて書けば文字列結合と解釈されて11になるし、1 + 1は2だ
0014デフォルトの名無しさん
2011/11/22(火) 08:22:16.32人間が判断する見た目または他の言語と乖離していることがあるというだけに過ぎない
0015デフォルトの名無しさん
2011/11/22(火) 10:07:49.97ミスに気付かず意図しないデータ型で動かしてしまう可能性が高まる
処理系が区別してるなんて話はそもそもしてない(んなもん当たり前)
0016デフォルトの名無しさん
2011/11/22(火) 10:16:37.50ハードディスクを交換したらファイル操作のコマンドが全部別のものになるのが正義なんだそうですw
0017デフォルトの名無しさん
2011/11/22(火) 10:28:58.940018デフォルトの名無しさん
2011/11/22(火) 10:38:31.440019デフォルトの名無しさん
2011/11/22(火) 10:45:56.78"1" + 1 => ? をどうするかという問題だから
"1" + 1 => 11 なら数値が文字列に、
"1" + 1 => 2 なら文字列が数値に型変換されてる
こういう暗黙の型変換は分かり難い
"1" + "1" や 1 + 1 は否定してないので、
ポリモーフィズム全否定ではない
0020デフォルトの名無しさん
2011/11/22(火) 11:58:28.52同じ見た目なら常に同じ動作だ
1+"1"が文脈やランダム性によって2になったり11になったりすることはない
0021デフォルトの名無しさん
2011/11/22(火) 12:05:40.48リテラルで話をしていても微妙に埒があかない
0022デフォルトの名無しさん
2011/11/22(火) 12:41:21.74Javaも批判の対象だからかwww
0023デフォルトの名無しさん
2011/11/22(火) 14:38:27.350024デフォルトの名無しさん
2011/11/23(水) 11:43:45.58じゃあ暗黙の型パラメータとか型クラスのメソッドの名前解決とかも全否定ですね。
0025デフォルトの名無しさん
2011/11/23(水) 12:02:40.61両方持ってるScalaはRuby並みにキタネーし
0026デフォルトの名無しさん
2011/11/24(木) 02:01:34.87Perlは文字列の連結と足し算を演算子で区別すると思うが…
0027デフォルトの名無しさん
2011/11/24(木) 02:15:25.84+ 数値足し算
. 文字連結
== 数値比較
eq 文字比較
みたいに。
0028デフォルトの名無しさん
2011/11/24(木) 04:49:21.45おまえ正気か?
0029デフォルトの名無しさん
2011/11/24(木) 08:27:42.20値に型がある/ない
まずこれを区別するところからはじめようか
0030デフォルトの名無しさん
2011/11/24(木) 10:58:04.83ドカタなわけですよ
0031デフォルトの名無しさん
2011/11/24(木) 11:40:22.53足し算を意図している所で連結が起こる可能性を無視したバグプログラマと
文字列連結にされたくないってときに必ず
Number(a) + Number(b) とか書くような作業が大好きな人だけだろ
0032デフォルトの名無しさん
2011/11/24(木) 11:54:35.31Haskell で ++ とか初めて見た時は「…それ、なんか無理してね?」と思ったし
0033デフォルトの名無しさん
2011/11/24(木) 12:12:49.04・文字列の内容が数値かによって、足し算か連結か変わるのは良くない
・記号が増えすぎるのは良くない
・既存の記号に違う意味を与えるのは良くない
だれかこの堂堂巡をどうにかしてくれ
0034デフォルトの名無しさん
2011/11/24(木) 13:51:35.140035デフォルトの名無しさん
2011/11/24(木) 14:20:47.59静的なものではC、動的なものではJavaScriptの==演算子
0036デフォルトの名無しさん
2011/11/24(木) 14:21:55.79Cを作った奴等の次の次の言語、だけあって、Cのいいところを残して、
ダメな所がよく潰されている。
0037デフォルトの名無しさん
2011/11/24(木) 17:42:50.34静的型で暗黙コアージョンしまくりな言語がいいのか?
0038デフォルトの名無しさん
2011/11/24(木) 18:05:37.98Dartもそんな感じがするな。JavaScriptのスコープとトホホな点とかは
きっちり潰している。
0039デフォルトの名無しさん
2011/11/24(木) 18:22:11.39phpが場当たりなだけ
jsの==はある意味必然だろ
0040デフォルトの名無しさん
2011/11/24(木) 18:23:00.97スクリプト的にも書けるし
ちょい面倒なとこもあるけどさ
0041デフォルトの名無しさん
2011/11/26(土) 05:54:58.54大規模開発ドカタは静的型付け言語すらちゃんと使えない
動的型付け云々を言う前に
せめてcaseの網羅性を静的検査可能な形で記述できるようになれ
0042デフォルトの名無しさん
2011/11/26(土) 07:26:34.31だからと言って仕様で定められた分岐を網羅してるか否かまでは検査出来ないぞ
そこは分かって書いてるの?
0043デフォルトの名無しさん
2011/11/26(土) 07:35:01.940044デフォルトの名無しさん
2011/11/26(土) 07:36:32.280045デフォルトの名無しさん
2011/11/26(土) 09:44:52.79>>42「十分条件ではない」
0046デフォルトの名無しさん
2011/11/26(土) 10:33:27.75大規模開発ドカタ限定で答えだすなw
静的型付け言語をちゃんと使えるプログラマ前提の話、
(お前はもちろん使えるんだよな?w)
そういう前提だと、静的型付け言語が優れてるってのは
言うまでもない話だ。
ま、静的言語と静的型付け言語をごっちゃにしているお前の
いうことなんか誰も耳をかさないだろうけどなw
0047デフォルトの名無しさん
2011/11/26(土) 14:23:21.11尤も、世間の9割以上は単純な事務処理だから、区別出来なくても当面困る事は無いだろう。
0048デフォルトの名無しさん
2011/11/26(土) 14:36:58.850049デフォルトの名無しさん
2011/11/26(土) 14:58:03.44ぬるぽはうざいけど、ドカタはJavaくらいしか書けねーしな
0050デフォルトの名無しさん
2011/11/26(土) 15:10:30.530051デフォルトの名無しさん
2011/11/26(土) 19:00:44.74よし、数値といってもintとかfloatとかがあるから、それぞれの足し算の記号を別のものに……。
0052デフォルトの名無しさん
2011/11/26(土) 20:17:04.05> ま、静的言語と静的型付け言語をごっちゃにしているお前の
> いうことなんか誰も耳をかさないだろうけどなw
理解できていないのはお前だろw
>>41は「静的型付け言語」「caseの網羅性を静的検査」に言及しているが
静的言語なんて言及してねえぞw
で、caseの網羅性を静的検査する場合、
静的型付けとの関係が深いことは言うまでもないことだよな?な?
0053デフォルトの名無しさん
2011/11/26(土) 20:46:53.47なんかさ、すべての問題を解決してくれないなら
意味が無いと思ってないか?
ユニットテストは仕様上のバグを解決してくれないから
意味が無いみたいな。
caseだって網羅性とか完璧に解決してくれないなら意味が無いと
言おうとしてるんだろうけど、caseと静的型付けはほとんど関係ないから。
まあ、caseっていうかswitchの引数に指定できない型を検出してくれるという意味で
少しは意味があるけどね。
0054デフォルトの名無しさん
2011/11/26(土) 20:55:20.26switchにenum型変数を入れてcaseではそのenum型の
値でしかチェックできないってのもあったはず。
0055デフォルトの名無しさん
2011/11/27(日) 00:12:05.11直和型のパターンマッチとかでは、型さえ仕様と合ってれば
仕様で定められた分岐の網羅性を検査できるわけだし
0056デフォルトの名無しさん
2011/11/27(日) 00:18:30.90それって動的型付け言語じゃできないものなのかな?
この変数に入る値は○○ですって
あらかじめ定義しておけば、
動的型付け言語でも可能だと思うんだけど。
0057デフォルトの名無しさん
2011/11/27(日) 00:22:04.91直和型について言えば、定義した型を
実行時に変更できないようにすれば可能かもしれない
0058デフォルトの名無しさん
2011/11/27(日) 00:29:38.11> 定義した型を実行時に変更できないようにすれば
それって静的型付け言語って言うんじゃ…
0059デフォルトの名無しさん
2011/11/27(日) 00:33:57.12やっぱり静的に型付けできないと、静的にチェックは難しくなるね。
もし静的型付け言語にコンパイルフェーズってのがあって
その時にコードでいろいろ変更できるようにすれば
動的型付け言語を完全に超えられると思う。
0060デフォルトの名無しさん
2011/11/27(日) 01:34:02.46実例としてはSmalltalkにしか存在しないように、
静的型付け言語なら分岐の網羅性を静的検査できる、と言っても
実例としては一部の関数型言語しか存在しないじゃん
このスレにいる静的型付け言語派の人はみな関数型言語使いなの?
0061デフォルトの名無しさん
2011/11/27(日) 01:40:21.400062デフォルトの名無しさん
2011/11/27(日) 09:04:58.31コンパイル後の変更に対応できないから動的型付け言語を超えられない。
0063デフォルトの名無しさん
2011/11/27(日) 09:06:33.680064デフォルトの名無しさん
2011/11/27(日) 11:17:35.22- 大規模開発にはドカタ動員が必須
- ドカタは静的型チェックやIDEの補完の助けなしではFizzBuzzも書けない。
- 逆にコンパイラとIDEの助けを借りれば、なんとか動くコードは書ける。
- 動的言語には現状まともなIDEがない(Smalltalkerはこっちくるな。Emacs?笑えんな)
- よって大規模開発で動的言語を使うと炎上する
0065デフォルトの名無しさん
2011/11/27(日) 11:30:15.45> - 逆にコンパイラとIDEの助けを借りれば、なんとか動くコードは書ける。
だうと
0066デフォルトの名無しさん
2011/11/27(日) 12:06:17.57> コンパイル後の変更に対応できないから動的型付け言語を超えられない。
コンパイル時に変更できれば、あらかたの問題は解決するでしょ?
どうしてもコンパイル時にやらないといけないことってなに?
0067デフォルトの名無しさん
2011/11/27(日) 14:48:52.56実行時拡張
0068デフォルトの名無しさん
2011/11/27(日) 14:58:28.58それは言葉を言い換え得ただけ。
どうしても実行時拡張をしないといけないことってなに?
0069デフォルトの名無しさん
2011/11/27(日) 15:02:00.86実行時拡張を使う必要がない。
俺が作ろうと思っている言語は静的型付け言語だが、
コンパイル時拡張を備えている。
0070デフォルトの名無しさん
2011/11/27(日) 15:18:00.170071デフォルトの名無しさん
2011/11/27(日) 15:43:51.99言えってw
0072デフォルトの名無しさん
2011/11/27(日) 15:44:14.59察しろよ!
0073デフォルトの名無しさん
2011/11/27(日) 15:44:39.200074デフォルトの名無しさん
2011/11/27(日) 16:22:19.950075デフォルトの名無しさん
2011/11/27(日) 16:24:38.22(他にはリフレクティブプログラミングと呼ぶ事もある)
LISP系言語やRubyでは必須というか、煽るまでもなくごく当たり前に使われているな
0076デフォルトの名無しさん
2011/11/27(日) 16:27:26.25どういう時に使うのかって話なんだけどなw
0077デフォルトの名無しさん
2011/11/27(日) 16:28:06.25そこんところを勘違いしないように。
0078デフォルトの名無しさん
2011/11/27(日) 16:28:20.79Smalltalkの場合、クラスブラウザ上でクラスを新規定義すると、
ブラウザの中の人がClassインスタンスを生成して
それをシステム辞書に登録するんだったよね
0079デフォルトの名無しさん
2011/11/27(日) 16:30:35.89どうしても実行時に拡張しなければいけないことなんてないでしょ。
特にコンパイル時に拡張できればほとんどの問題が解決する。
で残りの問題はあると思うから「ほとんど」と書いたが、俺は思いつかない。
どうしても実行時に拡張しなければならないことなんてあるの?
0080デフォルトの名無しさん
2011/11/27(日) 16:33:02.70「ソフトウェア工学」は矛盾語法か?-アラン・ケイ
http://metatoys.org/oxymoron/oxymoron.html
0081デフォルトの名無しさん
2011/11/27(日) 16:37:38.64たとえばActiveRecorrdというRubyで書かれたORM(Object-Rerational Mapper)では、
データベースに接続した時にデータベースのスキーマ情報から各テーブルに対応する
クラスが動的に定義される。この時、テーブル内の各フィールドはクラスに所属する
インスタンスメソッドとしてこれまた動的に定義される
JavaやC++のような実行時拡張の欠落した言語には、こんな芸当ができるかな?
0082デフォルトの名無しさん
2011/11/27(日) 16:39:19.22要約すると、コンパイル時拡張では最初からやり直しになりがちだしデータも作り直しになるから
例えばSmalltalkみたいに30年間動き続けるとか長期運用に耐えるソフトウエアは作れない。
0083デフォルトの名無しさん
2011/11/27(日) 16:44:16.01どこの世界の話だよ
0084デフォルトの名無しさん
2011/11/27(日) 16:47:56.37でもさ、それって obj.setField(F1, 'abc') こう書くのとなにも変わらないよね?
0085デフォルトの名無しさん
2011/11/27(日) 16:49:53.20データベースに接続した時点でのクラスが作られるってことは言い換えると、
コードに書いてあるクラスとは違うオブジェクトができてしまうこともあるってことで、
データベース定義が変わってしまうと、コードが動かなくなってしまうってことじゃないの?
それよりか、データベース定義からコンパイル時にクラスを作ってくれたほうがいいんだが。
0086デフォルトの名無しさん
2011/11/27(日) 16:53:44.90ようするに、その言語のクラスの定義の仕方は、
class HOGE {
public foo()
}
みたいなのだけど、
yamlで書いたテーブル定義からも
クラスを定義できるってこと?
yamlからSQL文も生成できるようにしておけば、
単一の定義からクラスとcreate table文が出来るわけか。
一種のジェネレータみたいだけど、実際にコードを生成しなくても別の定義ファイルから
コンパイル時に直接クラスを作れるわけか、それってかなり良くない?
0087デフォルトの名無しさん
2011/11/27(日) 16:56:13.10データベースに接続して、クラス生成なんてことも可能だろうね。
これだと、しっかり型チェックができるから
更に優れているのではないか。
0088デフォルトの名無しさん
2011/11/27(日) 16:57:07.930089デフォルトの名無しさん
2011/11/27(日) 17:01:06.12Rubyだと、obj.f1 = 'abc' あるいは obj.f1! abc と書けるよ
JavaよりもRubyのほうが簡潔なコードが書けることは一目瞭然じゃないのかな?
0090デフォルトの名無しさん
2011/11/27(日) 17:01:33.50コンパイル時拡張があれば、コード補完できるようになるかもしれないな。
0091デフォルトの名無しさん
2011/11/27(日) 17:04:07.64でも、シンタックスシュガーでしかないでしょ?
ちょっと書き方が変わった程度。
C#ならプロパティがあるから、
obj.fields(f1) = 'abc'なんてかけるしね。
もしそれでデータベース定義に従って
コンパイルエラーが出るなら、まだ意味があるけど無理でしょ?
もしコンパイル時拡張があれば、obj.f1 = 'abc'って書いてコンパイルしたら
データベースにそのようなフィールドはありません。ってエラーを出せるようになるかもね。
0092デフォルトの名無しさん
2011/11/27(日) 17:14:08.36>でも、シンタックスシュガーでしかないでしょ?
>ちょっと書き方が変わった程度。
いや、単なる構文糖とは全然違うよ
JavaやC#じゃ obj.set_f1('abc') あるいは obj.f1 = 'abc' と書けないだろ?
0093デフォルトの名無しさん
2011/11/27(日) 17:27:19.47>データベース定義が変わってしまうと、コードが動かなくなってしまうってことじゃないの?
それはJavaでも同じだろ?ActiveRecord固有の問題じゃないよ
>>85,86
>それよりか、データベース定義からコンパイル時にクラスを作ってくれたほうがいいんだが。
そういったクラスジェネレータは、ActiveRecordの登場以前にもいくつか存在していた。
その代表例が、AppleのWebObjectsというWebフレームワークの一部である
EnterpriseObjectと呼ばれる技術。WebObjectsでは、Modelerというツールを
利用する事でデータベースのスキーマ情報からクラス定義を自動生成できる。
さらにはModelerは、IDEであるProjectBuilder(今のXCode)と統合されている。
一言で言えば「過去に通った道」だね
0094デフォルトの名無しさん
2011/11/27(日) 17:31:07.91>yamlで書いたテーブル定義からもクラスを定義できるってこと?
そのアイデアも過去に通った道
・Rubyist Magazine - プログラマーのための YAML 入門 (実践編)
http://jp.rubyist.net/magazine/?0011-YAML
0095デフォルトの名無しさん
2011/11/27(日) 17:35:34.820096デフォルトの名無しさん
2011/11/27(日) 17:43:50.36あの言語、実行途中でクラス作成や追加や修正できて
インスタンスも同じく作成追加修正できるし
あるオブジェクトが現在持っているメソッドの一覧とかも出せるんじゃん
0097デフォルトの名無しさん
2011/11/27(日) 17:49:22.90ORマッパーやダイナミックローダを使うだけのドカタは、
それらの機構を実現する基礎となっている実行時拡張を不要と言い切る。
天に唾するとは、このことだなw
0098デフォルトの名無しさん
2011/11/27(日) 17:57:24.200099デフォルトの名無しさん
2011/11/27(日) 17:58:29.89ドメインモデル貧血症 = トランザクションスクリプトで
特に日本でよく使われる、優れた方法の一つなんだが・・・
0100デフォルトの名無しさん
2011/11/27(日) 17:59:21.82結局、コンパイル時拡張があれば
実行時拡張は必要ないって結論になってるんだが、
だって過去に通った道というだけで反論は一つもない。
0101デフォルトの名無しさん
2011/11/27(日) 18:00:08.33またお前か。Javaは動的言語だって。
動的型付け言語と動的言語をごっちゃ混ぜにしているお前は
馬鹿としか見られてないぞw
0102デフォルトの名無しさん
2011/11/27(日) 18:00:34.53まあ、静的型付け言語でもソフトウェアアーキテクチャとかフレームワーク設計に
関わっていれば常識なんだけど、それをドカタに想像(イメージ)させようとすること
そのものに無理があったんじゃないかと思われ....
0103デフォルトの名無しさん
2011/11/27(日) 18:02:56.23実行時拡張が不要って結論は出てるからね。
0104デフォルトの名無しさん
2011/11/27(日) 18:03:25.790105デフォルトの名無しさん
2011/11/27(日) 18:03:41.440106デフォルトの名無しさん
2011/11/27(日) 18:04:18.59結局シンタックスシューレベルの事しか出なかったね。
0107デフォルトの名無しさん
2011/11/27(日) 18:10:50.20ここにもドカタが一人www
0108デフォルトの名無しさん
2011/11/27(日) 18:16:07.19代わりってんだから笑うしかないだろ。
0109デフォルトの名無しさん
2011/11/27(日) 18:30:13.41お前ぜんぜん分かってねーな。真の動的言語はSmalltalkだけ!
0110デフォルトの名無しさん
2011/11/27(日) 18:33:24.34具体例を出せるかってゲームになりつあるな。
0111デフォルトの名無しさん
2011/11/27(日) 18:33:31.83日本語お上手ですね。何日前から習い始めましたか?
0112デフォルトの名無しさん
2011/11/27(日) 18:47:26.86具体例出せないんだw
0113デフォルトの名無しさん
2011/11/27(日) 19:01:02.65逆だよん
・LISP/Smalltalk/Rubyといった実行時拡張の可能な言語
・ テーブルの各フィールドをメソッドとして「直感的」かつ「簡潔」に書ける
・もちろんハッシュとしてアクセスすることも可能
例:obj.f1 = 'abc' あるいは obj.f1! 'abc'
・Java/C#のような実行時拡張の欠落した言語
--> テーブルの各フィールドはハッシュへ与えるキーとして
「間接的」かつ「冗長」にしか書けない
例:obj.fields('f1', 'abc') あるいは obj.fields('f1') = 'abc'
ここまで手取り足取り説明しないと分からんものかね?
もうドカタの相手は疲れたよ.... >>パトラッシュ
0114デフォルトの名無しさん
2011/11/27(日) 19:11:24.83「間接的」かつ「冗長」に書ける
なにも問題ないんじゃね?
0115デフォルトの名無しさん
2011/11/27(日) 19:12:27.09シンタックスシュガーだねっで終わっちゃう。
0116デフォルトの名無しさん
2011/11/27(日) 19:24:35.06Javaドカタやってないって話だよ
0117デフォルトの名無しさん
2011/11/27(日) 19:34:00.40バランスの問題だよ。
冗長だとなにが悪い? コードを書くのが面倒?
でもな冗長である代わりに、逆にコードを書くのが楽になってる面もある。
0118デフォルトの名無しさん
2011/11/27(日) 19:41:13.69Java/C#で、プログラマがハッシュキーを('f1'ではなく)誤って'fq' と
書いてしまったケースを想像してごらん
Java/C#では、アクセス結果として(おそらく)Nullが返るから、
その誤った行(コード)を素通りして、予測の付かない箇所で「実行時に例外が発生」する
もしもJava/C#で obj.set_fq('abc') あるいは obj.fq = 'abc' と書くことが可能であったなら、
未定義メソッドエラーとして「コンパイル時に検査」できるんだよ
それに対してRubyであれば、同じ誤りの検出が(実行時ではあるけれど)
その誤りを含む行(コード)に対する具体的な method missing 例外として誤りを検出できる
分かるかい?
このケースでは、静的型付け論者が主張する「コンパイル時に型検査ができる」という
利点が失われているばかりか、実行時検査でもRubyにすら劣った結果になっているんだ
これは大きな矛盾ではないのかな?
>>115
これでいいかな?
0119デフォルトの名無しさん
2011/11/27(日) 19:57:11.15個別のメソッドとして実装することと
共通メソッドにハッシュキーを渡してアクセスすることが
単なるシンタックスシュガーに見えるのか・・・
ドカタって、どうやってプログラム書いてるの?
0120デフォルトの名無しさん
2011/11/27(日) 20:01:19.26> Java/C#で、プログラマがハッシュキーを('f1'ではなく)誤って'fq' と
> 書いてしまったケースを想像してごらん
>
> Java/C#では、アクセス結果として(おそらく)Nullが返るから、
> その誤った行(コード)を素通りして、予測の付かない箇所で「実行時に例外が発生」する
お前は馬鹿なのか? 大笑いするほどの馬鹿だぞ。
間違っているのなら、その場で例外を出せばいい。
fqというキーがなければ、例外を出せばいいだけじゃないか。
素通りするしてしまう? それは動的型付け言語で
ハッシュのキーが無かった場合に起こる問題だね。
ああそうか、お前は動的型付け言語の問題の話をしちゃってるんだ。
0121デフォルトの名無しさん
2011/11/27(日) 20:03:14.29> その誤った行(コード)を素通りして、予測の付かない箇所で「実行時に例外が発生」する
そう見えるとしたら、それはお前がJavaのコードすら満足に書けないからだよ
0122デフォルトの名無しさん
2011/11/27(日) 20:05:30.290123デフォルトの名無しさん
2011/11/27(日) 20:31:34.00そういった実行時検査もプログラマがコードとして実装すれば可能だね
ただRubyのような動的型付け言語では単なる method missing だから、そんな手間は不要だけど...
まあ「手間」という言葉を持ち出してもドカタ発想では無問題らしいから、
この点については取り下げよう
では、>>118で挙げた本題の矛盾についてはどう考えているのかな?繰り返すと、
Java/C#のような実行時拡張の欠落した静的型付け言語では、
データベースへアクセスするコードの誤りをコンパイル時に(静的に)検査できない
という矛盾だ
0124デフォルトの名無しさん
2011/11/27(日) 20:35:48.03> プログラマがコードとして実装すれば可能だね
実装の必要ないから。
動的型付けスレでJava詳しくなくても不思議はないが、
大上段に構えたいならAPIを100回位読み直してきた方がいいぞ。見てて恥ずかしい
0125デフォルトの名無しさん
2011/11/27(日) 20:41:37.74は設計思想の違いだろ。静的型付け言語で
> 「コンパイル時に型検査ができる」という利点が失われ
るよーな書き方を態々する必要がない。当然誰もそんな変態コードを書かん。
インターフェイス切るなりするだけだ。
安全性と引き換えに記述量が増えてるだけ。それを面倒と感じお前が好まないのは分かるが、世の中おまえと同じ考えだけで出来てるわけじゃない。
所詮道具だから適材適所すればいいだけ。
0126デフォルトの名無しさん
2011/11/27(日) 20:43:32.08単に実行時検査付きのハッシュクラスを選ぶだけの事で、
自慢できるような話じゃないし...
キーに一致する項目が無ければNullを返してもらいたいケースも存在する訳で....
0127デフォルトの名無しさん
2011/11/27(日) 20:45:22.66だから理解不足を露呈してくだけだから脊髄反射を一旦とめて、読み直して来い。
インターフェイスのAPIを、ね。
0128デフォルトの名無しさん
2011/11/27(日) 20:46:07.67ほとんどの問題は最初から変わっていれば問題ないはず。
ソースコードを修正することで解決出来る問題ばかり。
ただ実際のファイルを修正するのははばかられる。
そういったときに実行時に変更するしかできないから
妥協してそうしているだけ。
本当に欲しいものは、動的型付けではなく、
オリジナルのファイルを書き換えることなく、コンパイル時に
メモリ上でファイル(正確にはパースした結果のオブジェクト)を変更して
そこからコンパイルを行う、コンパイル時拡張だということに
人々が気づくのはいつだろうね。
0129デフォルトの名無しさん
2011/11/27(日) 20:47:43.83> キーに一致する項目が無ければNullを返してもらいたいケースも存在する訳で....
そういうケースの時に、 method missing が出てもらったら困るんですけどwww
0130デフォルトの名無しさん
2011/11/27(日) 21:01:30.21Rubyではそうゆうケースの時は method missing は起きないけど何か?
それともJavaではそうゆうケースの時にも method missing が起きるのか?
not exist みたいな具体的な(適切な)例外が発生するんじゃないのか?
0131デフォルトの名無しさん
2011/11/27(日) 21:02:33.51本質的には静的型付け言語でできないことはない。
だが、逆に静的型付け言語でできる、静的検査は
動的型付け言語ではどうしてもできない事がある。
0132デフォルトの名無しさん
2011/11/27(日) 21:03:38.71RubyではNullが返ってきて関係ない所でエラーになるんだよなw
0133デフォルトの名無しさん
2011/11/27(日) 21:05:31.24そういった仮説を前提にした主張は、実験的でもいいから
具体的な言語処理系が登場しない限り、誰も耳を貸さないだろうな
未来を語るだけなら、三歳児のようなお子ちゃまにもできる訳で....
もしも>>128が三歳児なら、「ヨシヨシ、イーコチャンデスネー」って
頭をナデナデしてあげるよw
0134デフォルトの名無しさん
2011/11/27(日) 21:07:53.21おまわりさん こいつです
0135デフォルトの名無しさん
2011/11/27(日) 21:18:55.05おお、ついにドカタが開き直ったかw
都合のいい時だけ静的型付け言語のコンパイル時型検査という利点を主張して、
都合が悪くなれば、それを「設計思想の違い」という言葉で濁すのか?
それを矛盾であると突いているんだけどな....
まるで国会答弁の政治家だし、それでもそれがドカタの生き方ならしかたないよね
0136デフォルトの名無しさん
2011/11/27(日) 21:20:16.93まるで理解出来てない輩がここに
0137デフォルトの名無しさん
2011/11/27(日) 21:20:56.96意味がわからん。
動的にしかわかりようがないものは、
動的にやるってだけだろ。
両方できるんだよ。静的型付け言語は。
選択肢が複数あって優れた方を使う。
どうしても出来なければ、もう一つの方を使う。
これでなにも失っているものはない。
0138デフォルトの名無しさん
2011/11/27(日) 21:21:11.72標準のHashクラスであれば、そうだね
0139デフォルトの名無しさん
2011/11/27(日) 21:25:27.69nullを値として突っ込めるのにキーに対応する値が無いときもnull返すとか
気が狂ってるとしか思えん。何のメリットがあるんだよ
0140デフォルトの名無しさん
2011/11/27(日) 21:27:25.390141デフォルトの名無しさん
2011/11/27(日) 21:28:16.77だから何度も繰り返すけど、もしもJavaやC#でも obj.set_f1('abc') あるいは obj.f1 = 'abc'
のようなコードが書ければ、静的なコンパイル時型検査ができる訳だ
そして、もしそうなら「やっぱり静的型付け言語のほうがイイネ!!」という
誰もが納得する結論になるんだよ
0142デフォルトの名無しさん
2011/11/27(日) 21:34:07.73それで、あんたはどの言語のハッシュが理想だと言ってるの?
0143デフォルトの名無しさん
2011/11/27(日) 21:35:07.14だから、それをやりたければ、コンパイル時拡張があればできるよね。
って話になったんだろ。
0144デフォルトの名無しさん
2011/11/27(日) 21:35:49.48Maybeモナドでも良いんじゃない?
でもnull返すのはねーよ
0145デフォルトの名無しさん
2011/11/27(日) 21:36:26.39> そして、もしそうなら「やっぱり静的型付け言語のほうがイイネ!!」という
> 誰もが納得する結論になるんだよ
やっぱり自覚はしてるんだ。
静的なコンパイル時検査ができたほうが優れていると。
いかなる場合でも、できない言語と比べて、
出来る言語のほうが優れてるよね。
0146デフォルトの名無しさん
2011/11/27(日) 21:37:23.27だから、”標準のハッシュ” がnullを返さない言語はなにか聞いてるんだけど。
0147デフォルトの名無しさん
2011/11/27(日) 21:37:26.56まずは自分がどのハッシュで満足してるか言えよw
0148デフォルトの名無しさん
2011/11/27(日) 21:38:03.16いう相手が間違ってるw
そういうことは満足してないやつに聞けよ。
0149デフォルトの名無しさん
2011/11/27(日) 21:39:29.94Java以外は大抵例外が発生するか、デフォルト値を指定できるか、Maybe的なやつを使うだろ。
むしろJava以外でnullが言語を知りたいわw
0150デフォルトの名無しさん
2011/11/27(日) 21:40:02.28Javaで満足しているという返事と解釈した。w
0151デフォルトの名無しさん
2011/11/27(日) 21:42:21.80だから、コンパイル時拡張は「絵に書いた餅ダネ」って話になったんだろ
0152デフォルトの名無しさん
2011/11/27(日) 21:43:22.37perl
0153デフォルトの名無しさん
2011/11/27(日) 21:45:20.85ruby
http://www.rubylife.jp/ini/hash/index4.html
ハッシュオブジェクトに対して存在していないキーを指定して値を取得しようとした場合、
デフォルトでは「nil」が返されます。このデフォルトの値を「nil」から別の値に設定することが出来ます。
0154デフォルトの名無しさん
2011/11/27(日) 21:46:29.61JavaScript
0155デフォルトの名無しさん
2011/11/27(日) 21:47:33.17だから、デフォルト値を設定できるならいいだろwww
0156デフォルトの名無しさん
2011/11/27(日) 21:48:36.560157デフォルトの名無しさん
2011/11/27(日) 21:51:58.80デフォルト値を返すハッシュを作るのは簡単だよ。
tryしてみてね。
0158デフォルトの名無しさん
2011/11/27(日) 21:54:56.48ちなみに、Javaでnull以外を返す連想配列を実装するのは簡単だが、
Mapインターフェイスをジェネリクスで使っているかぎり
結局は同じ問題に突き当たるという罠w
0159デフォルトの名無しさん
2011/11/27(日) 21:58:46.06有用な場合もあるけど無理なパターンもあるだろ
0160デフォルトの名無しさん
2011/11/27(日) 21:58:54.100161デフォルトの名無しさん
2011/11/27(日) 22:51:55.87> 結局は同じ問題に突き当たるという罠w
ならないんだが?
0162デフォルトの名無しさん
2011/11/27(日) 23:11:08.760163デフォルトの名無しさん
2011/11/28(月) 00:22:46.76中から高位の層は動的な言語
使い捨てプログラムなんかも動的な言語
0164デフォルトの名無しさん
2011/11/28(月) 00:31:08.44TwitterはScalaに変更したらしいね。
JVM上で動く静的型付け言語
0165デフォルトの名無しさん
2011/11/28(月) 00:37:45.94動的型付き言語に静的型チェックを入れれば出来ることを
「どうしてもできない事」とはこれいかに。
動的型付きを狭義にして限定するなら分かるけど
それは静的型付きを狭義に限定する、つまり実行時型チェックを一切認めない
というのと同じくらいナンセンスなので却下。
とすれば、静的型付きっていうのは動的型付きに制約を設けたものに過ぎなくて、
プロトタイプベースに対するクラスベースみたいなもの。
制約を付けない物にできることが制約のある物にできないことはあっても、逆はない。
0166デフォルトの名無しさん
2011/11/28(月) 00:40:18.37だからRubyがクソ遅いのは
実装者が二人揃ってタコだからで動的型付けだからじゃないと何度言えば。
0167デフォルトの名無しさん
2011/11/28(月) 00:41:20.46> 「どうしてもできない事」とはこれいかに。
それやってしまったら、静的型付け言語になるんだよ。
0168デフォルトの名無しさん
2011/11/28(月) 00:47:02.33実行時には型情報を無視してても?
0169デフォルトの名無しさん
2011/11/28(月) 00:49:37.62静的(コンパイル時)型チェック機構の有無だけを問うているのか?
0170デフォルトの名無しさん
2011/11/28(月) 01:08:43.08どっちに入るの? これらは静的型付きか動的型付きかって言ったら後者なんだけれども。
0171デフォルトの名無しさん
2011/11/28(月) 01:20:29.25実行時に型情報を無視するといえばC++がそうだ。
RTTIを有効にしなければ、型情報そのものが存在しないからな。
それでも静的型付け言語だろう。
0172デフォルトの名無しさん
2011/11/28(月) 01:29:17.87>やっぱり自覚はしてるんだ。
>静的なコンパイル時検査ができたほうが優れていると。
もちろん、そうだよ
だから、今回の件と以前に議論になったcaseの網羅性も含めて、
Java/C#というのは「静的型付け言語としてはダメダメ言語である」と見なしている
まっとうな静的型付け言語であれば、動的結合時の型検査やcaseの網羅性検査は、
コンパイル時に(静的に)実行されるのが当たり前
もしもそういった当たり前の静的型付け言語が存在するのであれば、
(動的型付け言語の柔軟性という利点を引き換えにしても、)賞賛に値すると考える
残念ながらお前等の自慢するJava/C#はそうじゃない、欠陥言語だ
また、そういった欠点/問題点を率直に認めることから、正しい解決方法への道が開ける
だから>>125のような開き直った態度は、他人様から与えられた物に
何ら疑問を持てない思考停止状態であると見なす
そして、そんな技術的向上心を持たず知的好奇心の無いお前等をドカタと呼ぶ
OOPを自慢する若手ジャバラが古参コボラを揶揄するのと同じ構図
そんなジャバラやコボラもドングリの背比べ、同じドカタ同士の低次元な争い
0173デフォルトの名無しさん
2011/11/28(月) 01:38:12.77動的型付けのデメリットから比べれば
ミジンコみたいなもんだから
0174デフォルトの名無しさん
2011/11/28(月) 01:41:59.06> コンパイル時に(静的に)実行されるのが当たり前
まっとうな静的型付け言語の例をあげてください。
0175デフォルトの名無しさん
2011/11/28(月) 01:50:47.66静的型チェック機構があれば便利なのは自明じゃないの?
0176デフォルトの名無しさん
2011/11/28(月) 01:52:51.47既存の静的型チェック機構は大なり小なりなんらかの問題を抱えているもんなんじゃないの?
0177デフォルトの名無しさん
2011/11/28(月) 01:56:44.950178デフォルトの名無しさん
2011/11/28(月) 02:09:51.04言語仕様としてEnum値を網羅していない場合をエラーとしていないだけであって
(網羅していないswitch文を書いたっていいじゃん)、検証自体は文法的に、静的に
出来るし、そういうツールだって書ける。実際Eclipseでオプション一つ変更すれば
Enum値を網羅していない場合をコンパイル時にエラーとしてはじけるわけで。
じゃあ何故Enumを使った場合は自動的に網羅性を検証するよう言語仕様そのもの
を変えないのかと問われれば、これは歴史的な経緯としか言えん。
もともとJavaのEnumは後付けでswitchは整数型で分岐するものだったから網羅性
のチェックといってもコンパイルの手間を考えるとdefaultの有無を確認する程度
しか現実的な解は無かった。
その後Enumでも分岐できるようになったものの、整数型の場合の動作と揃えて
網羅していない場合もエラーにならない、そういう判断になっただけの話。
0179デフォルトの名無しさん
2011/11/28(月) 02:18:06.48- 大事なのは、静的型付きであることより静的型チェック機構の有無。
- ドカタに任せられるレベルのコードでは動的型付きのメリットは皆無。というか変に使われると逆に困る
- したがって、静的型チェック機構による制約も気にならないしメリットのほうがはるかに大きい。
- 制約を増やせばより確実な型チェックが可能になるが、その分ルールや出来ない事や場合によっては記述も増える。
- 出来ない事や記述の増加は問題ないが、ルールが増えてしまうと当然ドカタは使えなくなるから本末転倒。
- だからドカタ向けにはJavaやC#程度の型チェックでおk。
0180デフォルトの名無しさん
2011/11/28(月) 02:25:35.33せっかくenum使ったswitchの網羅性をチェックしても、
enum型変数の値をnullにするだけで
ぬるぽ発生してどの分岐も通らないJavaは素晴らしい
0181デフォルトの名無しさん
2011/11/28(月) 02:33:12.340182デフォルトの名無しさん
2011/11/28(月) 05:46:05.30nullケースも必須にすればいいだけ。
0183デフォルトの名無しさん
2011/11/28(月) 05:50:01.13ああドカタ君にはまだ解らないか…
難しいこと言って、ゴメンね♪
0184デフォルトの名無しさん
2011/11/28(月) 06:57:12.81「同じ問題」の例示を求む。
0185デフォルトの名無しさん
2011/11/28(月) 07:16:41.29非nullを静的に検証することができるの?
0186デフォルトの名無しさん
2011/11/28(月) 07:34:40.180187デフォルトの名無しさん
2011/11/28(月) 08:46:24.18VB6は引数にかかわらず、浮動小数割り算が/で整数割り算が%だったなw
0188デフォルトの名無しさん
2011/11/28(月) 16:25:16.15>JavaでもEnum値で分岐するswitch文は網羅性を検証できるよ。
ほー、Javaでも静的に検査できるんだぁ....と思わせておいて、
>その後Enumでも分岐できるようになったものの、整数型の場合の動作と揃えて
>網羅していない場合もエラーにならない、そういう判断になっただけの話
これが結論か?できるのか/できないのか、どっちかはっきりしろよwww
まるで、こんな天気予報と同じだぞ
明日は晴れでしょう。しかし曇ることもあります。地域によっては雨かもしれません。
0189デフォルトの名無しさん
2011/11/28(月) 17:13:56.43静的型付けではMap<K,V>のV型の値しかデフォルト値として与えられないから
マップを引けたかどうかを返り値のみから確定させる一般的方法がない。
動的型付け言語ならば、他から参照されない軽量なインスタンスを新しく生成して
それをデフォルト値に指定するだけ。Object型とか。
静的型付け言語では、V型が新インスタンス生成可能とは限らないし、
インスタンス生成が重いと使えない。
だからJavaでは返り値のみで判定するなと警告されている。
0190デフォルトの名無しさん
2011/11/28(月) 19:31:19.96軽いクラスのインスタンスとしてデフォルト値を用意する方法にしても、
それはそう実装できるというだけの話であって、APIで強制できる一般的方法
ではない。このmapはkeyが無い場合はこの値を返しますよ。単なるダミーの
値ですから信用して使ったりしないで下さいね云々と個別に規約を文書化する
必要がある。規約を知らないと判別出来ない。知らずにデフォルト値をいじる
バカも出る。これのどこが「一般的」?
良いところ「個別の解決策」止まりだし、似たような方法は別にJavaのMap
でもMap<K, Object>とでもすれば出来る。ただvalueについて静的型付けの
恩恵を受けられなくなるから、普通はやらない。
一般的な方法というのは言語の組み込み定数としてnullとは別にundefinedを
持っているとか、keyを与えるとkeyとvalueのペアを返す関数が用意されて
いるとか、keyが無いと例外を投げるとか、どういうmapであっても常に返値
だけで判別出来る方法。
「返り値のみから確定させる一般的方法」の有無というのは要するにこう
いった定数や関数が用意されているか否かの問題であって、型付けが動的
静的云々は全く関係が無い。
Javaだったらgetが例外を投げるようにするとかキーバリューのエントリー
を引っ張って返すようなメソッドを用意するとかすれば良いし、そういう
デコレーターを書くのも簡単。
でもJava Collections Frameworkはこれらを持っていない。書こうとすれば
書けるものを何故用意しなかったか理由は知らないけれども、単に需要が
薄いと判断された事は大いに想像できる。他の言語でも持っていない例は
多いところから見ても、需要は薄そうだ。
0191デフォルトの名無しさん
2011/11/28(月) 19:32:44.98一般というのは、任意の型Vについて適用可能な手法だということ。
広く用いられているという意味ではない。
0192デフォルトの名無しさん
2011/11/28(月) 19:35:48.82> 似たような方法は別にJavaのMap
> でもMap<K, Object>とでもすれば出来る。
すまんが、正直、馬鹿すぎて笑えた。
0193デフォルトの名無しさん
2011/11/28(月) 20:12:17.30からkeyの有無を確定させる「一般的方法」を持たない。
持たない理由の推測は>>190に書いたとおり。
・ただそれを言えば動的型付けの言語だってAPIとして「一般的方法」を持た
ない言語は多い。そういう場合は手作りをする必要がある。
・Javaの場合は「APIを拡張」することで任意のVについて「一般的方法」を
導入できる。どんなアプローチがあるのかも>>190に書いたとおり。
・動的言語の場合は加えて「Vの値域を拡張」することで「一般的方法」を
導入することも出来る。具体的にはデフォルト値の導入。
・APIを拡張せずに「一般的方法」を導入出来る点は確かに動的型付け言語
のメリットかもしれない。ただAPIはそのままの代償として規約を新たに
導入する必要がある。バカ避けとしては、どうなんだろうね?
・Map<K,Object>は馬鹿で結構。馬鹿だから普通はやらない。
0194デフォルトの名無しさん
2011/11/28(月) 20:16:30.98インスタンス生成してデフォルト値として返せたら良かったね
0195デフォルトの名無しさん
2011/11/28(月) 20:26:35.68ジェネリクス導入前のJavaみたいなコードになりそうだな
その頃から使ってるから書けるけども、静的型には程遠かったなあ…
0196デフォルトの名無しさん
2011/11/28(月) 20:36:52.78Apache Commons Collectionsで出来る話とは違う話かな?
デフォルト値の指定自体はDefaultedMapで、デフォルト値を生成する
コンストラクタの指定はLazyMapで出来る。
0197デフォルトの名無しさん
2011/11/28(月) 20:58:29.27new V()が出来ればfactoryオブジェクトを用意する手間が要らなくて
良かったねってこと
0198デフォルトの名無しさん
2011/11/28(月) 21:20:15.92作ればいいだけだから、すごく小さな問題でしかないな。
0199デフォルトの名無しさん
2011/11/28(月) 21:26:47.02良く訓練されてやがるww
0200デフォルトの名無しさん
2011/11/28(月) 21:27:57.07う〜ん、確かにそれは出来ないなぁ。
替わりの策としてはファクトリを用意せずにClass<V>を渡すバージョンは
作ることが出来そうだけれども、デフォルトコンストラクタの存在確認が
実行時になってしまうのがいやんなかんじ。
0201デフォルトの名無しさん
2011/11/28(月) 21:29:03.300202デフォルトの名無しさん
2011/11/28(月) 22:04:08.800203デフォルトの名無しさん
2011/11/28(月) 22:31:06.150204デフォルトの名無しさん
2011/11/28(月) 23:16:44.91やっぱり、Javaの方がいいのか。
0205デフォルトの名無しさん
2011/11/28(月) 23:17:23.35> そしてそのリリースがさらに1年遅れようと、Scalaが安定するよりも早く
> 多くのJava開発者に関数型プログラミングをもたらすだろう。
> Javaに追い抜かれる前にScalaが体勢を立て直すのはもう遅すぎるかもしれない。
0206デフォルトの名無しさん
2011/11/29(火) 00:27:34.400207デフォルトの名無しさん
2011/11/29(火) 03:47:46.34出来る。Eclipseなどの外部ツールを使えば出来る。
明日の天気は雨ですが内陸部では晴れるでしょう。そんな感じ。
言語としてJavaはswitch文でのenumの網羅性は要求していない。
しかしコーディングの規約として網羅性を強制したいのであれば、それをツールで
支援することは何も妨げられないということ。
Cでもgccはswitch文でのenumの網羅性を検証するオプションがある。
0208デフォルトの名無しさん
2011/11/29(火) 05:01:39.17ドカタは空のdefault枝を書いて /* おまじない */とかコメントつけるだけ。
0209デフォルトの名無しさん
2011/11/29(火) 19:52:15.88そういうプログラマ個人に依存した話は却下します。
どんな言語を使おうが、その人がやるなら同じ事ですから。
0210デフォルトの名無しさん
2011/11/29(火) 23:00:34.42土カッチにもマトモなのもいれば
果てしなく杜撰とか低レベルなのも
0211デフォルトの名無しさん
2011/11/29(火) 23:38:56.00頭大丈夫?
0212デフォルトの名無しさん
2011/11/30(水) 00:00:03.75>ドカタは空のdefault枝を書いて /* おまじない */とかコメントつけるだけ。
それこそツールではじけばいいだけやん。
0213デフォルトの名無しさん
2011/11/30(水) 02:24:01.080214デフォルトの名無しさん
2011/11/30(水) 02:25:14.82実際は悪貨のほうが駆逐されてるだろ。
現実見ろよ。
0215デフォルトの名無しさん
2011/11/30(水) 04:58:11.20本当にデフォルトは処理無しな場合とどう区別する?
0216デフォルトの名無しさん
2011/11/30(水) 07:11:35.21金貨銀貨は既に過去のもの
つまり駆逐済み
0217デフォルトの名無しさん
2011/11/30(水) 09:45:24.91こんなリンクを貼らないといけないなんて中学生じゃあるまいし。
0218デフォルトの名無しさん
2011/11/30(水) 10:05:30.62理論が飛躍して言葉遊びの域に達してるだけで。
>>214は新言語が旧言語の悪いところを潰していってるのではないかと言い、
>>216は正直良く分からんが、
これまでの通貨の歴史を紐解けば今の言語が悪貨であることが示唆されると言ってるんじゃないのか。
0219デフォルトの名無しさん
2011/11/30(水) 16:51:37.54dos/windows,x86,真性ドカタと本物グラマ、
php等例には事欠かない
逆は真ではないけど
0220デフォルトの名無しさん
2011/11/30(水) 17:20:05.85これじゃねーのか
0221デフォルトの名無しさん
2011/11/30(水) 20:30:19.95概ねそのとおり。
悪貨は良貨を駆逐するなんてのはただのことわざで、根拠はない。
逆に良貨が悪貨を駆逐することもある。
ことわざってのは定理なんかではなく、そういうこともあるよね〜レベル。
逆の意味を持ったことわざだってある。絶対正しいことを言っているわけじゃない。
だから、「悪貨は良貨を駆逐する。」なんてことをいう人は、
正しいか間違ってるかを考えずに、思考停止しているだけの馬鹿と俺は判断する。
0222デフォルトの名無しさん
2011/11/30(水) 20:33:42.90勝利したものに対して「勝ったほうが負けなんだ!」って言ってるみたいな感じw
0223デフォルトの名無しさん
2011/11/30(水) 20:37:02.90ドカタの脳みそに入る言語の中では
0224デフォルトの名無しさん
2011/11/30(水) 20:47:41.840225デフォルトの名無しさん
2011/11/30(水) 20:51:47.34なぜならば機械的に動的 ⇒ 静的の変換が可能だからだ。
型が無限にあれば静的にできない可能性があるが、実用上ではありえない。
0226デフォルトの名無しさん
2011/11/30(水) 20:52:11.30勝ち組に対する僻みだからねw
0227デフォルトの名無しさん
2011/11/30(水) 20:54:46.530228デフォルトの名無しさん
2011/11/30(水) 21:15:47.32・関数の引数に型が明記されている。
・変数に型が明記されている。
・オブジェクトの生成から、型をチェックしたい箇所のコードすべてで型が明記されている。
この3つがないと、型チェックはできないからね。
コードのどこかで型情報がなくなったりしたら
意味なくなっちゃうし。
結局、プロジェクトの全部の箇所にちゃんと型を明記しないといけなくなるんだけど。
0229デフォルトの名無しさん
2011/11/30(水) 21:56:52.54動的に型を定義可能な言語の場合は?
0230デフォルトの名無しさん
2011/11/30(水) 23:56:08.45動的な型付けでしかできないメリットをコードで見せて。
0231デフォルトの名無しさん
2011/12/01(木) 02:00:48.140232デフォルトの名無しさん
2011/12/01(木) 02:07:05.000233デフォルトの名無しさん
2011/12/01(木) 02:24:05.21"11" や 2 だとおかしい。
0234デフォルトの名無しさん
2011/12/01(木) 05:48:37.92eval
0235デフォルトの名無しさん
2011/12/01(木) 06:58:10.57静的な言語よりキツいのは確か
0236デフォルトの名無しさん
2011/12/01(木) 07:18:28.53> この3つがないと、型チェックはできないからね。
できます。
0237デフォルトの名無しさん
2011/12/01(木) 08:14:36.46見ない、見たくない、聞こえない、聞きたくない.... ヤシなんだろw
0238デフォルトの名無しさん
2011/12/01(木) 08:39:19.240239デフォルトの名無しさん
2011/12/01(木) 09:53:38.42ハッシュキーに 'f1' と文字列を書くことはない。
最低限定数として定義するし Java なら列挙型を使う。
>>139
キーに対する値に生の null を使う設計が脆弱。null object pattern を使う。
>>189
軽量なデフォルトコンストラクタを持たない V をリファクタリングするには
(1) V からインタフェース I を抽出する
(2) V の利用を I に置き換える
(3) I を実装するデフォルト値用のクラス N を実装する
0240デフォルトの名無しさん
2011/12/01(木) 10:04:09.76ていうからなにかと思えば、Javaのことだった、ってのが
お約束パターン過ぎてあきれるよね。
0241デフォルトの名無しさん
2011/12/01(木) 11:25:03.25次の二つの階級の話が混じってるから同じパターンのループになってしまう。
無差別級:全ての言語で比較
ドカタ級:ドカタが使える言語で比較
だからドカタでも使える言語を明らかにした方が良い。
Javaは鉄板として、あと何があるのか。
0242デフォルトの名無しさん
2011/12/01(木) 11:30:10.700243デフォルトの名無しさん
2011/12/01(木) 12:04:50.870244デフォルトの名無しさん
2011/12/01(木) 12:29:44.44今の流れだと「使える」のレベルによってドカタかそうでないかが分類されるってより、
言語自体とドカタを結びつけようとしていて危険だろ。
0245デフォルトの名無しさん
2011/12/01(木) 12:39:13.51求人市場に案件のある言語は全部ドカタ言語だよ
0246デフォルトの名無しさん
2011/12/01(木) 12:40:04.30技術の問題じゃない。金の問題。
0247デフォルトの名無しさん
2011/12/01(木) 12:42:53.72自分の使える言語を書いていけば良いんじゃないの?
0248デフォルトの名無しさん
2011/12/01(木) 12:45:11.19常に新しいパラダイムを提唱してくる。使える使えないは二の次。
使える使えないが真の意味で実証されるのはドカタが使うようになった時で、
その時には当の研究者はとっくにトンズラして新しい研究を始めてる。
これのループ。
0249デフォルトの名無しさん
2011/12/01(木) 12:57:08.650250デフォルトの名無しさん
2011/12/01(木) 13:01:51.340251デフォルトの名無しさん
2011/12/01(木) 17:02:29.83仮にその人がいなくなっても、代わりはすぐに補充できる。
でも、代わりが利かない人ってヘッドハンティングなどで抜けたら、
代わりの補充が利かないよね。
年齢以外の要素で違いが見いだせない人がJavaには多そうってことなんだろ?
0252デフォルトの名無しさん
2011/12/01(木) 17:17:19.050253デフォルトの名無しさん
2011/12/01(木) 18:54:07.420254デフォルトの名無しさん
2011/12/01(木) 18:54:25.15最初に思いついたのはショータイム
0255デフォルトの名無しさん
2011/12/01(木) 22:39:39.44エラーだろjk
0256デフォルトの名無しさん
2011/12/01(木) 23:05:18.58evalは目的じゃなくて手段でしょ?
なんのためにevalを使うの?
Perlで例外をトラップするために使うは答えになってないよ。
0257デフォルトの名無しさん
2011/12/01(木) 23:10:54.65> だからドカタでも使える言語を明らかにした方が良い。
> Javaは鉄板として、あと何があるのか。
意味がわからん。
動的型付け言語と静的型付け言語の話だろ?
Java以外というのは静的型付け言語を言えばいいのか?
よく使われてる言語だと、C、C++、C#、VB.NET、Scala、 Objective-Cあたりだね。
動的型付け言語はよく使われてるといえるのは、Ruby、Perl、PHP、JavaScript、Pythonぐらいか?
0258デフォルトの名無しさん
2011/12/01(木) 23:47:16.22それらを知ってれば>>228のようなことは書かないと思うけど。
>>228が特別に無知だったでFA?
0259デフォルトの名無しさん
2011/12/02(金) 00:00:39.44お前型推論を誤解してないか?
型推論ってのは、型書くのを省略出来るだけで、
型を書いてるのと全く一緒なんだが。
0260デフォルトの名無しさん
2011/12/02(金) 00:01:37.04どこかに型の情報があるから。
0261デフォルトの名無しさん
2011/12/02(金) 00:05:36.47それとも明記って日本語を理解してないのか?
> ・関数の引数に型が明記されている。
> ・変数に型が明記されている。
> ・オブジェクトの生成から、型をチェックしたい箇所のコードすべてで型が明記されている。
全部間違い
0262デフォルトの名無しさん
2011/12/02(金) 00:12:12.07> 省略できるんだから明記しなくても良いってことだろ
よく見ると省略されてない。
一見省略されているように見えるが、遠くで明記されている。
それを見て推論しているだけ。
どこにも明記されていなければ、絶対にわかりません。
0263デフォルトの名無しさん
2011/12/02(金) 00:15:40.14知らないのも無理は無いよ。
Map<String, List<String>> anagrams = new HashMap<>(); // 右のダイヤモンドオペレータ内を省略可
0264デフォルトの名無しさん
2011/12/02(金) 00:17:01.41推論する方法があるとか言うべきだろ。
反論の仕方がおかしい。
0265デフォルトの名無しさん
2011/12/02(金) 00:21:32.82関数の「もっとも一般的な型」を推論できる事が保証されている
0266デフォルトの名無しさん
2011/12/02(金) 00:26:25.160267デフォルトの名無しさん
2011/12/02(金) 00:26:43.88→ プログラムのどこかで型を明記する必要がある
→ どこにも明記してなくても明記してるのと同じ ← いまここ
0268デフォルトの名無しさん
2011/12/02(金) 00:50:51.61だれがそんな事言ったんだ?
0269デフォルトの名無しさん
2011/12/02(金) 00:58:39.39MLは型は自由に作れる
MLで厳格な型推論が可能なのは、演算子多重定義やメインストリームのOO言語における
ポリモーフィズムやディスパッチの類が存在しないからだろ
端的に言うと+がintにしか定義されていないので
x + yという式を見たらMLのコンパイラはxとyがintだと推論できる
0270デフォルトの名無しさん
2011/12/02(金) 01:11:19.88一応OCamlにはクラスやオブジェクトもあって、オブジェクトを引数に取る関数が書けるけど、
構造的部分型を採用してるから型注釈は必須じゃない(列多相が型推論される)
0271デフォルトの名無しさん
2011/12/02(金) 06:34:08.19型の中にパラメトリックな多相があっても、
矛盾のないように型パラメータを具体化して
型の整合性を検証できるということ。
型宣言がめんどくさいから使うんじゃなくて、
より抽象度が高いコードを書くために使うんだよ。
やっぱドカタに静的型付けを使わせるのは壮大なムダでしかないなw
0272デフォルトの名無しさん
2011/12/02(金) 06:56:25.480273デフォルトの名無しさん
2011/12/02(金) 07:05:58.09無知を晒したから話を変えようとしてるのかな?
0274デフォルトの名無しさん
2011/12/02(金) 07:47:09.28×)ドカタに静的型付けを使わせるのは壮大なムダ
○)ドカタにJava以外を使わせるのは壮大なムダ
0275デフォルトの名無しさん
2011/12/02(金) 08:41:13.230276デフォルトの名無しさん
2011/12/02(金) 08:57:49.43多少は真面目な流れだったのにドカタとか言い出した>>271は反省しろ
0277デフォルトの名無しさん
2011/12/02(金) 09:10:21.78省略じゃなくて抽象なんだって指摘されてることに気付けよw
ほんとドカチンは頭が悪いな
0278デフォルトの名無しさん
2011/12/02(金) 10:25:30.03これから現場ですか?これからドカタ仕事が増えますね!お疲れ様です!
0279デフォルトの名無しさん
2011/12/02(金) 10:29:17.03とりあえず型推論するのに変数や関数の型宣言は必要無いってことでFAでいいな?
0280デフォルトの名無しさん
2011/12/02(金) 11:41:41.95リテラルやコンストラクタやコンスタントの型付けは自明である、という前提ならYES
0281デフォルトの名無しさん
2011/12/02(金) 12:15:05.410282デフォルトの名無しさん
2011/12/02(金) 22:14:02.81一日無駄に過ごすんだろうなw
0283デフォルトの名無しさん
2011/12/03(土) 08:51:02.930284デフォルトの名無しさん
2011/12/03(土) 12:50:27.33それのメリットって何ですか?
0285デフォルトの名無しさん
2011/12/03(土) 15:14:54.070286デフォルトの名無しさん
2011/12/03(土) 17:19:23.19型推論を付ければ静的型付け言語にできる。
もちろん制限付きであってもJavaよりずっと簡潔なコードになる。
一方Javaには >>263 みたいな型推論しか無いんだから、
Javaのドカタが型推論を憎む気持ちは分かるよ。
すっぱい葡萄ってやつだね。
0287デフォルトの名無しさん
2011/12/03(土) 17:54:26.78安全なプログラムを作れるのを知ってるので、
そういう制限付きの言語処理系に対する需要は少ないけどな
0288デフォルトの名無しさん
2011/12/03(土) 18:54:27.270289デフォルトの名無しさん
2011/12/03(土) 21:11:00.71https://www.ospn.jp/osc2011-fukuoka/modules/eventrsv/?id=1&noform=1
>
> JavaOne 2011 サンフランシスコの最新レポートについて
>
> 担当:日本オラクル株式会社
>
> 講師:寺田 佳央(日本オラクル シニア Java エバンジェリスト )
OpenJDKって知ってるか?
0290デフォルトの名無しさん
2011/12/03(土) 21:12:30.21動的にし型がわからないという大きな問題が
解決できない限り、動的型付け言語に未来はないよ。
0291デフォルトの名無しさん
2011/12/04(日) 06:18:07.12解決できない限り、静的型付け言語に未来はないよ。
0292デフォルトの名無しさん
2011/12/04(日) 06:49:14.57得手不得手があるからね
Javaには未来はないけど
0293デフォルトの名無しさん
2011/12/04(日) 07:39:56.660294デフォルトの名無しさん
2011/12/04(日) 08:06:33.19今回はJava関連の特別なイベントがあるのかと思った
いくら暇でもそんな下らないセッション聴きに福岡まで行かないだろ
0295デフォルトの名無しさん
2011/12/04(日) 10:08:46.95完全に下降線だが?
0296デフォルトの名無しさん
2011/12/04(日) 10:13:45.32日時は2012年の4月4日(水)〜4月5(木)の2日間だ
やっぱりなにげにJavaが一番堅牢な気がするよ。
動的型付け言語とか、Javaに比べてコミュニティが小さいから
適当な意思決定によって機能が決まってる気がする。
Javaの場合はコミュニティがでかい。機能を決める際も
過去との互換性などを十分に考慮して決められる。
で言語仕様だけではなく周辺技術(ライブラリ・フレームワークなど)も
巻き込んで大プロジェクトって感じ。
動的型付け言語はね。大きいといってもやっぱり個人レベルの話。
0297デフォルトの名無しさん
2011/12/04(日) 10:15:42.01可哀想だが、自己責任だよな…
0298デフォルトの名無しさん
2011/12/04(日) 10:20:32.60認識が甘いよ。
他の動的型付け言語で、
デスクトップアプリ作れますか?
3Dバリバリのアプリ作れますか?
組み込みアプリ作れますか?
API仕様は決まっていますか?(規格がありますか?)
そのAPI仕様に従った実装がいくつもありますか?(競争がありますか?)
ライブラリは個人が作って放置されてるようなものではなく、ちゃんと大きな所でメンテナンスされてますか?
0299デフォルトの名無しさん
2011/12/04(日) 10:21:51.540300デフォルトの名無しさん
2011/12/04(日) 10:22:04.33自分の無知を晒すのって、楽しい?
0301デフォルトの名無しさん
2011/12/04(日) 10:23:18.64ではじめの伸びが高かっただけで
現実はこんなもんよ。
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Position
Nov 2011 Position
Nov 2010 Delta in Position Programming Language Ratings
Nov 2011 Delta
Nov 2010 Status
1 1 Java 17.874% -0.63% A
2 2 C 17.322% +0.61% A
3 3 C++ 8.084% -1.41% A
4 5 C# 7.319% +1.61% A
5 4 PHP 6.096% -1.72% A
6 8 Objective-C 5.983% +2.79% A
7 7 (Visual) Basic 5.041% -0.43% A
8 6 Python 3.617% -2.06% A
9 11 JavaScript 2.565% +0.90% A
10 9 Perl 2.078% -0.39% A
11 10 Ruby 1.502% -0.40% A
12 20 PL/SQL 1.438% +0.78% A
13 13 Lisp 1.182% +0.09% A
14 15 Pascal 0.991% +0.21% A
15 21 MATLAB 0.955% +0.32% A--
16 12 Delphi/Object Pascal 0.872% -0.77% A
17 23 ABAP 0.847% +0.25% A--
18 22 Lua 0.635% +0.02% A-
19 16 Ada 0.622% -0.07% B
20 19 RPG (OS/400) 0.620% -0.04% B
0302デフォルトの名無しさん
2011/12/04(日) 10:23:48.60えと、頑張れば出来ますって話をしたいのかな?
0303デフォルトの名無しさん
2011/12/04(日) 10:25:13.180304デフォルトの名無しさん
2011/12/04(日) 10:25:15.10ここってなんでいつも C と C++ を分けて集計してるんだろうね
0305デフォルトの名無しさん
2011/12/04(日) 10:26:41.75C/C++なものを両方にカウントするためだろ?
0306デフォルトの名無しさん
2011/12/04(日) 10:27:26.400307デフォルトの名無しさん
2011/12/04(日) 10:30:43.97>デスクトップアプリ作れますか?
>3Dバリバリのアプリ作れますか?
>組み込みアプリ作れますか?
>API仕様は決まっていますか?(規格がありますか?)
>そのAPI仕様に従った実装がいくつもありますか?(競争がありますか?)
>ライブラリは個人が作って放置されてるようなものではなく、ちゃんと大きな所でメンテナンスされてますか?
という質問よりも「1ヶ月でリリースできますか?」という質問に重きがおかれる時代だということでは。
もちろん用途によるわけだが、「何よりも開発期間の短さ」が求められる仕事の割合は高まっていると感じる。
0308デフォルトの名無しさん
2011/12/04(日) 10:31:06.19そこに静的型付け言語と、動的型付け言語のシェアのグラフがでてるけど、
静的型付け言語の方が、2倍以上使われてるのは当たり前として、
railsが登場した2004年に一気に動的型付け言語が普及したけど、
2008年ぐらいを境に静的型付け言語に戻ってきてるんだよな。
その理由は動的型付け言語が素晴らしかったのではなく、
フレームワークがシンプルだったのと、冗長ではない書き方ができただけで
それらが、静的型付け言語にも搭載されるようになったから
なんだ、静的型付け言語でいいんじゃねと見直されるようになったからだろう。
あと動的型付け言語がやっぱりそこまでのメリットがないよねって
気付き始めたんだろう。
0309デフォルトの名無しさん
2011/12/04(日) 10:32:28.420310デフォルトの名無しさん
2011/12/04(日) 10:33:32.17railsならブログが10分でできます。
ただし、3分クッキングよろしく
予め用意されたものを、なんども練習して
できます。
え? オリジナルのもの?
そんなものが10分なんかで出来るわけがないじゃないですかw
動的型付け言語を使ったって、短期間でリリースできることはないんだよ。
0311デフォルトの名無しさん
2011/12/04(日) 10:34:27.580312デフォルトの名無しさん
2011/12/04(日) 10:35:00.32この世に存在しているのか!?
0313デフォルトの名無しさん
2011/12/04(日) 10:36:55.98動的型付け言語のエース
PHPのおかげですね。
0314デフォルトの名無しさん
2011/12/04(日) 10:37:28.75現在のデータを出してるだけなのに、
なんで将来の予測だと思っちゃったの?w
0315デフォルトの名無しさん
2011/12/04(日) 10:37:47.78データはデータとして
ちゃんと受け止めなきゃあかんよ
0316デフォルトの名無しさん
2011/12/04(日) 10:38:47.38http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html
0317デフォルトの名無しさん
2011/12/04(日) 10:40:08.94http://www.tiobe.com/content/paperinfo/tpci/C_.html
http://www.tiobe.com/content/paperinfo/tpci/Objective-C.html
0318デフォルトの名無しさん
2011/12/04(日) 10:48:11.71オブジェクトシステムは動的型付けですよ
0319デフォルトの名無しさん
2011/12/04(日) 10:50:09.56C# は Windows アプリ開発という一定のパイの中で移行しているだけ。
Objective-C は iphone アプリ開発のため。
そのケースはどちらも、ターゲットによって開発言語がほぼ決まってしまう例。
言語の長所短所は二の次だと思う。
0320デフォルトの名無しさん
2011/12/04(日) 10:52:13.44> 言語の長所短所は二の次だと思う。
その理屈で言えばJavaScriptも同じかな。
動的型付け言語げ唯一伸びてる言語
0321デフォルトの名無しさん
2011/12/04(日) 10:54:21.39使える言語が限定されて、その結果他の言語のシャアが下がっただけで、
やっぱりJavaは安定していると見なせるな。
極端に下がったものは、下がったと判断するべきだろうけど。
Rubyとかw
0322デフォルトの名無しさん
2011/12/04(日) 10:58:41.170323デフォルトの名無しさん
2011/12/04(日) 11:04:36.46C言語は組み込みに強いからモバイルとかにも搭載されてるよ。
0324デフォルトの名無しさん
2011/12/04(日) 11:16:57.880325デフォルトの名無しさん
2011/12/04(日) 11:19:59.01OpenJDKはOracleが買ってない。
OracleはJava SE 7をOpenJDKをベースに切り替えた
ここらへんは常識なんで知っといてね。
0326デフォルトの名無しさん
2011/12/04(日) 11:36:05.48Railsバブルがあって
やっとそれがはじけて
元の状態に落ち着いた感じ屋根
0327デフォルトの名無しさん
2011/12/04(日) 11:39:34.94オラクルおわってる
0328デフォルトの名無しさん
2011/12/04(日) 11:54:02.34何がしたいのかと
0329デフォルトの名無しさん
2011/12/04(日) 11:57:34.36Java → OpenJDKメインに変更
MySQL → ?
VirtualBox → ?
GlassFish → ?
NetBeans → ?
0330デフォルトの名無しさん
2011/12/04(日) 12:00:10.15C言語は動的型付け言語でライブラリを作ったが遅いから、
C言語で書きなおすかって用途に使われてるんだよw
0331デフォルトの名無しさん
2011/12/04(日) 12:05:02.360332デフォルトの名無しさん
2011/12/04(日) 12:21:24.13こうしてみるとオラクルが片っ端からOSS敵対買収しまくってるのがわかるな
0333デフォルトの名無しさん
2011/12/04(日) 12:27:53.030334デフォルトの名無しさん
2011/12/04(日) 13:46:01.06○動的型付け言語
なんで、馬鹿は 間違えるんだろうな?
動的型付け言語と言えばPHPなのかな。
あれも馬鹿用言語らしいが。
0335デフォルトの名無しさん
2011/12/04(日) 14:18:16.830336デフォルトの名無しさん
2011/12/04(日) 14:23:30.850337デフォルトの名無しさん
2011/12/04(日) 14:50:55.07動的言語しらないの?
動的型付き言語とは別の概念だよ?
0338デフォルトの名無しさん
2011/12/04(日) 14:55:22.71ヒント:スレッドタイトル
0339デフォルトの名無しさん
2011/12/04(日) 14:56:38.92今あるほとんどの言語(例 Java)は
動的言語だよ。
0340デフォルトの名無しさん
2011/12/04(日) 14:57:26.250341デフォルトの名無しさん
2011/12/04(日) 14:58:57.97ぷ…
0342デフォルトの名無しさん
2011/12/04(日) 15:02:01.28は? インターフェースとかの話だろ。
インターフェースを使っていると
どの具象クラスのメソッドが呼び出されるかは、
実行時にならないと決まらない。
0343デフォルトの名無しさん
2011/12/04(日) 15:12:31.99ぷ…
0344デフォルトの名無しさん
2011/12/04(日) 15:14:09.14関数へのポインタがあるからな
0345デフォルトの名無しさん
2011/12/04(日) 15:23:32.74そのとおりだけど?
静的言語っていうのはFortranやBASICやCOBOLみたいなもの。
0346デフォルトの名無しさん
2011/12/04(日) 15:25:59.880347デフォルトの名無しさん
2011/12/04(日) 15:27:57.400348デフォルトの名無しさん
2011/12/04(日) 15:30:49.480349デフォルトの名無しさん
2011/12/04(日) 15:31:59.31それに気づかず議論したがる奴はバカなの?死ぬの?
0350デフォルトの名無しさん
2011/12/04(日) 15:32:09.59どんな言語にも動的性もある
その上でその言語が何を指向しているかが問題だろうに
Cを動的言語だとか、なんだよその中二病はw
0351デフォルトの名無しさん
2011/12/04(日) 15:45:07.410352デフォルトの名無しさん
2011/12/04(日) 15:53:14.40検索結果のトップに出てくる wikipedia を見るくらいしないのかね。
そうすれば、寄付金募集のすぐ下にデカデカと注意喚起があって
http://en.wikipedia.org/wiki/Talk:Dynamic_programming_language
このくらい議論の余地のある言葉なんだなあと、すぐに分かると思うのだが。
2ch での議論もいいと思うが、2ch しか見ないようじゃ終わってるぞ。
0353デフォルトの名無しさん
2011/12/04(日) 16:24:44.600354デフォルトの名無しさん
2011/12/04(日) 18:47:46.36俺が静的言語と決めれば、静的なのだ
という井の中の蛙君くらいしかここにいないってことなんだろ?
0355デフォルトの名無しさん
2011/12/04(日) 18:53:12.86まるで鏡に映した自分を見るようだと。納得。
これがリフレクションか(失敬)。
0356デフォルトの名無しさん
2011/12/04(日) 19:03:59.40動的言語と動的型付け言語の違いが分かってれば。
0357デフォルトの名無しさん
2011/12/04(日) 19:09:38.47論理的思考力のない人なのか?
0358デフォルトの名無しさん
2011/12/04(日) 19:24:01.300359デフォルトの名無しさん
2011/12/04(日) 19:35:51.980360デフォルトの名無しさん
2011/12/04(日) 19:52:05.21ソニーもゲーム機にC#使うし。
0361デフォルトの名無しさん
2011/12/04(日) 20:04:29.51入っていないんだよね。
ってことは言語の特性だけで決まらないってことじゃないかな。
0362デフォルトの名無しさん
2011/12/04(日) 20:18:15.54頭大丈夫か?
0363デフォルトの名無しさん
2011/12/04(日) 20:21:59.62動的型付け言語っていうのは正しいな。
0364デフォルトの名無しさん
2011/12/04(日) 20:22:57.82人格攻撃にもっていくのはイクナイ
0365デフォルトの名無しさん
2011/12/04(日) 20:24:49.34じゃあ書けと。
0366デフォルトの名無しさん
2011/12/04(日) 21:50:15.63アナタハニホンゴノフジユウナハントウシュッシンシャデスカ?
0367デフォルトの名無しさん
2011/12/04(日) 22:05:12.45変数にゃ型ないけど、値にはあるよ
まあ本当の意味で型がない言語って汗(とマシン語)くらいのものだとは思うけど
0368デフォルトの名無しさん
2011/12/04(日) 22:09:27.09> 変数にゃ型ないけど、値にはあるよ
それを動的型付け言語っていうんだが。
動的に型が決まるんだよ。値によって。
0369デフォルトの名無しさん
2011/12/04(日) 22:21:22.56|_::;; ~"'ヽ
| //^''ヽ,,)
| i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
|( ´∀`) < きのこ のこーのこ げんきのこ ♪
|(ノ |つ
| |
⊂ _ ノ
""U
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
(´∀` )| < エリンギ まいたけ ブナシメジ ♪
⊂| (ノ |
| |
ヽ _ ⊃
.U""
|
| ミ
| ミ サッ!
| ミ
|
0370デフォルトの名無しさん
2011/12/05(月) 01:01:57.00アセンブラプログラムや
BASICもあったからな
不正にシステムすら書き換え可能なwinは
超動的システムだ
0371デフォルトの名無しさん
2011/12/05(月) 02:45:11.46http://www.teleplace.com/
0372デフォルトの名無しさん
2011/12/05(月) 07:46:44.60アセンブリ言語にも型はあるぞ。
レジスタも直値もアドレッシングも間接アドレッシングも型だらけだ。
0373デフォルトの名無しさん
2011/12/05(月) 08:40:09.34素朴集合論とか型なしラムダ計算とかチューリングマシンみたいに
抽象度が高いものだろうな。
抽象度が低いものほど型が必要になる。
0374デフォルトの名無しさん
2011/12/06(火) 12:55:00.52静的型付け言語: リスト内には事前に決めた型のものだけしか扱えない。
動的型付け言語: リスト内にはどんな型のものでも扱える。
[1,"22",3 ...] というのは、動的ならエラーもでないが、静的はデータ型が
Unionで数字と文字を扱う型を指定してない限りエラーがでる。
リストの扱いも違って来る。
動的の場合は、
define foo list :
if isList(list,String) == True : ...
else isList(list,Integer) == True : ...
みたいな分け方だけど、事前に決まってるから、関数での型チェックを必要と
しない。(ただし、ユニオンで型を決めたときは動的と同じ事をするはめにな
る。)
簡単に言えば、型チェックは静的の場合コンパイル時のエラーで任せられるけ
ど、動的は型チェックを行う場所(関数)を熟考して決めていく必要がある。
(すべての関数で型チェックをする必要も無いので。)当然、最適化も手動に
なってくるから、こちらも静的よりは頭を使う。(頭を使う箇所が違うと言ったほ
うが適切かも。)
大規模で使えないとしたら、ある一定の頭が必要になってくるということからかも
0375デフォルトの名無しさん
2011/12/06(火) 12:57:51.93奇数と偶数を分けて考える程度の面倒さだからさほど問題はない。
型チェックもデータの奇数偶数も データの仕分けという意味では同じなので。
0376デフォルトの名無しさん
2011/12/06(火) 12:58:44.23事前に決まってるから→静的は事前に決まってるから
0377デフォルトの名無しさん
2011/12/06(火) 14:02:10.24下手くそが書く動的型付け言語のコードは酷い、
と言うことだな。
つうかお前さ、動的型付け言語まともに使ったことないだろ…
型で分岐せずに済ませるのが動的型付けのコードだよ。
0378デフォルトの名無しさん
2011/12/06(火) 14:11:26.61そうかなあ
(define (tree-map f tree)
(cond ((null? tree) tree)
((not (pair? tree)) (f tree))
(else (cons (tree-map f (car tree)) (tree-map f (cdr tree))))))
こんな感じで分岐させるのが普通なイメージだけど
Pythonの標準ライブラリのディレクトリでgrep -r isinstaceしてごらんよ
Haskellあたりだとパターンマッチだから同じ分岐でもcondよりは綺麗
0379デフォルトの名無しさん
2011/12/06(火) 14:15:06.01エヘン顔で言いたかったのではないかと予想。
0380デフォルトの名無しさん
2011/12/06(火) 14:18:21.13それ、型で分岐してねえしw
0381デフォルトの名無しさん
2011/12/06(火) 14:20:29.69え?してるでしょ
pair? が何だと思ってるの
0382デフォルトの名無しさん
2011/12/06(火) 14:20:52.06isinstanceで分岐するコードよりも
多態なメソッド叩いてるコードのほうが
圧倒的多数だなあ♪
0383デフォルトの名無しさん
2011/12/06(火) 14:22:12.690384デフォルトの名無しさん
2011/12/06(火) 14:23:29.19nullチェックと変わらんな
おまえ、nullチェックを型で分岐とか呼ぶのか?
0385デフォルトの名無しさん
2011/12/06(火) 14:23:52.810386デフォルトの名無しさん
2011/12/06(火) 14:24:03.490387デフォルトの名無しさん
2011/12/06(火) 14:24:23.100388デフォルトの名無しさん
2011/12/06(火) 14:24:37.28リストかどうかという型チェックをnullチェックと変わらんな、ですか
Scheme読めないんならそう言えばいいのに
0389デフォルトの名無しさん
2011/12/06(火) 14:24:57.61大量と呼べるほど多くはねえよw
0390デフォルトの名無しさん
2011/12/06(火) 14:26:06.52Lispではtreeのようなものをconsで表現するケースは非常にありがち
その場合、当然複数の型が混在することになる
0391デフォルトの名無しさん
2011/12/06(火) 14:27:46.92おまえpythonどころかschemeも書けねーのか?
0392デフォルトの名無しさん
2011/12/06(火) 14:30:37.26でも「何でも」となると用途があんまり無くね?
あと、静的型でも型消去を使えば
どんな型でもリストにぶち込むことは出来る
0393デフォルトの名無しさん
2011/12/06(火) 14:31:46.38とか書いてあるpythonのテキストがあったら
是非とも晒してみろw
0394デフォルトの名無しさん
2011/12/06(火) 14:33:20.210395デフォルトの名無しさん
2011/12/06(火) 14:34:22.75用途が違うのに、常に多態メソッドを用いるべきだという主張もバカだが
(ついでにOOPLのことしか考えていない点で視野狭窄)
0396デフォルトの名無しさん
2011/12/06(火) 14:36:32.56意味が分からん……よく読めよ
「pairかそうでないか」のテストをしているだろ
pairとpairでないもの(atom)は同類じゃない
0397デフォルトの名無しさん
2011/12/06(火) 14:38:58.720398デフォルトの名無しさん
2011/12/06(火) 14:40:18.58>型で分岐せずに済ませるのが動的型付けのコードだよ。
とりあえずこのサンプルを出してみて比較すると良いんじゃないのかな。
0399デフォルトの名無しさん
2011/12/06(火) 14:49:48.30pair?はconsや、consからなるlistのようなものに対しては真を返し、
atomに対しては偽を返すテストね
0400デフォルトの名無しさん
2011/12/06(火) 15:00:33.87雑多なものを入れるようなリストって
jsonとかもそうだろ?あんな感じをイメージすればいいよ。
0401デフォルトの名無しさん
2011/12/06(火) 15:07:26.41残念だけど、動的中心にやってるよ。lispも含めてね。
>>380
型に分けてるけど、SICPやlisp経験がないとわかりにくいかも。
Python の教科書ってwithを余り使いたがらない本が多いという印象があるけど、なんでなんだろうね?あれほど便利なのはないのに、dive into python(3)
はwithをfile openの時に使うように書いてるのは見たけどlutzなんてwith知
らんみたいだし。最新版はwithの使い方扱ってるかどうかしらんけど。
common lispにあるwith-file-openみたいなwith系マクロを意識したものなのにね。
0402デフォルトの名無しさん
2011/12/06(火) 15:12:14.10condやifを書かなくても多態性を使えるからなんだろうけど。
lisp系でもClojureなら、そうゆうやり方もできるけど。
0403デフォルトの名無しさん
2011/12/06(火) 15:15:59.46Pythonのwith構文は機能的にはより狭く制限された
Rubyのブロックつきメソッドという感じだね
用途がRubyのブロックつきメソッドより限定される(ほぼRAII専用という感じで
iteratorみたいなものは作れない)のと、単純に後発なのでRubyのものほど
多用されてない感じ
(Pythonのwithは2.5以降で使えるけど2.5だと__future__からimportしないといけない)
でも便利は便利なので、わりと普通に使われてもいると思う
0404デフォルトの名無しさん
2011/12/06(火) 16:36:54.02リストの扱いに慣れてなくて、OOPに染まってる人だってわかるが、次のような
例なら分かるんじゃなかろうか?
ttp://www.nishiohirokazu.org/pwe2007/2007/06/post_3.html
0405デフォルトの名無しさん
2011/12/06(火) 18:28:46.08flatこそ多態で処理すべき典型例だろ
ちなみに静的型関数型言語は12年前から使ってるw
0406デフォルトの名無しさん
2011/12/06(火) 19:40:26.050407デフォルトの名無しさん
2011/12/06(火) 21:37:33.69何を憤ってるのか知らんが、静的関数型言語では普通
>>378や>>404は代数データ型で型定義してパターンマッチで分岐するだろ?
0408デフォルトの名無しさん
2011/12/07(水) 01:33:30.06そうだろ?普通は代数データ型へのパターンマッチングとして処理するし、
実際、>>378は代数データ型に直訳できるようなコードだ。
単にパターンマッチングではなく条件分岐しているというだけの違いでしかない。
それを>>374のように「型で分岐する必要がある」とか言い出す馬鹿がいるから
そこを笑われてるんじゃねーの?
0409デフォルトの名無しさん
2011/12/07(水) 01:45:09.90できるだけ排除する習慣が身に付いているはずだ。
それすらできていない>>377が動的言語やってるとか言っても、何の説得力もない。
はっきり言ってJavaドカタが動的型付言語を習って2日目に書いてみたコードに見える。
isinstanceの羅列とか、書いてて恥ずかしくなかったのか? >>401
0410デフォルトの名無しさん
2011/12/07(水) 02:11:42.38ユニットテストぐらいしろよ。
0411デフォルトの名無しさん
2011/12/07(水) 02:14:19.91パターンマッチが良くて型で分岐するのはダメって意味不明
直和型のパターンマッチなんてまさに型を決め打ちするコードじゃねーか
自分で何言ってるのかわかってんのか?
0412デフォルトの名無しさん
2011/12/07(水) 03:43:06.89はあ?型を決め打ちしない上でUnitTestするのが当然だろ?おまえ馬鹿か?
0413デフォルトの名無しさん
2011/12/07(水) 03:44:26.84ああ、おまえ、直和型の代数データ型がまるでわかってないな。
静的型付関数型もわかってないし動的型付言語もシロート丸出し。
おまえ、何ができるの?
0414デフォルトの名無しさん
2011/12/07(水) 04:01:54.73instanceofはジャバでもパイソンでもバッドプラクティスだろJK
0415デフォルトの名無しさん
2011/12/07(水) 04:09:49.690416デフォルトの名無しさん
2011/12/07(水) 05:13:18.88マジで
0417デフォルトの名無しさん
2011/12/07(水) 05:21:44.870418デフォルトの名無しさん
2011/12/07(水) 05:39:13.29しないよ。でも教えてよ。
0419デフォルトの名無しさん
2011/12/07(水) 08:14:29.90静的型付け言語しか使っていない自分も興味がある。
問題はこっちだよな。
>与えられたオブジェクトが「整数とリストだけでできている」かどうかをチェックしてTrueかFalseを返す関数を作れ。
「任意の型 (Java なら Object 型) の値を受け取って、それが特定の型を持つか否かを判定する」関数を作る
というのが問題の本質だと思われ。
静的型付け言語は、まさにこの部分をコンパイラが保証するから instanceof が不要になる。
静的型のない言語で instanceof を使わずにどう書くのか興味がある。
0420デフォルトの名無しさん
2011/12/07(水) 08:17:46.58>静的型付け言語は、まさにこの部分をコンパイラが保証するから instanceof が不要になる。
静的型付け言語は、最初からこんな設計にしないということ。
>任意の型 (Java なら Object 型) の値を受け取って
期待される型の値しか受け取らないようにメソッドを設計し、
そのメソッドに期待される型の値が渡されていることはコンパイラが保証する。
0421デフォルトの名無しさん
2011/12/07(水) 09:36:35.50厳密には代数データ型でのパターンマッチの場合
「型」としては一つで、値やコンストラクタによって分岐するので、
確かに「型で分岐する」のと同じではない
しかし、それを代数データ型の無いLispで同等のコードを翻訳すると
まさに「型で分岐する」>>378のようなコードになるわけで、
>>378を認めて>>374を認めないというのなら、>>408の主張は全く意味不明
>>378とisinstanceの一体何が違うんだ?
0422デフォルトの名無しさん
2011/12/07(水) 09:42:23.88オーバーロードという静的ディスパッチはあるわな(C++にはテンプレートもある)
多くの動的型言語には同じ機構はない(そもそも同名の関数を多重定義できない)ので
似たことをやりたければ自分で手動でディスパッチすることになるんじゃないのか?
それこそ実行時型や引数の個数によって
0423デフォルトの名無しさん
2011/12/07(水) 10:44:16.96Object>>flatDo:
flatDo: aBlock
aBlock value: self
Collection>>flatDo:
flatDo: aBlock
self do:[:elem|elem flatDo: aBlock]
だな。
(elem isKindOf: Collection) ifTrue: [...]なんて馬鹿なコード書いたら
世界中のSmalltalkerに大笑いされるw
0424デフォルトの名無しさん
2011/12/07(水) 10:53:16.29374に注意書きで:
動的は型チェックを行う場所(関数)を熟考して決めていく必要がある。
(すべての関数で型チェックをする必要も無いので。)当然、最適化も手動に
なってくるから、こちらも静的よりは頭を使う。
--
と書いてるのにな。静的は静的で頭を使うから 静的よりか〜というのは撤回
しておくよ。HaskellとLispは熟考が必要な言語だし。
0425デフォルトの名無しさん
2011/12/07(水) 10:57:33.71http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1.1
0426デフォルトの名無しさん
2011/12/07(水) 11:01:53.09他人にとやかく言う前にヘッポコなコード書いた自分を責めろよ
0427デフォルトの名無しさん
2011/12/07(水) 11:05:00.33へっぽこと思うならどうぞご自由に。口だけの人の意見なんてどうでもいいですから。
では失礼。
0428デフォルトの名無しさん
2011/12/07(水) 11:05:03.04黙れ!貴様のコードが糞だろ!!
0429デフォルトの名無しさん
2011/12/07(水) 11:07:56.42なんか一人がんばってる人いるみたいだけど
0430デフォルトの名無しさん
2011/12/07(水) 11:10:28.81isinstanceの是非は横に置いといて、
あなたのコードが突っ込み所満載なのは事実だよ。
宣言部とか==Trueとか。
0431デフォルトの名無しさん
2011/12/07(水) 11:12:47.300432デフォルトの名無しさん
2011/12/07(水) 11:12:55.01確かによくわからんコードだ
defineで関数を定義する動的型付け言語で一番メジャーなのってSchemeか?
でもどう見てもSchemeのコードではないしな
まあただの例ということなんだろうけど
0433デフォルトの名無しさん
2011/12/07(水) 11:18:09.26擬似コードをかいてるだけだから。突っ込みどころがあるなら、
貴方が良いと思うコードを示すといいんですよ。じゃあ見せておくれ。
>>429も触れてるけど、あのコードはListの中に、いろんな型をいれる
のが普通のLispのものからだよ。
もし、Listの中に1つの型しかないようなデータならばあのような
形にはしないだろうが、いろんな物が入ってる場合は、柔軟に対処する
方法かな。
ここではオブジェクト指向や多態性のことは擬似コードでは想定してないよ。
0434デフォルトの名無しさん
2011/12/07(水) 11:19:52.08単に言語のレベルで直和型やパターンマッチを提供しないLispでそれと同じことを
やろうと思ったら実行時の条件分岐になるって話じゃねーのか?
0435デフォルトの名無しさん
2011/12/07(水) 15:06:41.10hasattrで分岐してる動的型のコードがダメな理由は何?
(* OCaml *)
type 'a t = Leaf of 'a | Node of 'a t list
let rec flatten x xs = match x with
Leaf x -> x :: xs
| Node x -> List.fold_right flatten x xs
let flatten x = flatten x []
# Python
def flatten(x):
if hasattr(x, '__iter__'):
return reduce(lambda a,b: a + flatten(b), x, [])
else:
return [x]
0436デフォルトの名無しさん
2011/12/07(水) 15:58:29.48ダウンキャストと同じで必要なら使うよ。
つか普通に使えよ。なんで問題を難しくするんだよ。
0437デフォルトの名無しさん
2011/12/07(水) 17:50:16.18ちっとぐらいisinstance減らしても意味ないね
0438デフォルトの名無しさん
2011/12/07(水) 18:02:48.96素直にinstanceofを使えばいいよ
0439デフォルトの名無しさん
2011/12/07(水) 18:48:32.830440デフォルトの名無しさん
2011/12/07(水) 20:13:54.83静的で型で縛りを入れてるコードは
動的では全くアプローチの違うコードになる気がする
何か書き換えてみたいなあ、静的での例ある?
0441デフォルトの名無しさん
2011/12/07(水) 20:29:37.95いれるというものを他では余りやらないからだろう?
RもPも一つのリストの中にいろんな型のデータは含めることはできるがね。
sympyみたいな数式処理関連のライブラリなら"isほにゃらら"は使っている
ね。isinstanceも当然含む。
細かな表現力が要求されない限り、雑多な型のデータを入れるリストって
最適化にも悪いからやらんもんな。
0442デフォルトの名無しさん
2011/12/07(水) 20:34:34.07あれはやっぱり関数の中で引数を isinstance で調べてるんだよね
0443デフォルトの名無しさん
2011/12/07(水) 21:04:42.86朝日新聞は一時期300人のネット工作員をかかえ、工作していた。
捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。
>>866
14時以降に何が起きたんだ
>>866
Domain Information: [ドメイン情報]
a. [ドメイン名] ASAHI-NP.CO.JP
e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ
f. [組織名] 株式会社 朝日新聞社
これが規制されたからじゃねw
−「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」−
これはおそらく週刊誌さえ書けない。
「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ
0444デフォルトの名無しさん
2011/12/07(水) 21:42:55.24(if (atom lst)
(list lst)
(mapcan #'flatten lst)))
(defun number-or-list-p (object)
(or (numberp object)
(null object)
(and (listp object)
(not (member-if-not #'number-or-list-p object)))))
(defun number-or-list-p2 (object)
(not (member-if-not #'numberp (flatten object))))
0445デフォルトの名無しさん
2011/12/08(木) 04:44:54.000446デフォルトの名無しさん
2011/12/08(木) 07:13:36.10ダックタイピングの良さを消してる気がするわ
hasattrやrespond_to?を使って構造的部分型で分岐するのは良いけど
0447デフォルトの名無しさん
2011/12/08(木) 09:48:01.640448デフォルトの名無しさん
2011/12/08(木) 10:18:27.76それを動的型付けの欠点と言うのはアサッテだが
0449デフォルトの名無しさん
2011/12/08(木) 11:01:02.86これか
http://www.infoq.com/jp/news/2010/09/big-ball-of-mud
http://www.laputan.org/mud/
0450デフォルトの名無しさん
2011/12/08(木) 11:07:58.44もっとも動的言語はMT車みたいなもんだからな。
0451デフォルトの名無しさん
2011/12/08(木) 11:21:56.70技術力の問題ってより、大規模開発の特性ってことじゃないの
amazonのコードベースも糞の山みたいに言われてたと思う
現実に世界規模のサービスを動かしている人たちの言うことだから、少なくとも
2chの名無しの言うことよりは説得力がある
0452デフォルトの名無しさん
2011/12/08(木) 11:51:58.38JavaもScalaもこき下ろしてたけどな
0453デフォルトの名無しさん
2011/12/08(木) 12:03:51.04そういう話は嬉々として語るのな。
技術力無い奴にありがちだけど。
0454デフォルトの名無しさん
2011/12/08(木) 12:05:48.350455デフォルトの名無しさん
2011/12/08(木) 12:37:00.62うんそれはわかってるよ。
このスレのタイトルの真偽がわかりつつあるね。
amazonのC++のゴミコードの山ってはなしあったな。
オブジェクト指向だけはなぁ。。。。 スパゲティー屋さん多いからな。
関数型のコードのほうが好きっ☆(てへ)
0456デフォルトの名無しさん
2011/12/08(木) 12:44:41.42動的→カタ・クラスチェックの山
OOP→スパゲティ
残ったのは、OcamlやF#みたいなの?となりそうに思うけど、これらが
大規模で使われてるときかない理由はいかに?
0457デフォルトの名無しさん
2011/12/08(木) 12:55:16.140458デフォルトの名無しさん
2011/12/08(木) 13:00:32.180459デフォルトの名無しさん
2011/12/08(木) 13:05:32.49Scalaも仕様について糞っかすに言われるのもわからなくもない。
日本語でも英語でもScala批判は炎上を招くらしくブログでは余り触れたがらない人が多いかも。
0460デフォルトの名無しさん
2011/12/08(木) 17:02:01.44バカ?
0461デフォルトの名無しさん
2011/12/08(木) 17:02:58.64ハスケルもスカラもカルトすぎ
0462デフォルトの名無しさん
2011/12/08(木) 17:46:30.38関わり合いになりたくない
ScalaからJavaに戻した途端のあの叩きようを見てマジ引いたわ
0463デフォルトの名無しさん
2011/12/08(木) 17:53:46.93動的→カタ・クラスチェックの山
OOP→スパゲティ
残ったのは、OcamlやF#みたいなの?となりそうに思うけど、これらが
大規模で使われてるときかない理由はいかに?
0464デフォルトの名無しさん
2011/12/08(木) 18:05:46.98書けるドカタがいない、とか?
0465デフォルトの名無しさん
2011/12/08(木) 18:31:36.47関数型は子供にも簡単に書けるようになる
難しく思えるのは命令型に洗脳されているだけ
とか言ってるぞw
0466デフォルトの名無しさん
2011/12/08(木) 18:44:40.43ドカタとは何かという問題だよ。
OCaml などをわざわざ勉強するような向上心?のあるやつはドカタではないとか、
F# を使えるやつはドカタではないとか。
何人のプログラマをプロジェクトに従事させるか知らないけれど、
経験者が集まらないか集めても高いとかじゃないかと。
0467デフォルトの名無しさん
2011/12/08(木) 19:03:50.27英語のメーリングリストとか、フォーラムは別にそんな感じは無くて、どっちかと言うと「事実が勝つ」って感じだけどな。
排外的って例えばどこ?
0468デフォルトの名無しさん
2011/12/08(木) 20:48:16.46ただ向上心という問題だけだろうか?名古屋みたいな土地なら岡村は
増えそうだが。周りにおらんだろ?
0469デフォルトの名無しさん
2011/12/08(木) 23:00:44.630470デフォルトの名無しさん
2011/12/08(木) 23:13:37.39http://www.nicovideo.jp/watch/sm15377275
youtube: http://www.youtube.com/watch?v=lf4iNq_E9XA
http://blog-imgs-34.fc2.com/d/e/l/deliciousicecoffee/DSCN6426.jpg
http://4.bp.blogspot.com/-mEsOSb2V_m4/TlD4HoAbG0I/AAAAAAAADEc/ou3_NGs9h4E/s1600/6.jpg
0471デフォルトの名無しさん
2011/12/08(木) 23:15:21.320472デフォルトの名無しさん
2011/12/09(金) 00:20:40.430473デフォルトの名無しさん
2011/12/09(金) 00:24:19.73つまり静的と動的を両方使うことができないんだよな。
0474デフォルトの名無しさん
2011/12/09(金) 01:01:51.05呼ぶメソッド名を変更すりゃいいだけの話
0475デフォルトの名無しさん
2011/12/09(金) 01:53:03.83何を言ってるの…。
0476デフォルトの名無しさん
2011/12/09(金) 02:13:09.05「ミスするやつはドカタ(キリ」とか思ってる馬鹿でもなきゃ、
堅牢性が必要な部分の界面では素直にis、has使うと思うんだけど。
0477デフォルトの名無しさん
2011/12/09(金) 02:35:58.51ポインタにぬるぽが来たら問題起こすだろ
そのためにポインタを引数にとる関数の全部に
ぬるぽチェック入れてたらオーバーヘッドだらけになるからやらない
動的型付けで引数チェックいちいちしないのもそれと同じ
0478デフォルトの名無しさん
2011/12/09(金) 02:55:33.19「全部」には入れないまでも、堅牢性が必要な場面の界面ではやる必要がある、
ということで、>>476の言っていることと別に矛盾はしないのでは
はやい話がユーザプログラムが変なポインタ渡したぐらいでkernelが
パニクったら困るみたいな
普通に考えれば界面が限定されていればチェックが必要なコードも
限定されるはずだけれども
twitterで型チェックだらけ、とかいうのは、要は界面の面積がものすごく大きいって
ことだろう
kernelの例でいうと本来の意味での界面はシステムコールになるけれども
多数の開発者で分担して作っている大規模システムでは、他の開発者がある意味で
信用できずに、システム内部で他の奴が作ってる部分との間にも
(バグと戦うために)結局界面というものが必要になってくる
twitterの話というのは、そういうことかと思った
0479デフォルトの名無しさん
2011/12/09(金) 03:09:30.65オーバーロードってメソッド名を変更する手間を省くくらいの意味しか無い機能だと思ってるが違うのか
0480デフォルトの名無しさん
2011/12/09(金) 03:16:03.20そんなことをやる意味がほとんどないからだろう
ポインタは32bitなり64bitなりのメモリ空間全体を指し得るから
ランダムに適当なポインタを与えられた場合、それは読み込みや書き込み
不能なページにあるかもしれないし、できたとしてもスタックのリターンアドレスを
書き換えたりヒープの管理情報をブチ壊したりしてしまうような位置かもしれない
なので、Cで引数として与えられたポインタが単にぬるぽかどうか確認するだけでは
屁の役にもたたず、何の意味もない
0482デフォルトの名無しさん
2011/12/09(金) 03:30:30.22なのでinstanceofの類を使わずに動的型付けの言語でどうやってバカよけをする
のかを以前ここで尋ねるも返答がなかった件。
0483デフォルトの名無しさん
2011/12/09(金) 03:33:34.72>twitterで型チェックだらけ、とかいうのは、要は界面の面積がものすごく大きいって
>ことだろう
>kernelの例でいうと本来の意味での界面はシステムコールになるけれども
>多数の開発者で分担して作っている大規模システムでは、他の開発者がある意味で
>信用できずに、システム内部で他の奴が作ってる部分との間にも
>(バグと戦うために)結局界面というものが必要になってくる
>twitterの話というのは、そういうことかと思った
要するにtwitterの設計思想がまずいって話だな
Rubyだからそうなったのか
それに気付いてScalaにしたのかどうかとは別次元の話
0484デフォルトの名無しさん
2011/12/09(金) 06:00:29.77つ 型注釈
つ 動的型検査
0485デフォルトの名無しさん
2011/12/09(金) 06:02:26.25おまえの質問が馬鹿避けに引っ掛かったことに気付け馬鹿
0486デフォルトの名無しさん
2011/12/09(金) 06:06:08.63両方を満たせないのは静的型付け言語でしょ。
動的型付け言語は型注釈でコンパイル時検査も実行時検査も出来る。
でも静的型付け言語ではヘテロなオブジェクトを作れない。
0487デフォルトの名無しさん
2011/12/09(金) 06:09:58.38で、どうやってやるの?
0488デフォルトの名無しさん
2011/12/09(金) 06:29:10.94すべてを台無しにするパターンじゃないのかな。
まあたった一つじゃないんだけども。
0489デフォルトの名無しさん
2011/12/09(金) 06:52:28.060490デフォルトの名無しさん
2011/12/09(金) 07:39:27.00静的型付けの言語はプログラマ性悪説に凝り固まって奪える限りの自由を奪う。
規模が大きくなって色々な人が仕事に関与するようになると確かに性悪説に立った
方が無難。
0491デフォルトの名無しさん
2011/12/09(金) 07:51:49.10関数型が普及しないわけだ
0492デフォルトの名無しさん
2011/12/09(金) 08:08:04.87人間にも出来ること。
それを自らの問題ととらえて打開策を模索するのがより生産的な姿勢。
今の関数型言語が普及しない事を嘆いているヒマがあれば土方でも使える
関数型言語の設計でも考えれば良いのにね。
動的型は土方には使えないとか宣っている連中も似たようなものだ。
0493デフォルトの名無しさん
2011/12/09(金) 08:50:19.780/1 でしか考えられない、典型的な馬鹿乙。
0494デフォルトの名無しさん
2011/12/09(金) 09:31:06.630495デフォルトの名無しさん
2011/12/09(金) 10:51:29.39型注釈でもいいし、多態で分岐してもいいし、例外捕まえてもいいし、、、
むしろ1つも思い付かないほうが不思議だ
0496デフォルトの名無しさん
2011/12/09(金) 11:17:35.99思い込みで話してませんか? ほんとにいるんだろうか?
現場でFizzBuzz書けない奴って。
0497デフォルトの名無しさん
2011/12/09(金) 11:25:26.71もちろん全員じゃない
0498デフォルトの名無しさん
2011/12/09(金) 11:28:13.67性悪とか性善とか正直どうでもいいし気にしないけれど
重機あるのにノミとトンカチでトンネル掘るような作業をするのには正直耐えられない。
0499デフォルトの名無しさん
2011/12/09(金) 11:29:55.28C++は性的暴行
0500デフォルトの名無しさん
2011/12/09(金) 11:31:16.72あるいは物凄く困難になって実質存在しないか不完全な言語も嫌い
動的型付けも嫌いだけれどincludeやC言語系defineなんかは最悪だから全滅して欲しい
0501デフォルトの名無しさん
2011/12/09(金) 11:33:14.38きついだろうけど、引数の省略ってあまり使わないから。
ちなみに、>>498 は単なる IDE 依存症の馬鹿。
0502デフォルトの名無しさん
2011/12/09(金) 11:33:20.99引数省略は障害にならないようです、C#は見事に問題なし。
インテリセンス以外にも、リファクタリングツールやテストツールも型無しは地獄だね。
0503デフォルトの名無しさん
2011/12/09(金) 11:35:05.353秒で済む事一週間かけてやっているに違いない
0504デフォルトの名無しさん
2011/12/09(金) 11:49:08.47こういうアホテリセンスは一生直らないんだろうな。(w
0505デフォルトの名無しさん
2011/12/09(金) 11:51:21.04お前の所で何時もスケジュールが滞っているんだよ
0506デフォルトの名無しさん
2011/12/09(金) 12:01:59.54http://hibari.2ch.net/test/read.cgi/tech/1317403825/610
どうせ自演だろうが
0507デフォルトの名無しさん
2011/12/09(金) 12:29:21.14っていつもの話にループするわけだ。
ドカチンは進歩しねえなw
0508デフォルトの名無しさん
2011/12/09(金) 12:32:28.790509デフォルトの名無しさん
2011/12/09(金) 12:38:57.49バカバカしい自慢話だ
0510デフォルトの名無しさん
2011/12/09(金) 13:02:49.88Flashはオワコン、Webサイコー、Javaサイコー、Rubyサイコー、動的だ、静的だ、
とか言ってるアホが多い
まあアホだからこそ中卒土方以下の月収40万円無保障使い捨てでもこき使えるんだが
そんなことに頭つかってるからドカタなんだよw
0511デフォルトの名無しさん
2011/12/09(金) 13:09:04.97ちなみにあなたのご職業は?
0512デフォルトの名無しさん
2011/12/09(金) 13:20:36.18自宅警備員です
0513デフォルトの名無しさん
2011/12/09(金) 13:26:29.30┌──────────┐ //´ __,,>、
| ::::::::::| /::/ / ̄:::::::::::::::\
└┬────────┬┘ /::::l/::::::::::::::::::::::::::::::::l.
| -‐-レノ ノ_ ::::| l:::::::::::/l/lノノ/_イ:::::l
| イ゚テ .ピト` ::| l:::::::::/ rtテ、 .ィtq l::::::|
| '" .,j '" ::| |::lヘ!j ´ ,j !;:::/
| r‐-, ::::| レリー 、 ,...., lノ/
|  ̄ :::::| `ヽ、lヽ 、  ̄ /
┤ ::::::├ヽ , -‐-、_r┴─'ー‐チト この人 土管です
/| ::::::| ´`ヽ / ヽ ̄`ー-‐'´`''''⌒ヽ
/ | ::::::| \ _r‐、-、-、r, 、 ',
| ::::::| ,. -‐ゝ/// 〉 〉 〉 〉 〉 ! ',
| ::::::| / 人〈〈〈〈 ' ' ' /っ l l
| ::::::|/ / ```´-ァ‐'''" / l
\_| ::::::├ヘ l // / _ ィノ
┤ ::::::| `ーヽ、_ノ´l、______/lニ二」
_/| ::::::| |_ ( ( ) )_〕| l
0514デフォルトの名無しさん
2011/12/09(金) 14:42:29.61良いと思うのだけれども、それでも型消去されたリストやmapしか持っていない
ようであれば片手落ちだと思う。
0515デフォルトの名無しさん
2011/12/09(金) 14:58:54.94人権団体によって使用禁止にされた表現を含んでいます。
0516デフォルトの名無しさん
2011/12/09(金) 15:03:29.07IDE自体が現在でも、動的機能の塊として動いてるからなあ。
0517デフォルトの名無しさん
2011/12/09(金) 15:10:05.91>型注釈でもいいし
その注釈を静的にコード検証するために使うのか実行時に型チェックするために
使うのかどちらか知らないけど、後者だったら結局内部的にはinstanceofの類を
使って判定されるじゃん。表に見えないだけで単なるシンタックスシュガー。
>多態で分岐してもいいし
そりゃ想定内のクラスのインスタンスだけがやってくるという仮定の上でのみ
通用する話。バカよけになってない。
>例外捕まえてもいいし、、、
例外発生する処理が破壊的な処理だったらどうするんだ。
カチッとした部分を書くのにinstanseOfの類を使うなと言うのが無理筋。
これですむのであればとっとと使って次の作業に進んだ方が良い。
0518デフォルトの名無しさん
2011/12/09(金) 16:00:34.47多くの人が引いてROMるだけのこと。要は相手をするのが時間の無駄ってこと。
0519デフォルトの名無しさん
2011/12/09(金) 16:07:42.510520デフォルトの名無しさん
2011/12/09(金) 16:11:40.64またまたw
答えを持ち合わせていないからってROMらないでくださいよw
0521デフォルトの名無しさん
2011/12/09(金) 16:22:38.64馬鹿だなあ。
通常のif文とinstanceofで判定したら、それこそIDEの支援が出来ないだろ。
特別な構文やキーワードを使うから、
自動的に削除や回復が出来るんじゃないか。
IDEの設定に応じてコンパイル時のエラーレベルや
実行時の検査やログを変更出来るんじゃないか。
シンタックスシュガーを笑うものはシンタックスに泣くんだよw
0522デフォルトの名無しさん
2011/12/09(金) 16:23:51.67多態では想定した型しか対処出来ない?
お前は馬鹿か?
objectで多態すればいいだけだろ。
0523デフォルトの名無しさん
2011/12/09(金) 16:43:10.36> 例外発生する処理が破壊的な処理だったらどうするんだ。
>
> カチッとした部分を書くのにinstanseOfの類を使うなと言うのが無理筋。
破壊的な処理が前提なら、破壊的な処理の途中で得られた値へのinstanceofでま同じだろ馬鹿。
馬鹿避けなんて簡単だ、お前を配員しなければいい。
0524デフォルトの名無しさん
2011/12/09(金) 16:43:29.24図星だったんだろうな。気の毒。
ということで程度が低いと思った"イデ"の話は別の所でやってくれ。
0525デフォルトの名無しさん
2011/12/09(金) 16:50:02.41だから「後者なら」と限定をつけているのにその辺りは読まないんだね。
前者の話なら異存はないよ。型注釈を利用してIDEが的確にコードを理解して
色々と支援してくれるんだね。それは便利だよね。
静的型付けの言語ではごく普通に享受していたこのメリットが動的型付けの
言語でも取り入れられるようになったという事で大変めでたい。
いや実にめでたい。
0526デフォルトの名無しさん
2011/12/09(金) 16:58:34.13ここ試験に出るからなっ!
0527デフォルトの名無しさん
2011/12/09(金) 17:02:31.43多態が出来るのと多態がバカ避けになるのかは別問題。
動的型付けの言語での多態の利用がバカ避けになるのであればその例を書いてよ。
多態だけで想定していない型の入力をちゃんとはじいてくれる様を実演してみて。
>>523
破壊的な処理ならその処理を呼び出す前に値の検証をするのが当然。
で、その検証はどうやるのさ。
規約で特定の型を要求しているようなAPIを呼び出す場合とか。
0528デフォルトの名無しさん
2011/12/09(金) 17:21:18.190529デフォルトの名無しさん
2011/12/09(金) 17:49:36.57すべてがそうかわからないけど、一部は明らかに視野が狭い人が言ってるよね。
0530デフォルトの名無しさん
2011/12/09(金) 18:12:36.260531デフォルトの名無しさん
2011/12/09(金) 18:17:00.87動的言語はinstanceofを使わないとダメだよね
→instanceofで判定なんて泥臭くてアホだろ。普通○○でやる
→それは型の判定自体を行っているという点でinstanceofと同じ。
さぁ型の判定をしないで、予期せぬ型が渡ってくることをどう防ぐんだよオラオラ
って流れなのか?
0532デフォルトの名無しさん
2011/12/09(金) 18:18:00.42コードの読解力も推して知るべしだな...
0533デフォルトの名無しさん
2011/12/09(金) 18:20:09.06そう。
彼は多態による分類とクラス階層による分類の違いが解らないからしい。
0534デフォルトの名無しさん
2011/12/09(金) 18:20:57.23fイ´__ __ヾ
{:六;;;;:ハ:;;;:カ
(_ ' _^_ヽリ なんだ AKBって整形した反日朝鮮人だったのかァ
,人 l⌒l、 ブームの捏造手法が寒流と同じだけはあるな
/ \,ゝヽr' \
/ |:| ヽ
l l /´�堰@ l !
|___l ノ ,イ !__,}
0535デフォルトの名無しさん
2011/12/09(金) 18:25:31.09そもそも>>523は誤記で意味不明になっているんだよ。これで読解力を問われても困る。
反論書くなら正しい日本語で書き直してからよろしく。
で、破壊的な処理に入る前の事前検証はどうやって行うの?
0536デフォルトの名無しさん
2011/12/09(金) 18:44:33.00> 例外発生する処理が破壊的な処理だったらどうするんだ。
> カチッとした部分を書くのにinstanseOfの類を使うなと言うのが無理筋。
つまり、517は
・非アトミックな破壊操作の途中で動的型エラーを処理したい。
・instanceofならできるが、例外処理ではできない
と主張している。
それを>>523は、instanceofで検査しても例外処理でハンドルしても、
検査対象とする値が非アトミック破壊的処理の途中で得られたものであれば、
いずれにせよ破壊的処理の回復処理はしなければならない、
だから動的型検査の方法と非アトミック破壊的処理は別問題、と言ってるわけだ。
なのに>>527は「途中で得られた」という部分を理解できなかったか、
あるいはあえて無視したか不明だが、破壊的処理の前に検査すると言っている。
結論: >>517=>>535は非アトミックな破壊的処理の本質をわかっていない。
0537デフォルトの名無しさん
2011/12/09(金) 18:51:09.84>・非アトミックな破壊操作の途中で動的型エラーを処理したい。
主張していないって。どうやったら、
> 例外発生する処理が破壊的な処理だったらどうするんだ。
> カチッとした部分を書くのにinstanseOfの類を使うなと言うのが無理筋。
これからそんな主張を演繹できるのか、まずそこから説明してくれ。
0538デフォルトの名無しさん
2011/12/09(金) 19:02:13.56あれ?アトミックならそれこそ回復処理も何もないのでは。
一体何が言いたいのか俺にもわからん?
コード書いて示してみれば?
0539デフォルトの名無しさん
2011/12/09(金) 19:09:54.92どうせ破壊操作言ってみたかっただけだろw
0540デフォルトの名無しさん
2011/12/09(金) 19:30:09.46元々は
>instanceofの類を使わずに動的型付けの言語でどうやってバカよけ
という話で
>例外捕まえてもいいし、、、
という策が出るも、事後の例外キャッチは事前の型判定の代用にはならないし、
特に処理が破壊的な場合は困ったことになるでしょというだけの話。
単純に特定の型が明示的に要求されている場面では多態も例外処理も型判定の
完全な代用にはならないのだから素直にinstanceOfの類を使いましょうって話
なんだけれどもな。
0541デフォルトの名無しさん
2011/12/09(金) 20:07:48.76これにまともに反論できるやつ居ないのかよ
0542デフォルトの名無しさん
2011/12/09(金) 20:13:30.41ベストエフォートが通じない場面じゃそもそも使わん
で、そんな俺がRubyでしばしばやる方法は…
データの大半を自作のクラスにラップすることで
typedef感覚での意味付けをする
その際、クラス名が○○ならto○○という
自身の型名を含んだメソッドを持たせる
メソッドの内容は自身への参照を返す、というもの
んで、その後に書いた関数の引数チェックなどは
引数を始めて使用する際にto○○を呼びつつ使用
0543デフォルトの名無しさん
2011/12/09(金) 20:42:49.25> COBOLやFlex/as3プログラマーが定時退社で月給150万円もらってる
反論する価値もないと思うが。
0544デフォルトの名無しさん
2011/12/09(金) 20:53:49.84結局おまえは動的言語での型検査がまるでわかってないことを晒しただけだな
かわいそうにwww
誰かが書いていたが、馬鹿よけってのはお前を外せばいいだけw
0545デフォルトの名無しさん
2011/12/09(金) 20:55:08.12> 単純に特定の型が明示的に要求されている場面では
まさに馬鹿の発想w
0546デフォルトの名無しさん
2011/12/09(金) 21:02:59.45そういう場面は動的言語ではありえない、と言っているのかな?
0547デフォルトの名無しさん
2011/12/09(金) 21:04:38.10書いてない文字が読めちゃう人でつか?
0548デフォルトの名無しさん
2011/12/09(金) 21:06:41.570549デフォルトの名無しさん
2011/12/09(金) 21:12:11.110550デフォルトの名無しさん
2011/12/09(金) 21:44:13.56↓
色々な方法があるんじゃない?アノテーションとかメソッド叩くとか例外処理とか・・・
普通にその通りだと思うけど、アノテーションでもメソッド叩くのでも例外処理でも
処理できないような引数チェックの具体例ぷりーず!
0551デフォルトの名無しさん
2011/12/09(金) 21:47:47.280552デフォルトの名無しさん
2011/12/09(金) 21:58:57.44型に押し込めたコーディングにしてしまうから
開発がつまらなくなる。
開発が楽しいのはフレームワーク決めたり
アーキテクチャを決めたりする一部の人間だけ。
下っぱはつまらない作業になる。
0553デフォルトの名無しさん
2011/12/09(金) 22:45:19.50難しかった作業(プログラミング)が単純作業になるのか。
良いことだ。
instanceof での分岐と単純な多態って、
人間が書くはずだったコードをコンピュータに書かせているだけのような気がしてしまう。
0554デフォルトの名無しさん
2011/12/09(金) 23:20:21.55う〜ん・・・
多態性や例外を使わずに素直に型検査を使った方が適切だったり使わざるを得ない
場面なんていくらでもあると思うけど。特に他人様が書いた成果物を使う時は。
例えばこれから叩くメソッドが他人様によって"Input: ClassA value"とか文書化
されていれば、多態性云々とかとりあえず投げてみて例外を待ち構えるとかいった
悠長なことはせずに素直に型検査してから叩くし、それ以外の方法は無いでしょ。
文書化された仕様としてその型の値を要求しているのだから。
そしてそのメソッドに渡す引数が自分が今書いているメソッドの引数の一部であれば
文書化の際にその引数の型は明記するし、その引数は上記の通り中で型検査するし、
オプショナルな型注釈が使える言語の場合には注釈付けて型検査を強制するでしょう。
それでも多態とか例外で頑張るのかなぁ・・・
0555デフォルトの名無しさん
2011/12/10(土) 01:11:15.62180 名前:115x125x150x194.ap115.ftth.ucom.ne.jp[] 投稿日:2011/04/29(金) 13:58:50.19 0
このスレ見てハロカスヲタはホント閉鎖的だなって思うわ
これだからハロカスって言わるんだよカス ハロ=HelloProject(モーニング娘などが所属)
http://hato.2ch.net/test/read.cgi/morningcoffee/1303996886/180
756 名前:115x125x150x194.ap115.ftth.ucom.ne.jp[] 投稿日:2011/04/30(土) 04:27:05.86 0
このスレ見てハロカスヲタはホント閉鎖的だなって思うわ
これだからハロカスって言わるんだよカス
http://hato.2ch.net/test/read.cgi/morningcoffee/1304043385/756 他多数書き込み
Network Information: [ネットワーク情報]
a. [IPネットワークアドレス] 115.125.150.192/29
f. [組織名] 有限会社 クリップ
AKB48 音響、缶バッヂ等製作 有限会社クリップ(代表=日本名を名乗る在日朝鮮人)
→なぜ在日朝鮮人が、わざわざ2chに出向いて必死になってHelloProjectを叩くか。単に商売敵だから?AKBが「ツリ目のエラ張りにしか」売れてないから?
ヒント:*韓国人のみに見られる風土病の存在
*HelloProject→日本人アイドル AKB→整形した○○人←韓流()
そして、"朝鮮人だらけの"マスコミが 捏造AKB ブーム. 捏造韓流 ブームを演出し、ごリ押す目的が見えますか?
検索していろいろなサイトを巡ってみて下さい
0556デフォルトの名無しさん
2011/12/10(土) 06:18:26.66よくねーよ、単純作業になったのなら自動化しねぇーと、保守が地獄だ
0557デフォルトの名無しさん
2011/12/10(土) 06:20:22.57周辺ツールを含めて総合力が言語の能力を決めている。
0558デフォルトの名無しさん
2011/12/10(土) 07:13:43.86Javaが教えてくれたから
0559デフォルトの名無しさん
2011/12/10(土) 08:21:49.55型アノテーションのように関数の入り口で型チェックするにしても、
単純にinstanceofでやるのは下策でしょう。
respondtoだとかisXYZなどのダックタイプ的なチェックをすれば
動的型の柔軟性を損なわずに済むのだから。
そういう柔軟な型検査は動的型言語の多くで簡単に実装可能でしょう。
例えばpythonならデコレータで書けるわけで。
なのにinstanceofに固執して他の柔軟な型チェックを拒否する発言が
批判されているんじゃないのかな。
そういう姿勢は動的型のプラクティスとあわないと思うなあ。
instanceof派の反論って、respondtoだとこれができない、isXYZでは
これができない、例外処理だとこれができない、って話ばかりで、
それらの方法を組み合わせても実現できない型チェックの実例が
全然出てこないことも、議論が咬み合わない原因だと思う。
0560デフォルトの名無しさん
2011/12/10(土) 09:18:52.14>それらの方法を組み合わせても実現できない型チェックの実例が全然出てこない
554の例がまさにそれだと思うけど。
ちゃんと文書化されたAPIで、メソッドの引数の型が明示されています。
メソッドを叩く前に引数を検定したい。どうするの? わざわざ型が明示されているのに
柔軟性を追求して直接的な方法を避け色々な方法を組み合わせるの?
>なのにinstanceofに固執して他の柔軟な型チェックを拒否する発言
他の型チェックでは代用出来ない例を例示しているだけであって拒否はしていないし
使うなとも一言も言っていないよ。適切な場面で使えるものを大いに使えばいいでしょ。
ただ他の型チェックでは型判定の完全な代用とはならない場面もあるのだから、そう
いう時は素直にinstance云々の類を使っても良いんでない? 使うべき場面もあるよね?
と言っているだけで。
0561デフォルトの名無しさん
2011/12/10(土) 09:22:39.58> 554の例がまさにそれだと思うけど。
まずは型を直接指定することのデメリットを考えた上で、
あえて型を直接指定したとしても、instanceofを直書きするのは
下策中の下策だと何度も指摘されていますよね?
0562デフォルトの名無しさん
2011/12/10(土) 09:31:21.140563デフォルトの名無しさん
2011/12/10(土) 09:35:11.08柔軟性は肯定できるが、その柔軟性が生産性を阻害しているから制限を加えようとしたのに先祖帰りした印象。
0564デフォルトの名無しさん
2011/12/10(土) 09:37:00.08では>>554の例に対するベターな解法よろしく。
0565デフォルトの名無しさん
2011/12/10(土) 10:55:38.34自由が欲しければ実力をつけろ。
0566デフォルトの名無しさん
2011/12/10(土) 11:12:38.25メソッドを呼びだしを行ってる変数で多態できなくなるじゃん
0567デフォルトの名無しさん
2011/12/10(土) 14:52:04.95問題が曖昧すぎて解法もクソもないだろwww
0568デフォルトの名無しさん
2011/12/10(土) 15:15:52.47呼びだしを行ってる変数ってself、thisのこと?
>>564
それってXがAと定義したとき、XはAだよねって言ってるようなもんで、
そりゃその通りとしかいえなくなるでしょ。
元の話の流れは動的型でinstanceofが有効な場面を想定する時点で、
そもそも本末転倒な話だってことだよ。
0569デフォルトの名無しさん
2011/12/10(土) 17:03:27.61>普通にその通りだと思うけど、アノテーションでもメソッド叩くのでも例外処理でも
>処理できないような引数チェックの具体例ぷりーず!
↓
>>554
↓
>>568
>元の話の流れは動的型でinstanceofが有効な場面を想定する時点で、
>そもそも本末転倒な話だって
なんじゃそりゃ。
つまり「動的型でinstanceofが有効な場面」は存在するしそういう場合は
instanceofを使えば良いって事でFAね。
0570デフォルトの名無しさん
2011/12/10(土) 17:05:36.52メソッドに想定してない型のオブジェクト渡したら
どうなるの?
0571デフォルトの名無しさん
2011/12/10(土) 17:12:18.15たまたま同名のメソッドとか持ってたら動いてるけど挙動がおかしいみたいになる可能性もある
0572デフォルトの名無しさん
2011/12/10(土) 17:17:58.42自分へのレスは全部同一人物が書いたと思い込むタイプの人?
0573デフォルトの名無しさん
2011/12/10(土) 17:23:38.43どうしてそう思うの?
568がそもそもどういう流れで>>554が出てきたのか話の繋がりを読めていないか
読めていてもいささか理不尽なことになっているので、親切にわざわざ要点の引用
までして話の経緯を示したのに。
0574デフォルトの名無しさん
2011/12/10(土) 17:24:26.40その場合ユニットテストはどうするんですか?
もしかして、正常なオブジェクトを渡した時だけしかテストしないの?
0575デフォルトの名無しさん
2011/12/10(土) 17:28:45.67韓国文化放送(MBC) 〒135-0091 東京都港区台場2-4-8 18F
フジテレビジョン 、、 〒137-8088 東京都港区台場2-4-8
韓国聯合TVNEWS(YTN) 〒105-0000 東京都港区赤坂5-3-6
TBSテレビ 、 、、 .〒107-8006 東京都港区赤坂5-3-6
大韓毎日 、、、、、、、、、、、、 〒108-0075 東京都港区港南2-3-13 4F
東京新聞(中日新聞社東京本社) 〒108-8010 東京都港区港南2-3-13
京郷新聞 、、、、、、〒100-0004 東京都千代田区大手町1-7-2
産経新聞東京本社 〒100-8077 東京都千代田区大手町1-7-2
(サンケイスポーツ、夕刊フジ、日本工業新聞社)
朝鮮日報 、、、 〒100-0003 東京都千代田区一ツ橋1-1 4F
毎日新聞東京本社 〒100-8051 東京都千代田区一ツ橋1-1-1
韓国日報 、、、、 〒100-0004 東京都千代田区大手町1-7-1 8F
読売新聞東京本社 〒100-8055 東京都千代田区大手町1-7-1
東亜日報 、、、 〒104-0045 東京都中央区築地5-3-2
朝日新聞東京本社 〒104-8011 東京都中央区築地5-3-2(AFP、NYT)
韓国放送公社(KBS) 〒150-0041 東京都渋谷区神南2-2-1NHK東館710-C
NHK放送センター、 〒150-8001 東京都渋谷区神南2-2-1
内にも外にも無能なのは今の日本の政治は朝鮮が行っているから
帰化人だらけの野田内閣をみてみろよ
0576デフォルトの名無しさん
2011/12/10(土) 17:31:06.32引数としてdict型を期待しているメソッドが、
そのメソッドの中でget()メソッドだけ使っているなら、
get()メソッドを独自の実装した型の値を渡しても、ちゃんと動くよ。
つまり、Java等のインターフェイス型では、
そのメソッドで使う十分以上のメソッドを要求することになるけど、
動的型付け言語の場合にはそのメソッドで使うメソッドだけサポートすればいい。
だからクラス階層やインターフェイス型の宣言に縛られることなく、
メソッドを書いた人が期待した型以外の型でも、そのメソッドの要求さえ満たせば
ちゃんと動作するよ。
0577デフォルトの名無しさん
2011/12/10(土) 17:37:23.28これが飲み込めてないから、動的型付け言語でinstanceofを使いたいって思うんだろうな
nominalな型システムでもないのに、多態を継承関係にあるクラスだけに限定するなんて馬鹿馬鹿しい
0578デフォルトの名無しさん
2011/12/10(土) 17:38:36.88それは都合のいい例だけど、
都合の悪い例では、中途半端に動くよね?
たとえばメソッドの中でfooとbarを使っているけど、
barしか実装してない独自の型を渡した時。
0579デフォルトの名無しさん
2011/12/10(土) 17:40:42.42つまり、メソッドの仕様として、
このメソッドは以下のメソッドを使用します。
get、put、search、count、・・・
みたいに書いてあるの?
動的型付けの仕様書が見てみたいね。
0580デフォルトの名無しさん
2011/12/10(土) 17:42:19.21しかもな、メソッドがバージョンアップしたら、
バージョン2.0から、このメソッドはupdateを使用するようになりました。
って書いてあるんだぜ。
だから毎回ライブラリがアップデートしたら
メソッドの仕様を確認しないといけない。
0581580
2011/12/10(土) 17:42:38.490582デフォルトの名無しさん
2011/12/10(土) 17:44:32.40「なんじゃそりゃ。
つまり「動的型でinstanceofが有効な場面」は存在するしそういう場合は
instanceofを使えば良いって事でFAね。 」
↑これが「経緯を説明」なのか?
本気でそう思っているのなら、プログラミング言語以前の言語教育の問題だなw
0583デフォルトの名無しさん
2011/12/10(土) 17:46:51.37なあ、静的厨って、みんなお前みたいな馬鹿なのか?
IDEの機能の多くが動的型言語から出てきたことの意味がまるで分かってないな。
0584デフォルトの名無しさん
2011/12/10(土) 17:47:27.57仕様書なんてなくてもIDEがちゃんと教えてくれるよ。
0585デフォルトの名無しさん
2011/12/10(土) 17:48:20.84そうね。次回からはもっと丁寧に書くよ。ちなみに、
>動的型でinstanceofが有効な場面」は存在するしそういう場合はinstanceofを
>使えば良いって事
に対する反論とかはない?
0586デフォルトの名無しさん
2011/12/10(土) 17:48:39.10どんな言語でも、お前みたいなクソ馬鹿野郎がバグ仕込めば動かなくなるが?
0587デフォルトの名無しさん
2011/12/10(土) 17:49:28.11反論以前に皆に呆れられてることに気付けよ。マジで。
0588デフォルトの名無しさん
2011/12/10(土) 17:52:32.89そゆこと。staticでnominalな型しか理解できないのだろう。
ましてやdynamic typingはstructuralなtype systemよりも
遥かに柔軟だということ理解できないのだろう。
おそらく、Javaにはない概念は理解できないということ。
つまり、典型的なドカタ。
0589デフォルトの名無しさん
2011/12/10(土) 17:52:54.87またまたぁw 反論してから呆れてみせても遅くないのにw
0590デフォルトの名無しさん
2011/12/10(土) 17:56:03.62本当に自覚ないのか?(呆
0591デフォルトの名無しさん
2011/12/10(土) 17:57:19.78はいはい、そうでちゅね、
安心したら、さっさとジャバのプログラム書いてね。
キミは月30万のドカタなんだから。
0592デフォルトの名無しさん
2011/12/10(土) 18:01:16.69動的型のコードの設計として間違ってるサインだわな。
なんか、一人だけムキになってる人がいるみたいだけど、
彼はJavaでも書いてれば幸せなんじゃないの?
0593デフォルトの名無しさん
2011/12/10(土) 20:18:06.40やっぱり、そういうことにしないと
気がすまないの?w
0594デフォルトの名無しさん
2011/12/10(土) 20:21:01.82動的言語で引数に間違ったオブジェクトを入れたら
エラーにすればいいじゃん。
メソッドの最初で型チェックコードを入れて、
型が違えばエラーを出せばいい
ま、普通に静的言語を使ったほうがいいと思うけどね。
0595デフォルトの名無しさん
2011/12/10(土) 20:26:42.690596デフォルトの名無しさん
2011/12/10(土) 21:02:15.57肝障害を引き起こす可能性があり、海外では販売が禁止されている花王のヘルシア
なぜ日本では売られ続けるのでしょうか
http://ruru2.net/jlab-ruru/pct/s/ruru1316210800870.png
http://ruru2.net/jlab-ruru/pct/s/ruru1316210808155.png
http://ruru2.net/jlab-ruru/pct/s/ruru1316210775533.png
花王の社長は反日○○人
0597デフォルトの名無しさん
2011/12/10(土) 22:31:47.03通常と異なる型の値を渡す場合のテストは
通常と異なる型の値を渡すコードのテストで十分
おまえはfinalでないクラスを引数の型にしたとき
どうやってテストするんだい?
0598デフォルトの名無しさん
2011/12/10(土) 22:33:53.18そうだね、
型のチェックを決め打ちで直書きするようなバッドプラクティスをするような人は
素直にJavaでも使っていればいいのでは?
正直、あなたのようなダメコーダーが混ざると品質が落ちて迷惑だから、
ダメコーダーは全員Java使っていて欲しいと思う。
0599デフォルトの名無しさん
2011/12/10(土) 23:12:36.86この流れは酷いw
0600デフォルトの名無しさん
2011/12/10(土) 23:46:58.92今はダメコーダー率が高いのはPHP。あとはやっぱりMS系の言語。
Javaは最近50万強でそれなりの人が来る。
0601デフォルトの名無しさん
2011/12/10(土) 23:48:23.92「コーダー」を馬鹿にするけど「コーダー」の経験の無い人が開発を語るなと言いたい。
0602デフォルトの名無しさん
2011/12/11(日) 00:33:27.00俺は頑張ってるんだって表現したい。
それが動的型付け厨が思っていること。
単純作業にされてしまうと困るんだろうね。
もっと上の立場(アーキテクト)になればいいのにって思うよ。
0603デフォルトの名無しさん
2011/12/11(日) 00:53:57.430604デフォルトの名無しさん
2011/12/11(日) 01:15:16.70>通常と異なる型の値を渡す場合のテストは
>通常と異なる型の値を渡すコードのテストで十分
>>576が
>クラス階層やインターフェイス型の宣言に縛られることなく、
>メソッドを書いた人が期待した型以外の型でも、そのメソッドの要求さえ満たせば
>ちゃんと動作するよ
って書いてるんだから型で精査したら駄目なんじゃないの?
0605デフォルトの名無しさん
2011/12/11(日) 01:30:19.64ちゃんと変な挙動になるかどうかをテストすれば完璧じゃねw
0606デフォルトの名無しさん
2011/12/11(日) 01:30:48.00それも一切の副作用なしで。
コードのどこかでエラーになるのを期待するのは
管理できているとは言えない。
引数のオブジェクトにメソッドがあればOKということだが、
一部のメソッドだけあると途中までOKだけど、途中でエラーになる。
そうなると、メソッドの最初で型を見てチェックするか、
メソッドを見てチェックしないといけない。型がだめなら
メソッドがあるかないかをチェックする。
そうすると、動的型付け言語はすごく面倒な言語ってことになる。
だから手抜きして書く。
そうするとへんなオブジェクトを渡したら、中途半端に動くメソッドができてしまう。
0607デフォルトの名無しさん
2011/12/11(日) 01:35:41.98メソッドを間違った使い方をした時、
間違った使い方をしたというエラーが表示されへんな状態にはならないのが、静的型付け言語
間違った使い方をした人が悪い、状態は不定になるってのが動的型付け言語
ということは、堅牢性をもとめるなら
やっぱり静的型付け言語の方がいいってことなのかな。
動的型付け言語でもちゃんと型チェックすればいいんだけど、
そうすると静的型付け言語よりも面倒になるから意味がなくなる。
0608デフォルトの名無しさん
2011/12/11(日) 01:59:42.520609デフォルトの名無しさん
2011/12/11(日) 02:28:41.22ミスをしないという前提なんだろうね。
0610デフォルトの名無しさん
2011/12/11(日) 03:16:00.710611デフォルトの名無しさん
2011/12/11(日) 03:21:47.44普通は正しい値だけ通すだろ。
0612デフォルトの名無しさん
2011/12/11(日) 04:06:37.190613デフォルトの名無しさん
2011/12/11(日) 04:56:00.09書いているだけなのが殆どでしょ。
想定してしたシグネチャのメソッドが無くても勝手に例外投げるから良いだろ、
みたいな感じ。
0614デフォルトの名無しさん
2011/12/11(日) 05:43:55.92> そうすると静的型付け言語よりも面倒になるから
そんなことないよ。
型アノテーションの仕組みを仕込めばいいだけ。
静的型言語で動的型的なことをするほうが遥かに面倒。
0615デフォルトの名無しさん
2011/12/11(日) 05:45:32.43そうそう、Javaプログラマはシグネチャさえ合ってればいいと
思ってるからコードの品質が低いよね。
0616デフォルトの名無しさん
2011/12/11(日) 07:16:09.99静的型でも、ちゃんと継承して変な挙動のメソッドを実装したクラス作って
そいつのインスタンスを渡したときに
ちゃんと変な挙動になるかどうかをテストすれば完璧だね
0617デフォルトの名無しさん
2011/12/11(日) 07:16:15.08http://ja.wikipedia.org/wiki/%E5%A5%91%E7%B4%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
この手の手法だよ、C#でも不完全だが実装されている。
コード中に引数や戻り値があるべき条件を書いておくと
コンパイラがそのコードを抽出して必要な位置に移動する仕組み。
引数に定数を渡した場合で仕様の範囲を外していたなど、コンパイル時に明らかなミスを除去できればデバッグは楽だね。
0618デフォルトの名無しさん
2011/12/11(日) 07:29:25.46それは堅牢性を求めるのであれば型アノテーション使って
入力値に関して動的型的なことをするのは諦めると言うことか。
0619デフォルトの名無しさん
2011/12/11(日) 07:38:21.46というか型アノテーションの無い言語ではどうするの?
0620デフォルトの名無しさん
2011/12/11(日) 07:38:21.90違うよ。
型アノテーションといっても、instanceofによるチェックだけでなく、
respondtoやisXYZによるチェックをしてもいいだろ?
デバッグやテスト用に、入力オブジェクトに関する単体テストを実行したっていい。
そういう色々な対応ができるのが動的型付言語。
引数の仕様の記述を言語仕様で規定している静的型付言語では
その言語の型システムに縛られて、上記のような柔軟なチェックは難しい。
0621デフォルトの名無しさん
2011/12/11(日) 07:41:12.51作ればいい。簡単な話だ。
pythonのdecoratorのようなメタプログラミング機能があればそれを使う。
なければ、プリプロセッサを書いてもいいし、
型アノテーションをコメントに埋め込んで、
IDEが設定に応じてそれを関数本体部に埋め直してもいい。
せっかく柔軟な動的型付言語をつかうんだから、
言語仕様も処理系もIDEの役割分担も、柔軟に考えたほうがいい。
0622デフォルトの名無しさん
2011/12/11(日) 07:45:27.030623デフォルトの名無しさん
2011/12/11(日) 07:50:19.24そういう、「〜〜すればいい」「〜〜できる」「〜〜してもいい」
というようなテクニックを、プロジェクトごとに、あるいは会社ごとに、
いちいち再発明しなければいけないというのは、非常に効率が悪い。
標準、あるいはコミュニティによるデファクトスタンダードでも構わないが、
ともかくフレームワークとして提供されていてほしい。
というのが、ドカタ視点で期待すること。
やればいい、できる、これはコスト無視の趣味グラマの発想。
ドカタにとっては時間=金なので、最初に天秤ありき。
0624デフォルトの名無しさん
2011/12/11(日) 07:51:53.880625デフォルトの名無しさん
2011/12/11(日) 08:06:15.86作ったものを育てながら使うという発想がないのだろうか?
0626デフォルトの名無しさん
2011/12/11(日) 08:08:47.25最初の障壁。
なんで俺が作らないといけないんだろう。
これを甘えと言うのが趣味グラマ発想。
仕事なら、そこから作らなきゃいけないならJavaでやる方が早い。となるだけ。
0627デフォルトの名無しさん
2011/12/11(日) 08:15:30.84型チェックのデコレータなんて5分もあれば作れるんだから
全然ペイしない
0628デフォルトの名無しさん
2011/12/11(日) 08:15:35.05インフラになってくる部分は特に。
既に安定している実装があればそれを使いたいところだ。というか、無いの?
0629デフォルトの名無しさん
2011/12/11(日) 08:20:34.90趣味としてなら、車輪を「より美しく再実装」するのは
純粋にプログラミング領域に専念できる楽しい作業。
極論すれば、再実装できる車輪が沢山残されている言語ほど
魅力的だとも言える。
仕事では、「美しい」というのはユーザにとっての価値にならない。
「金」のためのプログラミングなら、汚くても車輪が揃っている言語の方がよい。
「金」と「楽しさ」と両方いいとこ取りしようとするのは感心しない。
0630デフォルトの名無しさん
2011/12/11(日) 08:22:09.820631デフォルトの名無しさん
2011/12/11(日) 08:23:34.10>IDEが設定に応じてそれを関数本体部に埋め直してもいい。
こういうの、あるの?
0632デフォルトの名無しさん
2011/12/11(日) 08:35:16.45> 仕事では、「美しい」というのはユーザにとっての価値にならない。
仕事だからこそ、質の高いコードを効率的に書くんだろ。
ありもの使って結果だけ出ればいいというのは趣味グラマまでで
卒業してくれよ。たのむから。
デコレータ系のようなメタプログラミングライブラリや
コードチェッカー系やプリプロセッサ系のツールは
蓄積するごとに質の高い仕事ができるようになる。
趣味でやってるならともかく、仕事でプログラミングするんなら
当然皆やってることだろ。ドカタ以外は。
0633デフォルトの名無しさん
2011/12/11(日) 08:36:24.99xUnit とか自分の組織で再実装してますか?そういう問題なのですが。
0634デフォルトの名無しさん
2011/12/11(日) 08:37:38.27それ以外のことは仕事だと思ってないんだよ。
0635デフォルトの名無しさん
2011/12/11(日) 08:37:58.44どの組織でも使うようなものは、全世界のプログラマが協力してOSSとして共有する。
この基本理念を理解できていない人?
0636デフォルトの名無しさん
2011/12/11(日) 08:38:14.73なんでそこで再発明の話になるわけ?どこまで馬鹿なん?
0637デフォルトの名無しさん
2011/12/11(日) 08:39:42.43各言語が何を目指しているかの指向性が出るのであって、
それが、Javaは比較的、ビジネスを指向している。
動的型付け言語はJavaに比べると、そうではない。
比較のために言えば、関数型言語とか論外。
0638デフォルトの名無しさん
2011/12/11(日) 08:39:58.67そうだよね、動的型付け言語では良いプラクティスを支援する
ちょっとしたコードを共有する習慣があるのは、普通のことだよね。
Javaドカタには理解できないだろうけど。
0639デフォルトの名無しさん
2011/12/11(日) 08:40:30.58俺は好きな言語でプロトタイプ開発&フレームワーク開発&仕様決定をやって
すごく楽しいのに、下っ端連中は給料1/3でJava使わされてるわ
0640デフォルトの名無しさん
2011/12/11(日) 08:41:04.76>IDEが設定に応じてそれを関数本体部に埋め直してもいい。
これ共有されてますか?具体例を無視しないで教えて。
0641デフォルトの名無しさん
2011/12/11(日) 08:42:27.66>プロトタイプ開発&フレームワーク開発&仕様決定
その好きな言語が動的型付け言語なら、スレタイどおりで語るに落ちたというところだが。
0642デフォルトの名無しさん
2011/12/11(日) 08:42:57.830643デフォルトの名無しさん
2011/12/11(日) 08:49:10.05さあ、他人はどうか知らんけど、オレは10年前から愛用してるよ。
コメントに検査コードを埋め込んで、それを実行するというアイデア自体は昔からある。
昔はCで行われていたし、
Eiffelの表明検査のON/OFFもコンパイラが同じことしてる。
他にも関数や手続きの冒頭のコメントに検査コードを埋めておくことは
結構多くの言語で実践されているプラクティスだと思うが?
0644デフォルトの名無しさん
2011/12/11(日) 08:50:21.35それを何故公開しないのですか?
0645デフォルトの名無しさん
2011/12/11(日) 08:50:36.00フレームワークは大規模開発ではないと言いたい?
どこまでユトリなんだよ・・・
0646デフォルトの名無しさん
2011/12/11(日) 08:50:49.420647デフォルトの名無しさん
2011/12/11(日) 08:51:03.09動的型付け言語の方が設計段階でのプロトタイピングといった
軽さ、素早さの求められる作業に向いていて、
上流工程の方が給料が高いという慣習と相関があるからですね。
大規模小規模という話とは関係がないのでは、
というかむしろ、動的型付け言語を使う人の方が給料が高いというのは、
動的型付け言語が小規模開発向けだということの証左ですよ。
給料の安い下流工程の方が大規模になるのだから。
0648デフォルトの名無しさん
2011/12/11(日) 08:51:39.34キミはどんなツールを公開しているんだい?
他人にクレクレ言ってばかりいないで、
自 分 が 何 を 貢 献 で き る の か
考 え て み ろ よ 。
0649デフォルトの名無しさん
2011/12/11(日) 08:52:15.470650デフォルトの名無しさん
2011/12/11(日) 08:52:52.98うわ、わかりやすいドカタ思考w
上流とか下流とか関係ねーよ
質の高い仕事をしたら高い工賃をとれる
それだけの話
0651デフォルトの名無しさん
2011/12/11(日) 08:54:39.65フレームワークは小規模であるべき。
オレオレフレームワークが巨大になるのは大企業でありがちだが、それは駄目な例。
0652デフォルトの名無しさん
2011/12/11(日) 08:55:33.79> 自 分 が 何 を 貢 献 で き る の か
というの発想をしなければ使えない言語は仕事では使えない。
0653デフォルトの名無しさん
2011/12/11(日) 08:56:27.92金の話なら、自分はプログラムを書かないので結構給料は高い。
0654デフォルトの名無しさん
2011/12/11(日) 08:56:45.36自分ではフレームワークを作ったことがなくて、
既存のフレームワークを使ってユーザコード書くことしかしていないから。
だから、フレームワーク=小規模という発想になるんだろうなw
0655デフォルトの名無しさん
2011/12/11(日) 08:57:04.700656デフォルトの名無しさん
2011/12/11(日) 08:57:20.800657デフォルトの名無しさん
2011/12/11(日) 08:57:26.730658デフォルトの名無しさん
2011/12/11(日) 08:57:27.91なるほど、プログラマじゃないから動的型付けの良さがわからないのか。
0659デフォルトの名無しさん
2011/12/11(日) 08:58:17.30「仕事」の前に「ドカチン」が抜けてますよ!
0660デフォルトの名無しさん
2011/12/11(日) 09:00:20.42Hadoopとかもクソなんですか?
0661デフォルトの名無しさん
2011/12/11(日) 09:01:35.960662デフォルトの名無しさん
2011/12/11(日) 09:04:37.50関数型言語でも使ってろよ、書くまでも無く問答無用で全部constだw
0663デフォルトの名無しさん
2011/12/11(日) 09:05:53.17オレオレフレームワークが巨大なのはよくない。
なぜOSSならよくてオレオレなら駄目かといえば
OSSは「〜〜を使える人」という条件を付けてもプログラマが集まるが
企業内フレームワークでそれをやるとアウトソースしにくくなるから。
0664デフォルトの名無しさん
2011/12/11(日) 09:10:53.19自分でもコード書く仕事してる連中と、
下っ端率いるのが仕事の牢名主では
言語に対する評価軸が違うのは当然
0665デフォルトの名無しさん
2011/12/11(日) 09:12:27.29何故煽られるのかわからないが、全部 const なのは不便で論外だ。
const であるべきものに const と表明できることに意味がある。
もちろん、その表明をチェックすることまで含めて。
そのチェックが実行時でもまあいいのだが。
const x = 1;
x++;
この x++ をエラーでも例外でも何でもいいから弾いてほしい。型とは無関係。
function setX(x) { this.x = x; }
function foo(x) const {
setX(x);
}
foo(x) の中での setX(x) の実行をエラーでも例外でもいいので弾いてほしい。
型とは無関係。
0666デフォルトの名無しさん
2011/12/11(日) 09:16:19.32でもスレタイとは直交したネタでもある。
0667デフォルトの名無しさん
2011/12/11(日) 09:16:30.58本当にわかりやすいドカタ思考だな
HadoopだってHBaseだってMongoDBだって元はオレオレフレームワークだろが
0668デフォルトの名無しさん
2011/12/11(日) 09:20:33.34そうだよ。元はね。
公開したというのが本質。
0669デフォルトの名無しさん
2011/12/11(日) 09:22:47.03俺も理論的には直交している気がするが、
今現在世の中で使われている言語、という条件をつけると直交していないと思う。
0670デフォルトの名無しさん
2011/12/11(日) 09:24:17.80さらに補強すると公開しただけではなく公開後も生き残った選抜済みの
OSSであり、当面は死なないだろうという事も期待できるのが重要。
区別はすべき。
0671デフォルトの名無しさん
2011/12/11(日) 09:30:34.32そうだね、区別することは大事だ。
仕事で開発してるフレームワークだからといって、
非公開フレームワークとは限らないし、小規模フレームワークとも限らない。
ドカタでなければ普通に区別できるはずだが、
どうもこのスレには区別できない人がいるらしい。
0672デフォルトの名無しさん
2011/12/11(日) 09:31:37.710673デフォルトの名無しさん
2011/12/11(日) 09:33:40.52かわいそうに
0674デフォルトの名無しさん
2011/12/11(日) 09:39:02.42そういう議論をしたいなら名乗れる場所でやらないと意味がない
0675デフォルトの名無しさん
2011/12/11(日) 10:02:47.17より絶望的な思いをする事の多い言語=大規模開発に向かない
そういうことが比較的少ない言語=大規模開発に向く
自分が書くなら好きな言語で書くのが一番効率がいい。当たり前
0676デフォルトの名無しさん
2011/12/11(日) 10:06:05.76そういうことなら動的型付言語のほうが大規模開発に向くな。
赤の他人のオレオレクラスやオレオレインターフェースへの絶対服従を要求される静的型付言語より
柔軟に自分のコードに置き換えていける動的型付言語のほうがずっとマシ。
0677デフォルトの名無しさん
2011/12/11(日) 10:13:25.870678デフォルトの名無しさん
2011/12/11(日) 11:04:05.54要するに静的型付け言語になれってことじゃないかw
静的型付け言語で動的型付け言語みたいなことをするのは簡単。
実際に出来る。Object型にキャストすればいいだけ。
0679デフォルトの名無しさん
2011/12/11(日) 11:06:45.70柔軟に自分のコードって・・・
お前、自分一人で開発してんのか?
それは小規模っていうんだぞ。
いいか、お前の言っているのことは
お前が書いたコードを、他人のコードに変更される
ということを意味してるんだぞ
どこが大規模に向いているんだよ。逆じゃないか。
あと、奴隷根性は卒業しろ。絶対服従を要求される。
それはお前がやってることの立場が低いからだ。
要求する立場(アーキテクト)になれ。
0680デフォルトの名無しさん
2011/12/11(日) 11:20:48.12そのObject型にキャストするという素晴らしいアイデアで
>>423と同じコード書いてみて
0681デフォルトの名無しさん
2011/12/11(日) 11:25:32.110682デフォルトの名無しさん
2011/12/11(日) 11:28:52.72それは、Objectにキャストしないで実装できるだろw
インターフェース持たせればいい。
0683デフォルトの名無しさん
2011/12/11(日) 11:29:39.11前者は LOC で計測される概念
後者は人数・組織数・年数で計測される概念
0684デフォルトの名無しさん
2011/12/11(日) 11:34:01.52なぜなら大規模なのは機能が多いだけだからだ。
機能が多い=単純に画面が多いと考えてもいい。
基本的に似たような処理で作れるものなので
単純作業といってもいい。
こんな所で俺の腕の見せ所だなんて言ってるのが
動的ドカタ。単純作業を本当に単純作業にすると
腕の見せ所がなくなるから強く反対している。
0685デフォルトの名無しさん
2011/12/11(日) 11:34:12.94動的な型を勘違いしてないか?
0686デフォルトの名無しさん
2011/12/11(日) 11:36:16.89あってるよ。
動的な型なんて必要性は殆ど無く、
インターフェースがあれば代用可能なもの。
どうしても必要な場合ってのはまず無いが
そういう時にはキャストすれば良い。
0687デフォルトの名無しさん
2011/12/11(日) 11:36:49.580688デフォルトの名無しさん
2011/12/11(日) 11:37:25.72え?
0689デフォルトの名無しさん
2011/12/11(日) 11:39:31.65なにがあるの?
0690デフォルトの名無しさん
2011/12/11(日) 11:40:10.20evalだけ。あんなものは普通使わん。ハックぐらい。
0691デフォルトの名無しさん
2011/12/11(日) 11:42:32.62自演ですか?
理解できないのを誤魔化さないように。
0693デフォルトの名無しさん
2011/12/11(日) 11:48:04.34>叩き台を叩いて壊すのが専門という人はどこでも厄介なものです
叩き台を良くする人=eval 以外の「インターフェースや継承なんかで対応できないもの」を書く。
叩き台を叩いて壊す人=691
0694デフォルトの名無しさん
2011/12/11(日) 11:48:23.06Scala の implicit def なら分かるが、インターフェース?
何を言ってるんだ?
0695デフォルトの名無しさん
2011/12/11(日) 11:48:51.920696デフォルトの名無しさん
2011/12/11(日) 11:50:44.35静的型付けにできれば、強力なチェックが行えるのでこの辺り実行時と言わずコンパイル時エラーにできるとデバッグは楽になるし
インテリセンスなんかも作れるのではないかと妄想したりする。
無知が吠えているので書いても流されるんだろうな、勉強すればいいのに・・・
0697デフォルトの名無しさん
2011/12/11(日) 11:51:22.52お前がやってることは単純作業って言ったら可哀想だろうw
0698デフォルトの名無しさん
2011/12/11(日) 11:53:21.43ぶっちゃけお前みたいな知恵遅れが居ると静的型付けを語れないんだよ、死ね無知
0699デフォルトの名無しさん
2011/12/11(日) 11:54:10.22語ればいいだろ。
0700デフォルトの名無しさん
2011/12/11(日) 11:58:56.59発言を抽出すると、S/N 比が抜群に高まるということが経験的にわかっているので、
興味のあるスレッドを登録して個人的に運用中です。
0701デフォルトの名無しさん
2011/12/11(日) 12:24:52.31動的型付け言語のオープンクラスに近いことが出来るようになってきてる
もちろん、継承とインターフェースとObject型へのキャストで十分とか
言ってる馬鹿には無用の機能なので、ドカタ専用言語Javaには実装されてない
0702デフォルトの名無しさん
2011/12/11(日) 12:26:43.48はい、みなさん、わかりましたね。
静的型付けでもC#の拡張メソッドやScalaのimplicit conversionのようなことが
できるんです。
0703デフォルトの名無しさん
2011/12/11(日) 12:39:01.600704デフォルトの名無しさん
2011/12/11(日) 12:39:41.24動的型連合国への無条件降伏だよなw
0705デフォルトの名無しさん
2011/12/11(日) 12:40:09.72いいから涙を拭けよw
0706デフォルトの名無しさん
2011/12/11(日) 12:42:15.51静的型付けをやめたわけじゃないんだから
降伏じゃないだろw
静的型付け言語には動的型付け言語の機能を
取り入れられるがその逆はできない。
もし最強の言語があったとしたら
それは静的型付け言語を進化させたものになるだろう。
0707デフォルトの名無しさん
2011/12/11(日) 12:44:16.42近づこうとしている。
0708デフォルトの名無しさん
2011/12/11(日) 12:46:34.02根本的に再設計が必要になるからね。
捨てるのは簡単だけど、抜けてる型情報を補うのは大変。
0709デフォルトの名無しさん
2011/12/11(日) 13:03:55.48犬猫子供を出せば、馬鹿は見るだろ?
某テレビ局在日社員
0710デフォルトの名無しさん
2011/12/11(日) 13:27:22.64> 静的型付け言語には動的型付け言語の機能を
> 取り入れられるがその逆はできない。
逆だよ。
動的型付け言語には静的型付け言語の機能を取り入れることが出来る。
型アノテーションや型推論が好例。
しかし静的型付け言語に動的型付けの自由度を取り入れることは困難だ。
なぜなら、静的型付け言語の表現能力は、静的型の検証性に依拠しており、
動的型付けで表現可能なプログラムの集合を完全に被覆することはできない。
理論上不可能なんだよ。
0711デフォルトの名無しさん
2011/12/11(日) 13:34:14.86掘り返すようだがプログラミング言語には知能があってはいけない
言われたことのみを従順に行う
0712デフォルトの名無しさん
2011/12/11(日) 13:37:53.42アイデアが浮かばん人は言われたとおりやってればいいけどな。
0713デフォルトの名無しさん
2011/12/11(日) 13:42:35.81それは仕様をより複雑にしてカオスになった上の自由を獲得しようとしている。
だから、複雑怪奇な言語に見える。
C++の失敗を再び犯そうとしてるのがScalaという印象が強いんだよな。
自由や柔軟でぴか一のLispのそれは、S式だからという事はよく言われてるけど
そのとおりだな。これはよく反論もあるようにわからない人に説明しても無駄
という事だと考えている。やっぱりすべてがS式で表されるという強力さだから。
LispとCをやっておけば大抵の言語は習得期間は短いと思う。ML系やSmalltalk
はどっちにも似てないから例外だが
0714デフォルトの名無しさん
2011/12/11(日) 13:44:06.39> 型アノテーションや型推論が好例。
お前馬鹿じゃないのか?
型アノテーションは実現不可能なアイデア。
だからそんなのを実装している動的型付け言語はない。
型推論は、あれは静的型付け言語に付ける機能だw
0715デフォルトの名無しさん
2011/12/11(日) 13:45:27.29自由で言えばアセンブラが一番自由だろうさ。
だが自由ってのはgotoと同じで管理不能になりやすい。
だからそこにルールを持ち込むんじゃないか。
0716デフォルトの名無しさん
2011/12/11(日) 13:54:24.00たとえば、
var hoge; の代わりに Hoge hogeって書くのかい?w
あ、Javaのアノテーションのように
@class Hoge
var Hoge;
と書けばいいのかい?
Hoge hogeと書いたほうが楽そうに見えるけど
型アノテーションのメリットは何だい?w
0717デフォルトの名無しさん
2011/12/11(日) 13:55:19.87こうだろ
0718デフォルトの名無しさん
2011/12/11(日) 14:13:14.250719デフォルトの名無しさん
2011/12/11(日) 14:19:16.090720デフォルトの名無しさん
2011/12/11(日) 14:30:18.84ドカタじゃないことはよく分かっているわけで、
多分下流工程の作業をさしてドカタって言ってるだろう。
下流工程を、Javaでやればドカタで、動的型付け言語でやればドカタではない。
そう思いたいんだろうね。
ドカタとうるさい奴って、そいつがやっている仕事は、下流工程なんだろう。
0721デフォルトの名無しさん
2011/12/11(日) 14:41:10.95Java市か知らないアーキテクト何てのは全然信用できないけどな
0722デフォルトの名無しさん
2011/12/11(日) 14:42:34.55やっぱり、下の立場から見た感想言うんだね・・・。
自分がなればいいのに。
0723デフォルトの名無しさん
2011/12/11(日) 14:44:43.21Pypyの実装に使われてるRPythonは
Pythonの純粋なサブセットで型推論付き
もちろん推論するのに型アノテーションなど必要なし
0724デフォルトの名無しさん
2011/12/11(日) 14:47:51.390725デフォルトの名無しさん
2011/12/11(日) 14:48:20.68全く設計できないけどな
支離滅裂な日本語をコードに変換しろとドカタのケツを叩くだけ
さらに上流の俺等はそういうアホ共を牢名主と馬鹿にしてるってわけ
0726デフォルトの名無しさん
2011/12/11(日) 14:49:54.310727デフォルトの名無しさん
2011/12/11(日) 14:51:21.49RPythonとはなんですか?
RPythonとはPythonの制限されたサブセットです。これはPyPyツールチェーンの中で
動的言語インタープリタを実装するのに使われます。制限のお陰でRPythonプログラムの型推論が出来ます。
(またそれによって究極的には他の言語へトランスレートできます)
"RPythonになる"という特性は関数やモジュール1つではなく常にプログラム全てに適用されます。
(トランスレーションツールチェーンはプログラム全体の解析を行います)トランスレーションツールチェーンは全ての呼び出しを再帰的に追って、何がどのプログラムに所属していて、何がそうでないかを見つけ出します。
RPythonプログラムは任意の方法での混合型の使用を制限します。
RPythonは1つの変数に対して2つの異なる型を束縛することを許可しません。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
この観点から(そしてほかの観点からも)Javaに似た感じがします。
RPythonで許可されていない他の特徴としては、
__init__, __del__ 以外のスペシャルメソッド(__xxx__)の利用です。リフレクションも使えません。(__dict__など)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RPythonからはほとんどの標準ライブラリも使えません。例外はネイティブサポートがあるos, math, timeの一部の関数です。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RPythonの制限についてもっと知りたい方はRPythonの説明を読んで下さい。
http://d.hatena.ne.jp/ymotongpoo/20111206/1323163518
0728デフォルトの名無しさん
2011/12/11(日) 14:54:21.53だってRPythonは静的型付け言語だもの
0729デフォルトの名無しさん
2011/12/11(日) 14:56:44.22元々動的型付にリファクタリングツールは殆ど機能しないけれども・・・
挙動の同一性を保障しながら、引数の順序や名前を置換する一般的な方法は動的型付は不可能
>>701
自演だろう、知恵遅れなのは見え見えだよ
0730デフォルトの名無しさん
2011/12/11(日) 14:57:16.22> 型アノテーションは実現不可能なアイデア。
!!!!!!!!!!!!!!!!!!!!!!!
こいつ面白すぎ
0731デフォルトの名無しさん
2011/12/11(日) 14:59:29.62反論すべきではないか?
0732デフォルトの名無しさん
2011/12/11(日) 15:00:25.330733デフォルトの名無しさん
2011/12/11(日) 15:05:40.78ドカタの現場監督「おれはドカタじゃない!」
0734デフォルトの名無しさん
2011/12/11(日) 15:11:02.98LINQで書かれたソースはC#のソースなのでキチンと置換されてくれる事。
これが文字列として記述されていると、そこで挙動の同一性を保持したまま各種変更を加える事は極めて困難になる。
その文字列がSQLかどうかなど判断したり解析したりするツールなんて思いつかないしね。
本体の言語から、まったく別のシステムまで型システムが貫通するとこういう事もできるようになる。
0735デフォルトの名無しさん
2011/12/11(日) 15:13:58.98つまりLINQはその程度の存在でしかないのか。
0736デフォルトの名無しさん
2011/12/11(日) 15:15:11.28SQL で記述可能な任意のクエリを C# の LINQ で書けるということは保証されていますか?
それがないなら LINQ は「所詮」C# のサブセットでドカタ向きですね。
という不毛な議論を、動的型と静的型の極右と極左が延々をやってるだけ
0737デフォルトの名無しさん
2011/12/11(日) 15:17:37.490738デフォルトの名無しさん
2011/12/11(日) 15:17:50.18その程度の存在なのかどうかは保守をした時に判るよ、知恵遅れでもな。
0739デフォルトの名無しさん
2011/12/11(日) 15:19:11.81俺、下っ端共が使ってる言語なんて全く興味ないわ
もちろん下っ端が使ってるIDEにも興味無し
お前、自称上流行程担当のわりにJavaやらIDEに拘ってるように見えて
俺にはそれが不思議で仕方ないわ
0740デフォルトの名無しさん
2011/12/11(日) 15:23:00.53一言も書いていませんが?
それはともかく、使う言語や開発環境を決めるのも
アーキテクトの重要な仕事ですがなにか?
0741デフォルトの名無しさん
2011/12/11(日) 15:25:26.31なんの気兼ねも無く、メニューからチョチョイと変更加えるだけで終わってしまうというのは色々衝撃的だったね。
0742デフォルトの名無しさん
2011/12/11(日) 15:25:38.40反論するまでもないだろ
マジでおもしろすぎる
0743デフォルトの名無しさん
2011/12/11(日) 15:25:49.100744デフォルトの名無しさん
2011/12/11(日) 15:28:05.87ある人はEclipseを使い、ある人はNetBeansを使うってことになる。
もちろんそれが駄目というわけじゃない。
それを許すなら許すで、違うIDEのプロジェクトファイルを
どう共有するかって話になる。
こういうのは上から決めること。
0745デフォルトの名無しさん
2011/12/11(日) 15:29:42.41untyped language というのは全ての値が型無しポインタのようなもの
*x = 2.25;
*y = sqrt(x);
sqrt(x) はポインタ x の指す先が double を表現するビット列だと思って動くだけ。
x の指す先が 2.25 を表現するビット列なら 1.5 というビット列を指すポインタが戻される。
*x = 'a';
*y = sqrt(x);
こう書いても、x の指す先に double を表すビット列が格納されていると思って、
ポインタ y が戻される。もちろん、この場合は y の指す先のビット列を double と思って解釈すれば
意味不明な数値になるだろうが、それは呼ぶ側の責任。呼ばれる側は知らない。
これが untyped な世界です
これじゃあいくら何でも・・・なので、
すべてのポインタの指す先に、型ごとに決められた特定のビットパターンを埋めることにして、
データ本体はそのパターンの後に書くことにしましょう。
関数側は、ビットパターンを検査することで、期待した値が渡されたかどうかはチェックできるようにしましょう。
これが動的型付けの世界。
型無しの世界は、あるビットパターンを int と思って解釈した時と double と思って解釈したときで
異なる挙動をするような曲芸的なプログラミングも可能です。
まあドカタは動的型付けでやってりゃいいです。
0746デフォルトの名無しさん
2011/12/11(日) 15:30:22.39だろ?
Ralph Johnsonのグループがリファクタリングブラウザを開発した時、
JavaだのC++だのやってた連中は
「ソースコードは自分で書くのがプログラマだ」とか
「そんな誰でも出来る単純な変換が役に立つものか」とか
アサッテな発言していたっけ。
もちろんOOやってない連中などは全く理解できずにポカーンとしてた。
0747デフォルトの名無しさん
2011/12/11(日) 15:31:21.86ネタにしてもつまらなさすぎ。
0748デフォルトの名無しさん
2011/12/11(日) 15:31:37.87同じλ式でもC++のλ式ではかけ橋を作ることができない、C++もどうせ拡張するのならそういう点を考えて拡張すればいいのに・・・
0749デフォルトの名無しさん
2011/12/11(日) 15:33:34.26今は、型チェックをするのはプログラマの仕事
とかいう動的ドカタが増えたな。
0750デフォルトの名無しさん
2011/12/11(日) 15:33:35.53プログラマに数学はいらないぐらい、
アーキテクトにプログラミングは必要ないよな。
0751デフォルトの名無しさん
2011/12/11(日) 15:35:44.26「これが動的型付けの世界(キリリッ」
と書くのは結構だけれども、
コード例がCのキャストを使った例という時点で、実際には
「これが静的型付けの世界」だったという罠。
型安全な動的型付けでは、そんなつまらんキャストないよ。
データ自身が型情報を持っているから、キャストせずにコアージョンする。
データ自身に型情報が無いために妙なキャストをするのは静的型付けだけ。
0752デフォルトの名無しさん
2011/12/11(日) 15:36:29.71untyped lambda をエミュレートできるという豆知識
0753デフォルトの名無しさん
2011/12/11(日) 15:37:26.530754デフォルトの名無しさん
2011/12/11(日) 15:37:46.05アーキテクトの仕事わかってないんじゃないのか?
わかりやすく言えばフレームワークを作るのが
アーキテクトの仕事だよ。
もちろんフレームワークを1から作るのではなく
既存のものを選定する作業から始まるけど、
既存のものは足りない機能が多々ある。
それを補うものを作るのもアーキテクトの仕事。
だから高度のプログラミング能力が必要になる。
その結果、フレームワークを使う側は単純作業的な仕事になる。
それを阻止したがってるのが動的ドカタ。
単純作業にされるのをいやがってる。
0755デフォルトの名無しさん
2011/12/11(日) 15:38:20.20実行時に型を調べるのが動的型付けの本質ですよ。
そのくらいのことも知らずに語ってるのですか?
0756デフォルトの名無しさん
2011/12/11(日) 15:38:49.19> 今は、型チェックをするのはプログラマの仕事
そうそう
instanceofスキーな静的型ドカタが
if文にinstanceofを直書きすることに固執してたな
動的型言語のプログラマは型チェックは最小限で最大の柔軟性を保とうとする。
どうしてもプログラム中に型を決め打ちして型チェックをせずにいられないのが静的型ドカタ
0757デフォルトの名無しさん
2011/12/11(日) 15:38:56.770758デフォルトの名無しさん
2011/12/11(日) 15:39:38.20お前はアーキテクトにはなれないよ、仮になったら色々な人に迷惑だからやめてほしいし。
0759デフォルトの名無しさん
2011/12/11(日) 15:39:49.21メソッドのシグネチャで型チェックできるから、
instanceofはいらないぞ。
0760デフォルトの名無しさん
2011/12/11(日) 15:41:11.39いや、動的型言語では、型情報を参照するのは処理系だけ。
プログラムには出来る限り型チェックをさせない。
型チェックするにしてもinstanceofのようなnominalな検査はしない。
respondtoやisXYZのような動的な検査をする。
キミさ、無知にも程があるよ。
0761デフォルトの名無しさん
2011/12/11(日) 15:42:08.25ナローキャストはinstanceofの一種だ。知らずに使ってるのか?
0762デフォルトの名無しさん
2011/12/11(日) 15:42:16.35馬鹿だなあ。型の話をしているのに「処理系」とか出てくる時点で、
理論と実装がごっちゃになっている。
0763デフォルトの名無しさん
2011/12/11(日) 15:43:30.87いや、現に俺がアーキテクトで成果を上げてるからw
はっきり言うね。日々の開発ってのは単純作業であるほうがいい。
最初にアーキテクチャをきちんと決めて、
日々の開発(単純だが量が多い)をシンプルにすることで
バグは減り開発スピードも上がる。
そういった部分にクリエイティブさを求めるな。
単純作業が嫌なら、上の立場になればいい。
自分のやってる仕事が単純作業にされてしまう立場のお前と違って、
俺は、単純作業にする側の立場だ。
単純作業にするために、フレームワークを作る側と同じで
クリエイティブな作業を行なっている。
0764デフォルトの名無しさん
2011/12/11(日) 15:43:53.43馬鹿だなあ。
型システムの話をするのに処理系が無関係だなんて、どこまでドカタなんだ?
型推論、静的型検査、動的型検査、どれを取っても処理系とは切り離せないぞ。
0765デフォルトの名無しさん
2011/12/11(日) 15:44:57.50操作的意味論って知ってるか?www
0766デフォルトの名無しさん
2011/12/11(日) 15:45:16.92馬鹿だなあ。型システムは言語が決めるもので、処理系が決めるものではないよ。
0767デフォルトの名無しさん
2011/12/11(日) 15:46:02.21知ってる専門用語だけ並べなくてもいいから。
denotational semantics, axtiomatic semantics, operational semantics
一応全部知ってるけど
0768デフォルトの名無しさん
2011/12/11(日) 15:46:24.740769デフォルトの名無しさん
2011/12/11(日) 15:46:38.020770デフォルトの名無しさん
2011/12/11(日) 15:46:41.070771デフォルトの名無しさん
2011/12/11(日) 15:47:05.80あんたはITアーキテクトとしては底辺ですわ。ドカタのほうがマシ。
だってITなんて自動化が本質だもの。それを単純作業化ってw
0772デフォルトの名無しさん
2011/12/11(日) 15:47:14.830773デフォルトの名無しさん
2011/12/11(日) 15:48:10.31自動化って単純作業の究極系だろw
0774デフォルトの名無しさん
2011/12/11(日) 15:48:12.24動的型付け言語は実行時システムが型付き
0775デフォルトの名無しさん
2011/12/11(日) 15:48:35.390776デフォルトの名無しさん
2011/12/11(日) 15:49:40.46先手を打ったつもりだろうが、それは無視するわけにはいかんな。
静的型付け言語でもRTTIといって
実行時に型情報を持っているのが多い。
つまり>>774は間違い。
0777デフォルトの名無しさん
2011/12/11(日) 15:51:17.26自動化できる事をドカタにやらせる=コストが高い。
0778デフォルトの名無しさん
2011/12/11(日) 15:51:38.46お前の言っている、自動化できること。って何のこと?
0779デフォルトの名無しさん
2011/12/11(日) 15:52:10.44テストは自動生成できる。
んな馬鹿な!w
0780デフォルトの名無しさん
2011/12/11(日) 15:52:53.54静的型付け言語でRTTIを使うのは動的型付け言語でinstanceofを使うようなものです
0781デフォルトの名無しさん
2011/12/11(日) 15:53:33.81>型無しの世界は、あるビットパターンを int と思って解釈した時と double と思って解釈したときで
>異なる挙動をするような曲芸的なプログラミングも可能です。
intという解釈とdoubleという解釈する関数があったとして、呼び出しを分ける必要があるだろうから
ただ無駄に苦労してるだけのような
0782デフォルトの名無しさん
2011/12/11(日) 15:53:43.59あー、新人君でいたな。
テスト自動化の話をしたら、
テストを自動で作ってくれるものと勘違いしていた人w
テスト(コード)を書くのはもちろん人間で、それを何度も実行できることを
テスト自動化っていうんだよって教えてあげた。
0783デフォルトの名無しさん
2011/12/11(日) 15:54:35.91明示的に使わなくても内部で勝手にやってくれるんだよね。
それって素敵じゃん?
0784デフォルトの名無しさん
2011/12/11(日) 15:55:58.700785デフォルトの名無しさん
2011/12/11(日) 15:58:23.54単純作業の事。
単純じゃないから人間にやらせてるんだろ。
0786デフォルトの名無しさん
2011/12/11(日) 16:00:18.44単純作業でも人間がやることはある。
自動化する道具がないならば人間がやるしかない。
例えば人間の言葉(仕様書)から
コードに変換する作業とかな。
0787デフォルトの名無しさん
2011/12/11(日) 16:00:29.66んなわきゃない。half adderは型なしか?
0788デフォルトの名無しさん
2011/12/11(日) 16:02:14.18それが本当に単純作業だと思ってるなら、
お前はずいぶんと人を馬鹿にしてるな。
0789デフォルトの名無しさん
2011/12/11(日) 16:02:15.69単純作業じゃないと思いたいから
静的型付け言語を嫌うんだな。
0790デフォルトの名無しさん
2011/12/11(日) 16:03:02.44RTTI使った事ねーのかよ
さっさとググってこい
0791デフォルトの名無しさん
2011/12/11(日) 16:03:02.56やっぱり単純作業と思いたくないんだな
下流のくせに。
0792デフォルトの名無しさん
2011/12/11(日) 16:03:31.380793デフォルトの名無しさん
2011/12/11(日) 16:03:56.75人間がやっている仕事の一つだよな。
人間がやってるなら複雑な仕事だって
思いたいだけじゃないの?
0794デフォルトの名無しさん
2011/12/11(日) 16:04:12.57半加算器は論理的にはビットを入出力とする関数ですね。何か?
0795デフォルトの名無しさん
2011/12/11(日) 16:04:27.810796デフォルトの名無しさん
2011/12/11(日) 16:05:02.12よくある話。
0797デフォルトの名無しさん
2011/12/11(日) 16:05:30.92ハンドアセンブルの猛者あらわる
0798793
2011/12/11(日) 16:05:42.15○レジ打ちとか、あれも単純作業だが、
0799デフォルトの名無しさん
2011/12/11(日) 16:06:18.11下流と上流の意味を完全に勘違いしてるな。
0800デフォルトの名無しさん
2011/12/11(日) 16:06:50.15動的型の長所が欲しくて欲しくて仕方なかったために
動的型付け言語の股をくぐってデータに型情報を持たせたのだろうなw
0801デフォルトの名無しさん
2011/12/11(日) 16:06:50.550802デフォルトの名無しさん
2011/12/11(日) 16:06:54.630803デフォルトの名無しさん
2011/12/11(日) 16:07:16.210804デフォルトの名無しさん
2011/12/11(日) 16:08:11.880805デフォルトの名無しさん
2011/12/11(日) 16:08:43.160806デフォルトの名無しさん
2011/12/11(日) 16:09:11.120807デフォルトの名無しさん
2011/12/11(日) 16:09:35.970808デフォルトの名無しさん
2011/12/11(日) 16:09:40.240809デフォルトの名無しさん
2011/12/11(日) 16:12:30.98静的ドカタは動的型付け言語を静的型付け言語のように使おうとして
上手くいかないのを動的型付けのせいにする。
静的ドカタはプログラミングの仕事を全てドカタ仕事だと思っている。
静的ドカタは動的型付け言語から発展した技術を静的型付けの利点だと勘違いしている。
0810デフォルトの名無しさん
2011/12/11(日) 16:14:23.31一般には逆だろ
0811デフォルトの名無しさん
2011/12/11(日) 16:17:24.50>>809のようなことにしたいのが
動的ドカタです。
0812デフォルトの名無しさん
2011/12/11(日) 16:19:10.78職業の種別なんてどうでも良くなる。
0813デフォルトの名無しさん
2011/12/11(日) 16:21:45.72最低レベル: assemblyやCの弱い静的型付け
ドカタ級: Javaなどの強いが抽象能力の低い静的型付け
懐古趣味級: 伝統的LISPやSmalltalk-80のナイーブな動的型付け
オナニー級: MLやHaskellの強く抽象能力の高い静的型付け
という順番だな。
これから実用になっていくのはJITや型推論を併用した動的型付け。
0814デフォルトの名無しさん
2011/12/11(日) 16:22:45.34>>813のようなことにしたいのが
動的ドカタです。
0815デフォルトの名無しさん
2011/12/11(日) 16:23:31.98でないことには未来はないだろう。
SmallTalk?あれは言語自体が終わっとるw
0816デフォルトの名無しさん
2011/12/11(日) 16:27:03.27リファクタリングの時点で静的型付けの機能が必要だと思うんだが。
0817デフォルトの名無しさん
2011/12/11(日) 16:33:00.08RTTIはJavaのReflectionなんかと違ってそういう使い道にはならないよ。
どっちかっていうと一部の処理の実装の為に仕方なく入ってるもの。
0818デフォルトの名無しさん
2011/12/11(日) 17:01:44.87a = 10;
func1(a);
a = "ABC";
func2(a);
オプティマイズをするコンパイラーならfunc1を抜けた時点で a は別の入れ物になる。どちらのaもint/stringで型は静的に決定する。
もっと深くても、例えば動的にフィールドやメソッドが追加されるようなオブジェクトでも、大抵は静的に決定しましまう事が多い。
型は大半コンパイラーには推論できてしまうんだ、僅かな例外が真の動的型付け的機能を必要としている。
0819デフォルトの名無しさん
2011/12/11(日) 17:02:00.23だから、静的型付け言語でもそれを補えば動的型付け言語の様に使える、もちろん僅かな例外は書けなくなるが・・・
もし大半の問題が静的型付け言語でも解決できるのであれば、静的型付け言語特有の強力なコンパイル時チェック
リファクタリング、テストの自動生成等を捨てて動的型付け的機能の利点を得るより
それを捨てて静的型付の表現能力を向上してる動的型付に負けないような利便性を追加した方が良いのではないかと思う。
0820デフォルトの名無しさん
2011/12/11(日) 18:03:17.37リファクタリングを語るなら、Smalltalkを勉強しなきゃ
Smalltalkerでもあるファウラーに蹴られるぞ 笑
0821デフォルトの名無しさん
2011/12/11(日) 18:15:28.32自分につばをぶっ掛けてるようなものだってなんでわかってなんだろうね。
アホだよな。GoFにしてもリファクタリングのことにしても、背後でOOPの
技術に貢献してきた人々を供給してきた源なのにね。
ぶっかけはAVだけにしておけ。
0822デフォルトの名無しさん
2011/12/11(日) 18:19:09.77終わっている言語から Traits とか Classboxes とかパクってドヤ顔してないで
勢いがある言語ならもっと新機軸を打ち出してこいって話だ。
0823デフォルトの名無しさん
2011/12/11(日) 18:52:01.05Classboxesを良さを理解出来ると思う?
0824デフォルトの名無しさん
2011/12/11(日) 19:15:04.72現在のオブジェクト指向の静的型付言語では、先にスーパークラス、或いはインターフェイスを作成しなければならない。
抽象的な思考を具体的な思考をする前に要求される訳で、これはどう考えても思考順序が逆順だ。
抽象化とは数多くの具体例から共通項目を抜き出して作られる筈なのに、具体項目が無いうちから抽象項目を作れば
当然、考慮していない問題、抜けは出てくるのである。
動的型付けではこれを上手くこなす事ができる、つまり作りながら考えるのに向いているとも言える。
逆に保守は難しくなる。
しかし・・・静的型付でも大きくなったライブラリに対して後から抽象化を行う事もできるのではないかと思う、文法の工夫次第で。
0825デフォルトの名無しさん
2011/12/11(日) 19:18:34.95どうしても一度作って捨てて、もう一度作り直さないと綺麗にならない、無駄だよね。
動的型付はこれを部分的に解決するよ。
0826デフォルトの名無しさん
2011/12/11(日) 19:24:31.10その辺の面倒臭さは無くなりそうな気がする
0827デフォルトの名無しさん
2011/12/11(日) 21:01:31.67Perl、PHP、Python、Rubyでできる
リファクタリングツールを教えて下さい。
自分で調べて見ましたが、クソなものしかありませんでした。
静的型付け言語に関しては優秀なリファクタリングツールを見つけたので不要です。
0828デフォルトの名無しさん
2011/12/11(日) 21:31:49.20ドカタでないのなら自分で作るのが当然
0829デフォルトの名無しさん
2011/12/11(日) 21:53:49.70素直に無いと言えよw
0830デフォルトの名無しさん
2011/12/11(日) 22:41:29.38実行時に挙動が決まる物を静的に解析するとか無理だし。
0831デフォルトの名無しさん
2011/12/11(日) 23:17:17.91だから無理やり動的型付け言語に、型判別(型推論)をつけようとすると
RPythonみたいに1つの変数に対して2つの異なる型を束縛することを許可しません。
ってなっちゃうわけだ。
0832デフォルトの名無しさん
2011/12/12(月) 04:53:51.950833495
2011/12/12(月) 05:32:57.16>例えば動的にフィールドやメソッドが追加されるようなオブジェクトでも、
>大抵は静的に決定しましまう事が多い。
本当に静的に決定しちゃったらエラーが出ると思います。
0834デフォルトの名無しさん
2011/12/12(月) 06:58:48.35> 1つの変数に対して2つの異なる型を束縛することを許可しません。
MLでは変数の再束縛出来るけど、大抵の静的型付け言語じゃこんなこと出来ないだろ?
お前の大好きなJavaでも出来ないじゃん。
0835デフォルトの名無しさん
2011/12/12(月) 07:20:45.95特に、「プログラム実行中について常に変わらない物」
こういった変わらないものの内「型」と言う情報はかなり圏論などを使ってシンプルに考察する事ができる。
文法でその変わらない「型」を明言してしまうのが静的型
しかし、実行中にはプログラム中で明言しなくても変化しない物もある。
明言しなくても変化しない物について、それを調査にあたって高速なアルゴリズムが存在するなら
それを使って変化しない物を抽出する事ができるだろう。
0836デフォルトの名無しさん
2011/12/12(月) 07:21:04.63それをヒントにしてインテリセンスの候補を限定する事により、コーディング作業の効率化ができるだろう。
関数の引数について範囲外の引数が来た時にコンパイル時エラーにしてしまえるかもしれない。
コンパイル時エラーに出来るのであれば、そんなテスト項目は無用の長物である、
自動テスト生成では生成項目からその手の項目は除外できるに違いない、テスト製作は大変な作業だ、効率化するだろう。
リファクターツールを作るのであれば、場合によっては何処を書き換えても動作の同一性が保障されるか確定できる所まで特定できるかもしれない。
変わらない物を探す強力なアルゴリズムが多くできれば、文法や型システムはもっと自由になれるに違いないと思う。
0837デフォルトの名無しさん
2011/12/12(月) 07:30:06.37かつては時間が掛るが詳細なチェックを行う物だったという話。
高速でなくても詳細調査を考える価値はあるかもしれない。
0838デフォルトの名無しさん
2011/12/12(月) 07:33:27.45どういうこと?
これはもちろん Java でもエラーにならない
int x = 1;
double x = 2.3;
System.out.println(x);
君の言っている再束縛ってどういう意味?もし
let x = 1 in
let x = 2.3 in
x
ということを言っているなら、これは上の Java と同じ。
次の lambda 式と同じで、二つの x は互いに無関係。
(lambda x -> (lambda x -> x) 2.3) 1
Java ではこれは書けないけど
int x = 1;
x = 2.3;
これと同様なことは x を mutable にして破壊的代入を行うということで、
ML でも無理だと思うのだけど。
動的型付け言語は変数に静的型を付けないので、もちろん普通にできる。
0839デフォルトの名無しさん
2011/12/12(月) 07:38:20.030840デフォルトの名無しさん
2011/12/12(月) 07:51:06.69> int x = 1;
> double x = 2.3;
これはねーよw
もう自分で突っ込んでるから良いけど
0841デフォルトの名無しさん
2011/12/12(月) 08:20:57.68クレームが入るってことは、
静的型ドカタも実は混合型を使いたいってことか
0842デフォルトの名無しさん
2011/12/12(月) 08:45:58.840843デフォルトの名無しさん
2011/12/12(月) 09:01:54.330844デフォルトの名無しさん
2011/12/12(月) 09:48:31.60仮定しか言ってないし、煙にまいてるだけ。
圏で表現できるならしろよ。
お前みたいのばっかだから圏論が数学屋に馬鹿にされんだよ。
0845デフォルトの名無しさん
2011/12/12(月) 10:23:55.650846デフォルトの名無しさん
2011/12/12(月) 11:05:24.49値依存型なんてのは駄目だな。
構文的な記述可能性と形式的な証明可能性がミスマッチ。
証明可能なことが事前に判っているトイプログラムならいいが、
未知な問題に対しては現実的ではないね。
0847デフォルトの名無しさん
2011/12/12(月) 11:21:38.590848デフォルトの名無しさん
2011/12/12(月) 11:22:07.92変わらないモノが多ければいいというのはイデオロギーだな。
決して普遍的な価値観ではないし、ましてやプログラミングの本質でもない。
少しでも多くのモノを変えられるようにしようというイデオロギーもある。
どちらもその文脈でのみ正しく、どちらも普遍的ではない。
0849デフォルトの名無しさん
2011/12/12(月) 12:48:26.48変わらない物が多い事が重要な事では無いんだ、変わらないというのは色々な対称性の軸の存在を意味している。
変わる物でも視点を変えると変わらなくなってしまう物もある、それを探し出す事が重要なんだ。
現実に変わる物が多いのなら、それはそのまま受け入れるべき。
これは・・・ちょっと難しいかもしれない
これが全てではないんだが対称軸を見つけると、そこから色々なツール群のアイディアが次々に出現するケースが多い。
0850デフォルトの名無しさん
2011/12/12(月) 13:06:37.99何かの目標を持ってプログラムしている人の作業手順とかい離して
枝葉末節だけに注目して・・・ここまでならいんだがその後タコ壺になると
理論はおもちゃ化するんだよ、きっと。
上で書いたが、今のオブジェクト指向のプログラムの順序は不自然にも最初に抽象度の高い所から書かなければならない
しかし、抽象度の高い物は沢山の具体例から共通点を抜き出して作られる筈。
それと証明可能性とか厳密とか、バグが出にくいとか、ましてや馬鹿よけなんてものは無関係だよね。
そこに注目して周りが見えなくなると、どんなに完ぺきな物でも役に立たない何かになるのだと思われる。
手段の目的化した末の末路の一種だね。
0851デフォルトの名無しさん
2011/12/12(月) 18:43:20.08> >>846
> 上で書いたが、今のオブジェクト指向のプログラムの順序は不自然にも最初に抽象度の高い所から書かなければならない
但し静的型付けに限る。
> しかし、抽象度の高い物は沢山の具体例から共通点を抜き出して作られる筈。
動的型付けオブジェクト指向なら、具体的な実装から始めて、後から抽象的なクラスを得ることが
とても自然に出来る。
0852デフォルトの名無しさん
2011/12/12(月) 22:29:20.65具体例で示して
出来るというだけじゃ誰も納得できるわけ無いんだから。
0853デフォルトの名無しさん
2011/12/12(月) 22:41:13.16たとえば、Javaだと適当に具体的なクラスを作って
リファクタリングブラウザで、簡単にインターフェースを抽出できるってところかな。
クラス(インターフェース)間のメソッドの移動が簡単にできるから
あとから抽象的なクラスを作りやすい。
あとから変更しても正しく抽象化できてないとコンパイルエラーになるから
最初に具体的な実装で書いておいて変更しやすい。
これぐらいかな。
0854853
2011/12/12(月) 22:43:13.03逆を書いていた。
書いたとおり逆に動的型付け言語の方が変更しにくいと思う。
テストがあるから間違いがあるのが分かるとはいえ、
間違いがあることが分かるだけで、具体的な箇所はわからないし、
その後の修正はどっちみち人間が手作業でやること。
0855デフォルトの名無しさん
2011/12/12(月) 23:56:53.43http://mamorenihon.files.wordpress.com/2011/09/kao-demo1.jpg
http://blog-imgs-34.fc2.com/d/e/l/deliciousicecoffee/201108040637592d3.jpg
http://tantawan.blog.so-net.ne.jp/_images/blog/_13f/tantawan/E88AB1E78E8BE4B88DE8B2B7-18690.jpg
http://stat.ameba.jp/user_images/20110820/18/lisa-w-paz/07/00/j/o0500032111430159404.jpg
http://livedoor.blogimg.jp/news30over/imgs/c/3/c3860b80.jpg
0856デフォルトの名無しさん
2011/12/13(火) 04:42:54.31>>853に書いてあることも当然できる上に、
抽象クラスの定義、スーパークラス変更、メソッドの移動を
実行時に行うことすらできるね。
もちろん生成済みのオブジェクトのクラスも
実行時リファクタリングに応じて変更できるよ。
静的型付け言語に、こういうことはできるのかな?
0857デフォルトの名無しさん
2011/12/13(火) 06:12:30.54特定できるの?
0858デフォルトの名無しさん
2011/12/13(火) 06:25:11.42どんな種類の影響?
0859デフォルトの名無しさん
2011/12/13(火) 06:58:02.56変数宣言の抜けや重複は普通に判る。
応答可能なメソッドの増減も普通に判る。
isKindOf:等を介した問い合わせの影響も、
どのクラスとのisKindOf:関係が変化したか普通に判る。
まあJava辺りの静的型検査で判る程度のことは大概、事前にチェック可能だよ。
0860デフォルトの名無しさん
2011/12/13(火) 06:59:52.830861デフォルトの名無しさん
2011/12/13(火) 08:05:32.53実行時リファクタリングって意味不明なんだが。
Smalltalkでできるというのはいいとして、
それはRubyやPHPなどの他のよく使われてる
動的型付け言語でできるのか?
0862デフォルトの名無しさん
2011/12/13(火) 08:11:02.320863デフォルトの名無しさん
2011/12/13(火) 08:17:10.78型がわからないとリファクタリングができない。
だから実行時にならないとリファクタリングできない。
そしてリファクタリングってことだから、
動的にオブジェクトを変更するのは別の話、
つまり一旦停止してから、再開したらリファクタリング前に戻ったりはしない。
ということは、実行時にソースコードを書き換えて
それがすぐに反映するってことなのだろう。
それが本当かどうかは知らないけど、少なくともsmalltalk限定の話だよね。
0864デフォルトの名無しさん
2011/12/13(火) 08:19:27.30できないのは欠点だよな
実行時リファクタリングの欠点として、
実行されてない箇所のリファクタリングは
同時に行えないって所。
現在実行されているコードまわりはリファクタリングできても
システム全体としてみれば、正しくリファクタリングが行えてない。
0865デフォルトの名無しさん
2011/12/13(火) 09:13:10.53じゃあよく出てくるJavaの話はすべての静的言語で出来るのか?
ってことでしょ
正直、どちらの人も純粋に言語本体のみで論じて欲しいと思うなあ
IDEの話ってなるともう言語の話かどうか怪しくなる
0866デフォルトの名無しさん
2011/12/13(火) 09:36:46.68そもそも動的型ではインターフェースの抽出とか要らないから
変更すら必要無い
0867デフォルトの名無しさん
2011/12/13(火) 12:09:27.83言語仕様の話が分からないコードも書けない自称アーキテクト(w
が唯一話題に入れるのがIDEなわけよ
それ禁じたら話に入れなくて可哀想だろ
0868デフォルトの名無しさん
2011/12/13(火) 13:50:57.46変わってくると思うのだが。
0869デフォルトの名無しさん
2011/12/13(火) 16:06:09.64Smalltalkの実行時というのは、ソースの編集時、コンパイル時まで含んでいるのだが?
つうか開発環境自体が実行環境の上に乗っかってる。
0870デフォルトの名無しさん
2011/12/13(火) 16:08:05.11eval出来る言語なら大抵なんとかなるだろ。
0871デフォルトの名無しさん
2011/12/13(火) 16:10:37.43実行時リファクタリングしたら既存のインスタンスは変化するの?しないの?
0872デフォルトの名無しさん
2011/12/13(火) 17:44:22.03型付けの静的動的関係ないでしょ
実行時リファクタリングは動的型のほうが有利かもね
0873デフォルトの名無しさん
2011/12/13(火) 18:29:28.94そう。本質的にはリファクタリングに動的型付けか静的型付けかは関係ないよね。
静的厨は動的型付け言語はリファクタリングできないとか定期的にウソ流してるけど。
0874デフォルトの名無しさん
2011/12/13(火) 20:49:34.20実行前にリファクタリング出来るんだから、
わざわざ実行する必要ないんじゃね?
0875デフォルトの名無しさん
2011/12/13(火) 20:54:54.12あるいは実行中に複数のライブラリをロードする時に受け口を変化させる場合は?
実行時にリファクタリングできない言語を使っているから
そういう状況を想像できないんじゃないの?
0876デフォルトの名無しさん
2011/12/13(火) 21:07:24.82関数/メソッドの展開とか引数の順番の変更とか
メソッド名の変更(サブクラスのメソッドも一緒に変わる)とかは
定義とともに、使用しているコードも変更しなきゃいけないから
こういったものは型情報が必要だよね。
同名で別メソッド名がある場合は変更していいのかわからない。
0877デフォルトの名無しさん
2011/12/13(火) 21:08:25.86デザインパターン勉強すれば
そういう時にどういうコードを書けばいいか分かるよ。
0878デフォルトの名無しさん
2011/12/13(火) 21:09:20.62リファクタリングってソースコードを修正する話だろ?
プロファイリング結果に応じて動的にソースコードを修正したりすんの?
0879デフォルトの名無しさん
2011/12/13(火) 21:14:52.44Smalltalkの話題しか出ないことから
実際に仕事でやってる人はいないってことかな?
0880デフォルトの名無しさん
2011/12/13(火) 22:11:42.070881デフォルトの名無しさん
2011/12/14(水) 06:57:19.49え、しないの?
0882デフォルトの名無しさん
2011/12/14(水) 06:59:22.01御心配無用。とっくにRalf Johnsonから習ったから。
それにしても、コンパイル前のリファクタリングだけで満足してるなんて、
リファクタリングを理解してないとしか思えんのだがw
0883デフォルトの名無しさん
2011/12/14(水) 07:26:06.18動的型では、同じ名前のメソッドは同じ意味を持つように設計する。
静的型しか知らない人にも分かるように言うと、同じメソッドを持ってれば
同じインターフェースを継承してるかのように設計する(duck typingってそういうものだしね)。
何故かというと、そうすることで可読性が上がるだけじゃなく
多態を最大限に活かした柔軟性と拡張性の高いコードになるから。
これがどういう意味かというと、classA#fooとclassB#fooが在ったときに
classA#foo というメソッド名だけ変更したいことなんて殆ど無いってこと。
上記の理由により、まともな設計者がいるならそんな事態にはならないから。
少なくとも実行時リファクタリングよりは需要の無い機能だよ。
まあ、それでもあえて補足しておくと、Python tools for Visual Studio(まだbeta版)
にはそういったclassA#fooだけを名称変更するリファクタリング機能があるよ。
型推論してるらしい。
0884デフォルトの名無しさん
2011/12/14(水) 07:47:21.97「現在あるコードベースの中でこのメソッドを実際に叩いている箇所」
を探そうとするんだよね。これが静的型OO脳の恐怖。
動的型の場合、あらゆる種類のメッセージ送信に備える習慣がついているから
メソッド名についての語彙の凝集が前提になる。
「俺が見たことも聞いたこともないコードからもこのメソッドが使われるかもしれない」
「将来書かれるかもしれないコードからもこのメソッドが使われるかもしれない」
ということを考慮する習慣がつく。これがメッセージングOOの考え方。
一旦メッセージングOOに習熟すると、静的型OOは手続き型言語に見える。
それぐらい抽象度が違う。
0885デフォルトの名無しさん
2011/12/14(水) 08:06:55.040886デフォルトの名無しさん
2011/12/14(水) 08:12:42.110887デフォルトの名無しさん
2011/12/14(水) 08:14:40.39やはり性善説だな。
0888デフォルトの名無しさん
2011/12/14(水) 08:17:16.11単に型だけで整合性を取ろうとするんだね。
怖すぎて使う気になれねえw
0889デフォルトの名無しさん
2011/12/14(水) 08:20:11.33動的特性を社会的に摺りあわせて整合性を高めるのか、
それだけの違いでしょ?
性善説とか性悪説とか、視点がアサッテすぎ。
0890デフォルトの名無しさん
2011/12/14(水) 08:29:09.08>単に型だけで整合性を取ろうとするんだね。
まぁ、こんな事をさらりと「つまり」と書ける程度には荒っぽいと。
0891デフォルトの名無しさん
2011/12/14(水) 08:31:52.90静的型も動的型もconventionなしに成立しないでしょ、
という文意すら読み取れない程度に
静的ドカタは認知能力が低いと。恐ろしいね、静的脳。
0892デフォルトの名無しさん
2011/12/14(水) 10:51:58.300893デフォルトの名無しさん
2011/12/14(水) 11:43:24.43当たり前だろ、>>887と>>888からの論理的帰結なんだから
>>888だけ読んでも分からんだろw
静的脳って文脈が読めなくなるんだね。こわっ!
0894デフォルトの名無しさん
2011/12/14(水) 13:06:41.10自然言語にも型が必要なんだろう
0895デフォルトの名無しさん
2011/12/14(水) 13:42:49.000896デフォルトの名無しさん
2011/12/14(水) 13:49:09.76ここは2chだからねえ
0897デフォルトの名無しさん
2011/12/14(水) 19:53:23.24>>888が>>887を受けての発言だということも理解できないほど
静的型ドカタは低能なの?
0898デフォルトの名無しさん
2011/12/14(水) 20:49:26.03|:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::::::::::( 」 < 民主になればこの世はバラ色、政権交代!
ノノノ ヽ_l \______________
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | 在 反 | '、/\ / /
/ `./| | 日 日 | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
| ┬ |それでも懲りない日本人、韓国民団総理支持率35%w早く目を醒まそう!
0899デフォルトの名無しさん
2011/12/14(水) 21:00:32.31リファクタってソースコードの保守の話だぞ…。
0900デフォルトの名無しさん
2011/12/14(水) 23:30:38.64> 動的型では、同じ名前のメソッドは同じ意味を持つように設計する。
つまり、getとかcountとかいうメソッドは作らないで、
たとえばCustomerというクラスなら
customer.get_customer() というメソッドにするということ?
0901デフォルトの名無しさん
2011/12/14(水) 23:33:07.96動的型付け言語でもは
MyNamespace_Customer.get_customer()
こんな感じに名前が被らないようにする。
らしいwww
0902デフォルトの名無しさん
2011/12/14(水) 23:34:00.160903デフォルトの名無しさん
2011/12/14(水) 23:35:45.38ここ30年で、
113社だった公益法人が25000社ってどういう事?
150 名前:金持ち名無しさん、貧乏名無しさん :2011/12/14(水) 23:17:28.25
公益法人をwikiで調べると、バブルで急増してからほとんど減ってない
wwwワロタwww
0904デフォルトの名無しさん
2011/12/14(水) 23:50:29.23いやいや、Customerならまだましかも知れないけど、
Pointとかだったらかぶるかもしれないじゃないか?
(実際に被ったw)
Graphic3D_Point.get_point_graphic3d();
ここまでやらないとだめだろう。
0905デフォルトの名無しさん
2011/12/14(水) 23:54:19.91後付で補足する。
ポイント還元の”ポイント”クラスとかぶったんだ。ということにする。
継承関係全くないけど、get_point() で同じ。これはまずいだろう。
0906デフォルトの名無しさん
2011/12/14(水) 23:54:35.10ドキュメントの量を増やす必要がありそうな気がするんだけどどうなんでしょ
0907デフォルトの名無しさん
2011/12/15(木) 02:58:44.66どこかの静的型付けエセOO言語のconventionなのかね?
0908デフォルトの名無しさん
2011/12/15(木) 03:13:25.56モンキーパッチ:元のコードを変更せずに振舞いを変更する
リファクタリング:元の振舞いを変更せずにコードを変更する
リファクタリングとモンキーパッチは目的も内容も違いすぎるんだけど、
どうして実行時リファクタリングがモンキーパッチだと思ったの?
0909デフォルトの名無しさん
2011/12/15(木) 03:26:18.31メソッド名が長くなる事をdisってるつもりなの?
JavaやC#なんてメソッド名もクラス名も馬鹿みたいに長いじゃん
これって静的型付けOOPのconventionだよね(語彙の凝集を碌にやらない)
InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState # クラス名
supportsDataDefinitionAndDataManipulationTransactions # メソッド名
ちなみに、これは君等が勝手に作った例と違って実例だから
0910デフォルトの名無しさん
2011/12/15(木) 03:48:17.21アクセサにget_xxxなんて付けるのはJavaくらいのもんだろ
静的型付けでもプロパティのある言語なら必要無いしな
ドカタのお里が知れるってもんよ
0911デフォルトの名無しさん
2011/12/15(木) 04:13:31.94なんとも奇妙奇天烈なconvention
0912デフォルトの名無しさん
2011/12/15(木) 04:54:58.16本当にそんな慣習がどこかにあるの?
それとも全部同じ人の書き込み?(文体の類似性からみて)
0913デフォルトの名無しさん
2011/12/15(木) 08:04:40.46そんなメソッド名、動的型付け言語で見た事ねーなー
あ、もしかしてJavaの話?
Integer.getInteger
Boolean.getBoolean
0914デフォルトの名無しさん
2011/12/15(木) 08:05:53.20あと、違う人かも知れんが実行時リファクタリングって具体的にどういうもの?
プロファイリング取るだろって意見もあるけど、何のプロファイリング?
0915デフォルトの名無しさん
2011/12/15(木) 08:07:49.65そんな用語聞いたこと無いから。
で、それに利点はあるの? つかどうやるわけ? まさか静的解析でもするの?
0916デフォルトの名無しさん
2011/12/15(木) 08:12:49.73そのまま実行中のプログラムに反映されるって編集形態の
リファクタリング版ってだけでしょ > 実行時リファクタリング
デバッガでステップ実行しながら、変数の中身とかを確認しつつ
ソースコードを書き換えたりするでしょ?(出来なきゃ出来ないで困らないけどね)
感覚的にはREPLに近いかもしれない
別に動的型の専売特許じゃないけど、動的型の方が実装し易い
http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/vced_cont/
0917デフォルトの名無しさん
2011/12/15(木) 08:22:41.470918デフォルトの名無しさん
2011/12/15(木) 08:35:57.98そんな言葉が生まれるはず無いだろ
むしろJava等に広まるときにstatic refactoringって言葉が出来るべきだった
0920デフォルトの名無しさん
2011/12/15(木) 08:57:54.03でも既存のインスタンスはそのまま
>>871は分かってて訊いてると思われる
0921デフォルトの名無しさん
2011/12/15(木) 09:11:57.090922デフォルトの名無しさん
2011/12/15(木) 09:40:22.590923デフォルトの名無しさん
2011/12/15(木) 10:06:12.420924デフォルトの名無しさん
2011/12/15(木) 11:18:30.400925デフォルトの名無しさん
2011/12/15(木) 11:45:34.16どうして実行しなければリファクタリングできないなんて
馬鹿げた解釈になるのだろうか?
0926デフォルトの名無しさん
2011/12/15(木) 15:05:22.04リファクタに動的静的も無いって言ってるんだけど。
こうやってすぐ思考停止して静的厨だのドカタだの…。
まあその程度のスレなんだろうけど。
0927デフォルトの名無しさん
2011/12/15(木) 16:58:23.21その発想からして、
静的なプログラミングの価値観から動的型付けを見ているのが
丸出しだっていってんの。
ソース変更が実行よりも上位にあるというのは静的なプログラミングの価値観。
動的なプログラミングではソース変更も実行も同じメカニズムだ。
リファクタリングに動的静的もないというのも静的なプログラミングの価値観。
なぜなら静的型付けよりも動的型付けのほうが
実行時でのリファクタリングでの柔軟性や追従性がはるかに高い。
0928デフォルトの名無しさん
2011/12/15(木) 17:06:10.580929デフォルトの名無しさん
2011/12/15(木) 17:21:18.90すでに運用してるサービスを止めずに動かしたままリファクタリングとかしちゃうん?
0930デフォルトの名無しさん
2011/12/15(木) 17:29:10.50静的言語しか使ってないうちは動的言語を理解できないが、
動的言語を使いこなしてくると静的言語のメリット・デメリットが判る。
このスレ主の言う「大規模」「効率」の意味が一向に提示されないから推測になるが、
コンピュータ資源を節約したい&処理手順が明確な用途には確かに静的言語で充分な事が多い。
そして、世の中の仕事の殆どは上の条件に当てはまる訳だから、大規模開発≒静的言語、
というのもあながち間違いではない。
資源については、今でも組み込みとか特殊環境ではリッチに出来なかったりするから、
静的言語の需要はあるな。
尤も、近年の静的言語は、動的言語で使われてきた機構を取り入れ始めているから、境界は曖昧になってきてるが。
0931デフォルトの名無しさん
2011/12/15(木) 17:32:11.69Java屋にもホットデプロイの便利さは浸透してると思ってたけど
そうでもないのか。
0932デフォルトの名無しさん
2011/12/15(木) 17:37:27.74あまりにこれスゲーよ感をだしてるからもっとなんかあるのかとおもたサンクス
0933デフォルトの名無しさん
2011/12/15(木) 18:21:48.55サイクルが短いからそう感じるだけであって、
どう足掻いても単なる動的書き換えだよ。
0934デフォルトの名無しさん
2011/12/15(木) 19:12:30.480935デフォルトの名無しさん
2011/12/15(木) 19:39:38.440936デフォルトの名無しさん
2011/12/15(木) 20:24:11.54動的リファクタリングしかできないのか、
この2つでずいぶんと意味が違うわけだが。
0937デフォルトの名無しさん
2011/12/15(木) 20:27:05.59実行中(ブレークポイントで止まった所)のコードはリファクタリング出来る。
その定義もリファクタリング出来る。
しかし、その定義を利用するが実行中ではない箇所の
コードはリファクタリングできないのだ。
やっぱり静的リファクタリングもできなきゃだめだよね。
その上で動的リファクタリング出来れば(ホットデプロイ?)最強。
0938デフォルトの名無しさん
2011/12/15(木) 20:27:28.35そして勝手に用語を作るなって。
0939デフォルトの名無しさん
2011/12/15(木) 20:28:21.40元気でもねえよwwwついこの前まで、岐阜県の御嵩町に住んでるdagasikasi_krwことヤマグチって名前な在日の 背後関係調査してたからよおwww今度おまいらにも気が向いたら教えるわwww
それと、在日のdagasikasi_krw君ことヤマグチ君w
民主党と社会党と共産党と、九条の会、NPO法人にカトリック系教会、韓国系キリスト教組織に韓国が絡んだ、北朝鮮支援送金ルートの解明の端緒になってくれてありがとうwwwマジ感謝すんよwww
dagasikasi_krwことマサ君さww花王の不買運動関係で反日工作してたでしょwww不買運動止めさせるためにwww
なあ、ヤマグチ君よwところで、こんなの拾ったけど
http://proxy.f1.ymdb.yahoofs.jp/users/7d6d4463/bc/92b8/__hr_/868a.jpg?BCGpnJPBqRNo2bVN
0940デフォルトの名無しさん
2011/12/15(木) 20:30:11.08動的リファクタリングのこと?
実行時リファクタリングがなら勝手な用語じゃない?
>>856が言い出した言葉だけど。
0941デフォルトの名無しさん
2011/12/15(木) 20:37:00.62> しかし、その定義を利用するが実行中ではない箇所の
> コードはリファクタリングできないのだ。
それって動的に修正しているだけで、
リファクタリングっていわないんじゃないの?
リファクタリングは動作を変えないことが原則でしょ。
動作が変わるならそれはただの修正。
動的に修正できるのは出来るでいいと思うけどね。
ホットデプロイ便利だし。
だけどそれをリファクタリングと言ってはいけない。
0942デフォルトの名無しさん
2011/12/15(木) 20:46:14.31動的リファクタリングって用語はあるのね。
無知でした。すまん。
0943デフォルトの名無しさん
2011/12/15(木) 20:55:16.74一度コードが通らないと(評価されないと)、
関連があるかどうかも不定ってことじゃないの。
0944デフォルトの名無しさん
2011/12/15(木) 21:00:09.10それとも静的にもリファクタリング可能だけど動的だと実行時の情報を得て静的じゃ不可能な何かすごいリファクタリングができるの?
0945デフォルトの名無しさん
2011/12/15(木) 21:09:46.50いや、動的型付け言語だと、変数に全く関係ない値が入ることがあるから
一度通ってもそれだけで型が決まるわけじゃないんだよ。
ダックタイピングできることが仇となって
コレとアレは同じ名前のメソッドを持っていますね。
コレのメソッド名を変えたらアレのメソッド名も変えますが
ほんとうにそれは正しいのって状態になる。
0946デフォルトの名無しさん
2011/12/15(木) 21:12:33.74実行時の情報を得てというが、その時得られた情報が全てかどうかはわからないから
不確かな情報を元に、リファクタリングをすることになるんだよ。
たとえば実行時にそこの変数にあるクラスが入っていたら、そのクラスと関係があることはわかるが
別のクラスと関係があるかどうかはわからない。
情報が0よりかはマシだけど、動的型付け言語では完全な情報が得られないので
不完全なリファクタリングしかできない。
0947デフォルトの名無しさん
2011/12/15(木) 21:22:13.60引数の順番の変更についても同様
実行して得られる情報だけで変更するにはリスクがありすぎるよ
どんだけ分岐を網羅してるかも分からないのに
それ以外の、メソッドの移動とかメソッド抽出とかクラス定義とか
そういうのは変数の型が分からなくても可能だから動的型言語でも静的に可能
(ていうかこの話って既出だよね)
だから>>944でいうところの前者なんじゃないの?
実行時の情報を把握しながらリファクタリングできますよって話でしょ
0948947
2011/12/15(木) 21:26:39.690949デフォルトの名無しさん
2011/12/15(木) 21:30:11.05俺もそういう考えだよ。
>>941があさっての方向の話をしはじめてたからさ。
0950デフォルトの名無しさん
2011/12/15(木) 21:30:55.32コンピュータが判断できるようなことを
人間がやるなんてコンピュータを使っている意味が無い。
0951デフォルトの名無しさん
2011/12/15(木) 21:39:06.58どのコード片をメソッドとして抽出するかを判断するのは人間
抽出すると決めた後はコンピュータ任せにできる
その判断の材料としての実行時情報
0952デフォルトの名無しさん
2011/12/15(木) 21:42:46.73相当に自信過剰な奴でもないと実行できないだろそれ
0953デフォルトの名無しさん
2011/12/15(木) 21:44:15.74じゃあ逆にメソッドの展開はどう?
0954デフォルトの名無しさん
2011/12/15(木) 21:46:00.25抽出は出来るんだよ。そこだけ見ればいいから。
だけど展開はできないんだよ。
そのメソッドを使っている所が他にもあり得るから。
0955デフォルトの名無しさん
2011/12/15(木) 21:47:24.06http://www.softdevtube.com/2011/09/07/refactoring-with-python-tools-for-visual-studio/
0956デフォルトの名無しさん
2011/12/15(木) 21:50:38.32静的解析じゃん…。
0957デフォルトの名無しさん
2011/12/15(木) 21:50:56.05動的型付けでは通常の静的リファクタリングができない
なんてアフォなことを言い出せるのだろうか。
静的脳って怖いね。
0958デフォルトの名無しさん
2011/12/15(木) 21:52:18.630959デフォルトの名無しさん
2011/12/15(木) 21:54:48.41この流れでも理解できてないとは…。
0960デフォルトの名無しさん
2011/12/15(木) 21:55:33.99名前の変更は、人間が変更する箇所を選んでいるだけ。
extractの話はしているが、methodのinline(メソッドの展開)はできていない。
0961デフォルトの名無しさん
2011/12/15(木) 21:55:44.33動的型付けでも静的解析(型推論)したって良いじゃない
0962デフォルトの名無しさん
2011/12/15(木) 21:56:50.11Javaの場合、メソッド名を選んで展開すると、
そのメソッドを使っている所すべてを自動的に展開してくれる。
もちろん間違いはしない。
0963デフォルトの名無しさん
2011/12/15(木) 22:01:07.27でも結構賢くて、こんなコードでも Foo.foo の名前を変更すると
Foo.foo と bar の中の x.foo だけ変わるんだぜ
(Bar.foo や baz の中身は選択肢に出てこない)
class Foo(object):
def foo(self, x):
return x + 1
class Bar(object):
def foo(self, x):
return x - 1
def bar(x):
print(x.foo(0))
def baz(x):
print(x.foo(1))
a = Foo()
bar(a)
b = Bar()
baz(b)
0964デフォルトの名無しさん
2011/12/15(木) 22:02:33.68完全に型推論ですねw
0965デフォルトの名無しさん
2011/12/15(木) 22:02:42.24あぁ、それは動的に変わらないところだから当然だね。
0966デフォルトの名無しさん
2011/12/15(木) 22:10:13.820967デフォルトの名無しさん
2011/12/15(木) 22:11:49.36当然のごとくスルーされたw
0968デフォルトの名無しさん
2011/12/15(木) 22:17:40.22静的型付けを意識して書く(型推論可能にする)事はできるけどさ、
それって静的型付けの型システムの優位性を認めてる事と同義じゃないのさ。
0969デフォルトの名無しさん
2011/12/15(木) 22:28:06.85でも時には動的型の柔軟さも欲しい
てわけで、型推論して静的型が付かないところだけ警告出してくれればベスト
0970デフォルトの名無しさん
2011/12/15(木) 22:28:32.82C#じゃん…。
0971デフォルトの名無しさん
2011/12/15(木) 22:29:15.680972デフォルトの名無しさん
2011/12/15(木) 22:31:03.04実はそうなんだよ……
0973デフォルトの名無しさん
2011/12/15(木) 22:35:33.02ほんとC#はいい人どまりだな。
0974デフォルトの名無しさん
2011/12/15(木) 22:36:39.460975デフォルトの名無しさん
2011/12/15(木) 22:44:53.25これを本格的に採用する言語はオーバーロードを捨てる事になるだろうが
0976デフォルトの名無しさん
2011/12/15(木) 22:55:22.02でもMonoはgtkに逃げちゃったし、Windows圏じゃないと使わない…。
せめて dalvikVM で動けば一気に情勢が変わっただろうに。
0977デフォルトの名無しさん
2011/12/15(木) 23:34:17.92ダックタイピングしたいだけなら構造的部分型で良いと思う
どうせ動的型付け言語でもオーバーロード(マルチメソッド)は殆ど使われてないし
0978デフォルトの名無しさん
2011/12/16(金) 00:53:54.99そればっかり言うけど。
0979デフォルトの名無しさん
2011/12/16(金) 01:32:17.33ディベートの基本だね
javaな人は「討論に勝つ」ことが目的だから、しかたがないと思われ....
0980デフォルトの名無しさん
2011/12/16(金) 01:36:36.74|_::;; ~"'ヽ
| //^''ヽ,,)
| i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
|( ´∀`) < きのこ のこーのこ げんきのこ ♪
|(ノ |つ
| |
⊂ _ ノ
""U
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
(´∀` )| < エリンギ まいたけ ブナシメジ ♪
⊂| (ノ |
| |
ヽ _ ⊃
.U""
|
| ミ
| ミ サッ!
| ミ
|
0981デフォルトの名無しさん
2011/12/16(金) 01:38:27.58もう毎回ワンパターンでつまんねーよ
0982デフォルトの名無しさん
2011/12/16(金) 02:31:12.27い-635
ちなみに、平成18年度の民主党の収支報告書だが、
電通が 690,150,988円(約6億9千万円)
博報堂が 19,425,964円 (約2千万円)
読売グループ系列(読売広告、読売メディアセンター)が 72,058,917円(約7千万円)なw
フライシュマンヒラードジャパンが、1974000円かw
フライシュマンの本社はアメリカにあって、アメリカ政界や企業のPRも担当してる湯田ヤ系の会社だなw
ここが「マニュフェスト」っていう横文字を考えたんだなw
そういえば、今東電と電力総連がフライシュマンを雇ってるらしいじゃないww
札束で学者引っぱたいてうまい具合にテレビで喋らせれば馬鹿な老人なんかはまだまだテレビのいうことを信じるからなw
0983デフォルトの名無しさん
2011/12/16(金) 03:09:21.41頑なに静的型付け言語を否定する奴は何なんだろう。
0984デフォルトの名無しさん
2011/12/16(金) 06:01:59.46○ 頑なに動的型付け言語を否定する奴は何なんだろう。
0985デフォルトの名無しさん
2011/12/16(金) 07:21:46.37ドカタはリフレクションすら使った事無いんだろ
そんなドカタ仕事なんてJavaで十分
IDEで存分にメソッド名を変えるが良いさ
0986デフォルトの名無しさん
2011/12/16(金) 07:23:47.19そんな基本は聞いたことがない。参考ソースの提示を頼む。
あと、あんたの中でのディベートを日本語にすると何になるのかも。
0987デフォルトの名無しさん
2011/12/16(金) 07:48:28.87可読性落ちるだろ。
StackOverflow でもネタにされてるし。
http://stackoverflow.com/questions/2230871/when-is-a-java-method-name-too-long
>>883-913まで読んでも理由が分からないんだけど。
Javaの人は途中で逃げないで教えてよ。
0988デフォルトの名無しさん
2011/12/16(金) 07:57:51.56> Javaの人は途中で逃げないで教えてよ。
なにを? 逃げるとか何の話?
0989デフォルトの名無しさん
2011/12/16(金) 07:59:03.18=> それだとメソッド名が長くなりすぎる
=> でも実際にはJavaの方が長いよね
という話だったのに、なぜかスルーされてメソッド名を変える話になったよなw
0990デフォルトの名無しさん
2011/12/16(金) 08:05:53.61動的型付けや静的型付けとは関係ない話だよな。
0991デフォルトの名無しさん
2011/12/16(金) 08:07:12.47名前がかぶらなくて安全という話か?
904 名前:デフォルトの名無しさん[sage] 投稿日:2011/12/14(水) 23:50:29.23
>>900 >>901
いやいや、Customerならまだましかも知れないけど、
Pointとかだったらかぶるかもしれないじゃないか?
(実際に被ったw)
Graphic3D_Point.get_point_graphic3d();
ここまでやらないとだめだろう。
0992デフォルトの名無しさん
2011/12/16(金) 08:42:02.57JavaScriptがあるね。
document.getElementById() とか。
メソッド名の長さは動的・静的とは関係ない。
0993デフォルトの名無しさん
2011/12/16(金) 08:44:21.130994デフォルトの名無しさん
2011/12/16(金) 10:33:08.27プログラムを後日、または他人が読む時の想定の違い。
基本ロジックをすぐ理解出来る者が読むという想定だと、メソッド、変数名が短かくても支障が無い。
一方、スキルが保証出来ないという想定では、まず「英文っぽく」読める事が重要。
大規模になるとスキルのバラツキは避け難いし、ハンコを押す人間(大抵はIT無知)への受けを考えると、英文もどきの方が有利だ。
0995デフォルトの名無しさん
2011/12/16(金) 11:35:31.90それはモジュールシステムや名前空間が無い言語限定の話
それとも、本当にこんなコードが読み易いと思ってんのか?
http://thedailywtf.com/Articles/Really-Descriptive-Names.aspx
0996デフォルトの名無しさん
2011/12/16(金) 12:12:50.040997デフォルトの名無しさん
2011/12/16(金) 13:16:21.70つまりSmalltalk最強っすね!
0998デフォルトの名無しさん
2011/12/16(金) 13:17:38.210999デフォルトの名無しさん
2011/12/16(金) 14:08:25.12Pharosとかは使ってみて良かったと思える位便利だが、今の話とは関係ないだろ。
1000デフォルトの名無しさん
2011/12/16(金) 14:10:45.80O Pharo
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。