やっぱり動的型付け言語は大規模開発で効率が悪い 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/11/21(月) 11:48:03.35やっぱり動的型付け言語は大規模開発で効率が悪い 3
http://hibari.2ch.net/test/read.cgi/tech/1320832914/
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ちなみにあなたのご職業は?
■ このスレッドは過去ログ倉庫に格納されています