やっぱり動的言語では安全なソフトは作れない 4
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/09/15(木) 01:12:57.20前スレ
http://hibari.2ch.net/test/read.cgi/tech/1308499587/
0002デフォルトの名無しさん
2011/09/15(木) 01:14:17.69言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0003デフォルトの名無しさん
2011/09/15(木) 01:15:11.77http://tech.cm55.com/wiki/scala/ruby
http://togetter.com/li/163331
http://blog.practical-scheme.net/shiro/20110719-dynamic-typing
http://twitter.com/#!/yukihiro_matz/status/113795262165680128
0004uy
2011/09/15(木) 01:39:15.97/.:::::::::::/.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.’.
/.:::::::::::/.:::::::::::::::/.::|::l::::::::::::::::::::::::::::::::::::::::::::::.',
'.:::::::::::::|::::::::::l::::::{」⊥L_::::{::::::::l:|:::::::::::}::::::::::::::::l
_ /j j :::::::::::::|::::::::l:l::::::|:从_|::::`j|:::::::|リ-┼:::}:::}::::::::::::|
ノ.}/.//フ ::::::::::::|l:::::::l:l::::::|rゥzッミ └-┴'‐┴くリノ::::::::|:::|
/ '/, -‐_ァ :::::::::::l|:::::::l:l:::::{ハツ:::] ` 'fラヤ>/.:::::|:::|:::| 明日から働く
/ ー-っ:::::::::::::::l|:::::::l:l::::::l弋'::ソ {::ソ イ :::::::|从:」
/ /~ ̄::::::::::::::::::l| : ::.!|::::::| 丶 ` }:::::::l::/
j _,ノ l::::::::::::::::::.!|: : :..|::::::| 「`ーァ ,ハ::::::|イ
| ! l:::::::::::::::::::.!|: ::: :..::::.| ` ._ `¨ , イ::::|/::|
. | │ .|:::::::::::::::::::」|::::::::::.:::|⌒ヽ. ` r-<:::::::|:::::::::::::|
. | │ |:::::::::::::/ . |:::::::::: ::|\ \ ヾト \::|::::::::::::i|
. | | !::::::::::/ ..:|::::::::::l::| r:‐ミニヾム. -‐ ト、:::::::l|
| ├ヘ」-‐< .:|::::::::::l::| } { } / `、: :l|
│ lハ } ヽ. |::::::::::l::} | 几 :{ い、
0005デフォルトの名無しさん
2011/09/15(木) 02:04:37.30やっぱりRubyでは安全なソフトは作れない
0006uy
2011/09/15(木) 02:44:30.45だからJAVAを使い続ける Rubyは使いこなせないから、わかりにくい、そんなものいらないとか言い始めちゃう。
中学生でもやってるのに・・・。。。
まともな人はRubyを使う 結論はとっくにでてたね
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
↑ これがポイントでーす
0007デフォルトの名無しさん
2011/09/15(木) 04:01:48.34スクリプト(笑)すごいですね^^
0008デフォルトの名無しさん
2011/09/15(木) 10:39:24.15ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
0009uy
2011/09/15(木) 10:42:37.65スクリプト言語なんていらない(キリッ)
なんてセリフを余裕ではいてくる層がいる
マジ、 じゃあやってみろ って
お前JAVA使って、
俺Rubyで、コーディング速度で勝負してみますか って。w
もうさー、 ひっでーゴミみたいな仕事ばっっっっっかり やらせてるから
そういう勘違いしたゴミグラマが量産されんだよ
ITに関しては中小企業つぶしたほうが良い気がするなぁ
0010デフォルトの名無しさん
2011/09/15(木) 11:12:20.39,/ ノ ヽ ~\
/ ノ IPA ヽ ~\
/ ノ ヽ、 `ヽ
| ノ / ̄\ / ̄~ヽ ヽ i
| ノ | ノ
\ | <●> <●> ( )
\ | | | i /
| / ヽ レ
i (●_●) /
i、 ,-――-、 ・ /
i、 <(EEEEE)> ∵/ IPA Rubyスレにようこそ
i、 \ ./ /
\ ーー ,ノ
,,.....イ.ヽヽ、ー-―一ノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
0011デフォルトの名無しさん
2011/09/15(木) 12:11:11.02個人的には、動的言語では定義と実行の区別があいまいで(または区別が無くて)
基本的にコードが上から実行されるというスクリプト言語的な所が
拡張性を(ついでに取っ付き易さも)生んでる気がする
定義と実行の区別が無いからこそ、いつでも柔軟に再定義できるわけだし
0012uy
2011/09/16(金) 02:36:53.17もう結論でてた
ゴミには扱えないで終了
0013デフォルトの名無しさん
2011/09/16(金) 02:52:03.94いかに相手より自分が賢いのか、を証明しょうとする。
0014デフォルトの名無しさん
2011/09/16(金) 03:20:50.25柔軟に再定義できるということは、
どこで定義されるかわからないということ。
どこからでも変更可能ということ。
これはグローバル変数に似ているし、
またgotoにもにている。
0015デフォルトの名無しさん
2011/09/16(金) 09:58:35.24バイトコード操作(javassistとか)使えば再定義も可能
ただ、動的言語に比べて果てしなく冗長なだけ
0016デフォルトの名無しさん
2011/09/16(金) 10:05:51.44ロード前に書き換える事になる。つまり一種のプリプロセッサだな
だから、安全性は動的言語と大差ないのに
出来る事は少なく、しかも冗長という
0017デフォルトの名無しさん
2011/09/16(金) 10:18:13.160018デフォルトの名無しさん
2011/09/16(金) 11:22:55.150019デフォルトの名無しさん
2011/09/16(金) 23:18:35.65Javaの方が当然安全ということだ。
0020デフォルトの名無しさん
2011/09/17(土) 00:13:11.47scala用に設計されたライブラリ使えばぬるぽ?なにそれな生活が送れる
まあすべてのライブラリにscalaのラッパーがあるわけじゃないが
0021uy
2011/09/17(土) 00:30:07.92何勘違いしてんだか知らないけど お前のことをゴミ って言ってるだけであって
頭大丈夫か? もう頭無理っぽいねお前w 産業廃棄物乙
0022デフォルトの名無しさん
2011/09/17(土) 02:40:04.90SML/OCamlは動的言語だなー
実際、書いてるときの感触がいわゆるP言語と似てるし、
文法チェックが超強力なバージョンって感じで
0023デフォルトの名無しさん
2011/09/17(土) 06:52:07.65Javaでは変なことはしないが、動的言語では変なことをするという前提?
それとも、動的言語では変なことをしなくても安全じゃないってこと?だとしたら何故?
0024デフォルトの名無しさん
2011/09/17(土) 09:45:55.08無駄な柔軟性があるから。
たとえばグローバル変数にしておけばどこからでも値を変えられて便利じゃね?
gotoがあればどこにでもジャンプできて便利じゃね?
動的言語の不必要に高い柔軟性はこれと同じ。安全にするのであれば制限を加えたほうがいい。
どうせ同じ変数に互換性がない型を入れたりしないので変数には型をもたせたほうがいい。
実行時にコードを柔軟に書き換える機能なんて持たせずに
継承とか多態とかそういう名前で制限される方法を使ったほうがいい。
こういう制限を持たせることで、その制限に反すること
(例 ローカル変数を触れない場所から書き換えようとすること)を
静的にチェックできるようになる。
0025デフォルトの名無しさん
2011/09/17(土) 09:53:09.85静的にチェックも出来ないしな
0026デフォルトの名無しさん
2011/09/17(土) 09:58:44.15Javaのぬるぽはメリットが存在しないウンコ機能
0027デフォルトの名無しさん
2011/09/17(土) 10:00:54.41抜け道だらけだろ。たいして変わらんわ。
0028デフォルトの名無しさん
2011/09/17(土) 11:19:24.74グローバル変数は名前が長くなる傾向があるから使いたくない。
gotoも行き先に名前をつけなければならない。
whileとか使えば名前いらない。
型の名前を書かないのはこれと同じ。
変な名前を大量に覚えさせるのはやめたほうがいい。
0029デフォルトの名無しさん
2011/09/17(土) 11:22:12.330030デフォルトの名無しさん
2011/09/17(土) 11:35:58.92Javaほど沢山のクラス名を付けさせる/覚えさせる言語を他に知らない
0031デフォルトの名無しさん
2011/09/17(土) 11:39:24.16それは、C++0xのコンセプトが実現可能と言っているのと同じ、机上の空論
結局実現できず今でもダックタイピングしてるのが現実
0032デフォルトの名無しさん
2011/09/17(土) 11:41:19.43> 型の名前を書かないのはこれと同じ。
> 変な名前を大量に覚えさせるのはやめたほうがいい。
前後二行が全く繋がってないのだが。
0033デフォルトの名無しさん
2011/09/17(土) 12:36:55.82> たしかに、変数にnull入れられる(真の意味で)無駄な機能は無い方が良いな
そのとおり。たとえばC++にはnullを入れられない”参照"というものがある。
その利点の一つが、nullを入れられないから、"より"安全ということになってる。
(誰も、完璧とはいってないのでくだらないツッコミはしないように)
0034デフォルトの名無しさん
2011/09/17(土) 12:38:40.42> ぬるぽ以外にも、Object型とキャストを使えばなんでもやり放題とか
でも少なくとも、Object型を使っているということと
キャストを使っているということが、コード上にしっかり書いてある。
普通は使わなくていいはずのものを使っている。それが不必要なものならば
コードレビューなどで指摘されるだろう。
0035デフォルトの名無しさん
2011/09/17(土) 12:59:38.84たとえ繋がってなくても、結論しか書かない奴より、前と後を書く奴のほうがまし
そういえば、型宣言にも結論ありきみたいな所があるよね
0036デフォルトの名無しさん
2011/09/17(土) 16:00:43.980037デフォルトの名無しさん
2011/09/17(土) 16:18:22.35お前が不必要という機能がなければ、単体テストで満足にモックも作れないわけだが
(テスト対象コードに強い制限が付く)
0038デフォルトの名無しさん
2011/09/17(土) 17:42:02.40作れる。
0039デフォルトの名無しさん
2011/09/17(土) 18:49:50.11バイトコード操作使ってるから
使わないと自在にモック作れないから
0040デフォルトの名無しさん
2011/09/17(土) 19:06:17.54Scala, Haskell, OCaml 辺りと比べようぜ。
0041デフォルトの名無しさん
2011/09/17(土) 19:46:21.72そうなんだよね。作れるから問題ない。
そして実際作れるからといって、
そういうテクニックを普段から使うなと。
厳密に区別するべきだよ。
危険なテクニックはテストだけとか使用する場所を限定すること。
0042デフォルトの名無しさん
2011/09/17(土) 21:44:13.62サーキットさえあればいいよね、という素晴らしい発想ですね。
0043デフォルトの名無しさん
2011/09/17(土) 22:00:18.28Pythonで危険なことをしようとするときに使う関数やモジュールは
大体決まってるので、危険なテクニックを使ってるかはコード見れば分かるよ
0044デフォルトの名無しさん
2011/09/18(日) 00:58:11.30変数に入れる値に、本来想定した互換性がない型を
入れられるとか、そういうことだぞ。
0045デフォルトの名無しさん
2011/09/18(日) 08:55:19.73ぬるぽ、ぬるぽ!
0046デフォルトの名無しさん
2011/09/18(日) 09:01:20.29うん。だからNULLが入らないほうがもっと優れてるよね。
何でも入る <<<< 互換性がある方のみ入る < NULLも互換性がないとみなす
こういうこと。より優れているのは言うまでもない。
0047デフォルトの名無しさん
2011/09/18(日) 09:04:40.42それなら同意するわ
0048デフォルトの名無しさん
2011/09/18(日) 09:06:45.51静的にチェックできないし、メソッドにアクセスしたら例外出るのも一緒じゃん
0049デフォルトの名無しさん
2011/09/18(日) 09:12:26.90いやw 当たり前だろ。
どっちがより優れてるかって問題であって
おまえ、銀の弾丸なんて無いんだぜ。
0050デフォルトの名無しさん
2011/09/18(日) 09:13:32.18チェックできる型数が違う。
できないことを上げて反論しているようだが、
反対にできることを上げてみれば、
違いは明らかだろう。
0051デフォルトの名無しさん
2011/09/18(日) 09:14:19.96記述力は動的言語の方が上
つまり 動的言語 >>>>> Java
0052デフォルトの名無しさん
2011/09/18(日) 09:18:04.58しかもそれは静的チェックではないわけ
Rubyとかでkind_of?してるのと変わらんわ
0053デフォルトの名無しさん
2011/09/18(日) 09:18:06.54根拠が抜けてる。
反論しなおせ。
0054デフォルトの名無しさん
2011/09/18(日) 09:19:22.71ん? nullチェックしてどうするんだ?
nullですよって例外出すのか?
Null Pointer Exceptionでいいじゃん
0055デフォルトの名無しさん
2011/09/18(日) 09:20:56.87だからnull以外は、実行時にチェックしなくていいから
楽ってことなんじゃないのか?
0056デフォルトの名無しさん
2011/09/18(日) 09:22:04.27え?じゃあ動的型でもNoMethodErrorとか出せばいいわけ?
いやいや、それじゃダメだろwww
0057デフォルトの名無しさん
2011/09/18(日) 09:23:32.43全てのオブジェクト型変数にNullは入るだろ
お前は基本型だけ使ってプログラム組んでるのか?
0058デフォルトの名無しさん
2011/09/18(日) 09:23:35.65Nullチェックなんて書かないよ。
そんなもん書かなくても、ちゃんと例外だしてくれるんだし。
で、Nullは問題だよね。実行時にしかわからないから。
実行時にしかわからないのは、問題だって認識はあるんだよね?
じゃあ、Null以外なら実行前にわかるってことも認識できるよね?
0059デフォルトの名無しさん
2011/09/18(日) 09:25:29.73だから、(Nullも含めて)実行時にわかるよりも
実行前にわかったほうがいい。
実行時に例外だすなんてもってのほか。
ぬるぽももっての他だが、ぬるぽだけですんでる分まだマシ。
0060デフォルトの名無しさん
2011/09/18(日) 09:32:56.38メリットとデメリットが存在する
ぬるぽは全ての参照型に実行時型エラーのデメリットがあるが
メリットが何も存在しない
0061デフォルトの名無しさん
2011/09/18(日) 09:36:32.15あれ、意味あるの?
アヒルインターフェースを備えていれば
アヒルであるってだけでしょ?
それって静的型でできることだよね?
0062デフォルトの名無しさん
2011/09/18(日) 10:57:18.67C++は都合が悪くなるとCと同じ事もできるって言う。
いざとなれば同じ所に逃げ込めば安全だと思ってる。
危険だと言ってるのは今だけで、持続的な言質を与えるつもりはぜんぜんないのだ。
0063デフォルトの名無しさん
2011/09/18(日) 11:17:01.840064デフォルトの名無しさん
2011/09/18(日) 12:01:16.260065デフォルトの名無しさん
2011/09/18(日) 12:03:47.77そういうお前は何も言っていないじゃないか
つっこむならもっとつっこめよ
0066デフォルトの名無しさん
2011/09/18(日) 14:54:47.87その言語にとっての一番自然な書き方でどう実現できるかが重要だろう?
0067デフォルトの名無しさん
2011/09/18(日) 16:07:17.50メソッド一つのインターフェースを山ほど作って
インターフェース爆発を起こすわけですねwww
0068デフォルトの名無しさん
2011/09/18(日) 16:21:35.08ん? それはダックタイピングの欠点かいな?
アヒルのように歩き、アヒルのように鳴くのなら、アヒルだというが、
じゃあ、アヒルように歩くが、アヒルのように鳴かなのなら、それは何なんだ?
結局、アヒルであるためには、アヒルである条件をすべて満たさないといけない。
アヒルである条件は全部満たしてこそアヒルなわけだ。つまりそれがインターフェース。
メソッド一つ一つバラバラにしかできないとしたら、それはさっき書いたように
アヒルのように歩くが、アヒルのように鳴かな中途半端なものができてしまう。
その中途半端な存在をアヒルとして扱って、動作保証は出来るのか?
0069デフォルトの名無しさん
2011/09/18(日) 17:46:22.20なんでインターフェースの無い言語でインターフェース爆発起こすんだよw
インターフェース爆発の例
http://gee.cs.oswego.edu/dl/jsr166/dist/extra166ydocs/extra166y/Ops.html
0070デフォルトの名無しさん
2011/09/18(日) 17:51:16.93形式手法で検証したいなら形式的検証ツールを使えばいいじゃない
必死で他言語をdisったところで得るものはないと思うが
0071デフォルトの名無しさん
2011/09/18(日) 18:07:07.23頭大丈夫?ダックタイピングってなんなのかわかってる?
「アヒルのように歩き、アヒルのように鳴くならそれはアヒル」って言葉だけで
ダックタイピングがわかった気にな ってるっしょw始末におえねーww
頭固いんだよオッサン
0072デフォルトの名無しさん
2011/09/18(日) 18:44:26.74動的言語的で、最も自然な形でインターフェースを実現するとダックタイピングになるんだよ。
Javaインターフェースは「Aならば、Bを持つ」という考えで、ダックタイピングは「Bを持つならば、Aである(と考えても構わない)」という考えだ。どちらも目指すところ、実現していることは同等だ。
ただダックタイピングのほうがより柔軟だ。ミックスインや実行時でのメソッド追加が可能な、動的言語には固定化したインターフェースは必要ないどころか邪魔なだけだ。
0073デフォルトの名無しさん
2011/09/18(日) 18:56:43.79例えるなら、Java インターフェースは「100V50Aの二つ穴コンセント」のようにかっちりとした規格を決められるのにたいして、ダックタイピングは「ブタの鼻でも二つ穴だからコンセントになる」みたいな感じ。
でもこれは静的型付けと動的型付けの本質的な差異だからね。ダックタイピング固有の問題ではない。
ちなみにおれはJavaは大嫌いだが、PMとして土方を使う分には便利だと思っている。
0074デフォルトの名無しさん
2011/09/18(日) 18:56:57.78例えるなら、Java インターフェースは「100V50Aの二つ穴コンセント」のようにかっちりとした規格を決められるのにたいして、ダックタイピングは「ブタの鼻でも二つ穴だからコンセントになる」みたいな感じ。
でもこれは静的型付けと動的型付けの本質的な差異だからね。ダックタイピング固有の問題ではない。
ちなみにおれはJavaは大嫌いだが、PMとして土方を使う分には便利だと思っている。
0075デフォルトの名無しさん
2011/09/18(日) 19:54:21.880076デフォルトの名無しさん
2011/09/18(日) 20:05:18.74BならばA(アヒルならばアヒルのように振る舞う)の区別がつかないとか
プログラマとして大丈夫か?
0077デフォルトの名無しさん
2011/09/18(日) 20:12:35.59nominal subtyping の言語でも type erasure のような技法を
使えば実現可能(C++のboostでは使われてる)
だから動的型だけの特徴じゃないのだが、structural subtyping はまだマイナーだし、
Type erasure は少々ややこしいのが難点だな
0078デフォルトの名無しさん
2011/09/18(日) 20:22:39.08まあ、あれだ。
大事なことだから二回言っただけだw
>>76
公文学習教室で論理数学の講座でも主催しとけ
>>77
>>66を嫁
0079デフォルトの名無しさん
2011/09/18(日) 22:17:32.31これは論理的に言って間違い。
アヒルのように振る舞う、動物モノマネ王はアヒルではない。
0080デフォルトの名無しさん
2011/09/18(日) 22:36:20.410081デフォルトの名無しさん
2011/09/18(日) 22:46:36.54そんなことより反論したら? 論理的にw
0082デフォルトの名無しさん
2011/09/18(日) 22:50:58.01structural subtyping で型安全性を完璧に満たす型システムを構成することが可能
0083デフォルトの名無しさん
2011/09/18(日) 22:53:33.71> アヒルのように振る舞うならばアヒルである
ただの「AならばB」だろ?どこに論理的におかしいところがある?
「論理的に」だぞ?
0084デフォルトの名無しさん
2011/09/18(日) 23:13:29.15めんどくさいだけ
0085デフォルトの名無しさん
2011/09/18(日) 23:20:33.56振る舞いを見た上でアヒルだと結論づけるのがダックタイピング。
宣言は論理というより公理に近い。
0086デフォルトの名無しさん
2011/09/19(月) 00:04:24.43いや、お前はAならばBといっただけで何も証明してないだろ。
AならばB 具体的に言えば、りんごならばバナナ。
これが間違っているのは明らかだよな。
AならばBというのはただの命題。お前は命題を言っただけで、
「AならばB」が正しいという証明をしてないんだよ。
「アヒルのように振る舞うならばアヒルである 」
この命題を出発点として、正しいかを考えるのが論理学だ。
やってみ。「アヒルのように振る舞うならばアヒルである 」という
”命題” が 正しいか。
0087デフォルトの名無しさん
2011/09/19(月) 00:16:00.75間違ってるって何の根拠も無く言い出したのはお前なんだから、
お前が間違ってるって証明しろよ。
0088デフォルトの名無しさん
2011/09/19(月) 00:18:14.93馬鹿は無理して論理とか証明とかの言葉使わない方がいいぞ。
0089デフォルトの名無しさん
2011/09/19(月) 00:30:54.90で、間違ってたらなんなの?
単なる例えをロンパ(笑)したとして、だからダックタイピングはアンチパターンだって主張しようとしてるの?
それともしょうもない雑談に付き合ってほしいだけ?
0090デフォルトの名無しさん
2011/09/19(月) 00:32:42.69ポリモーフィズムするのに継承関係を必要とするのがインターフェース
メソッドの有無で判断するのがダックタイピング
プログラミングではこれ以上抽象的な議論は必要無いだろうし
その上でメリットとデメリットを語ったほうが生産的だよ
0091デフォルトの名無しさん
2011/09/19(月) 00:42:57.130092デフォルトの名無しさん
2011/09/19(月) 01:06:22.66静的言語のメリット。
ようするに数学的(主に論理学)であること。
数学的であるから、数学のテクニックが使える
数学では定義を厳密に行う。厳密な定義があれば
様々なことを論理的に導出できる。
それは式を簡略化したり、矛盾を見つけることにつながる。
これをプログラム言語に当てはめると、変数、型、インターフェース
様々な定義から、矛盾あるコードを見つけることができる。
この論理学的手法を使えるのが、静的言語のメリットなんだ。
0093デフォルトの名無しさん
2011/09/19(月) 01:17:07.07> ポリモーフィズムするのに継承関係を必要とするのがインターフェース
> メソッドの有無で判断するのがダックタイピング
それは正確ではないな。インターフェースだって結局はメソッドの
有無で判定しているんだよ。○○というメソッドが定義されているか。
定義されていなければ、コンパイルエラーになる。
本質的なのは、○○(アヒル)である。という定義がコンピュータに理解できる
言語(ソースコード)で書いてあるか、それとも人間しか理解出来ない言語(ドキュメント)かの違いだろう。
コンピュータに理解できる言語で書いてあれば、コンピュータが人間に変わって
いろんなことをやってくれる。それが静的言語のメリットだな。
0094デフォルトの名無しさん
2011/09/19(月) 01:22:05.26かなり遠回り&勘違いしているが、静的言語のいいところは静的(=コード実行前)にプログラムの構造が決まるところだよ。だからコンパイル時にプログラム内の構造バグをチェックできる。
それだけではなく、リファクタリングも100%問題なく実施できる。
動的言語は実行時にそれが決まるというだけで、数学的に矛盾があるわけではないw
0095デフォルトの名無しさん
2011/09/19(月) 01:29:20.40> だからコンパイル時にプログラム内の構造バグをチェックできる。
それは違う。たとえばRubyをコード実行前にコンパイルしたところで
コンパイル時にプログラム内の構造バグは(静的言語よりも)わからない。
コンパイル時にわかるのはわかるのは、静的言語であることも条件の一つだが、
それよりも重要なのはソースコードに定義が書いてあること。
定義があるから論理学的手法によって、自前に矛盾を見つけることができる。
いくら実行前にコンパイルしたからと言って、定義がなければ何も導出できない。
0096デフォルトの名無しさん
2011/09/19(月) 01:31:20.83↓
正しくは、動的言語は実行時にそれが決まる仕組みにするために、定義を書くことができくなった。
定義がないために、定義があれば見つけられたようなこと(矛盾など)を見つけることができない。
0097デフォルトの名無しさん
2011/09/19(月) 02:37:39.58静的言語のメリットは>>94で書いた通り。
コンパイルってなんだ?おれは実行前/実行時の話をしたんだが。
>>96
静的言語のほうが安全なのは当たり前だ。誰も反対していない。
その安全を手に入れるための制約(=実行前の構造決定)を捨てることによるメリットの
方が大きいというのが動的言語の主張だ。
0098デフォルトの名無しさん
2011/09/19(月) 02:42:36.91おれの定義はこれだ。
「数百人 x 数十か月 の開発工程の結果、容易に保守可能なソフトウェアを生産できるか?」
経験上、Javaであれば問題なく可能だ。数百人のうち9割9分はドカタでも構わない。
企業にとったらこんなありがたい言語はない。
Rubyではこうはいかないし、Cも論外だ。優秀な数百人を集めないと、同様の保守性を期待する
ことはできない。
だから、Javaはプログラマとしては唾棄すべき言語だが、管理する側にとってはこれ以上ない
言語なんだ。
0099デフォルトの名無しさん
2011/09/19(月) 02:47:42.15ないよそんなもん。
0100デフォルトの名無しさん
2011/09/19(月) 02:55:59.091万人月を越えるような巨大プロジェクトで保守容易なプログラムを作るってすごいね
お前が設計したの?
0101デフォルトの名無しさん
2011/09/19(月) 03:06:03.311万人月分の設計を一人でするわけないだろw 面白いやつだな。
適切なフレームワークとアーキテクチャを選べば、Javaの場合コードの影響
を局所限定的にすることができる。
これがメソッドを実行時に書き換えることができるだの、ダックタイピングだの、
ミックスインだの言ってる言語だと数行のコードで全体が破滅しかねない。
・・・でも可能ならばおれは動的言語でこの規模のプロジェクトを成功させて
みたいよ。
0102uy
2011/09/19(月) 07:21:44.80動的言語使いこなす練習でもしてくれば
0103デフォルトの名無しさん
2011/09/19(月) 07:39:20.36インターフェースがポリモーフィズムするのに継承関係を必要とするのは事実だろ
直接的にメソッドの有無を判定しているわけではない
何故なら全く同じシグネチャのメソッドを持っていても、継承関係が無ければ
ポリモーフィズムできないからだ
0104デフォルトの名無しさん
2011/09/19(月) 07:41:29.07(土方には)ないよそんなもん。
0105デフォルトの名無しさん
2011/09/19(月) 08:18:53.700106デフォルトの名無しさん
2011/09/19(月) 09:07:35.42動的型のメリットは、その柔軟性を発揮できるプログラマにしか分からない
低能プログラマには「動的型 = 静的型 - 静的型チェック」としか映らないだろう
0107デフォルトの名無しさん
2011/09/19(月) 09:19:04.570108デフォルトの名無しさん
2011/09/19(月) 09:26:02.160109デフォルトの名無しさん
2011/09/19(月) 09:39:40.31ポリモーフィズム可能な言語は
静的な制約の一部または全部を無効化できるから動的言語の一種。
0110デフォルトの名無しさん
2011/09/19(月) 09:44:15.760111デフォルトの名無しさん
2011/09/19(月) 09:55:07.340112デフォルトの名無しさん
2011/09/19(月) 10:45:57.52危険なコードが書けないのが利点なんじゃなかったっけw
0113デフォルトの名無しさん
2011/09/19(月) 10:50:00.65お前そういう勘違いしていたのか?
だから話が噛み合ってないんだな。
なっとくだわーw
えとな、世の中完璧なんてものはない。
どちらが優れているかだ。
もちろん優れているのは静的言語。
0114デフォルトの名無しさん
2011/09/19(月) 10:57:29.01lisp なんて多態性なんて言葉かできる前からあるがな。
0115デフォルトの名無しさん
2011/09/19(月) 11:04:22.33実行時型付け言語=動的型付け言語
VB6やPL/SQLも動的言語ではあるよな。
DBの列名を定数の様に扱えるとか。
0116デフォルトの名無しさん
2011/09/19(月) 11:12:00.10ある意味一番安全で一番柔軟。
即時修正可能。
0117デフォルトの名無しさん
2011/09/19(月) 11:20:59.60いまだにこのやり方で解決する事例が結構あるのが笑い話もしくは怪談
0118デフォルトの名無しさん
2011/09/19(月) 11:24:05.65メタプログラミングを諦めきれないやつが
静的なメタプログラミングは悪くない、悪いのは動的言語だ、ということにしたいのか。
0119デフォルトの名無しさん
2011/09/19(月) 11:31:01.33文字列を結合してコマンド名作成
コマンドの出力をシンボルとして使用
クオートでくくらずSQLを実行
ファイル操作も専用構文があってパターンの補完が行える
CGIとかわざわざ静的言語なんざつかわんでも
シェルスクリプトで事足りる事が多いよな
画面レイアウトもHTMLのテンプレ読み込んで加工する方が楽だし
0120デフォルトの名無しさん
2011/09/19(月) 11:31:29.11冷静になれよ。C++のような
静的なメタプログラミングを備えた言語もある。
悪いのは定義ができないこと。
定義がなければ数学的導出が行えない。
0121デフォルトの名無しさん
2011/09/19(月) 11:46:16.22OOの型ばっかで関数型の動的性について非難できるやつはいないのな。
程度が知れる。
0122デフォルトの名無しさん
2011/09/19(月) 11:56:44.92gotoはどこにでもジャンプできるから柔軟だ。みたいなもんだよ。
gotoといった汎用的なものから、関数やループといった
特殊化されたものができてコードが理解しやすくなって、
人間もコンパイラも最適化やエラーを見つけられるようになったように、
関数型の動的性も特殊化され、よりわかりやすい静的な方法に
置き換えられていく。
0123デフォルトの名無しさん
2011/09/19(月) 11:57:03.53とっとと依存型使えそうすりゃ誰もコード書けなくなるからw
0124デフォルトの名無しさん
2011/09/19(月) 12:00:16.83バグ作り込むとすぐ言語を悪者にしてさぁ。
0125デフォルトの名無しさん
2011/09/19(月) 12:09:12.440126デフォルトの名無しさん
2011/09/19(月) 12:11:12.94動的言語だよな。
0127デフォルトの名無しさん
2011/09/19(月) 12:12:03.18>>601
>ちょっと感動したんで書いとく
>
>まずはプログラミングhaskellからの引用
>
>
>x^2+y^2=z^2を満たす正の整数をピタゴラス数と呼び、三つ組(x,y,z)で表す。ピタゴラス数のリストを生成する関数pythsを定義せよ。ただし、ピタゴラス数の要素は、与えられた上限以下であるとする。
>
>以下に例を示す。
>
>>pyths 10
>[(3,4,5),(4,3,5),(6,8,10),(8,6,10)]
>
>引用終わり
>
>これ、haskellで書くと(と言うか、リスト内包表記使える言語だと同じ感じ)、こうなるんだけど、
>
>pyths n = [(x,y,z) | x <- [1..n], y<-[1..n], z<-[1..n], x^2+y^2 == z^2]
>
>リスト内包表記以外の方法だとこんなに短く書け無いんじゃ無かろうか
>
>pythonはリスト内包表記あるの知ってるけど、他の言語でも、こんなに短く書けるんだろうか。。。
0128デフォルトの名無しさん
2011/09/19(月) 12:15:13.63実用的な例でお願いします。
0129デフォルトの名無しさん
2011/09/19(月) 12:17:37.06アセンブラはプロセッサ
アセンブリが動的かどうかはアセンブリの種類による
0130デフォルトの名無しさん
2011/09/19(月) 12:19:15.45静的に型が決まらないから
動的って言ってるだけ。
きにすんなw
0131デフォルトの名無しさん
2011/09/19(月) 12:30:15.11自己書き換えコードの事いってんのかと思ったがな。
0132デフォルトの名無しさん
2011/09/19(月) 12:36:12.87この程度の例も出来なくて何が実用的な例だよ
大量の組み合わせの中から、条件に合った組み合わせだけを抽出するのは実用でも十分使いまわせるだろ
0133デフォルトの名無しさん
2011/09/19(月) 15:03:37.15くらいにしか考えてない奴が多いな。
0134デフォルトの名無しさん
2011/09/19(月) 15:19:12.54定義があれば導出が行える。
0135デフォルトの名無しさん
2011/09/19(月) 15:24:29.39ある性質を満たすことを型チェックで機械的に保障することができるわけだ
0136デフォルトの名無しさん
2011/09/19(月) 18:54:34.73満たして欲しい性質がそのまま満たされることはない
現実を見て落とし所を探す
コンパイルが通った頃には、何を譲歩してこうなったのかわけわからん性質が残るばかり
0137デフォルトの名無しさん
2011/09/19(月) 19:14:19.95型システムによる制約をソフトウェア設計に利用するのは最も軽量な形式手法といえる(TAPL1章より引用)けど
その程度の形式手法すら実用化されてないわけで、形式手法関連の研究が他分野から貶されるのもよくわかる話だよな
0138デフォルトの名無しさん
2011/09/19(月) 20:30:13.23そっちでやれよ
このスレはちゃんと動的言語について書け
0139デフォルトの名無しさん
2011/09/19(月) 20:57:56.90どの言語がどの位の長さのコードになるのか気になる
0140デフォルトの名無しさん
2011/09/19(月) 20:58:50.550141デフォルトの名無しさん
2011/09/19(月) 22:38:57.210142デフォルトの名無しさん
2011/09/19(月) 22:55:55.500143デフォルトの名無しさん
2011/09/19(月) 23:02:05.570144デフォルトの名無しさん
2011/09/19(月) 23:12:54.440145デフォルトの名無しさん
2011/09/19(月) 23:14:39.45今やれよ
0146デフォルトの名無しさん
2011/09/19(月) 23:22:20.490147デフォルトの名無しさん
2011/09/19(月) 23:45:58.97・Scala
def pyths(n:Int) = for(x <- 1 to n; y <- 1 to n; z <- 1 to n; if x*x+y*y==z*z) yield (x,y,z)
・OCaml
let rec (--) x y = if x > y then [] else x :: (--) (x + 1) y
let pyths n = [ (x,y,z) | x <- 1--n; y <- 1--n; z <- 1--n; x*x + y*y = z*z]
・Python
def pyths(n):
return [(x, y, z) for x in range(1, n+1) for y in range(1, n+1) for z in
range(1, n+1) if x*x + y*y == z*z]
0148デフォルトの名無しさん
2011/09/19(月) 23:46:38.18・Java
public static List<Integer[]> pyths (int n) {
List<Integer[]> list = new ArrayList<Integer[]>();
for (int x = 1; x <= n; x++) {
for (int y = 1; y <= n; y++) {
for (int z = 1; z <= n; z++) {
if (x * x + y * y == z * z) {
Integer[] a = {x, y, z};
list.add(a);
}
}
}
}
return list;
}
0149デフォルトの名無しさん
2011/09/20(火) 02:17:11.040150デフォルトの名無しさん
2011/09/20(火) 03:14:28.880151デフォルトの名無しさん
2011/09/20(火) 03:29:50.97うっそ、まじでwwww
信じらんねー
0152デフォルトの名無しさん
2011/09/20(火) 03:35:42.570153デフォルトの名無しさん
2011/09/20(火) 03:37:12.69そこに書いてある意図が
コメント無しでわかるのが一番良い。
このコード説明してみて。と言われて
説明したくなったら、それはそのコードが
コメントを必要としているということだ。
0154デフォルトの名無しさん
2011/09/20(火) 03:40:35.00List<Integer[]> list = new ArrayList<Integer[]>();
for (int x = 1; x <= n; x++) for (int y = 1; y <= n; y++) for (int z = 1; z <= n; z++) if (x * x + y * y == z * z) list.add({x, y, z});
return list;
}
0155デフォルトの名無しさん
2011/09/20(火) 04:04:47.05#include <iostream>
#include <list>
#include <tuple>
template <class T>
std::list<std::tuple<T, T, T>> pyths(int n)
{
std::list<std::tuple<T, T, T>> lst;
for (int x = 1; x <= n; x++)
for (int y = 1; y <= n; y++)
for (int z = 1; z <= n; z++)
if (x * x + y * y == z * z)
lst.push_back(std::tuple<T, T, T>(x, y, z));
return lst;
}
int main()
{
std::list<std::tuple<int, int, int>> li;
li = pyths<int>(100);
for (auto pos = li.begin(); pos != li.end(); ++pos)
std::cout << '(' << std::get<0>(*pos) << ", " << std::get<1>(*pos) << ", " << std::get<2>(*pos) << ')' << std::endl;
}
見にくい
0156デフォルトの名無しさん
2011/09/20(火) 05:39:58.910157デフォルトの名無しさん
2011/09/20(火) 07:17:15.17肝心のparlが無いぞ
0158デフォルトの名無しさん
2011/09/20(火) 07:48:41.31Java7ではそのコードが通るようになったのか?
0159デフォルトの名無しさん
2011/09/20(火) 10:54:34.78リスト内包表記から説明しないといけないとか言われたら
そりゃJavaが一番説明コストが低いだろうなw
0160デフォルトの名無しさん
2011/09/20(火) 11:04:26.33それは関数型で育って無いからだろ。
英語で育った人間が
日本語を読みづらいのは当たり前。
0161デフォルトの名無しさん
2011/09/20(火) 12:21:16.070162デフォルトの名無しさん
2011/09/20(火) 12:34:13.70関数pythsをどれくらい簡単に拡張できるかも評価しては?
例えば、条件式 x^2 + y^2 == z^2 を引数で渡せるように一般化するとか
Pyton
def pyths(f, n):
return [(x, y, z) for x in range(1, n+1) for y in range(1, n+1) for z in range(1, n+1) if f(x, y, z)]
print( pyths(lambda x,y,z: x*x + y*y == z*z, 10) )
0163デフォルトの名無しさん
2011/09/20(火) 12:36:49.67static List<Tuple<int, int, int>> pyths(int n) {
var a = from x in Enumerable.Range(1, n)
from y in Enumerable.Range(1, n)
from z in Enumerable.Range(1, n)
where x * x + y * y == z * z
select Tuple.Create(x, y, z);
return a.ToList();
}
0164デフォルトの名無しさん
2011/09/20(火) 12:42:46.81動的な言語が安全かどうかなんて、議論して意味あるの?
0165デフォルトの名無しさん
2011/09/20(火) 12:46:08.11安全に組めると思われてんじゃねーの?
0166デフォルトの名無しさん
2011/09/20(火) 13:17:39.57def triple(f, n):
return [(x, y, z) for x in range(1, n+1) for y in range(1, n+1) for z in range(1, n+1) if f(x, y, z)]
def pyths(n):
return triple(lambda x,y,z: x*x + y*y == z*z, n)
print pyths(10)
0167デフォルトの名無しさん
2011/09/20(火) 13:43:31.53Perl
sub variation {
my $list = shift;
return map(sub{ map{ [@{$_[0]}, $_] } @{$list} }->($_), @_);
}
sub pyths {
my ($n) = @_;
return [
grep{ $_->[0]**2+$_->[1]**2 == $_->[2]**2 }
variation([1..$n], variation([1..$n], variation([1..$n], [])))
];
}
巨大配列作ってるので、foreachで包んだほうが効率良さそう。つーか色々無理。
0168デフォルトの名無しさん
2011/09/20(火) 14:33:45.64Prolog
gen(_, End, End) :- !, fail.
gen(N, Beg, End) :- N = Beg; Next is Beg+1, gen(N, Next, End).
?- N is 10+1, findall((X,Y,Z), (gen(X, 1, N), gen(Y, 1, N), gen(Z, 1, N), Z*Z =:= X*X+Y*Y), Result).
0169デフォルトの名無しさん
2011/09/20(火) 14:33:54.10私は大学一年です。前期、授業でPythonとPrologを習いました。そのPrologの
方ですが、引数に現れるのは、リストかアトムでリストの要素も全部アトムです。
このような言語でも静的か、動的か、というような議論は意味があるのですか?
0170デフォルトの名無しさん
2011/09/20(火) 14:41:29.76ピタゴラス数ならび(_要素値上限,_ピタゴラス数ならび) :-
findall([_x,_y,_z],(
ピタゴラス数(_要素値上限,_x,_y,_z)),
_ピタゴラス数ならび).
ピタゴラス数(_要素値上限,_x,_y,_z) :-
'1から_要素値上限までの整数リストを生成'(_要素値上限,L),
組合せ(L,3,[X,Y,_z]),
'X,Y,を三角形の短辺、_zを長辺だとみなすことができる'(X,Y,_z),
ピタゴラスの定理を適用する(X,Y,_z),
短辺はひっくり返すことも可能(X,Y,_x,_y).
'1から_要素値上限までの整数リストを生成'(_要素値上限,L) :-
findall(N,for(1,N,_要素値上限),L).
'X,Y,を三角形の短辺、_zを長辺だとみなすことができる'(X,Y,_z) :-
_z > X,
_z > Y,
_z < X + Y.
ピタゴラスの定理を適用する(X,Y,Z) :-
Z * Z =:= X * X + Y * Y.
短辺はひっくり返すことも可能(_x,_y,_x,_y).
短辺はひっくり返すことも可能(_y,_x,_x,_y).
0171デフォルトの名無しさん
2011/09/20(火) 14:50:29.84ついでに質問に答えとく。Prologの引数に現れるのは項で、項は変数かアトムか複合項。リストは複合項。
ここでいう動的・性的の違いは、プログラム中であるパラメータに適用している演算が正当かどうかが性的に判別可能かどうかなので
そういう意味ではPrologは間違いなく動的。
0172デフォルトの名無しさん
2011/09/20(火) 14:56:31.12Prologってエッチな言語だったんですね
0173デフォルトの名無しさん
2011/09/20(火) 16:03:52.100174uy
2011/09/20(火) 16:10:36.39な・・・ しんじらんねーんだよ
本当にJAVAメインにしてるバカは、技術者じゃなくて
なんつったらいいんだゴミグラマか? そうだな ゴミだ。
>>150
マジで業界を去れ
「 バカは効率がわからない 」
効率のいいものと 悪いものをみせても バカには区別がつかないから、 いいほうを選ぶか悪いほうを選ぶかは2分の1の確率になっちゃうんだよ。。。。
サイコロでも転がしてろwwwwwwwwwww ゴミグラマは死ね 死ねゴミグラマ
0175デフォルトの名無しさん
2011/09/20(火) 17:01:36.30Rubyだとこんな感じ
require "open-uri"
require "cgi"
data = open("http://hibari.2ch.net/test/read.cgi/tech/1316016777/167") {|io| io.read }
data.force_encoding "sjis"
data =~ /Perl(.*?)(?=巨大)/
puts `perl -MData::Dumper -e"#{CGI.unescapeHTML($1).gsub /<br>/, ""}; print Data::Dumper->Dump(pyths(10)), $/"`
0176デフォルトの名無しさん
2011/09/20(火) 17:32:51.20def pyths(n)
(1..n).to_a.permutation(3).select {|x| x[0]*x[0] + x[1]*x[1] == x[2]*x[2]}
end
>>175 笑わせるなw
0177デフォルトの名無しさん
2011/09/20(火) 17:41:23.80def pyths(n)
(1..n).to_a.permutation(3).select {|x,y,z| x**2 + y**2 == z**2}
end
0178デフォルトの名無しさん
2011/09/20(火) 18:54:01.93import java.util.*;
class Triple
{
static interface TripleCondition {
public boolean isCorrect(int x, int y, int z);
}
public static List<Integer[]> triple (TripleCondition f, int n) {
List<Integer[]> list = new ArrayList<Integer[]>();
for (int x = 1; x <= n; x++) for (int y = 1; y <= n; y++) for (int z = 1; z <= n; z++)
if (f.isCorrect(x, y, z)) list.add(new Integer[] {x, y, z});
return list;
}
}
0179178
2011/09/20(火) 18:55:16.21class Pyths
{
public static List<Integer[]> pyths (int n) {
return Triple.triple(new Triple.TripleCondition(){
public boolean isCorrect(int x, int y, int z) {
return (x*x + y*y == z*z);
}
}, n);
}
public static void main(String args[])
{
List<Integer[]> list = pyths(10);
for (Integer[] a : list) System.out.println(String.format("[%d,%d,%d]", a[0], a[1], a[2]));
}
}
0180デフォルトの名無しさん
2011/09/20(火) 19:09:07.26>ここでスレタイに沿いたいのだが、安全なソフトウェアの定義をしたい。
>おれの定義はこれだ。
>
>「数百人 x 数十か月 の開発工程の結果、容易に保守可能なソフトウェアを生産できるか?」
>
>経験上、Javaであれば問題なく可能だ。数百人のうち9割9分はドカタでも構わない。
同じく経験上、これはウソだと主張する。
ほんとにこれが実現しているなら、Javaを採用したプロジェクトは、100%とまではいかないにしても高い確率で成功するはず。
しかし実際はどうだ。みんな徹夜の連続で、休日返上で働いてるにもかかわらず、納期は守れず、要件は満たせず、セキュリティバグがわんさか出てくる。
じゃあJavaじゃなくて動的言語を使ったらもっとひどいことになるのか?
まったくそんなことないようだ。知り合い数人がPHPとRubyでシステム作ってるけど、
納期前に徹夜が2、3日あるくらいで、それ以外は徹夜しないし、休日出勤もないらしい。
それでいて、納期遅れはしないし、なにより仕事が楽しいといってはばからない。
たぶんね、プロジェクトの成否に、言語はあんまり関係ないんだよ。
プロジェクトを小規模にするとか、仕事の進め方を変えるとか、言語以外のことのほうが、プロジェクトの成否には重要なんだと思う。
>企業にとったらこんなありがたい言語はない。
>Rubyではこうはいかないし、Cも論外だ。優秀な数百人を集めないと、同様の保守性を期待する
>ことはできない。
>だから、Javaはプログラマとしては唾棄すべき言語だが、管理する側にとってはこれ以上ない
>言語なんだ。
こういうふうに、管理する側がそれに気づいてないうちは、Javaの失敗プロジェクトはなくならない。
0181デフォルトの名無しさん
2011/09/20(火) 19:20:08.14>>98
>ここでスレタイに沿いたいのだが、安全なソフトウェアの定義をしたい。
>おれの定義はこれだ。
>
>「数百人 x 数十か月 の開発工程の結果、容易に保守可能なソフトウェアを生産できるか?」
>
>>経験上、Javaであれば問題なく可能だ。数百人のうち9割9分はドカタでも構わない。
これって、「大規模なプロジェクトを(高確率で)成功させるプログラミング言語」の定義であって、
「安全なソフトウェアの定義」じゃないよね。
こんな、日本語ですら破綻したこと書いてる人間相手に、真面目にリプしたのがはずかしい・・・
きっと、この人が書いたコードはもっと破綻しているだろう。
0182デフォルトの名無しさん
2011/09/20(火) 19:25:54.69haskell
pyths p n = [(x,y,z) | x <- [1..n], y <- [1..n], z <-[1..n], p x y z ]
使用例
>pyths (\x y z -> x^2 + y^2 == z^2) 10
[(3,4,5),(4,3,5),(6,8,10),(8,6,10)]
0183デフォルトの名無しさん
2011/09/20(火) 19:39:21.45OCaml
let pyths p n = [ (x,y,z) | x <- 1--n; y <- 1--n; z <- 1--n; p x y z]
let _ = Std.print @@ pyths (fun x y z -> x*x + y*y = z*z) 10
0184デフォルトの名無しさん
2011/09/20(火) 19:50:59.29なにがリプだよ、きもちわりい奴だな
0185デフォルトの名無しさん
2011/09/20(火) 19:54:56.63リップー!!
プリプ〜♪
0186デフォルトの名無しさん
2011/09/20(火) 20:06:14.680187デフォルトの名無しさん
2011/09/20(火) 20:47:07.880188デフォルトの名無しさん
2011/09/20(火) 20:56:58.810189デフォルトの名無しさん
2011/09/20(火) 21:04:10.580190デフォルトの名無しさん
2011/09/20(火) 21:50:18.18この人ねえ...多分、こういう言動続けているとクビになって業界去ると思うよ。
仮に、ここで罵倒しているのが現在あるいは未来の仲間、上司や取引先だとしたらって考えが無いんだねえ。
ま、お前の人生だから俺にはどうでもいいしあぼーんしておくだけだがな。
>>189
どちらの方式も使える言語や解決策は探すと大抵あるしなあ。
結局は怪我しまくって上達するか、あるいは適材適所っていうのが戯論系スレのオチ。
0191デフォルトの名無しさん
2011/09/20(火) 21:57:21.97考える時間を入れたら、殆ど差がないんじゃないか?
少なくともこの例では。
0192デフォルトの名無しさん
2011/09/20(火) 22:16:46.77誰もが内包の方がループで考えるより時間掛かるなんてことはない
0193デフォルトの名無しさん
2011/09/20(火) 22:25:45.58本人降臨〜
間違いを指摘されたからってキレるな〜www 落ち着け〜www
0194デフォルトの名無しさん
2011/09/20(火) 22:37:50.53いや、その時間が誤差レベルの差しかないのではないかってことなんだが。
0195デフォルトの名無しさん
2011/09/20(火) 22:41:32.990196デフォルトの名無しさん
2011/09/20(火) 23:03:13.960197デフォルトの名無しさん
2011/09/20(火) 23:10:53.820198デフォルトの名無しさん
2011/09/20(火) 23:13:42.90関数型言語の機能や考え方が受け入れられて来たからで有って、手続き型言語の機能だけ、考え方だけだとjavaのコードみたいなのばかりだったと思う
0199デフォルトの名無しさん
2011/09/20(火) 23:24:21.15たいがい手続き型で考えてね?
0200デフォルトの名無しさん
2011/09/20(火) 23:28:30.87(defun pyths (f n)
(loop for x from 1 to n
append (loop for y from 1 to n
append (loop for z from 1 to n
if (funcall f x y z)
collect (list x y z)))))
ネットで拾ったマクロを使えば
(defun pyths (f n)
(collect-list (list x y z)
(for x from 1 to n)
(for y from 1 to n)
(for z from 1 to n)
(funcall f x y z)))
となるけど、こんなのライブラリ使えばどの言語でもどうとでもなりそう。
0201デフォルトの名無しさん
2011/09/20(火) 23:33:01.32昔oo今関数型
0202デフォルトの名無しさん
2011/09/20(火) 23:36:11.93そうでもない
人間、楽に考えられたら楽に考えられる方に流れてく
関数型言語の機能が入って来てるのも、その兆候
0203デフォルトの名無しさん
2011/09/21(水) 00:04:50.95C++に始まる静的型付けオブジェクト言語を使って、様々な高速フレームワークを構築す
る必要があったからにすぎず、今はそういうのはほぼ完成されているので、仕事の内容
が、動的関数型言語を必要とするようなものにシフトしている。関数型言語の流行は、人
間の頭の適性とか趣味の問題とは全く関係なくて、単純に全世界で行われているプログ
ラミングの仕事の総量内のパーセンテージの問題であるのだと思います。
0204デフォルトの名無しさん
2011/09/21(水) 00:05:50.32意味がわかりません。
0205デフォルトの名無しさん
2011/09/21(水) 00:09:47.11pyths n = [(x,y,z) | x <- [1..n],
y <- [1..n],
z <- [1..n],
x^2 + y^2 == z^2]
改行するだけで随分読みやすくなるな
0206デフォルトの名無しさん
2011/09/21(水) 00:20:18.36mapとfilterにはない
機能が少ない分、読みやすくなってもらわないと困る
0207デフォルトの名無しさん
2011/09/21(水) 01:22:22.380208デフォルトの名無しさん
2011/09/21(水) 04:52:32.82質問は 型 = 構造体の形式 と解釈しているようですが、
1) Prologの引数にはリスト以外の複合項(構造体)がこないというのは「作法」であって、
Prologの規則ではない。プログラマによっては、あるいはアプリケーションの要請で
引数として複合項を渡すことはないわけではありません。
2) リスト以外の複合項が引数として現れず、すべてアトムまたは変数だとしても、
a) foo(四季:X)
b) foo(X) :- member(X,[春,夏,秋,冬]), ...
a)は、Xがアトミックなデータしか取ることがなくても、型付することが可能なことを示しています。
Prologはb)を採用している訳で、このことが動的で型付けなしの意味です。
ただし、Prologの単一化を安全で強い型付けと解釈する向きもあります。これは上の「作法」には
反しますが、呼び出され側の引数に構造体を置いた場合、呼び出し側の引数の構造体の細部まで
形式検査を完全に行うことになるからです。
0209208
2011/09/21(水) 04:57:35.81説明が適切でありませんでした。2) の a) ですが、これはProlog以外の
言語の例です。
現在のPrologでこのように記述すると ':'(四季,X) という複合項が呼び出され側の引数に
記述されたことになってしまいます。
0210デフォルトの名無しさん
2011/09/21(水) 06:09:38.55ニ等辺三角形は現れないと勝手に思い込んでいた。
組合せではだめで、重複組合せになるのかな。
最後の述語も、
短辺はひっくり返すことも可能(_x,_x,_x,_x) :- !.
短辺はひっくり返すことも可能(_x,_y,_x,_y).
短辺はひっくり返すことも可能(_y,_x,_x,_y).
になりますか。
0211デフォルトの名無しさん
2011/09/21(水) 08:11:10.530212デフォルトの名無しさん
2011/09/21(水) 08:14:43.870213デフォルトの名無しさん
2011/09/21(水) 08:16:44.90読むのにかかる時間は大違い
0214デフォルトの名無しさん
2011/09/21(水) 09:12:33.03> 私が理解している限り、「良いソフトウェア」を開発するためには「小さいチーム」と「優秀な開発者」が最重要で、
> それらの欠如をIDEやら静的型言語やらで埋めることはできるというのは幻想。
> 動的型言語は最初からそんな幻想を提供しない
そのとおりだよな
0215デフォルトの名無しさん
2011/09/21(水) 09:15:06.72> 日本のメーカーは、ソフトウェア開発を労働集約型だと思っている人が多いのではないでしょか(仮説)。
> だから、「単価」だけしか話題にしなかったり、やたら経験の浅い人をろくな教育もせずに大量投入する。
ttp://twitter.com/#!/yoshiki_shibata/status/114442273743314944
> その結果、プロジェクトが障害だらけになって火を吹くと、担当者のスキルが低いのが原因だと分析したりします。
> そんなのは、最初から分かていること。
> 分からないで、プロジェクトを進めているとしたら、それは、スキルの低い開発者の問題ではなく、マネジメントの問題です。
まあ、言語が静的になったからといって解決できるような問題ではない。
0216デフォルトの名無しさん
2011/09/21(水) 09:34:57.990217uy
2011/09/21(水) 10:52:23.86バカじゃないの
まともに議論する気がないなら失せろ
お前みたいなゴミが業界を腐らせているんだろうな
知的障害者スレスレの人間
ゴミグラマ
0218デフォルトの名無しさん
2011/09/21(水) 12:20:38.19既にライブラリの有無では埋められない程の差が
一部の言語間には現れてると思うけどね
まあ、>>162が簡単すぎるなら更に一般化して任意のn項の条件式を取れるようにしてみるとか
Python
from itertools import product
def pyths(f, m, n):
return [x for x in product(range(1, n+1), repeat=m) if f(*x)]
使用例
> pyths(lambda x,y,z: x*x + y*y == z*z, 3, 10)
[(3, 4, 5), (4, 3, 5), (6, 8, 10), (8, 6, 10)]
> pyths(lambda w,x,y,z: w*w + x*x + y*y == z*z, 4, 6)
[(1, 2, 2, 3), (2, 1, 2, 3), (2, 2, 1, 3), (2, 4, 4, 6), (4, 2, 4, 6), (4, 4, 2, 6)]
0219デフォルトの名無しさん
2011/09/21(水) 14:13:50.54boost使えばtupleも使えるし
#include <iostream>
#include <vector>
template <class T>
struct Tri {
T x, y, z;
Tri(int xx, int yy, int zz) : x(xx), y(yy), z(zz) {}
};
template <class T>
std::vector<Tri<T> > pyths(int n)
{
std::vector<Tri<T> > v;
for (int x = 1; x <= n; x++)
for (int y = 1; y <= n; y++)
for (int z = 1; z <= n; z++)
if (x * x + y * y == z * z)
v.push_back(Tri<T>(x, y, z));
return v;
}
int main()
{
std::vector<Tri<int> > v(pyths<int>(100));
for (std::vector<Tri<int> >::const_iterator pos = v.begin(); pos != v.end(); ++pos)
std::cout << '(' << pos->x << ", " << pos->y << ", " << pos->z << ')' << std::endl;
}
0220デフォルトの名無しさん
2011/09/21(水) 14:46:51.570221デフォルトの名無しさん
2011/09/21(水) 15:24:02.48両刀使い。。。かな
0222デフォルトの名無しさん
2011/09/21(水) 15:25:47.720223デフォルトの名無しさん
2011/09/21(水) 15:30:22.530224デフォルトの名無しさん
2011/09/21(水) 16:46:50.530225デフォルトの名無しさん
2011/09/21(水) 16:53:30.64こういうのは白黒付けるとすぐ結論が出てつまらない
0226デフォルトの名無しさん
2011/09/21(水) 16:55:24.05当然。シェルだってPrologだってストアドだって動的言語なんだから。
実行時にメタ処理ができれば動的言語。
0227デフォルトの名無しさん
2011/09/21(水) 17:13:50.110228デフォルトの名無しさん
2011/09/21(水) 17:31:06.65OCamlには product にあたる関数が標準で無いけど自作はラクチン
let rec product lst n =
let rec p x = function
[] -> []
| h :: t -> (List.map (fun x -> x::h) x) @ p x t
in match n with
1 -> List.map (fun x -> [x]) lst
| _ when n > 1 -> p lst (product lst (n - 1))
| _ -> [[]]
let rec (--) x y = if x > y then [] else x :: (--) (x + 1) y
let pyths p m n = List.filter p (product (1--n) m)
使用例
pyths (function [x;y;z] -> x*x + y*y = z*z | _ -> false) 3 10
pyths (function [w;x;y;z] -> w*w + x*x + y*y = z*z | _ -> false) 4 6
0229デフォルトの名無しさん
2011/09/21(水) 18:40:12.79メタ処理って何よ
0230デフォルトの名無しさん
2011/09/21(水) 18:47:54.64Perl
多重ループを抽象化できるライブラリがあれば解決でしょ。
use Algorithm::Loops qw(NestedLoops);
sub pyths {
my ($f, $m, $n) = @_;
return [
NestedLoops(
[ ([1..$n]) x $m ],
{ OnlyWhen => sub{ @_ == $m and $f->(@_) } },
sub{ [@_] }
)
];
}
use Data::Dumper;
local $Data::Dumper::Indent;
print Dumper(pyths(
sub{
my ($x, $y, $z) = @_;
return ($x**2+$y**2 == $z**2);
}, 3, 10
)), "\n";
print Dumper(pyths(
sub{
my ($w, $x, $y, $z) = @_;
return ($w**2+$x**2+$y**2 == $z**2);
}, 4, 6
)), "\n";
0231デフォルトの名無しさん
2011/09/21(水) 18:57:59.69メタってついてんだからふつーに処理のための処理とか解釈すりゃよくね
0232デフォルトの名無しさん
2011/09/21(水) 19:14:24.87問題はそれが書けない汎用言語のほうが少ない事だ
0233デフォルトの名無しさん
2011/09/21(水) 19:41:04.530234デフォルトの名無しさん
2011/09/21(水) 21:50:04.12全て動的言語ってことにしとくか?
0235デフォルトの名無しさん
2011/09/21(水) 22:21:46.200236デフォルトの名無しさん
2011/09/21(水) 22:46:47.92lproduct lst 1 = [[x]| x<-lst]
lproduct lst m = [x++y| i<-[div m 2], x<-lproduct lst (m-i), y<-lproduct lst i]
pyths f m n = [x| x<-lproduct [1..n] m, f x]
おれはlproductがm重ループだと思ったらいつのまにか2重ループだった
0237228
2011/09/21(水) 23:03:22.83そう書けば良かったのか。気がつかなかったorz
let rec lproduct lst = function
1 -> [[x] | x <- lst]
| n -> [ x @ y | i <- [n / 2]; x <- lproduct lst (n - i); y <- lproduct lst i]
let rec (--) x y = if x > y then [] else x :: (--) (x + 1) y
let pyths p m n = [x | x <- lproduct (1--n) m; p x]
0238デフォルトの名無しさん
2011/09/21(水) 23:14:17.55型安全厨を隔離するスレとして機能しなくなるだろ
0239デフォルトの名無しさん
2011/09/21(水) 23:31:04.77> じゃあ、Dumpクラスを継承したクラスの全ての公開メソッドに
> 引数と戻り値を出力する処理を追加するようなDumpクラスを
> Scalaで書いてみてよ
> 動的言語なら10行くらいで書けるから
0240デフォルトの名無しさん
2011/09/22(木) 05:39:17.20そして、このスレ見ても分かるように、変数の型は書かないほうが
アルゴリズムに関係無い情報(ノイズ)が無くて読みやすい。
そもそも、変数の型みたいな処理系が知ってる情報を
わざわざ人間様に打たせるというのが時代にそぐわないんだよ。
0241デフォルトの名無しさん
2011/09/22(木) 06:03:02.16def Tracer(target)
new = Class.new target
new.instance_methods.each {|method|
new.__send__(:define_method, method) {|*args|
value = super(*args)
puts "trace: #{target.name}##{method}(#{args.map(&:to_s).join ", "}) ==> #{value}"
value }}
new
end
class Dumper
def fuck(you)
puts "fuck #{you}!"; "fuck me!"
end
end
class Danpei < Tracer(Dumper); end
d = Danpei.new
d.fuck "Hinata"
d.to_s
0242デフォルトの名無しさん
2011/09/22(木) 06:06:19.610243デフォルトの名無しさん
2011/09/22(木) 08:05:34.36>安全なプログラムを作成・保守するにはソースコードは簡潔であるべき。
>そして、このスレ見ても分かるように、変数の型は書かないほうが
>アルゴリズムに関係無い情報(ノイズ)が無くて読みやすい。
それは変数の型がノイズになってしまうような言語が悪いのであって
静的型付き言語の一般的な欠点ではない。
240はたぶんJavaやC++やC#しか知らないと思う。
HaskellやOCamlなどもっと他の言語を勉強すべし。
0244デフォルトの名無しさん
2011/09/22(木) 08:10:04.360245デフォルトの名無しさん
2011/09/22(木) 08:43:08.09> そして、このスレ見ても分かるように、変数の型は書かないほうが
> アルゴリズムに関係無い情報(ノイズ)が無くて読みやすい。
それは数行で終わるような処理の話であって、
普通は1ファイル1000行ぐらいにはなるし、
別のファイルからの呼び出しも発生する。
その場合に、コードを読むための必要な情報(型など)が
近くにないとコードを理解するのに、いろんなことを
考えないといけなくなる。
そのため、このスレに書ける程度の短いコードを例に出すこと自体が
動的言語有意になってる。全くもって現実的ではない証明方法だ。
0246デフォルトの名無しさん
2011/09/22(木) 09:07:38.39普通は1ファイル1000行・・・ なんてあるのかい。
私の中央値は4行くらいだな。
0247デフォルトの名無しさん
2011/09/22(木) 09:55:03.320248デフォルトの名無しさん
2011/09/22(木) 09:55:21.720249246
2011/09/22(木) 10:42:30.63append/3の定義を、
append([],L,L).
append([U|X],Y,[U|Z]) :- append(X,Y,Z).
を2行に表記するルールならば、多分、中央値は4.
append([],L,L).
append([U|X],Y,[U|Z]) :-
append(X,Y,Z).
で3行に表記するルールだと、多分、中央値は6だと思う。
述語は下請け述語も含めてファイル名を concat_atom([_述語名,#,_引数の数,'.pro'],_ファイル名), で
1述語1ファイルに管理されるから、行数は上記のようになる。上の例は"append#3.pro"である。
>>245 の1000行はIDEが呼び出される可能性のある全部の述語をソースでロードしてきた時に
相当すると思うが、そんなことは絶対にしない。
中央値が6と妙に大きいのはCOBOLのように100行以上IF文が続くなどというエラーチェックは
しないが、数十節のものは少し発生するから、1-2行は大きくなる。
0250246 249
2011/09/22(木) 11:08:35.95よる差異でどうでもいい。大事な点は動的型付け言語のProlog が
節の本体に定義された述語の一部をまさに動的に部分的に参照するだけで、
プログラムが管理できるということだ。
どこかに型情報が管理されていることもないから、1000行の「一覧ソース」など
必要がない。
0251デフォルトの名無しさん
2011/09/22(木) 11:30:32.77・・・
大事な点は、動的型付け言語のPrologの場合、述語の定義節の本体から
呼び出される述語を、必要に応じてまさに動的に参照することを繰り返すだけで、
全体のプログラムを管理できるということだ。
どこかに型情報が管理されていることもないから、1000行の「一覧ソース」など必要がない。
0252uy
2011/09/22(木) 12:42:51.66>>249-251
ハァ????????????????????????????????????????
すみませんじゃねーよ
Prologの話題は隔離所でやれ
P言語でこの話題に入っていいのはPerl,Python,PHPだけ
そんなHSP以下のゴミ言語なんて誰も興味ないし、マジで何言ってるかわからないし
お前の言ってることはPrologじゃなくてもできる事だろ、
初心者がこの話題に入ってくるな レスを消費するな
知識をひけらかすのではなく、「「「「「「「「相手を納得」」」」」」」」」」」」」」させることを考えて文章を書け
学生か子供なんですか? つうかまず初心者だろ
いきなりなんで「中央値」なんていう言葉がでてくるんだよ
今は行数の話してんだよwwwwwwwwwwwwwww オンドォウールルラギッタンディスカー???wwwwwwwwwww
お前Prolog以外の言語何ができんの? もしPrologしか「できる」って人に言えるレベルに到達してないなら、もう二度とこのスレに書き込むな
0253デフォルトの名無しさん
2011/09/22(木) 12:48:16.62この前はどうも。
0254デフォルトの名無しさん
2011/09/22(木) 12:49:30.81静的型言語なら編集中にエディタに表示できる環境があるじゃん
0255uy
2011/09/22(木) 12:52:06.43初カキコ・・・すみません・・・日本語が変だったので書きなおし。
俺みたいなProlog使いで中央値なんて言葉使ってる腐れ野郎、他にいますかていねーか、はは
今日のム板の様子
JAVA最強!! JAVAはなんでもできる!! この世はJAVAだけでいい!
ま、それが普通ですわな
かたや俺は電子の砂漠でProlog使って、呟くんすわ
it'a true Programing. BUGってる? それ、仕様ね。
好きな中央値 4
尊敬する中央値 6 ( 7までいくとNO )
なんつってる間に時代遅れっすよ(笑) あ〜あ、Prolog使いの辛いとこね、これ
0256uy
2011/09/22(木) 12:57:17.81私の中央値は4行くらいだな。 (キリッ)(キリッ)(キリッ)(キリッ)(キリッ)
行で話してんのにwwwwwwwww単位かえやがったwwwwwwwwwwwwwwwww
ワイルドキャットと零戦52型くらい違うwwwwwwwwwwwwwwww
0257デフォルトの名無しさん
2011/09/22(木) 12:58:43.950258うy
2011/09/22(木) 13:01:20.21>>250
マジレスすると
>節の本体に定義された述語の一部をまさに動的に部分的に参照するだけで、
お前の言ってるこれは、
おそらく、「初期化情報」や初期値代入さえも、その「部分」に収まってるって事言っているんだろう
俺もそれやったことあるよ Rubyでだけど
けど限界は知っている
その限界は、型情報と実コードを別々の場所に分離して書くよりもさらに低い場所に限界がある
大局的に見れず小さな場所でしかプログラミングやってない奴は、黙ってればいいと思うよ
0259デフォルトの名無しさん
2011/09/22(木) 13:04:46.71COBOLやFORTRAN、Cも静的言語だろ。
動的型付けと動的言語の区別が付かないやつは書き込むなよ。
0260uy
2011/09/22(木) 13:06:13.22その「部分」の一箇所に実行コードから初期値代入やら初期化処理やらすべてを詰め込むため
ソースコードが必要以上に冗長した場合、
そのコードの上下にかかれてるコードまでのエディタをスクロール等をして
見に行く為の時間が長くなる、
つまり常に、"ある程度"精錬されたコードをかかなければやっていけない
ゴミコードをかくと、後からきつくなってくる
で、実際俺でさえ面倒なときはゴミコードを書くときはあるので、
その書き方は、ソースコードを最初から最後まで一環して芸術作品にするくらいの気持ちで書いていかないと
とても大規模なものをかいていけるレベルではない ようは、完成したものは完璧でも、
読みやすさを捨てざるをえなくなるか、読みやすさも捨てずにいこうとしたら、時間がかかる
素人には小規模なプログラムでさえきついし、それを扱って、C#,Rubyで普通にかいていくコードよりも
開発効率をだそうとしたら、本気で天使にならない限り無理
0261デフォルトの名無しさん
2011/09/22(木) 13:27:50.77静的型付け言語でもGoみたいなクラス非結合な
インターフェースの仕組みをもってて、
常にインターフェースにキャストしてりゃ
動的型付け言語と挙動は変わらない訳だしね
逆に文字列から関数を生成するような動的言語の機能を
静的言語で真似ることは無理
0262デフォルトの名無しさん
2011/09/22(木) 13:41:55.73普通に作れるだろ
0263デフォルトの名無しさん
2011/09/22(木) 13:57:02.030264デフォルトの名無しさん
2011/09/22(木) 13:57:56.70その関数の型付けは実行時に行うしかない
だからその部分だけは動的型付けにならざるを得ない
0265デフォルトの名無しさん
2011/09/22(木) 14:06:42.340266デフォルトの名無しさん
2011/09/22(木) 14:11:49.990267デフォルトの名無しさん
2011/09/22(木) 14:17:47.360268デフォルトの名無しさん
2011/09/22(木) 14:20:13.410269デフォルトの名無しさん
2011/09/22(木) 14:27:10.790270デフォルトの名無しさん
2011/09/22(木) 14:43:26.53静的型付けなのか?笑わせんなw
0271デフォルトの名無しさん
2011/09/22(木) 14:51:30.400272デフォルトの名無しさん
2011/09/22(木) 15:07:37.430273デフォルトの名無しさん
2011/09/22(木) 16:34:55.46型の齟齬があったとき実行時例外が出るのは同じだけどな。
ま、こんなコード
Object[] x = new Integer[1];
x[0] = new String();
が通る言語でも平気で静的型を名乗ってるから何でも良いか。
0274デフォルトの名無しさん
2011/09/22(木) 17:13:14.08※コンパイル時に
だろ
0275デフォルトの名無しさん
2011/09/22(木) 17:17:42.65微妙じゃね。非常に非力な動的機能ではあるかも知れないけど。
dynamic_castしてもシグニチャが同じだけのクラスにキャスト出来ないし。
名前の割に大して動的じゃない。
0276デフォルトの名無しさん
2011/09/22(木) 17:17:59.51コンパイルするじゃん
0277デフォルトの名無しさん
2011/09/22(木) 17:22:08.58それのどこが動的?そのコードに実行時チェックが必要な
ところなんてないだろ
0278デフォルトの名無しさん
2011/09/22(木) 17:24:55.79静的言語がこの世から消えたら大変なことになる
0279デフォルトの名無しさん
2011/09/22(木) 17:25:42.110280デフォルトの名無しさん
2011/09/22(木) 17:26:20.77流れ読まずに投下
class Dump(object):
def __init__(self):
for funname in [x for x in dir(self) if not x.startswith('_')]:
def _(f=getattr(self, funname)):
def __(*args, **kw):
res = f(*args, **kw)
print args, kw, res
return res
return __
setattr(self, funname, _())
class X(Dump):
def foo(self, x):
return "foo:" + x
def bar(self, x, y):
return x + y
x = X()
x.foo(x.bar("a", y="b"))
0281デフォルトの名無しさん
2011/09/22(木) 17:26:48.94その理屈じゃインタプリタだってコンパイルしてるよねって話に
なるだろうが。
0282デフォルトの名無しさん
2011/09/22(木) 17:28:33.30だから何?
だれもそんな話してないけど
0283デフォルトの名無しさん
2011/09/22(木) 17:29:30.310284デフォルトの名無しさん
2011/09/22(木) 17:30:59.20じゃ何が言いたかったんだよ
0285デフォルトの名無しさん
2011/09/22(木) 17:33:07.69コンパイル時には型チェックはしないだろ
0286デフォルトの名無しさん
2011/09/22(木) 17:35:45.43なんかインタプリタもコンパイルするから静的だと主張してんのかと思った。
0287デフォルトの名無しさん
2011/09/22(木) 17:41:19.35実行時の処理を減らす言語は評価できる。
最適化だけやってりゃいいのに
なぜ安全をチェックする (ただし実行時はチェックしない) 事に拘るのか理解できない。
0288デフォルトの名無しさん
2011/09/22(木) 17:51:42.750289デフォルトの名無しさん
2011/09/22(木) 17:51:54.12あれは本当の意味で型がないから。
0290デフォルトの名無しさん
2011/09/22(木) 17:53:58.20C++以降の言語は皆出るんじゃなかったっけ?
0291デフォルトの名無しさん
2011/09/22(木) 17:55:45.710292デフォルトの名無しさん
2011/09/22(木) 18:02:02.54機械語レベルで設定できらものであって全然動的じゃねぇ。
VCですらコンパイルオプションで設定できる。
0293デフォルトの名無しさん
2011/09/22(木) 18:22:18.56動的とは言えないよねぇ
0294uy
2011/09/22(木) 18:49:35.08初カキコ・・・すみません・・・日本語が変だったので書きなおし。
俺みたいなProlog使いで中央値なんて言葉使ってる腐れ野郎、他にいますかていねーか、はは
今日のム板の様子
JAVA最強!! JAVAはなんでもできる!! この世はJAVAだけでいい!
ま、それが普通ですわな
かたや俺は電子の砂漠でProlog使って、呟くんすわ
it'a true Programing. BUGってる? それ、仕様ね。
好きな中央値 4
尊敬する中央値 6 ( 7までいくとNO )
なんつってる間に時代遅れっすよ(笑) あ〜あ、Prolog使いの辛いとこね、これ
0295デフォルトの名無しさん
2011/09/22(木) 18:59:36.400296デフォルトの名無しさん
2011/09/22(木) 19:38:11.85急にハードル上がったな。反対はしないけど。
0297デフォルトの名無しさん
2011/09/22(木) 19:46:05.04クラスやら変数やら一斉に追加できるものは割とあるよね
静的言語で似たようなことしようとするのでは手間が全然違う
0298デフォルトの名無しさん
2011/09/22(木) 19:49:48.030299デフォルトの名無しさん
2011/09/22(木) 19:52:46.79REPLで実行するとそういうことが出来る
0300デフォルトの名無しさん
2011/09/22(木) 20:03:18.44処理系に実装されてないだけってのは
分けて考えてくれ
0301デフォルトの名無しさん
2011/09/22(木) 20:03:22.550302デフォルトの名無しさん
2011/09/22(木) 20:14:56.13規格上許されてんのは動的言語だけでしょ。
確かにC++もJavaも動的リンクは可能だけど、
インターフェースのルールを無視した読み込みは不可能。
関数単位を無視したコード読み込みなんてのも出来ない。
0303デフォルトの名無しさん
2011/09/22(木) 20:21:39.82全然処理依存の問題じゃないと思うぞ。
0304デフォルトの名無しさん
2011/09/22(木) 20:23:54.18動的言語:Perl, Python, Ruby, Prolog
静的言語:C, C++, Java
残り埋めて
0305デフォルトの名無しさん
2011/09/22(木) 20:35:37.41この辺も動的だわ
PHP ECMAScript全般 lisp sh系全般
PostScript Objective-C Smalltalk
Haskel
0306デフォルトの名無しさん
2011/09/22(木) 21:35:24.38なんでHaskellが動的言語なの?
0307デフォルトの名無しさん
2011/09/22(木) 22:11:57.230308デフォルトの名無しさん
2011/09/22(木) 22:19:07.390309デフォルトの名無しさん
2011/09/22(木) 22:20:35.15実行時に型を判定して分岐とかできるからでしょ。
実行時にメタ処理するから動的という話では。
0310デフォルトの名無しさん
2011/09/22(木) 22:35:30.69スレタイ解釈のレスの応酬は前にあったけど、頭がまとまらなかった。
「動的型付けでは安全なソフトを作れない」なら主張として解る(賛同しているのではない)けど、
文字通りの「動的」だと、「使わなけりゃいいじゃない」という感想にどうしてもなってしまう。
0311デフォルトの名無しさん
2011/09/22(木) 22:36:55.31Objective-Cみたいな動的型付け言語を動的型を動的に含めると、
APL も動的言語なんだけどどうなんだろうね。
0312デフォルトの名無しさん
2011/09/22(木) 22:42:58.86静的=コンパイル時しかメタ処理が出来ないし
0313デフォルトの名無しさん
2011/09/22(木) 22:54:21.18どこが動的なんだ?
0314デフォルトの名無しさん
2011/09/22(木) 22:55:44.67JavaもC++も動的言語じゃん
0315デフォルトの名無しさん
2011/09/22(木) 22:59:44.00Evalも標準じゃないし
0316デフォルトの名無しさん
2011/09/22(木) 23:01:18.99コンパイル時なら許されるという考えは甘すぎる
0317デフォルトの名無しさん
2011/09/22(木) 23:07:17.96広域にバグをもたらすマクロとは違う。
0318デフォルトの名無しさん
2011/09/22(木) 23:15:03.340319デフォルトの名無しさん
2011/09/22(木) 23:53:59.11静的言語+ORMappingより格段に生産性が有るだろうに。
0320デフォルトの名無しさん
2011/09/23(金) 05:58:59.37それやるぐらいなら
ODBのほうが生産性上がるよ。
0321デフォルトの名無しさん
2011/09/23(金) 08:24:13.580322デフォルトの名無しさん
2011/09/23(金) 08:26:42.81馬鹿も休み休み言え
メタプログラミングは出来るが「静的に」だ
0323デフォルトの名無しさん
2011/09/23(金) 08:37:16.28昔、Haskell には型がない、とか主張してた奴がいてさw
0324デフォルトの名無しさん
2011/09/23(金) 08:42:43.74現状はこんな感じか?
動的言語:Perl, Python, Ruby, Prolog, PHP, ECMAScript全般, Common Lisp, Scheme,
sh系全般, AWK, PostScript, Objective-C, Smalltalk
静的言語:C, C++, Java, COBOL, Fortran, Haskell
0325デフォルトの名無しさん
2011/09/23(金) 10:19:37.43let _ = Toploop.initialize_toplevel_env()
let eval txt =
let lb = (Lexing.from_string txt) in
let phr = !Toploop.parse_toplevel_phrase lb in
Toploop.execute_phrase true Format.std_formatter phr
let f x = x + 1
let _ = Toploop.setvalue "f" (Obj.repr f);
eval "let f x = string_of_int (2 * f x);;"
let f : int -> string = Obj.obj (Toploop.getvalue "f")
let _ = print_string (f 0)
0326デフォルトの名無しさん
2011/09/23(金) 12:39:22.87・静的型検査が無い => 対象:動的型言語
・型宣言が無いから読み難い => 対象:動的型言語、型推論のある言語
・メタプログラミングは黒魔術
・字句解析フェーズ => 対象:Cマクロ 等
・構文解析フェーズ => 対象:Lispマクロ、Camlp4(OCaml) 等
・意味解析フェーズ => 対象:型レベルプログラミングできる言語全般(C++/D テンプレート、Haskell、Scala 等)
・実行フェーズ => 対象:evalがある言語全般
0327デフォルトの名無しさん
2011/09/23(金) 13:25:34.41型がしっかりしてれば、使って良い。
0328デフォルトの名無しさん
2011/09/23(金) 14:48:27.050329デフォルトの名無しさん
2011/09/23(金) 14:51:14.41DB上のオブジェクトに変換が必要で
素直に取り込める訳じゃないでしょ
めんどくさい
0330デフォルトの名無しさん
2011/09/23(金) 18:07:59.24RDBはそうだね。
DBのオブジェクトに変換が必要。
0331デフォルトの名無しさん
2011/09/23(金) 19:24:37.76まあ、低能が扱うと怪我しそうな特徴ばかりではある
0332デフォルトの名無しさん
2011/09/23(金) 19:43:49.76evalと動的な名前束縛があるのでOCamlは動的言語?
0333デフォルトの名無しさん
2011/09/23(金) 22:16:53.60>>310も言ってるけど、静的型検査以外は「使わなければ良い」だな。
0334デフォルトの名無しさん
2011/09/24(土) 00:33:51.01そりゃそうだ
0335uy
2011/09/24(土) 06:38:29.83はぁ????????????wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
まさかお前、C++ テンプレートが 効率上げるとか思ってないだろうな
やってないなら教えてやるけど
あれ違うよ あれただの研究材料だよ
実際にC++で開発するときもテンプレートは使わないほうがいいよ
int でも doubleでも 大丈夫ですwwwwwww とか。やめたほうがいいよ やめたほうがいいよおおおおおおwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0336デフォルトの名無しさん
2011/09/24(土) 08:08:02.520337デフォルトの名無しさん
2011/09/24(土) 09:09:53.14動的言語では低能はソフトを作れない(使いこなせない)が正しい事が分かったね
0338デフォルトの名無しさん
2011/09/24(土) 09:51:25.790339uy
2011/09/24(土) 11:59:40.52個人に頼りすぎると、
そいつがいなくなったときのダメージが大きい
だから雑魚が大量にいるほうが会社にとって良い日本のIT社会
JAVAでも使ってろごみかす
0340デフォルトの名無しさん
2011/09/24(土) 12:20:43.71STL使ったこと無いの?
0341デフォルトの名無しさん
2011/09/24(土) 12:30:24.19変数の型宣言をするかしないかって
それほど大きく影響するもんか?
むしろ動的言語での開発って
単体テストをあまり書かないってところが問題な気はする。
適当に走らせて動きをみるとかそんな感じでやっちまう。
0342デフォルトの名無しさん
2011/09/24(土) 12:42:35.64もう読むのが嫌になった頃合いにテンプレート使うのが素人(俺)のやり方
0343デフォルトの名無しさん
2011/09/24(土) 14:08:35.19RDBじゃなくてオブジェクトデータベースの事だよ。
ODBは言語上のオブジェクトそのものは解釈出来ないから、
どうしても言語側とDB側での変換が必要となる。
最もORマッピングよりはマシだけど。
0344デフォルトの名無しさん
2011/09/24(土) 15:03:21.95型宣言が必須だと高階関数が面倒くさい
あと動的言語のほうがテストを書く文化あるだろ(テストを過信しすぎる程に)
0345デフォルトの名無しさん
2011/09/24(土) 15:24:15.40テストについては、動的とか静的とかより、性格とか文化とか、社風とか、環境の方が影響多い気がするな
国内企業も、外資系企業もテスター経験したが、外資系企業は最低限のテストしかしたがらない
通常の手順とは別にショートカット機能付けといて、「我々は通常の手順しかサポートしないから、テストは通常の手順しかしなくて良い」とか、平気で言うもん
客からクレーム入って初めてテストするとか、普通
だったら最初からショートカット機能付けるなよ。と思った
怖くて辞めちゃったよ
0346デフォルトの名無しさん
2011/09/24(土) 16:26:09.47別にめんどくさくない。
0347デフォルトの名無しさん
2011/09/24(土) 17:01:09.58あ、別に高階関数を使った事無い人には聞いてないです
0348デフォルトの名無しさん
2011/09/24(土) 17:55:27.860349デフォルトの名無しさん
2011/09/24(土) 18:08:59.900350デフォルトの名無しさん
2011/09/24(土) 18:38:02.33let ( *- ) a b = List.fold_left2 (fun x a b -> x +. a *. b) 0. a b
もし型注釈が必須だとこうなる
let ( *- ) (a : float list) (b : float list) : float =
List.fold_left2 ((fun x a b -> x +. a *. b) : float -> float -> float -> float) 0. a b
0351デフォルトの名無しさん
2011/09/24(土) 18:43:49.67スレタイ通り動的言語と静的言語の問題を書け
0352デフォルトの名無しさん
2011/09/24(土) 18:50:54.40多少文字数が減る程度微々たる問題過ぎる
継承関係無視とかメッセージ転送とかもっとマトモなネタを出せよ
0353デフォルトの名無しさん
2011/09/24(土) 18:51:46.560354デフォルトの名無しさん
2011/09/24(土) 19:23:18.36型推論の結果を使ってカーソルが当たってる変数/関数の型を表示できるわ(Emacs, Vim, Eclipse)、
型推論に対する環境が充実し過ぎ。
こんな特殊な言語の話を一般化するのはどうかと。
0355デフォルトの名無しさん
2011/09/24(土) 19:38:05.04詳しく
0356uy
2011/09/24(土) 20:30:13.87本当に理解してないゴミなんだな・・・
バカか?
テンプレートを直に触るって事は、「STLを作る」って事になるんだけど
お前はまさか、自分でゼロからかいてSTL並のものを全くバグを混入せず作れるとか思ってるわけか
じ ゃ あ や っ て み ろ ゴ ミ
それで開発効率()が、上がると思っているなら や っ て み ろ
つうか一人でやってろ(笑)wwwwwww
0357デフォルトの名無しさん
2011/09/24(土) 21:09:25.93> 多少文字数が減る程度
倍以上減っててワロスwww
0358デフォルトの名無しさん
2011/09/24(土) 22:29:40.88破壊的代入を使わずに処理と状態を持ち回るため(破壊的代入は可能なら避けたい)、
let rec cps f init x =
let y = f init x in `T (y, cps f y)
let f = cps (fun x y -> なにかの処理) init
のような関数を定義したり、この関数をネットワーク越しにsend/receiveしたりする
で、型を書くとこんな感じ(あれ?意外と読めるw)
let rec cps (f : 'a -> 'b -> 'a) (init : 'a) (x : 'b) : [> `T of 'a * 'c ] =
let (y : 'a) = f init x in `T (y, cps f y)
let (f : 'a -> [> `T of 'a * 'b ] as 'b) = cps ((fun x y -> なにかの処理) : 'a -> 'c -> 'a) init
0359デフォルトの名無しさん
2011/09/24(土) 23:40:41.13もう何度も言われてる事だろうが、こういうことを書いて具体例を挙げられたやつを見た事が無い。
おそらく今回も逃げるだろう。
0360デフォルトの名無しさん
2011/09/25(日) 00:44:06.19返り値の内部表現型をチェックするテストでも日々書かされまくってんじゃない
0361デフォルトの名無しさん
2011/09/25(日) 03:00:21.59http://hibari.2ch.net/test/read.cgi/tech/1316887046/
>OO関連及び動的言語関連で事あるごとに争っている
>静的型付け厨と動的型付け厨が、思う存分飽きるまで仲良く
>罵り合う為のスレです。
>スレの進行を妨げる型安全議論を見かけた場合は、
>こちらへの誘導をお願いします。
0362デフォルトの名無しさん
2011/09/25(日) 03:35:55.84名前付きの関数作るんだったら、最初から名前付き関数作れば?
代入するだけ無駄だろ。何のための無名関数だよ。
0363デフォルトの名無しさん
2011/09/25(日) 03:38:44.11Alexに言われるまでもない。
http://www.artima.com/scalazine/articles/twitter_on_scala.html
Alex Payne: I’d definitely want to hammer home what Steve said about typing.
As our system has grown, a lot of the logic in our Ruby system sort of replicates a type system, either in our unit tests or as validations on models.
I think it may just be a property of large systems in dynamic languages, that eventually you end up rewriting your own type system, and you sort of do it badly.
You’re checking for null values all over the place.
There’s lots of calls to Ruby’s kind_of? method, which asks, “Is this a kind of User object? Because that’s what we’re expecting. If we don’t get that, this is going to explode.”
It is a shame to have to write all that when there is a solution that has existed in the world of programming languages for decades now.
0364デフォルトの名無しさん
2011/09/25(日) 03:41:55.993分の1も減ってなくて笑えねぇ
同じ記述を2どと書かないとか、常に10分の1ぐらいまで減らせるとかできないのか
0365デフォルトの名無しさん
2011/09/25(日) 03:48:18.66ハッスル気味なところ悪いんだが、お前さん何と戦おうとしてるんだ?
ろくでもないすれ違いにいちいちカッカしてちゃ疲れるだけだぜ
0366デフォルトの名無しさん
2011/09/25(日) 03:50:13.66Steve Jenson: Another thing we really like about Scala is static typing that’s not painful.
Sometimes it would be really nice in Ruby to say things like, here’s an optional type annotation.
This is the type we really expect to see here.
And we find that really useful in Scala, to be able to specify the type information.
0367デフォルトの名無しさん
2011/09/25(日) 03:55:20.320368デフォルトの名無しさん
2011/09/25(日) 03:57:32.250369デフォルトの名無しさん
2011/09/25(日) 03:59:34.070370デフォルトの名無しさん
2011/09/25(日) 04:12:30.680371デフォルトの名無しさん
2011/09/25(日) 07:13:54.34は?ベクトル内積演算子をfold_left2で実装してるんだろ
こうやって新しく関数を作るのは高階関数とカリー化がある言語では当たり前
馬鹿は黙ってろよ
0373デフォルトの名無しさん
2011/09/25(日) 09:45:10.32問題は、間違った使い方に対する正しいエラーメッセージ
これを気にすると動的型だけでなくC++やHaskellでも満足できなくなる
0374デフォルトの名無しさん
2011/09/25(日) 11:27:34.04このスレ自体が隔離スレなのに、さらに隔離するとか鬼か
メタプログラミングで型を副作用付きで拡張する(モンキーパッチ)には動的型が必要だし、
動的言語と動的型言語がイコールでなくても、わざわざ別スレ立てるほどじゃない
0375デフォルトの名無しさん
2011/09/25(日) 13:32:01.61自分の知識や経験から「動的言語では安全なプログラムは組めない」って結論に至ったんじゃなくて
誰かの受け売りですかwwwうけるwww
「Alexに言われるまでもない(キリッ」www
0376uy
2011/09/25(日) 13:47:17.23自分が楽できるかどうかで物言ってるんだろ
でもそれでいいと思うよ
静的言語とか今更バカらしい
一度動的言語のよさを知っちゃうと、二度と静的言語なんて触りたくなくなるからね
趣味のプログラミングで、動的言語でも速度的に間に合うようなソフトを
静的言語で作ってるゴミカスってバカじゃないの?w
そのゴミカスが学生とかならいいんだけど、良い年いっていたり、(キリッ)としながらブログかいてたりすると
周りも教えてやるに教えてやれないんだよね^^;
動的言語でやっていくことが大前提で、その上でどうすればよいかを考えるべき
0377デフォルトの名無しさん
2011/09/25(日) 14:01:34.21>静的言語で作ってるゴミカスってバカじゃないの?w
>そのゴミカスが学生とかならいいんだけど、良い年いっていたり、(キリッ)としながらブログかいてたりすると
>周りも教えてやるに教えてやれないんだよね^^;
教えるも何も・・・
どうでも良いんじゃないの? 趣味なんだから
0378デフォルトの名無しさん
2011/09/25(日) 14:09:10.78関数やクラスの集まりであるシステムを作ると
逆に静的言語のほうが早く作れるんだよね。
それはコーディング以外占める量が大きくなるからだろう。
コーディング以外っていうのは、設計したり、コードを読んだり
修正の時の影響範囲を調べたりとかそういうことね。
動的言語だと、どうしても影響範囲の把握に時間がかかる。
0379デフォルトの名無しさん
2011/09/25(日) 14:10:48.28静的言語をつかう理由を
動作速度だと思っている時点で
お前はまだまだだ。ってわかるよ。
まだまだな人間が言う言葉、誰も信じない。
0380デフォルトの名無しさん
2011/09/25(日) 15:07:48.58動的型付けと静的型付けの差異ならそんなこともあるだろうけど、
このスレで対象にしている動的、静的の差異ではちょっと考えられないな。
0381デフォルトの名無しさん
2011/09/25(日) 15:12:44.77動作速度に差なんてできたっけ?
そもそも>>376が言っていることが意味不明なんじゃ?
0382デフォルトの名無しさん
2011/09/25(日) 15:28:17.07代入してる事にかわりないだろ。
あと静的型付けでも推論規則で文字数は減らせるが、
それは知らんのだろうな。
0383デフォルトの名無しさん
2011/09/25(日) 15:31:22.65おいおい、>>350のコードはOCamlだぞ?
もちろん静的型付けで型推論だ
あと代入じゃなくて束縛
無知はお前
0384デフォルトの名無しさん
2011/09/25(日) 15:44:37.17動的、静的って言ったら普通は型の話で、
>>2見る限りこのスレも型の話だと思ったんだけど、
このスレが対象にしてる動的、静的ってなんなの?
evalができるとかそういう奴?
0385デフォルトの名無しさん
2011/09/25(日) 15:47:45.22OCamelに限らず静的型付け技術一般の話
0386デフォルトの名無しさん
2011/09/25(日) 15:55:28.68技術文書じゃちょっと前は大抵動的静的ってのは自己書き換え(メタ操作)系の動作を指すことが多かった。
PerlやVBなんて動的型付けは昔から出来たけど、その辺を掘り下げて動的言語と書いてるのは見たことはない。
0387デフォルトの名無しさん
2011/09/25(日) 15:57:09.13>>362は>>350をどう書くべきだと言ってるの?
「代入するだけ無駄だろ」「何のための無名関数だよ」の意味が分からない
たぶん382は関数型言語をまったく理解してないと思われる
0388デフォルトの名無しさん
2011/09/25(日) 16:00:44.57カリー化でもっと短く書けて
let ( *- ) = List.fold_left2 (fun x a b -> x +. a *. b) 0.
になる。それで内積を a *- b で計算できるようになる
0389デフォルトの名無しさん
2011/09/25(日) 16:02:00.07List.fold_left2 ((fun x a b -> x +. a *. b) : float -> float -> float -> float) 0. a b
使う関数の引数にコレをそのままぶち込めばいいんじゃないか。
0390デフォルトの名無しさん
2011/09/25(日) 16:25:55.69えーと、まずそれは関数になってない(ただのfloat)のだけどね
まあ、ML系言語は知らないんだろうから(知ってたら>>382は無い)、それは見逃そう
まず第一に、お前はおそらく「高階関数を使う = 関数に関数を引数渡しする」
これ意外の用途が思い浮かんでいない、これが間違い
まあ、手続き型言語(例えばC言語のqsort)ではそうかもしれんけど、
関数型言語では、より一般的な高階関数(>>350の場合はList.fold_left2、>>358ではcps)を使って
具体的な関数を定義するのは普通のスタイルなんだ
0391デフォルトの名無しさん
2011/09/25(日) 16:34:57.020392デフォルトの名無しさん
2011/09/25(日) 16:40:12.22で引数を2つとる関数定義しとんのとちゃうの?
0393デフォルトの名無しさん
2011/09/25(日) 16:45:52.64val List.fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
という一般的な型の関数から
val ( *- ) : float list -> float list -> float
という具体的な関数を作ってる
0394デフォルトの名無しさん
2011/09/25(日) 16:52:36.76fold_left2 (fun x a b -> x +. a *. b) 0. (* 二つの引数の内積を計算する関数 *)
fold_left2 (fun x a b -> x +. a *. b) 0. a (* ベクトルaと、一つの引数との内積を計算する関数 *)
fold_left2 (fun x a b -> x +. a *. b) 0. a b (* ベクトルaとbの内積 *)
0395デフォルトの名無しさん
2011/09/25(日) 16:56:15.80そうか?オブジェクト指向系のスレにも型安全の話題が散発するし、
こっちのスレに書いても、動的処理の話題で型安全の話が中断して
なんども振り戻しに戻るし、型安全の話だけに集中できるスレがあっても
いいんじゃなかろうか
0396デフォルトの名無しさん
2011/09/25(日) 16:59:01.330397デフォルトの名無しさん
2011/09/25(日) 17:08:37.84俺は>>374を書いたときは動的型スレいらんと思ってたけど、
>>361のスレ見ると型安全派がじつにイキイキしてる(笑)ので
今ではこれで良かったと思ってる
0398デフォルトの名無しさん
2011/09/25(日) 17:11:07.50何が同じなの?
0399デフォルトの名無しさん
2011/09/25(日) 17:20:18.71>>324前後の話だと思う。
0400デフォルトの名無しさん
2011/09/25(日) 17:22:44.53カリー化
0401デフォルトの名無しさん
2011/09/25(日) 17:23:47.180402デフォルトの名無しさん
2011/09/25(日) 17:29:14.94カリー化は、例えば f : (a,b,c) -> 'd という型の関数を
f : 'a -> ('b -> ('c -> 'd)) に変換する操作を指す
また f : 'a -> ('b -> ('c -> 'd)) のような関数をカリー化された関数という
で、何がどう同じなの?
0403デフォルトの名無しさん
2011/09/25(日) 17:30:27.99http://togetter.com/li/183700
0404デフォルトの名無しさん
2011/09/25(日) 17:30:59.270405デフォルトの名無しさん
2011/09/25(日) 17:32:47.42それは部分適用
0406デフォルトの名無しさん
2011/09/25(日) 17:35:03.97f(n)(m)(l)(o);の形でないとカリー化ではないと?
0407デフォルトの名無しさん
2011/09/25(日) 17:36:18.72ああ10と書いたのが悪かったかyぐらいにしとけば納得したか。
0408デフォルトの名無しさん
2011/09/25(日) 17:49:11.48カリー化はこんな感じ(C++0xでこう書けるかは知らないけど)
[](int x){return [](int y) {return x == y;};};
0409デフォルトの名無しさん
2011/09/25(日) 17:50:45.950410デフォルトの名無しさん
2011/09/25(日) 18:01:22.34プログラマとしての技量とは関係ないから、気にしなくて良いと思うぞ
0411デフォルトの名無しさん
2011/09/25(日) 19:14:34.25動的言語は、わざわざ自分で書かなきゃならない仕組みを
言語側が用意してくれているだけの話だからね。
静的言語を使って同じ仕組みを用意しても結局速度的には同じか
寧ろ遅くなるだろう。
0413デフォルトの名無しさん
2011/09/25(日) 19:33:49.110414デフォルトの名無しさん
2011/09/25(日) 19:41:02.490415デフォルトの名無しさん
2011/09/25(日) 19:49:47.91フレームワークというバズワードに踊る人々
http://hibari.2ch.net/test/read.cgi/prog/1309712805/
0416デフォルトの名無しさん
2011/09/25(日) 20:14:22.06ライブラリか、ミドルウェアか、ツールキットか。
フレームワークが何をさしてるのか解からんが、
メタ情報の追加だけは、ソースをプリプロセスしない限り手書きになる。
まぁ、それはともかく、そんな周辺ツールを集めてまで
動的処理なんか書きたくないわ。言語が機能を持ってりゃ使うし、もってなきゃ諦める。
0417デフォルトの名無しさん
2011/09/25(日) 20:45:12.48それでいてHaskellみたいな静的な言語ってまだ有名なのは存在してないような気もするが。
0418uy
2011/09/25(日) 20:46:32.41どうしてお前たちって>>381
こういうレス放置してんの?
面倒くさいから?
それともレス見逃してんの?
黄色じゃなくて赤信号だよ 完全AUTO 誰か教えてやって 俺忙しいわ・・・ これ煽りじゃなくてマジレスなの まじれす。
0419uy
2011/09/25(日) 20:49:31.95こういう間違いレスが放置されるから
「あれそうなのかな?」って勘違いするやつが出てくる悪循環だよね
大体ほとんどのやつはさ、自分で実践して身に着けた知識じゃなくて
誰かが言ってたそう言ってたって知識しかないんだよ、自分で実践するには、
小さなことでもたいてい1〜2時間はかかるもんだ 環境そろえたりサンプル探したりね・・・
はい まじれすでしたよ 動的言語も、いつかは静的言語と同じ速度まで上がりそうな機がするけどね、、、
まだ、そのアルゴリズム発見されてないです
0420デフォルトの名無しさん
2011/09/25(日) 20:52:27.88あぼ〜ん
419 あぼ〜ん
あぼ〜ん
0421デフォルトの名無しさん
2011/09/25(日) 20:57:29.12またこんなスレ作りやがって。
0422デフォルトの名無しさん
2011/09/25(日) 21:05:12.62uyみたいなマジキチさんがそっちに持って行こうとするだけで
0423デフォルトの名無しさん
2011/09/25(日) 21:34:35.04ASTにアクセスできる静的言語ってこと?あるよ
0424デフォルトの名無しさん
2011/09/25(日) 22:01:02.30それをあの手この手を使って誘導したんだよ。 藁 当時の
ログを見れば分かる。
0425デフォルトの名無しさん
2011/09/25(日) 23:07:41.600426デフォルトの名無しさん
2011/09/26(月) 01:43:26.32ああ・・・お前は勉強しなおしたほうがよい
0427デフォルトの名無しさん
2011/09/26(月) 21:11:51.73説明できないならレスしなくて良い
0428デフォルトの名無しさん
2011/09/26(月) 21:30:08.55安全なんて言うから、速度はあきらめたのかなって勘違いするやつが出てくる
0429デフォルトの名無しさん
2011/09/26(月) 21:40:20.88単に強めの静的型付けなだけの中途半端な関数型で安全とか片腹痛し
0430デフォルトの名無しさん
2011/09/26(月) 21:45:06.28病気じゃね?
0431デフォルトの名無しさん
2011/09/26(月) 22:29:35.940432デフォルトの名無しさん
2011/09/26(月) 22:39:21.07Functorだってあの定義で保障できるのはForgetfull Functorまでだ
0433デフォルトの名無しさん
2011/09/26(月) 22:43:53.94どっちかというと動的言語側なんだわ
0434デフォルトの名無しさん
2011/09/26(月) 22:52:54.25型推論のおかげで意識せずにすむ場面が多いけど
0435デフォルトの名無しさん
2011/09/26(月) 22:59:21.36よって静的言語で安全性云々というのはナンセンス
0436デフォルトの名無しさん
2011/09/26(月) 23:00:17.32つーても、俺にも動的言語の正確な定義は分からんが、
このスレじゃメタプログラミングのやり易い言語を動的言語と呼ぶらしいよ
http://ja.wikipedia.org/wiki/%E5%8B%95%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
この説明では高階関数も動的言語の特徴に入ってる
0437デフォルトの名無しさん
2011/09/27(火) 00:03:32.750438デフォルトの名無しさん
2011/09/27(火) 00:09:11.63安全厨から攻撃されるネタだね
プログラマの意図しない型変換が起こっていてもコードから分かり難いという理由で
0439デフォルトの名無しさん
2011/09/27(火) 00:14:23.22そうだね。で、君は型の話がしたいの?
わざわざ専用のスレがあるのに、ここで?
0440デフォルトの名無しさん
2011/09/27(火) 00:22:46.620441デフォルトの名無しさん
2011/09/27(火) 00:42:20.62> 何故、変数の型宣言みたいなレベルの低い話になるのだろう。
>
> せめてオープンクラスは柔軟な変更が可能になるけど
> 影響範囲がグローバルになるからClassbox的な機構が必要
> みたいな議論にならんものか。
0442デフォルトの名無しさん
2011/09/27(火) 03:34:17.080443デフォルトの名無しさん
2011/09/27(火) 07:53:22.88(1)静的厨(Java厨)が型安全性について勘違いした主張をする
(2)誰かがその間違いを訂正する
(3)ついでに動的言語のテクニックに言及する
(4)しばらく(3)のネタで議論(このときJava厨は議論に参加できない。可哀想w)
(5)一段落ついたところで、また(1)に戻る
だから型の話を禁止するとスレ自体が過疎化する
0444デフォルトの名無しさん
2011/09/27(火) 08:56:29.85あなたにというコメントではないけど
せめて必要条件と十分条件、必要十分条件くらい分けて考える癖を
つけたほうがいいよ。<後悔関数と動的言語
このスレって、ちょっとした想像を適当にふくらませてコメント
してるだけだろう?だから>>443 のループをやるんだろう?
JavaにしてもScalaにしても原理主義者がいっぱいいる言語で有名だからな
かれらのオナニーのためのスレってことだから放置で医院ではないか?
0445uy
2011/09/27(火) 13:10:10.90だからさぁ・・・・
こんな初歩的なこともわからないなら・・・
多分おまえ、俺に巻き込まれて透明削除されてんだよ
どうして静的言語と動的言語で実行速度に差がないとか勘違いしちゃうのか
ちょっとインタプリタかいてみろよ
どうせかけないレベルなんだろうけど 勉強になると思うよ そういう勘違い発言を二度としないためにね
それすらやらないならゴミグラマだから死ね
0446デフォルトの名無しさん
2011/09/27(火) 19:58:27.41lispなんて元々コンパイル方式だし。
逆にCもインタプリタで動くしな。
0447デフォルトの名無しさん
2011/09/27(火) 20:09:18.78スレ違い
0448デフォルトの名無しさん
2011/09/27(火) 21:07:30.85> どうして静的言語と動的言語で実行速度に差がないとか勘違いしちゃうのか
> ちょっとインタプリタかいてみろよ
インタプリタと動的言語は違うでしょ。
それからJITって知ってる?
0449デフォルトの名無しさん
2011/09/27(火) 21:32:58.36Open C++やDynaceはさっぱりだな。実行時にメタ操作しようとするとどうしても、
ある種のインタプリタを内蔵することになってバイナリーがでかくなるから、
基本構文が複雑な言語じゃ普及しづらいんだろうな。
0450デフォルトの名無しさん
2011/09/27(火) 23:06:10.39実際には実行時にメソッド定義したいとか
いろんな型を変数に入れたいとか無いよね。
たいていはプログラミング時に決めるでしょ?
そう考えると、必要なのは動的であることではなくて
新しい型を定義する、簡単な記法だと思うわ。
0451デフォルトの名無しさん
2011/09/27(火) 23:09:25.95それは別としてJsonみたいなもんはしょっちゅう使える。
0452デフォルトの名無しさん
2011/09/27(火) 23:19:59.46本当はプログラム実行時に当てたいんじゃなくて
プログラム実行前にパッチ当てるので十分でしょ?
JSONはハッシュと配列の組み合わせで作れる。
0453デフォルトの名無しさん
2011/09/27(火) 23:25:46.02外部のライブラリ借りてくるのもめんどい。
そういうとき手軽に使える。
0454デフォルトの名無しさん
2011/09/27(火) 23:31:05.970455デフォルトの名無しさん
2011/09/27(火) 23:32:14.40なんの話してるの?
JSON? ライブラリを使わずに、
手軽に使えるのはJavaScriptだけだけど、
JavaScriptはJSONを解釈したらメソッドを持たない
ただのハッシュと配列の組み合わせになるよね。
0456デフォルトの名無しさん
2011/09/27(火) 23:32:22.88C++のテンプレートを実行時に使えたら便利って時は多いでしょ。
実行時の分岐の結果や演算結果でテンプレートを展開できれば、
複雑怪奇なテンプレートメタプログラミングをせずに済む。
また、実行時の条件により型を生成できないというテンプレートの
限界を突破できる。
0457デフォルトの名無しさん
2011/09/27(火) 23:36:34.78動的言語が直接取り込めるデータは同じ言語のデータだけなんだから
別にJavascriptでしか読み込めなくたって問題はないでしょ。
lisp用なら、lispの構文で書いたデータを読み込めれば十分。
ただのハッシュと、配列って事は全然重要じゃない。
一番は、evalだけですぐ読み込めること。
0458デフォルトの名無しさん
2011/09/27(火) 23:57:07.47開発はもちろん使った事すら無いのだろうか
0459デフォルトの名無しさん
2011/09/28(水) 00:07:22.760460デフォルトの名無しさん
2011/09/28(水) 00:38:32.34所以だが。(get_lineという述語が定義済みとする)
整数を得る(_整数) :-
write('整数を入力してください : '),
get_line(Line),
整数入力検査(Line,_整数),!.
整数を得る(_整数) :- 整数を得る(_整数).
整数入力検査(Line,_整数) :-
atom_to_term(Line,_整数,VarNameList),
integer(_整数),!.
整数入力検査(Line,_) :-
writef('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
fail.
0461デフォルトの名無しさん
2011/09/28(水) 02:01:07.57> つーか、プラグインがあるアプリケーションを
> 開発はもちろん使った事すら無いのだろうか
静的言語でならプラグイン開発したことあるが、
それが何か関係あるのか?
プラグイン開発は静的言語がいいよ。
インターフェースがきっちり決まってるから
わかりやすい。
0462デフォルトの名無しさん
2011/09/28(水) 02:12:12.42プラグインは遅延バインディングの機構によって
プログラムを動的に変更/拡張するものだ
お前、動的なプログラムの変更は必要無いとか言ってなかったか?
0463デフォルトの名無しさん
2011/09/28(水) 02:13:57.02静的型付けとか動的型付けは、専用スレのネタだからね。
ここでのミソは、インターフェースが元々無くてもプログラム自体にメタに介入でき
パッチの形でプラグイン化できるって所だろ。
静的言語でやると、機械語やバイトコードレベルで介入することになるからやってられん。
0464デフォルトの名無しさん
2011/09/28(水) 02:35:03.69バイナリレベルで外部モジュールとのリンクを行うと
バージョンアップでバイナリ非互換が発生して
これまでのプラグインが使えなくなったとか良くある話。
0465デフォルトの名無しさん
2011/09/28(水) 05:45:38.72動的言語では
実行時=プログラミング時
なんだが?
0466デフォルトの名無しさん
2011/09/28(水) 05:54:55.18「smalltalk-mt」でググるといい。
世の中には色々な変態さんがいることがわかる。
0467デフォルトの名無しさん
2011/09/28(水) 07:28:50.660468デフォルトの名無しさん
2011/09/28(水) 07:35:14.620469デフォルトの名無しさん
2011/09/28(水) 07:39:28.620470デフォルトの名無しさん
2011/09/28(水) 08:00:20.030471デフォルトの名無しさん
2011/09/28(水) 12:25:03.470472デフォルトの名無しさん
2011/09/28(水) 13:02:57.70それは良いとして動的言語はバイナリー書き換えることなく、
デバッグログを仕込んだり、一度しか分岐しない分岐の削除ができる。
この辺で最適化もやれなくは無いんだよな。
小手先だけど。
0473デフォルトの名無しさん
2011/09/28(水) 13:05:54.730474デフォルトの名無しさん
2011/09/28(水) 13:13:30.95javaのどんくささが解るだろ。
0475uy
2011/09/28(水) 13:25:09.65だからさぁ・・・
ほんっとになんどいっても理解しねーゴミだな
本当に、根本的な場所の知識がまったくないから
そんな勘違いしてんだよ・・・ ドヤ顔でw 全力で間違えてw コテハンに指摘されてw
でも認めないとかwwwwww バーカwwwwwww 一生勘違いしてろよwww
>>454
そういうこと
0476uy
2011/09/28(水) 13:29:25.34どこかの誰かの受け売りをかたくなに信じてるんでしょ
"""どこの誰が""" 静的言語と動的言語の実行速度が """同じ""" だと言っていたのか
そ い つ の 名 前 を こ こ に 出 せ
そろそろごめんなさいすれば?w そんなにuyに指摘されて意見曲げるのがイヤかよw お前のほうが技術力低いんだからしょうがないじゃん
くやしかった勉強すればーwww
0477デフォルトの名無しさん
2011/09/28(水) 15:51:58.340478uy
2011/09/28(水) 17:47:42.45なんで無知はすぐこうやって憶測でギャーギャーいってんだよ 死ね
CommonLispのやっている関数ごとのコンパイルだの、
型を明示的につけてCと同等かそれ以上の速度にまで高速化するのは、どのスクリプト言語でも理論的に可能なことではあるが
Rubyなんかじゃやってないし、やるつもりもないんだろう。
誰がどこで使うor使っているor使っていくつもり なのかはしらないけど
CommonLispの実装自体は、キチガイみたいなハイレベルなことやってるから、舐めないほうがいいとおもうよ 無知は死ね
0479デフォルトの名無しさん
2011/09/28(水) 17:58:38.02型明示したらCと同等になる(キリッ
あほくさ
馬鹿しか使わんわCommonLispなんて
0480デフォルトの名無しさん
2011/09/28(水) 18:00:59.74この世界で誰も困らない
0481デフォルトの名無しさん
2011/09/28(水) 18:03:16.450482デフォルトの名無しさん
2011/09/28(水) 18:06:09.260483デフォルトの名無しさん
2011/09/28(水) 18:07:40.68最初からまともな静的型な言語使う罠
0484デフォルトの名無しさん
2011/09/28(水) 18:13:04.730485デフォルトの名無しさん
2011/09/28(水) 18:16:27.55そんなんでいばられてもな
0486デフォルトの名無しさん
2011/09/28(水) 18:41:48.57かわいそうに、煽ればレスしてもらえるって学習しちゃって、馬鹿の一つ覚えみたいに煽り続けてるじゃない
0487デフォルトの名無しさん
2011/09/28(水) 18:54:13.79Javaが速いと思ってるなんて…
0488デフォルトの名無しさん
2011/09/28(水) 18:55:00.110489デフォルトの名無しさん
2011/09/28(水) 19:08:24.84確かに、バカの巣窟になってるねここ。まともに論議する気にもならんし
フレーマーの暇つぶしの場所でしょ。
0490デフォルトの名無しさん
2011/09/28(水) 19:38:51.60その部分は C とかの静的な言語と同等のソースになるらしい。
その手続き型なところを一関数なりマクロなりにしておけば、あとはその汚いところは見なくてすむ。
Python と C 併用するのとどっちが楽かは知らない。
0491デフォルトの名無しさん
2011/09/28(水) 19:47:37.583Dグラフィックすらプログラミングできない低能には無縁だわな。
0492デフォルトの名無しさん
2011/09/28(水) 19:50:51.540493デフォルトの名無しさん
2011/09/28(水) 20:18:42.76別なのと置き換えられたよ
0494デフォルトの名無しさん
2011/09/28(水) 20:20:49.970495デフォルトの名無しさん
2011/09/28(水) 20:31:44.09だからどうした、現役で稼動してた実績から目を背けるなよ。
0496デフォルトの名無しさん
2011/09/28(水) 20:32:34.04Cと同等どころかうんこ以下のゲロコードだよ
全部静的言語で書いた方がはるかにまし
0497デフォルトの名無しさん
2011/09/28(水) 20:32:49.520498デフォルトの名無しさん
2011/09/28(水) 20:35:16.94> Cと同等どころかうんこ以下のゲロコードだよ
速度の話と可読性の話を混同するなよ
そうやってマトモな思考能力が無いから
クダラナイ言語しか使えないんだよ
0499デフォルトの名無しさん
2011/09/28(水) 20:36:56.41アホはおまえだ
同等なソースと書いてあるだろ
0500デフォルトの名無しさん
2011/09/28(水) 20:42:08.23ホントだ。アホは俺だった
0501デフォルトの名無しさん
2011/09/28(水) 20:47:42.41やろうと思えば出せますよというだけの話で、
そもそも速度を求めて動的言語を使うわけじゃないし。
プログラムのボトルネックはおよそコード全体の3/10
あとの7/10は楽に作れるに越したことはない。
0502デフォルトの名無しさん
2011/09/28(水) 20:49:25.730503デフォルトの名無しさん
2011/09/28(水) 20:50:16.700504デフォルトの名無しさん
2011/09/28(水) 20:52:27.99せめて根拠を言えよ
0505デフォルトの名無しさん
2011/09/28(水) 20:53:57.170506デフォルトの名無しさん
2011/09/28(水) 20:55:45.12既に書いた大量のコードの管理とか特に楽。
0507デフォルトの名無しさん
2011/09/28(水) 20:58:24.57全体のコード量はどれくらいで
動的言語がやってくれるのはどれくらいあんの?
0508デフォルトの名無しさん
2011/09/28(水) 21:07:29.42一定のルールで命名づけした関数とデータのバインディングをしたり。
データの中に関数の呼び出しを混ぜておいて、簡単なスクリプトを作ったり。
ソケットで処理方法を送り付けたり。
その他色々。
で、静的言語が動的言語より楽になる点って何処?
0509デフォルトの名無しさん
2011/09/28(水) 21:15:45.56静的言語なら実行しないでもエラーにすることが出来る。
これは実行する時間というコストの大幅な削減になる。
0510デフォルトの名無しさん
2011/09/28(水) 21:19:14.04チェックが働いて安全というのは意味がない。それは静的型付け、動的型付けの問題。
0511デフォルトの名無しさん
2011/09/28(水) 21:21:51.96どうやって静的言語でチェックすんの?
0512デフォルトの名無しさん
2011/09/28(水) 21:34:14.15var functionCall = node.innerText(); //XMLから"function Method(1,2,'20')"を取得
eval(functionCall);
0513デフォルトの名無しさん
2011/09/28(水) 21:39:32.680514デフォルトの名無しさん
2011/09/28(水) 21:45:13.33パーサーいらねぇもん。でも、静的言語でコレを書こうとしたら、1/10以前に
(1/10) * 14ぐらいになるだろうな。パーサー自分で書くか、Beanみたいな仕組みを
使ってシコシコ組み立てる必要がある。
0515デフォルトの名無しさん
2011/09/28(水) 21:46:20.330516デフォルトの名無しさん
2011/09/28(水) 21:51:35.830517デフォルトの名無しさん
2011/09/28(水) 21:52:59.860518デフォルトの名無しさん
2011/09/28(水) 21:53:37.80車輪の再発明だし、処理系の実装よりも洗練されてないし、
実行時エラー処理をキチンと作り込まないと安全じゃないしでデメリットが多い
0519デフォルトの名無しさん
2011/09/28(水) 21:54:25.30その中に関数を流すなんて事があった。
指示を受ける側のサーバーは、おくられてくる関数の事をしらなくていいんで
サーバープログラム自体を機能追加の度に修正する必要がなくて非常に捗った。
特に別業者が機能追加するときサーバーを直接弄られずに済んだのは助かる。
0520デフォルトの名無しさん
2011/09/28(水) 21:56:00.390521デフォルトの名無しさん
2011/09/28(水) 21:59:57.69安全かどうかには直接関係ない。
実行時にならないとわからないエラーが
実行前に分かるという点に
時間的なコストというメリットがある。
そのぶんの時間を他のテストに回せるという点で
間接的に安全にはなる。
0522デフォルトの名無しさん
2011/09/28(水) 22:01:22.610523デフォルトの名無しさん
2011/09/28(水) 22:04:07.21実行時に分かるエラーの一部は、実行前に分かる。
そもそも実行前に分かるはずのエラーが
実行時にならないとわからないってのがありえない。
たとえばコンパイルエラーの類は実行前に分かるエラーだ。
0524デフォルトの名無しさん
2011/09/28(水) 22:06:32.500525デフォルトの名無しさん
2011/09/28(水) 22:07:56.79どうせ型付けの事を言いたいだけなんだろ?
そういうのは専用スレに書き込んできな
こっちより盛り上がるだろうよ
0526デフォルトの名無しさん
2011/09/28(水) 22:11:55.02コード上に論理的な制約を書けばいい。
このクラスは必ず○というインターフェースを実装している。
この変数には○というインターフェースを持っているものしか代入できない。
通常これらは宣言などというが、
見方を変えれば、論理的制約でもある。
コード上にコンパイラが理解できる形で制約を書いておくことで
実行前に解るようになる。
当然何も情報がない所から、実行前に解るようになるわけではない。成約情報を入れるのは人間。
そして静的に判定可能な形で制約情報を入れられる構文を持っているのが静的言語。
0527デフォルトの名無しさん
2011/09/28(水) 22:13:40.86誰も全てもエラーが静的に判断可能だとは言っていない。
静的に判断可能な、”量”が多いのが静的言語。
たまに完璧じゃないなら意味が無いというやつがいるが、
完璧に安全じゃないなら、エアバッグいらんのかと聞きたくなる。
0528デフォルトの名無しさん
2011/09/28(水) 22:17:02.46だ・か・ら 型付けを言いたいだけなんだろお前は
ユーザーが書き換え可能なXMLをプログラムが読み込んで
XML内に書きこまれたメソッド呼び出すという仕様なのに、
コンパイルエラーを出せるのか?ユーザーはコンパイルしないぞ
0529デフォルトの名無しさん
2011/09/28(水) 22:19:42.84今、動的型付けや静的片付けや、静的リンクが安全だとかの話はしてないわけだけど解ってる?
0530デフォルトの名無しさん
2011/09/28(水) 22:19:44.370531デフォルトの名無しさん
2011/09/28(水) 22:27:13.24静的言語で数千行かけて書いた処理を動的言語ならevalや
メタ構文で1行前後で済ませられる。それについての何の反論にもなってない。
1、2行で書いた処理と、安全安全といいながら数千行書いた処理
どっちがボロがでやすいかすぐ解るだろ。
0532デフォルトの名無しさん
2011/09/28(水) 22:35:43.21まあどうでもいいや
0533デフォルトの名無しさん
2011/09/28(水) 22:38:10.57あんたが静的言語でシコシコ書いたうん1000行のevalと、
言語ユーザーによって世界中でテストされてる
動的言語機能のevalどっちが安全だよ
大体大規模開発で、evalと同等の機能作成に無駄に
費やせる時間なんてあるのかよ。ユーザーがXML中に
関数呼び出しを書かなきゃならないほど規模がデカイんだぞ。
0534デフォルトの名無しさん
2011/09/28(水) 22:39:57.650535デフォルトの名無しさん
2011/09/28(水) 22:42:34.290536デフォルトの名無しさん
2011/09/28(水) 22:45:08.22実行時メタプログラミング = 動的言語
動的型付け ≒ 動的言語
って認識だから専用スレができたんだろ
0537デフォルトの名無しさん
2011/09/28(水) 22:51:03.72静的言語の3倍以上短く書けてこそだ
0538デフォルトの名無しさん
2011/09/28(水) 22:53:09.840539デフォルトの名無しさん
2011/09/28(水) 23:08:12.550540デフォルトの名無しさん
2011/09/28(水) 23:13:24.19動的言語でも、静的型付けできる言語は結構あるぞ
ActionScript, lisp, Objective-C とかね
0541デフォルトの名無しさん
2011/09/28(水) 23:15:25.18ActionScriptとObjective-Cを
一緒にするなよ
0542デフォルトの名無しさん
2011/09/28(水) 23:20:01.860543デフォルトの名無しさん
2011/09/28(水) 23:21:35.56なんか論文とか理解できなくてLisperに
バカにされたトラウマとかあるんだろうか
0544デフォルトの名無しさん
2011/09/28(水) 23:24:06.67Lispこそ至高とか言ってんのにやっぱ底辺とは思考が違うのな
0545デフォルトの名無しさん
2011/09/28(水) 23:24:55.170546デフォルトの名無しさん
2011/09/28(水) 23:28:06.390547デフォルトの名無しさん
2011/09/28(水) 23:32:57.500548デフォルトの名無しさん
2011/09/28(水) 23:34:09.45でも、あれ・・・? 何を作った人たちなんだろ?
0549デフォルトの名無しさん
2011/09/28(水) 23:35:20.26Obj-Cは慣れてもC++使いたくなってくる。
0550デフォルトの名無しさん
2011/09/28(水) 23:35:23.20ガロアはわからんだろ
0551デフォルトの名無しさん
2011/09/28(水) 23:36:37.200552デフォルトの名無しさん
2011/09/28(水) 23:40:27.90Lisperの態度のでかさとLispマンセーが目に余る
0553デフォルトの名無しさん
2011/09/28(水) 23:44:33.25いろんな研究論文で使われてんじゃん。日銭を稼ぐためにの事務処理ばっか
書いてる言語よりはよっぽど有効利用されてると思うけど。
0554デフォルトの名無しさん
2011/09/28(水) 23:46:36.16片やDBの中身を取り出して画面に表示してるだけの・・・
0555デフォルトの名無しさん
2011/09/28(水) 23:48:59.95今使う奴はアホ
0556デフォルトの名無しさん
2011/09/28(水) 23:55:30.66↓
0557デフォルトの名無しさん
2011/09/28(水) 23:55:37.560558デフォルトの名無しさん
2011/09/29(木) 00:00:12.01まぁHaskellとかMLはいいよね。やっぱそういう言語の事言ってんでしょ。
0559デフォルトの名無しさん
2011/09/29(木) 00:02:15.780560デフォルトの名無しさん
2011/09/29(木) 00:04:36.65RubyはLispだのJavascriptはLispだの言いだす始末
0561デフォルトの名無しさん
2011/09/29(木) 00:04:55.760562デフォルトの名無しさん
2011/09/29(木) 00:06:41.00Lisperほど横柄じゃないし
0563デフォルトの名無しさん
2011/09/29(木) 00:07:37.510564デフォルトの名無しさん
2011/09/29(木) 00:08:42.970565デフォルトの名無しさん
2011/09/29(木) 00:10:34.65お前がしらんだけだろ
MaximaやらEmacsやらAmazonやら非Windows系は多い
0566デフォルトの名無しさん
2011/09/29(木) 00:11:02.90名乗ってくんない?そのほうが面白い。
0568デフォルトの名無しさん
2011/09/29(木) 00:13:48.720569GodLisp
2011/09/29(木) 00:14:21.580570デフォルトの名無しさん
2011/09/29(木) 00:14:22.10CAD関連だとJavaの業務製品の7倍ぐらいの値で売れてうはうは
0572デフォルトの名無しさん
2011/09/29(木) 00:24:07.03使いどころが難しいのは確かだけど、
少なくともここ最近はみんな関数型言語の機能を取り込んできてるだろ。
だからこそJavaScriptなんかを使ってる奴が、
Lispや源流のC/C++を馬鹿にしてるのを見ると滑稽に見えるわけで。
もちろんJava厨も。
まあそういう奴らがいるから俺みたいなゴミでも食えるんだが。
0573デフォルトの名無しさん
2011/09/29(木) 00:25:51.48最新ならOneSpace DesignerというCAD
コイツ自体がLispじゃないだろうがLispが使われてる
Lispはフルに動的言語だからプラグイン向きの位置づけが多いわな
0574デフォルトの名無しさん
2011/09/29(木) 00:27:30.97いまどきの定義だとLispは関数型じゃないでしょ
0575デフォルトの名無しさん
2011/09/29(木) 00:30:26.69AutoCAD 2011ならVisual LISPが使えるじゃねぇか。
0576デフォルトの名無しさん
2011/09/29(木) 00:32:45.99素直にHaskellが一番って言えばよろしい。
0577GodLisp
2011/09/29(木) 00:38:37.39>LispはMEマクロに代わり採用されたが、プログラマが日本では少ないのが難点とも言える。
>同様の理由でサードパーティ製のプラグインの専門モジュールが少ない。
プラグイン少なくて死んでしまいそうだわ
0578デフォルトの名無しさん
2011/09/29(木) 00:39:53.550579デフォルトの名無しさん
2011/09/29(木) 00:40:29.00XSLTでも使えば?
0580デフォルトの名無しさん
2011/09/29(木) 00:43:04.13ユーザにとっては迷惑でしかない
0581デフォルトの名無しさん
2011/09/29(木) 00:44:20.480582デフォルトの名無しさん
2011/09/29(木) 00:46:40.460583デフォルトの名無しさん
2011/09/29(木) 00:54:44.52ユーザの苦情を受けて他の言語でも拡張できるようにした
無名のソフトがLispなんて採用したら自殺もんよ
0584デフォルトの名無しさん
2011/09/29(木) 01:07:48.58Lispの名前はあんま表に出ないな
>>583
C系上がりのプログラマにゃキツイもん
Lispでスタッフ募集しても頭数が揃わん
0585デフォルトの名無しさん
2011/09/29(木) 01:09:03.89なんで集まらないの?
0586デフォルトの名無しさん
2011/09/29(木) 01:14:27.51どうせ人をアゴで使うような職に付いてるだろうよ
0587デフォルトの名無しさん
2011/09/29(木) 01:18:01.05給料高くしてでも雇えばいい
0588デフォルトの名無しさん
2011/09/29(木) 01:23:10.18今も昔も変わらないから頭に純粋を付けろ
0589デフォルトの名無しさん
2011/09/29(木) 01:28:40.87電力会社や財閥系の管理職になるのがオチ
0590デフォルトの名無しさん
2011/09/29(木) 01:33:56.45Lispのソフトが出来ないとかw
0591デフォルトの名無しさん
2011/09/29(木) 01:38:02.100592デフォルトの名無しさん
2011/09/29(木) 01:38:41.13海外のコンテストなんかじゃ、あんまり純粋なプログラマは見かけないな。
数学関係とか物理とかが多い、変わったトコじゃ医学系がいる。
0593デフォルトの名無しさん
2011/09/29(木) 01:40:14.78純粋じゃないやつでも
なるべく副作用なくそうとしているやつと
まったく気にしてないのがあるよな
0594uy
2011/09/29(木) 01:45:52.15んー・・・その"""当たり前"""のことが PerlやRuby、
多くのスクリプト言語が出来ないんだよね
だからはっきりいってCommonLispは現在一般普及してる言語実装処理系より2歩は前を進んでいるよ
なくなっても困らない? そりゃそうだ 誰も使ってねーし
ただ、「こういうことも出来るよ。 こうするといいんじゃね?」 というITでもっとも先進的な空間が、Lisp
ゴミバカアホプログラマは無縁の領域だから、こなくていいと思うけど、勘違いはよくないよ
0595デフォルトの名無しさん
2011/09/29(木) 01:47:38.56出来ないのと単にやらないのを一緒にすんなよ
0596デフォルトの名無しさん
2011/09/29(木) 01:53:50.10まともな人はもうLispなんて使ってない
0597uy
2011/09/29(木) 01:54:03.27大学でLispやってるって言ってるけど
ぜんぜん理解してない奴が多すぎる
S式の有用性に気づけるかどうかって、プログラミングの経験年数じゃなくて
まさにセンスって感じがするんだよな 俺は初見で「何か」に気づいて、
その「何か」、とても異質な「何か」に、出会えたことに喜びを覚えたレベル
土方仕事じゃ、こんな知識いらんし、 Lispはプログラミング言語っていうより、
C++と同じカテゴリーの、研究用言語って立ち位置だな
アホな煽りにムキになって無理にLispで何か作ることもないと思うよ
そういう言語じゃないから
0598デフォルトの名無しさん
2011/09/29(木) 01:55:53.92研究者はもうLispからHaskellに移ってるよ
0599uy
2011/09/29(木) 01:56:43.86おいwwwwwwwwww
何このバカ・・・? え?wwwwwwwww もう一回いって
拡張??・ Cで拡張ってwwww 何を拡張するつもりだwwwwwwwwwwwww
とんでもねースレになった・・・・ とんでもねーな・・・・
お前は何にも出来ないから、自分の出来ないことでも誰かは楽ーに出来ると思って言ったんだと思うけど
それ、もうやめたほうがいいよ。 次からは「自分の出来ること・やったことのあること」だけで語れ 二度も恥をかくことはない
0600デフォルトの名無しさん
2011/09/29(木) 01:58:50.35TopLisperみたいなサイト作って
上位の奴採用したらいい
0601uy
2011/09/29(木) 01:59:33.86また理解してない奴が。
C++ → 静的メタ
Lisp → S式
な。
よくわかってないと思うけど、そういうこと。 説明したってどうせお前じゃ無理だ
Haskellなんつうゴミ言語はいらない
あー・・・・ やっぱこのスレ、特定の初心者が名無し粘着してんのかなー
面倒だからコテつけろよカス バカみたいに論外な低スキルの"ごみかす"に1レス消費するのがもったいない
0602デフォルトの名無しさん
2011/09/29(木) 02:01:43.180603uy
2011/09/29(木) 02:01:49.480604デフォルトの名無しさん
2011/09/29(木) 02:10:10.93まあS式の研究頑張れや
0605デフォルトの名無しさん
2011/09/29(木) 05:51:42.98流行りモノが好きな研究者モドキは、でしょう?
ついこないだまでジャバジャバ言ってた連中w
0606デフォルトの名無しさん
2011/09/29(木) 07:31:01.36ろくなのがあつまらんって
まともなやつは、物理だの専攻してる部門に進む
奴等にとってあくまでLispは研究を進めるための道具であって
飯を食う道具じゃない
0607デフォルトの名無しさん
2011/09/29(木) 07:33:25.59昔の組み込み言語としてのlispの立ち位置の一部はpyhthonになってるのかも
0608デフォルトの名無しさん
2011/09/29(木) 07:49:37.16関数型のユーザーはいつまでたっても研究者ばっかなんだろうな
0609デフォルトの名無しさん
2011/09/29(木) 07:59:22.43ではなぜPrologが流行らないのだ?
0610デフォルトの名無しさん
2011/09/29(木) 08:26:33.47ゴミを量産して悪評まみれになって終わる。
「新しい技術」のユーザーはいつまでたっても研究者ばっかなんだろうな、
などと言ってる奴は時代にとり残されて自滅してきた。過去、山のように。
0611デフォルトの名無しさん
2011/09/29(木) 09:18:26.35いくらなんでも知ったかしすぎ。
0612デフォルトの名無しさん
2011/09/29(木) 09:21:04.460613デフォルトの名無しさん
2011/09/29(木) 11:27:43.44使うだけならただのライブラリ
0614デフォルトの名無しさん
2011/09/29(木) 12:16:24.56直感的な言語は関数型のほうが直感的なんだけど・・・
どっちかというと、入門書が多い言語が普及しやすいんじゃないかと思う。
0615デフォルトの名無しさん
2011/09/29(木) 12:25:12.89まともなやつじゃないそうで
0616デフォルトの名無しさん
2011/09/29(木) 12:26:37.290617デフォルトの名無しさん
2011/09/29(木) 12:32:04.35Lisperからみりゃ死体の言語だ
ghci?
笑わせんな
0618デフォルトの名無しさん
2011/09/29(木) 12:35:20.52最強の武器を持っていながら他の言語を駆逐できないなんて、リスパーって雑魚の集まりなんですねー
0619デフォルトの名無しさん
2011/09/29(木) 12:44:03.320620デフォルトの名無しさん
2011/09/29(木) 13:09:07.54グレアムみたく自分だけ金儲けに使う
0621uy
2011/09/29(木) 19:02:22.28理解してないなぁ・・・
ほんとよくそんなレベルで何年も停滞できるよ
おそろしい
0622デフォルトの名無しさん
2011/09/29(木) 19:09:13.41気持ち悪いおっさんだな
0623デフォルトの名無しさん
2011/09/29(木) 19:47:18.860624デフォルトの名無しさん
2011/09/29(木) 19:48:19.840625デフォルトの名無しさん
2011/09/29(木) 20:12:14.500626デフォルトの名無しさん
2011/09/29(木) 21:33:14.190627デフォルトの名無しさん
2011/09/29(木) 22:03:15.57Lispのコードは気持ち悪い
0628デフォルトの名無しさん
2011/09/29(木) 22:12:58.69大昔のがいくつかあるだけ
0629uy
2011/09/29(木) 22:39:26.60こういう知ったかぶるゴミって。。。
その「大昔」の「いくつか」
↑
さ っ さ と ア プ リ ケ ー シ ョ ン 名 を 出 せ
逃げんなよ? ゴミ
0630デフォルトの名無しさん
2011/09/29(木) 22:47:19.71Lisperが有用だって言っているだけだし
0631デフォルトの名無しさん
2011/09/30(金) 00:16:17.06支離滅裂になってるぞ…。
一回ガチで精神科行ってきたほうがいい。
0632デフォルトの名無しさん
2011/09/30(金) 00:21:02.350633uy
2011/09/30(金) 01:12:52.10そうだよ 「ひとつもねーだろwwwwwww」 って事いってんだ
あるかどうかもわからないのに、お前何いってんだ????ってマジで心配になった
>>631
いやそれ、狙ってやってる
>>632
誰でも知ってるアプリ名はあげなくていい ウザい
0634uy
2011/09/30(金) 01:15:53.28XMLをS式に変換出来ることもわかってなさそうなんだよ
Lispイラネとはいってても、XMLイラネとは思ってないんだろう
記述法の問題で、概念は似たようなものなのに
教養がないやつとしゃべるのは疲れる さっさと死ねよ 雑魚
>>630こいつも逃げちゃうしさぁ そこで何か名前だしてくれば スレが面白い流れになるというのに、
ハッタリだから、すぐ逃げちゃう
0635デフォルトの名無しさん
2011/09/30(金) 01:20:08.430636デフォルトの名無しさん
2011/09/30(金) 01:23:18.54Emacs使うくらいならIDE使った方が軽いし便利
0637デフォルトの名無しさん
2011/09/30(金) 01:25:59.90uyは見てると可哀想にはなるが、助けてやりたいとも思わないわ。
0638デフォルトの名無しさん
2011/09/30(金) 01:33:32.58標準エディタとしてのviはとっくに死んでるし、
vimはemacsと同じような位置づけになってるという…。
0639デフォルトの名無しさん
2011/09/30(金) 02:02:14.350640デフォルトの名無しさん
2011/09/30(金) 02:09:27.650641デフォルトの名無しさん
2011/09/30(金) 02:23:18.88そこそこ有名なあるデジタル家電のファームの一部がLispで書かれてるな。
実務で使われてるのはそれしか知らない。
0642デフォルトの名無しさん
2011/09/30(金) 08:41:36.65omni補完とか無理矢理だからな。
ま、スクリプト言語の場合、どっちみち補完効かないから、構わないけど。
0643デフォルトの名無しさん
2011/09/30(金) 09:15:28.47と思っていた時期が俺にもありました。
0644デフォルトの名無しさん
2011/09/30(金) 09:57:41.67PCがしょぼいとかそういうレベルじゃねーだろ
0645デフォルトの名無しさん
2011/09/30(金) 11:32:54.46して、$foo->でメソッド補完出来るIDEあるの?
0646デフォルトの名無しさん
2011/09/30(金) 15:46:01.74foo->
foo.
abd::
asd:abc::foo->
色々補完有るし、説明も出るぞ。
なおかつ
foo->sub001( でパラメータリストも関数分出るぞ
0647デフォルトの名無しさん
2011/09/30(金) 15:53:18.370648デフォルトの名無しさん
2011/09/30(金) 15:55:07.97パラメータリストは、説明が出るだけで、補完とはいえんな。
説明が出るから、それ見て入れるだけだが
0649デフォルトの名無しさん
2011/09/30(金) 18:31:16.700650デフォルトの名無しさん
2011/09/30(金) 18:39:08.92IDEは最近出たばかりだからなpython rubyよりも新しい
言語機能をいくつか追加するよりも高度なIDEの方が開発効率に貢献しているから
IDEと相性の良い言語の方が効率はいい
つまり型宣言のない言語の普及はすぐに頭打ちになるし
言語仕様をバカみたいに追加すると開発環境が対応できなくなって効率が落ちる
コード書く時間よりリファレンス引く時間が長いとうんざりしてやる気なくなる
0651デフォルトの名無しさん
2011/09/30(金) 18:57:06.23は?IDEなんざSmalltalkの頃からあるのに何言ってんの?
Java最強って言いたいなら理論武装くらいちゃんとして下さいよwww
0652デフォルトの名無しさん
2011/09/30(金) 19:06:21.92お前から何者にもなれない雑魚の匂いがぷんぷんしてくる
0653デフォルトの名無しさん
2011/09/30(金) 19:11:18.78あれあれ
0654デフォルトの名無しさん
2011/09/30(金) 19:21:04.140655デフォルトの名無しさん
2011/09/30(金) 19:29:54.050656デフォルトの名無しさん
2011/09/30(金) 19:56:32.06IDEは最近出たばかりだからな(キリッ
0657デフォルトの名無しさん
2011/09/30(金) 20:30:34.46半世紀前の最先端というとGCか。Java1厨かな?
0658デフォルトの名無しさん
2011/09/30(金) 21:58:17.400659デフォルトの名無しさん
2011/09/30(金) 22:11:30.23変数の型宣言を好むのだろうか?
それが分かればこの不毛な論争にも
解決の糸口が見えるかもしれん
0660デフォルトの名無しさん
2011/09/30(金) 22:13:15.22古臭くってもvim/emacs使いなんじゃなかろうか?
0661デフォルトの名無しさん
2011/09/30(金) 22:26:48.790662デフォルトの名無しさん
2011/09/30(金) 23:05:09.01文字列が嫌いなんじゃないの
CUIやプロトコルのような中小零細言語が嫌い
0663デフォルトの名無しさん
2011/09/30(金) 23:08:11.69> そもそも、なぜ土方や低能は
> 変数の型宣言を好むのだろうか?
コーディングというめんどくさくて
つまらない作業を楽にできるから。
0664デフォルトの名無しさん
2011/09/30(金) 23:08:57.18> IDE使いにハッカーはいるんだろうか? 疑問に思ってる。
IDEかどうかは関係なく
C言語などの静的言語を使うよ。ハッカーは。
0665デフォルトの名無しさん
2011/09/30(金) 23:09:28.350666デフォルトの名無しさん
2011/09/30(金) 23:10:25.060667デフォルトの名無しさん
2011/09/30(金) 23:12:08.28「今から反論してやる、まっとれ。」
まってるよんw
0668デフォルトの名無しさん
2011/09/30(金) 23:12:30.47煽りではなく、マジでどう繋がるのか分からないんだけど
0669デフォルトの名無しさん
2011/09/30(金) 23:13:32.87くだらないスペルミスとか、引数の順番内容とか
そんなのを覚えなくてすむんだよ。
0670デフォルトの名無しさん
2011/09/30(金) 23:15:37.57lisp は駄目なの?
0671デフォルトの名無しさん
2011/09/30(金) 23:16:16.88ハッカーの名前がでないなら、ダメなんだろうな。
0672デフォルトの名無しさん
2011/09/30(金) 23:16:45.43引数の順番はキーワード引数のほうが覚えなくて良いじゃん
くだらないスペルミスはスコープがしっかりした言語や、
それこそ型推論があれば良い
0673デフォルトの名無しさん
2011/09/30(金) 23:17:04.29言語開発者の自作言語宣伝は
ただのマーケッティングだからw
0674デフォルトの名無しさん
2011/09/30(金) 23:18:36.880675デフォルトの名無しさん
2011/09/30(金) 23:18:38.41> 引数の順番はキーワード引数のほうが覚えなくて良いじゃん
そのキーワードが何かわからんだろう。
定義がなければ。
> くだらないスペルミスはスコープがしっかりした言語や、
> それこそ型推論があれば良い
スコープじゃスペルミスは防げないぞ。
型推論は型宣言のシンタックスシュガーだから。
0676デフォルトの名無しさん
2011/09/30(金) 23:19:14.69俺こいつ嫌いなんだよねw
0677デフォルトの名無しさん
2011/09/30(金) 23:22:56.97> そのキーワードが何かわからんだろう。
> 定義がなければ。
関数/メソッドの定義はあるだろ。アホすぎねお前?
キーワード引数付きの動的型言語使った事無いのかよ
0678デフォルトの名無しさん
2011/09/30(金) 23:23:17.35リーナスやら、ストールマンか?
まさか、ケビン・ミトニックみたいなヤツとか下らない事言うなよ
0679デフォルトの名無しさん
2011/09/30(金) 23:23:35.43だから、定義あったほうがいいってことだろ?
0680デフォルトの名無しさん
2011/09/30(金) 23:24:56.88その他の行でいろいろコーディングを楽する
サポートを得られるんだ。まともなエディタを使っていれば。
0681デフォルトの名無しさん
2011/09/30(金) 23:25:25.08ま、型安全の話は他所でやれ。
0682デフォルトの名無しさん
2011/09/30(金) 23:25:40.25LispやSchemeは変数宣言があるから、スペルミスして未宣言の変数/関数を書いたら
分かると思うけど、気のせいか?
0683デフォルトの名無しさん
2011/09/30(金) 23:27:02.030684デフォルトの名無しさん
2011/09/30(金) 23:27:22.17ミスを修正するのに時間がかかるけどね。
ミスは分かるのが早いほど、修正も早くなる。
0685デフォルトの名無しさん
2011/09/30(金) 23:28:04.66定義 ---- 中身を書いて、名前を付ける。
宣言 ---- 名前や引数の型等だけをコンパイラに教える。
定義は、その実体を書いて、それを名前と結びつけています。
宣言は、実体はよその場所にあるけれども、こういう名前でこういうものだよ、とコンパイラに教えています。
宣言はそのソースファイルにないものを使う(例えばライブラリの使用や、ソースファイルを分割しての開発)ために必要な仕組みです。
関連事項として、間違った宣言を書いたとき、宣言とソースファイルの記述が合致していても、実際に結合するライブラリなどと食い違いがあると、コンパイル時ではエラーが出ず、結合時にエラーが出るというちょっとわかりにくいエラーが出ます。
今の開発環境ではあまりでないと思いますが。
0686デフォルトの名無しさん
2011/09/30(金) 23:28:31.01今、給湯室で
美人の新人OLにイチャモンをつける
お局さんの姿が目に浮かんだよ。
「私、あの子嫌いなのよねw」
0687デフォルトの名無しさん
2011/09/30(金) 23:28:34.61宣言は, 次の場合を除いて, 定義という。
− 関数本体を指定せずに関数を宣言している場合
− extern指定子又は<<結合指定>>を含んでいて, <<初期化子>>も<<関数本体>>も含んでいない場合
− クラス宣言の中で静的データメンバを宣言している場合
− 型定義宣言, <<using宣言>>又は<<using指令>>の場合
すなわち、クラス指定子は上記の例外に該当しませんので、常に定義ということになります。しかも、不完全型の場合も上記に挙がっていませんが、その後に定義でない例として記述されていますので、定義ではありません。また、定義というのは宣言の一種です。
簡単にいうと、クラスの宣言というのは、
class CSubClass;
であり、定義というのは、
class CSubCalss : public CSuperClass
{
public:
};
のことになります。
CSubClass a;
というのは、オブジェクトaの定義であって、クラスCSubClassの宣言でも定義でもありません。
0688デフォルトの名無しさん
2011/09/30(金) 23:29:05.12実行時メタプログラミングについて語れないヤツは来るな。
0689デフォルトの名無しさん
2011/09/30(金) 23:30:08.02「定義(definition)」はその識別子に正確な意味を与えること、となると思います。
言語によってこれらは別々であることもありますし、同時に行われることもあります。同じ言語内でも識別子の種類によって、
宣言と定義が常に一緒のものと別々でも良いものが混在していたりします。
複数の言語に渡って一般的な説明をする場合は、どちらの動作を説明しているかによって使い分ければ良いと思います。
一方、Javaの文法の説明をしている場合は「宣言」とするのが良いでしょう。なぜなら言語仕様でDeclarationとなっているからです。
http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html
0690デフォルトの名無しさん
2011/09/30(金) 23:31:04.44どこに対してのレスだよ
0691デフォルトの名無しさん
2011/09/30(金) 23:31:53.37やっぱり動的型付け言語では安全なソフトは作れない
http://hibari.2ch.net/test/read.cgi/tech/1316887046/
0692デフォルトの名無しさん
2011/09/30(金) 23:38:37.86これって型付けの話だったのかな?
0693デフォルトの名無しさん
2011/09/30(金) 23:44:22.49宣言の行く末はどうせ型安全云々の下らん話だ。
定義だの云々を動的言語、静的言語に結び付けたいなら
モンキーパッチとかもっとマトモな話を出せ。
0694デフォルトの名無しさん
2011/09/30(金) 23:51:02.21「津波に耐えられる堤防を建るとはどういうこと?」と定義(計画内容)を尋ねる
くだらねぇ話だな・・・。
0695デフォルトの名無しさん
2011/10/01(土) 00:33:48.70それこそ下らないだろ。
まあモンキーパッチを実行前に適用する
言語拡張が必要だ。みたいな話なら面白いかもね。
0696デフォルトの名無しさん
2011/10/01(土) 00:36:42.61http://mahata.net/pukiwiki/index.php?%E3%83%A2%E3%83%B3%E3%82%AD%E3%83%BC%E3%83%91%E3%83%83%E3%83%81%E3%83%B3%E3%82%B0
これって別に実行時にやらなくても、
C#のように、拡張メソッドで実装することが出来る。
http://www.atmarkit.co.jp/fdotnet/bookpreview/kisokaracs_1101/kisokaracs_1101_01.html
モンキーパッチングの大半はこのように
実行前にパッチをあてることが可能だろう。
0697デフォルトの名無しさん
2011/10/01(土) 00:39:42.89ソースコードに本当にパッチをあてる方法でも実装できるんだよね。
だから殆どの場合は実行前にパッチを当てられるんだよね。
それを行う構文をどうするかは別の話だけど。
0698デフォルトの名無しさん
2011/10/01(土) 00:44:26.68何、実行前にパッチをあてることが可能だろう(キリッ
とか言ってんだよ。
0699デフォルトの名無しさん
2011/10/01(土) 00:51:15.19たとえばモンキーパッチであるメソッドを置き換える。
そうすると、その置き換えを知っているものは問題なく使用できるけど、
置き換えを知らないもの。たとえば、そのメソッドが定義された
オブジェクト自身とかの場合に問題が起きる可能性がある。
オブジェクト自身はメソッドが置き換えられていない前提でメソッドを使用している。
でもメソッドが変わってしまうために想定外の動作をしてしまう可能性がある。
だから安全に行うのであればモンキーパッチ専用の構文が必要になる。
パッチをあてる対象クラス自身からの呼び出しならオリジナルが呼び出されるとか
置き換わったメソッドの方を呼び出す範囲を決めるための構文とか。
0700デフォルトの名無しさん
2011/10/01(土) 00:52:09.86実行時じゃないと出来無い課題に対して実行時にパッチできるから意味があるんだろバカじゃねぇの
0701デフォルトの名無しさん
2011/10/01(土) 00:53:26.43だから、たまたまモンキーパッチを動的言語でやれるからといって、
それは実行時メタプログラミングの範疇にするべき問題ではないということ。
だから下らない話。
0702デフォルトの名無しさん
2011/10/01(土) 00:54:15.51C++系統の構文の問題が動的言語にあるとは限らん
0703デフォルトの名無しさん
2011/10/01(土) 00:54:29.99モンキーパッチは動的言語の意味を示す例としては
適切ではないということだよ。
0704デフォルトの名無しさん
2011/10/01(土) 00:55:21.22動的言語でググってきたら?
0705デフォルトの名無しさん
2011/10/01(土) 00:56:18.980706デフォルトの名無しさん
2011/10/01(土) 00:57:03.35データに近づけば近づくほど動的になる。
逆にプログラムという概念に差別化して距離を置けば置くほど静的になる。
0707デフォルトの名無しさん
2011/10/01(土) 00:58:39.66ttp://ja.wikipedia.org/wiki/%E5%8B%95%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
0708デフォルトの名無しさん
2011/10/01(土) 00:59:13.64で、その究極の例がアセンブラ
コードもデータも全く同じ。
実行時にコード書き換えなんて当たり前。
0709デフォルトの名無しさん
2011/10/01(土) 01:00:47.63evalとモンキーパッチは全く別物。
お前の持ってきたリンクにモンキーパッチなんてのってないし、
http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%82%AD%E3%83%BC%E3%83%91%E3%83%83%E3%83%81
逆にモンキーパッチのページにもevalはでていない。
http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%82%AD%E3%83%BC%E3%83%91%E3%83%83%E3%83%81
0710デフォルトの名無しさん
2011/10/01(土) 01:02:12.58更に言えば、動的言語の用途を知ってるヤツは極僅か
そのザマでなんでアンチになろうとするのか?
0711デフォルトの名無しさん
2011/10/01(土) 01:03:26.82そんな内容のレスをすることは、お前にとって重要なことだったのか?
0712デフォルトの名無しさん
2011/10/01(土) 01:04:15.59それよりも、何か具体的な自分の主張なり
反論をして欲しいところだw
0713デフォルトの名無しさん
2011/10/01(土) 01:04:43.10文盲かよ
0714デフォルトの名無しさん
2011/10/01(土) 01:06:01.14盲目も何も、書いてないものは見えんよw
0715デフォルトの名無しさん
2011/10/01(土) 01:07:51.38はたしてこれを、静的言語で安全にかつ短く書けるか?
0716デフォルトの名無しさん
2011/10/01(土) 01:07:55.95evalのあとに(モンキーパッチとも言う)ってネタで追加してみたらw
0717デフォルトの名無しさん
2011/10/01(土) 01:08:00.31「オブジェクトシステムや型システムの実行時変更」
が動的言語におけるモンキーパッチに該当する
0718デフォルトの名無しさん
2011/10/01(土) 01:08:50.65それやったら、スクリプトインジェクション起こされて
脆弱性になったぞ。
どうしてくれる!w
0719デフォルトの名無しさん
2011/10/01(土) 01:10:10.91あれ? evalは?w
0720デフォルトの名無しさん
2011/10/01(土) 01:11:23.72>709が
> お前の持ってきたリンクにモンキーパッチなんてのってないし、
って書いてたから
0721デフォルトの名無しさん
2011/10/01(土) 01:11:34.25evalはあくまで具体的な手法。
モンキーパッチをevalで実装してる例はぐぐれば大量に出てくる。
http://www.google.co.jp/search?gcx=c&sourceid=chrome&ie=UTF-8&q=Monkey+patching+eval
0722デフォルトの名無しさん
2011/10/01(土) 01:12:38.06少し論理学を勉強したほうがいいのではないか?
「オブジェクトシステムや型システムの実行時変更」が
モンキーパッチなのではなく
「オブジェクトシステムや型システムの実行時変更」の
適用例の一つがモンキーパッチ。
だが、モンキーパッチは本来に実行時に変更する必要はなく動的にやる意味も少ないから
「オブジェクトシステムや型システムの実行時変更」の適用例としては
ふさわしくないというのが話の流れだ。
0723デフォルトの名無しさん
2011/10/01(土) 01:13:48.99それただの検索クエリーじゃないかw
自分で探してこいよ。まったく行動が糞ガキ全開だなw
0724デフォルトの名無しさん
2011/10/01(土) 01:14:27.38単にチューリング完全で、指定外のデータや関数へのアクセス権が無けりゃ簡単にできるわな。
SQLでOS自体のカーネルを消せれるか?それと同じだ。
0725デフォルトの名無しさん
2011/10/01(土) 01:14:52.20SQLインジェクション起こされちゃったw
0726デフォルトの名無しさん
2011/10/01(土) 01:15:06.33だから>>717では「動的言語における」って枕詞付けたのに
0727デフォルトの名無しさん
2011/10/01(土) 01:16:09.280728デフォルトの名無しさん
2011/10/01(土) 01:16:19.911ページづつ表示して、これがモンキーパッチを使った〜プログラムです
これはモンキーパッチを使った〜プログラムですと紹介して欲しいのか?
現実にコレだけ掲載されてることが重要だろうが。
0729デフォルトの名無しさん
2011/10/01(土) 01:17:49.22SQLインジェクション起こして攻撃されるのはDBの中だけだよな。
まぁ、攻撃されたDBのデータを表示すれば被害が起きるかもしれないが、
破壊されるのはDBという砂場だけだ。
0730デフォルトの名無しさん
2011/10/01(土) 01:17:51.99だから静的言語におけるモンキーパッチはまた別の話ってこと
なのに>>722みたいなのを得意顔で書くお前は
論理学どころか日本語を学び直した方が良い
0731デフォルトの名無しさん
2011/10/01(土) 01:18:43.53モンキーパッチをconstで実装してる例はぐぐれば大量に出てくる。
evalで実装している例よりも多くでてくるぞ。
http://www.google.co.jp/search?gcx=c&sourceid=chrome&ie=UTF-8&q=Monkey+patching+const
何が言いたいのか分かる?
evalで検索して出てきたからって、
モンキーパッチとは全く関係ない話かもしれないってことだよ。
0732デフォルトの名無しさん
2011/10/01(土) 01:20:17.76intが付いてれば全てオブジェクト指向言語か笑わせる
0733デフォルトの名無しさん
2011/10/01(土) 01:20:20.49> モンキーパッチをconstで実装してる例はぐぐれば大量に出てくる。
え?
0734デフォルトの名無しさん
2011/10/01(土) 01:20:51.560735デフォルトの名無しさん
2011/10/01(土) 01:21:20.83最後までちゃんと読めよw
0736デフォルトの名無しさん
2011/10/01(土) 01:24:56.310737デフォルトの名無しさん
2011/10/01(土) 01:25:22.840738デフォルトの名無しさん
2011/10/01(土) 01:28:25.790739デフォルトの名無しさん
2011/10/01(土) 01:28:57.56http://giorgiosironi.blogspot.com/2010/09/monkey-patching-in-php.html
PHPでeval使ってモンキーパッチを実現する例だが、これ読んでて「eval」が
「付いてる」だけとか言ってたらもう話すことはないわ。とりあえず自閉症の養護学校行ってくれ
0740デフォルトの名無しさん
2011/10/01(土) 01:35:54.34音沙汰がないが
0741デフォルトの名無しさん
2011/10/01(土) 01:38:55.060742デフォルトの名無しさん
2011/10/01(土) 01:40:23.620743デフォルトの名無しさん
2011/10/01(土) 01:46:24.66スクリプト実行時にeval使うって意味だと、
MonkeyPatchingの実装じゃなくて、前段階の話になっちゃうし。
0744デフォルトの名無しさん
2011/10/01(土) 01:50:49.90evalはダイナミックリンクじゃないから、呼び出し元の変数を変更できるんだけど。
evalはそれができないと言いたいのか?まぁ、言語によるだろうけど。
0745デフォルトの名無しさん
2011/10/01(土) 01:57:39.36js> eval("x=20");
20.0
js> java.lang.System.out.println( "x:" + x );
x:20
javascriptなんかは自由にプログラム内の変数にアクセスできるな。
0746デフォルトの名無しさん
2011/10/01(土) 01:58:44.01そのままコードを書けばいいだけで、evalする意味ないだろ。
動的言語の話ししてるのになんでダイナミックリンクが出てくるの?
0747デフォルトの名無しさん
2011/10/01(土) 02:04:37.98rhino?
0748デフォルトの名無しさん
2011/10/01(土) 02:04:50.15自由に作業できる入口を一個だけ用意しとけばいい
あとは、その入口からメタ機能を利用してプログラム全域を書き換えるだけだ
0749デフォルトの名無しさん
2011/10/01(土) 02:05:18.14yeah
0750デフォルトの名無しさん
2011/10/01(土) 02:06:54.05PHP厨房だったのか?通りでレベルの低さを感じるわけだw
>>739
それ、モンキーパッチに相当するコードは、
function strlen〜の部分であってevalは単に読み込んだファイルを実行するのに使ってるだけじゃん。
しかもモンキーパッチ(既存の関数の置き換え)ではなく、それはただの名前空間に追いやってるだけ。
> This isn't "monkey patching". This is just namespaces.
ってリンク先のリンク先のコメントで指摘されてるよな。
requireは実行前に読み込まれるから論外として、実行時に読み込まれるincludeでも、
名前空間は独立するものになるのだろう。
だからファイルとして読み込んでevalで実行しているんだ。
あー、本当にレベルが低い。
0751デフォルトの名無しさん
2011/10/01(土) 02:12:32.60わざわざevalを使う必要ないじゃないの。
MonkeyPatchを実行時生成するならevalもわかるけど、趣旨とは違うし。
0752デフォルトの名無しさん
2011/10/01(土) 02:13:14.97名前空間に追いやるために使っているだけのevalは不要。
モンキーパッチとは無関係であることが自滅によって証明されてしまったようだw
0753デフォルトの名無しさん
2011/10/01(土) 02:14:25.40eval使ってグローバルが書き換わってるのを見て喜んでるのは馬鹿だからな?
外部から読み込むならsandbox使えボケ。
0754デフォルトの名無しさん
2011/10/01(土) 02:15:03.29機械翻訳ご苦労さん。
それはそうとrunkitはどう思ってる。
0755デフォルトの名無しさん
2011/10/01(土) 02:15:46.62話しそらそうとしても無駄だぞw
いい加減evalはモンキーパッチとは無関係だと
認めろよ。
0756デフォルトの名無しさん
2011/10/01(土) 02:16:15.77自分じゃねーの? レベル低いPHP厨房さん。
0757デフォルトの名無しさん
2011/10/01(土) 02:17:42.05ましてやモンキーパッチも大して重要じゃない
動的言語の話としてわな
0758デフォルトの名無しさん
2011/10/01(土) 02:17:46.24REPLが既にeval(笑)
0759デフォルトの名無しさん
2011/10/01(土) 02:19:20.04だから、俺は>>695の時点でモンキーパッチは動的言語の
話題としては下らないとさっさと切り捨てたんだがw
0760デフォルトの名無しさん
2011/10/01(土) 02:19:51.46常識じゃね?なんかウケることが?
0761デフォルトの名無しさん
2011/10/01(土) 02:20:35.85じゃ動的言語らしい話題を出せ
0762デフォルトの名無しさん
2011/10/01(土) 02:20:46.060763デフォルトの名無しさん
2011/10/01(土) 02:21:39.680764デフォルトの名無しさん
2011/10/01(土) 02:21:40.69js> eval("x=20");
0765デフォルトの名無しさん
2011/10/01(土) 02:22:48.14何がおかしいのかさっぱり
0766デフォルトの名無しさん
2011/10/01(土) 02:23:23.99俺は動的言語? ぷwwwの立場だから
出すつもり無いわw
それよりか、現在動的言語でしかできないようなことを
静的言語として実行前に行う言語仕様を考えるほうが興味あるな。
本当に動的言語でやるべきことなんて
実際はかなり少ないと思ってる。
0767デフォルトの名無しさん
2011/10/01(土) 02:24:44.55インタプリタを含めていくらでも再起できるけど笑いのツボが解からん
0768デフォルトの名無しさん
2011/10/01(土) 02:24:44.54eval(eval(eval(eval(eval(eval("x=20"))))));
0769デフォルトの名無しさん
2011/10/01(土) 02:25:21.26ずっと2ちゃんねる見てたわけじゃないし
機械翻訳なら逆にすぐにレスできるだろ。
時間見てみ、30分ちょいあるだろ?
アニメ1話見てただけだwww
0770デフォルトの名無しさん
2011/10/01(土) 02:25:45.930771デフォルトの名無しさん
2011/10/01(土) 02:26:37.43いやバカだから日本語にしても読めないだけかと思ったよ
0772デフォルトの名無しさん
2011/10/01(土) 02:28:04.830773デフォルトの名無しさん
2011/10/01(土) 02:28:20.09馬鹿ってのは、evalをどう使っているのか、
ただのPHPという貧弱な言語仕様の制限をかいくぐるためにに使っていて
モンキーパッチとは直接関係ないことを見抜けなかった奴のことかな?w
0774デフォルトの名無しさん
2011/10/01(土) 02:28:47.84じゃ「現在動的言語でしかできないようなことを
静的言語として実行前に行う言語仕様」とやらを教えてくれ
妄想でいいから
0775デフォルトの名無しさん
2011/10/01(土) 02:29:54.46すでに書いたけど。
> 696 名前:デフォルトの名無しさん[sage] 投稿日:2011/10/01(土) 00:36:42.61
> たとえばここに、Stringクラスにmy_funcメソッドを追加するモンキーパッチングの例があるけど、
> http://mahata.net/pukiwiki/index.php?%E3%83%A2%E3%83%B3%E3%82%AD%E3%83%BC%E3%83%91%E3%83%83%E3%83%81%E3%83%B3%E3%82%B0
>
> これって別に実行時にやらなくても、
> C#のように、拡張メソッドで実装することが出来る。
> http://www.atmarkit.co.jp/fdotnet/bookpreview/kisokaracs_1101/kisokaracs_1101_01.html
>
> モンキーパッチングの大半はこのように
> 実行前にパッチをあてることが可能だろう。
0776デフォルトの名無しさん
2011/10/01(土) 02:31:23.27evalのメリットを語るのにeval前提であるという矛盾。
喩え下手の馬鹿を見るのは微笑ましいなぁと。
0777デフォルトの名無しさん
2011/10/01(土) 02:31:51.99本質はsandboxの使い方というオチ。
0778デフォルトの名無しさん
2011/10/01(土) 02:32:20.86そんな下らないことはいいから、ユーザーが書いたプログラムを制御するスクリプトを、
実行中のプログラムが、片安全に読み込んで実行する例とか書いてくれ。
0779デフォルトの名無しさん
2011/10/01(土) 02:33:44.560780デフォルトの名無しさん
2011/10/01(土) 02:34:03.55散々でてますけど。
0781デフォルトの名無しさん
2011/10/01(土) 02:34:22.960782デフォルトの名無しさん
2011/10/01(土) 02:34:31.642ちゃんねらに俺の生活のリズム合わせるつもり無いんでw
ちゃんと書いてないとまたレスするまで間があいたと言われそうだからな。
風呂入りながらネギま!4巻ほど読むから、
それなりに時間は空くしレスしないで寝るかもな。
じゃw
0783デフォルトの名無しさん
2011/10/01(土) 02:35:21.79それは動的言語とは全く関係ない。
0784デフォルトの名無しさん
2011/10/01(土) 02:35:41.61どこに?
0785デフォルトの名無しさん
2011/10/01(土) 02:36:57.66evalとsandbox
例外受け取ればもう十分だろ。
0786デフォルトの名無しさん
2011/10/01(土) 02:38:17.36動的言語なら簡単に書けるじゃん。
文字列をそのままプログラムとして同じプロセス空間で実行できるし。
静的言語でも同じぐらい簡単に書けるのか?
0787デフォルトの名無しさん
2011/10/01(土) 02:42:32.59そっか。
なんだかごめんね。
0788デフォルトの名無しさん
2011/10/01(土) 02:44:33.18eval ができた時点で動的言語じゃん。
実行時メタプログラミングができたら動的言語だろ。
0789デフォルトの名無しさん
2011/10/01(土) 02:45:50.20>ほとんどが Clojureで書かれている。
0790デフォルトの名無しさん
2011/10/01(土) 02:45:52.41JavaでJavaScript動かしたらどうなるの…と。
0791デフォルトの名無しさん
2011/10/01(土) 02:47:45.43"やっぱり動的言語では安全なソフトは作れない"と言う資格を失う
0792デフォルトの名無しさん
2011/10/01(土) 02:51:24.08evalだけが動的言語でもないけどな。
構文木を外部から取り込んだ情報を
元に書き換えるってのも動的だ。
0793デフォルトの名無しさん
2011/10/01(土) 02:58:01.05Rihnoでも呼び出し元のプログラムに介入はできなかった。
操作できるのはJava のライブラリの表面だけ。
現実にはjavascriptでJavaのメタプログラミングは不可能なのかもね。
0794デフォルトの名無しさん
2011/10/01(土) 03:04:44.70それはリフレクション使えばいいんじゃないか。
0795デフォルトの名無しさん
2011/10/01(土) 03:07:26.61このスレが終焉に向かう。
0796デフォルトの名無しさん
2011/10/01(土) 03:08:19.03リフレクションは表面だけでしょ
0797デフォルトの名無しさん
2011/10/01(土) 03:12:59.20Javaのリフレクションと同じことがスゲー簡単に書ける。
var pack = java.util;
とか
object["sub" + "string"]( 10 );
とかね。
0798デフォルトの名無しさん
2011/10/01(土) 03:20:03.42コンパイラもつければいっちょ上がり!
0799デフォルトの名無しさん
2011/10/01(土) 03:28:22.40http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/scripting/programmer_guide/index.html#jsengine
RhinoとかSpiderMonkeyなんかのブラウザ以外の実装使ってしみじみ思うのは、
SleepとThreadがあるだけでJavaScriptがどれだけ便利になるか…ってことだな。
0800デフォルトの名無しさん
2011/10/01(土) 03:31:17.85スタンドアロンというかデスクトップでも結構使えるよな
0801デフォルトの名無しさん
2011/10/01(土) 08:58:32.28モンキーパッチがもっとも活躍するのは
ユニットテストでモック/スタブを作るとき
まあ、テストしない土方には関係無いんですけどね
0802デフォルトの名無しさん
2011/10/01(土) 09:50:26.78パッチをあてる前のコードと同じなの?
つまりちゃんとしたテストになっているのか?
0803デフォルトの名無しさん
2011/10/01(土) 10:17:01.89それはdllでもjarでも同じ問題があるね
バイナリファイルは中身を見るのがむずかしい
テキストは最高だぜ
0804デフォルトの名無しさん
2011/10/01(土) 10:23:29.77モンキーパッチをするのは間違い。
モック/スタブを作るならば、同じインターフェースを
備えたラッパーを作るべき。
中身を見れることに依存すると、中身が見れない、
つまりソースコード非公開ライブラリでは使えない
汎用性のないテクニックになる。
0805デフォルトの名無しさん
2011/10/01(土) 10:37:10.18なんでホワイトボックステストができる対象まで
ブラックボックステストに限定せないかんの?アホなの?
0806デフォルトの名無しさん
2011/10/01(土) 10:47:02.93そういう話ではない。モンキーパッチはパッチ。
つまりオリジナルのソースコードの書き換えそのものなのだから、
モックやスタブの場合のみにパッチをあてるやり方では同じ動きにならない。
適用箇所を間違っている。
つーか、なんでもモンキーパッチという奴ってなんなの?
やってることをちゃんとわかってるのか。
0807デフォルトの名無しさん
2011/10/01(土) 10:56:26.49は?パッチって言葉から想像だけで書いてるだろ
0808デフォルトの名無しさん
2011/10/01(土) 10:58:46.17そのインターフェースとやらの方法で
privateなオブジェクトやメソッドローカルなオブジェクトを
オリジナルのソースコードに変更を加えずにモック化してみろ
0809デフォルトの名無しさん
2011/10/01(土) 10:59:05.27モンキーにそれほど重要なことが含まれてるのかw
つか、反論あるならちゃんと中身を言えよ。
0810デフォルトの名無しさん
2011/10/01(土) 10:59:55.64それはモンキーパッチでもできないじゃんw
0811デフォルトの名無しさん
2011/10/01(土) 11:00:30.51できる。余裕
0812デフォルトの名無しさん
2011/10/01(土) 11:04:56.17本当ならやらないほうがいいパッチなんだよ。
もちろん意味が無いテクニックくとは言わない。
だがそれは”普通のコード”で実現できなく、
外部のコードを自分の開発の制御下に
持ってこれない場合に行うもの。
テストなんてのは、自分が開発したコードに対して行うもので、
当然自分の開発の制御下に置くものだし、置けるはずのものなんだから、
そんなどうしようもない場合に用いるテクニックを多用する時点で、
自分が開発したコードがテストがしにくいコードになってると言わざるを得ない。
0813デフォルトの名無しさん
2011/10/01(土) 11:09:20.63丁寧に作られていなかったり、ドキュメントが貧弱だったりするモンキーパッチからは、以下のような問題が引き起こされることがある:
状況が変わり、そのパッチが、変更される対象のオブジェクトに対して仮定していることがもう正しくなくなってしまった場合に、
アップグレードにまつわる問題が引きおこされる。もしもパッチを適用したプロダクトが新バージョンになって変更されると、
パッチが壊れて動作しなくなる可能性が高い。このような理由からほとんどの場合において、モンキーパッチは、条件をチェックして、適切な時だけ適用するように作られる。
もしも、同じメソッドに対して、2つのモジュールが同時にモンキーパッチを適用しようとすると、
それがalias_method_chainのようなパターンを使用して書かれていない限りは後から実行した方が"勝ち"、
もう片方のパッチは動作しない[4]。
モンキーパッチを適用すると、ディスク上の元のソースコードと、見た目の振る舞いが異なるため、
パッチの存在に気づかなかった人を混乱させる可能性がある。
例え使用されていなかったとしても、プログラミング言語内でモンキーパッチを適用できるということは、
強いカプセル化を強制することと両立しないため、モンキーパッチの機能の有用性は問題である、
と見る人も中にはいる。このオブジェクト間のカプセル化は、Object-capability_modelで必要とされる。
0814デフォルトの名無しさん
2011/10/01(土) 11:10:58.05信頼性を担保するべきテストコードで
テスト時にだけモンキーパッチをあてる方法は
使えないとわかるはずなんだがな。
0815デフォルトの名無しさん
2011/10/01(土) 11:13:20.04> モンキーパッチがもっとも活躍するのは
> ユニットテストでモック/スタブを作るとき
お前、昨日 「eval(モンキーパッチ)」と
言っていたやつだろ?
お前はもう喋るなw
お前が喋るとどんどんふりになる。
0816デフォルトの名無しさん
2011/10/01(土) 11:15:53.450817デフォルトの名無しさん
2011/10/01(土) 11:25:17.60俺も仲間に入れろやwww
0818デフォルトの名無しさん
2011/10/01(土) 11:49:33.290819デフォルトの名無しさん
2011/10/01(土) 11:49:55.40>そういう話ではない。モンキーパッチはパッチ。
>つまりオリジナルのソースコードの書き換えそのものなのだから、
根本のスタートが間違ってるから、Wikipwdiaで急遽調べたわけでも無さそうだな。
0820デフォルトの名無しさん
2011/10/01(土) 12:29:48.12>>812-817が同一人物だと分かる。
0821デフォルトの名無しさん
2011/10/01(土) 14:00:15.33それを言うことは、お前にとって重要だったのか?
0822uy
2011/10/01(土) 14:11:00.73ここ100レスでやたら同じ単語が連呼されてるけど
お前らがサルに見えるよ
同じ単語を何度も連呼してるのは頭が悪そうに見えるからやめたほうがいいよ
実際に悪いいんだろうけど
0823デフォルトの名無しさん
2011/10/01(土) 14:26:47.460824デフォルトの名無しさん
2011/10/01(土) 18:16:48.95拡張メソッドなんて、Objective-CのCategoryと同じで、
全然動的言語の代用にならねぇじゃねぇか。
拡張性のある言語デザインの話であって
動的静的の問題点とは完全に別物
0825デフォルトの名無しさん
2011/10/01(土) 18:35:35.74どうも、理解能力が足りないみたいだね。
ほんとうの意味で動的言語が必要な場面は少ない。
例えばオブジェクトにメソッドを付け加えるのは
動的言語である必然性はないってことだよ。
君はどうしても動的言語でなければいけない例を上げればいい。
俺はそれを静的に解決する方法を考えるだけの話。
拡張メソッドのように静的言語で解決する方法はあるはずだ。
0826デフォルトの名無しさん
2011/10/01(土) 18:44:20.27するだけなら動的処理必要ないだろ。テンプレートで十分だ。
そもそもOO関係で動的機構が必要になる機械は無い。
動的言語機能が必要になるのは、もっと原始的なレベルの話。
0827デフォルトの名無しさん
2011/10/01(土) 18:48:31.630828デフォルトの名無しさん
2011/10/01(土) 18:50:59.04何十にも暗号化されたプロテクトコードが
自分自身の暗号を解除している処理の途中に割り込んで
動的にパッチあてていった時ぐらいだよな。
0829デフォルトの名無しさん
2011/10/01(土) 18:59:49.600830uy
2011/10/01(土) 19:01:02.03起動に時間のかかるようなプログラムや
頻繁に小さな変更を与えて行かなくちゃならないようなやつだよ
お前たちみたいなゴミッカスが触れる機会はないと思うから気にしなくていいよ
0831デフォルトの名無しさん
2011/10/01(土) 19:10:37.34具体的に、どの製品の話をしているのですか?
0832デフォルトの名無しさん
2011/10/01(土) 19:14:54.83静的言語でいいんだよな?
0833デフォルトの名無しさん
2011/10/01(土) 19:24:31.94動的言語で作成したバイナリーは、それ自身が動的言語の
インタプリタとして動作するように作れなきゃならない。
無論動的言語でも、外部からソースを読み込ませて動的機能に掛ける
コードを書いてなけりゃ無理だがそれは別の話。
0834デフォルトの名無しさん
2011/10/01(土) 19:30:21.52オワコンじゃろ?
そんな時は動的書き換えができることって重要じゃよ。
たった数秒のリセットのお陰で、宇宙空間のどこかに飛んでいったとか
たった数秒のリセットで相手のミサイルから逃げられなくぶち落とされた
じゃどうなる?
0835デフォルトの名無しさん
2011/10/01(土) 19:40:01.93あほか。
ミッションクリティカルなら、動的に書き換えるなんて
馬鹿やるわけがないだろ。元に戻せないだろうが。
本当にミッションクリティカルなら
待機系サーバを用意して切り替えとか
そういうふうにして修正を行うんだよ。
やっぱり素人かよ。
0836デフォルトの名無しさん
2011/10/01(土) 19:41:16.960837デフォルトの名無しさん
2011/10/01(土) 19:44:54.82だからお前はしゃべるなって言われただろ?w
0838デフォルトの名無しさん
2011/10/01(土) 19:47:42.110839デフォルトの名無しさん
2011/10/01(土) 20:04:21.820840デフォルトの名無しさん
2011/10/01(土) 20:10:02.52素人の考えることだからなwww
ミサイルハッキングされました!
なに? 正常プログラムで上書きするんだ!
書き換え完了、再起動命令送信!・・・再起動、間に合いません!
ちくしょーちくしょー動的言語に、動的言語にさえなればー!
とかそういうアニメでも妄想してんだろw
0841デフォルトの名無しさん
2011/10/01(土) 20:22:56.130842デフォルトの名無しさん
2011/10/01(土) 23:32:00.34例として動的言語でどうやるのか
書いてみて。
0843uy
2011/10/02(日) 05:07:16.09こういう勘違いゴミカスっているよな
ここは「ム板」であって、仕事の話ならマ板にいけよゴミ
製品だぁ?
たとえば動的にコード書き換えたいと思うのは2chBOTだな
荒らしやってると、結構すぐに対策してくるんだよ
まぁミサイルの話もでたけど、
「目標」が、動的にプログラムを変えてくるなら、
こっちも動的にソースコードを変えていきたいわけだよ
何らかの「イレギュラー」が発生する可能性の高い場面では動的に書き換えられないで再起動なんてお話にならない
0844デフォルトの名無しさん
2011/10/02(日) 06:24:42.58オフセット調べて書き換え、JavaならsetProperty
まともに答えると、普通は動的書き換えなんて考える前に再設計
依存部分を抽象化(インターフェイスに)して分割、後から注入
メソッド変更したいなら継承
不可能ならそれが設計
テスト内容自体が間違ってるわけで、動的、静的関係ない
0845デフォルトの名無しさん
2011/10/02(日) 06:42:12.02動的に設定変えられればいいだけで、もはや言語すら関係ないな
プログラミングすらできるか疑わしい
0846デフォルトの名無しさん
2011/10/02(日) 14:54:22.43えーと…ガンダムSEEDとか?
0847uy
2011/10/02(日) 15:17:44.77うわぁ・・・・・・・・・ 本日の一番の恥さらし決定
あのさぁ、そこまですべてのコードを洗練させれるなら
動的にコード変更したい! なんて誰も思わないわけよ
イレギュラーって言葉の意味わかってないな ゴミッカスには早い話だって最初から言ってたけどね 俺は。
下手に噛み付くから、そうやって恥ずかしいことをかいちゃう
0848uy
2011/10/02(日) 15:21:55.11「すべてのコードを完璧に」なんだよ
そりゃ、全部完璧に、いつも完璧にかけるなら それでいいさ
しかし、実際には「 本 番 は そ こ ま で 甘 く な い 」
クラックにしても相手が対応してくる前にスクリプト完成させて攻撃するんだよ
オブジェクト指向が・・・えーと・・・クラス?
なんてやってる間に対策される
最低限読める程度のコードで、さっさと作るんだよ 外部ファイル読みだし? そんなことやってる暇はない
仕事もそこまでシビアではないにしても、時間との勝負って面では同じだね。いくらでも時間かけていいなら
完璧にできるさ。 学校は卒業しろよ?
0849デフォルトの名無しさん
2011/10/02(日) 16:55:59.300850デフォルトの名無しさん
2011/10/02(日) 16:56:52.510851デフォルトの名無しさん
2011/10/02(日) 18:37:32.200852デフォルトの名無しさん
2011/10/02(日) 21:00:19.16こっちのスレのほうが隔離スレっぽ
0853デフォルトの名無しさん
2011/10/02(日) 21:59:57.35技術的な話になるとすぐ逃げ出すし
0854デフォルトの名無しさん
2011/10/02(日) 22:32:02.270855デフォルトの名無しさん
2011/10/02(日) 22:35:06.78じゃあお前はテトリス作れるか? 1時間で。
0856デフォルトの名無しさん
2011/10/02(日) 22:46:16.260857デフォルトの名無しさん
2011/10/02(日) 22:58:11.10なんで俺に聞くの?
0858デフォルトの名無しさん
2011/10/02(日) 23:00:02.34「時間かけたら出来るっていう奴はまずできない」と言ったから
お前はこの質問になんて答えるか知りたかったからさ、
0859デフォルトの名無しさん
2011/10/03(月) 01:52:45.02「それだけじゃ見積もりできませーん」
0860uy
2011/10/03(月) 02:04:11.61たとえば?
もしかしてお前さ、
俺がいろんな場所にレスしてるの知らなくて
uyはこのスレしか見てないとか思ってないよね?
悪いけど、俺マ板ム板の99%のスレッドに書き込んでると思うお
そんなのをいちいち全スレのレスチェックしにこねーから ゴミか? バカか?
何か言いたいことあるなら早めに言ったほうが良いよ
0861デフォルトの名無しさん
2011/10/03(月) 03:38:17.01別に常に自分の書き込みがおもろいとでも自負してんなら良いのよ、他人が云々するこっちゃない
本当の問題はおまいさんの書き込みが日々つまんなくなってる点だよ
なんか悪いのか?
クズでも言える煽りはクズに任せとけばいんじゃね
0862デフォルトの名無しさん
2011/10/03(月) 04:11:50.85恥知らずだったのが恥を知りはじめちゃったのが
つまらなくなった原因じゃないかな
きっと、ちん毛が生え始めたんでしょう。
0863デフォルトの名無しさん
2011/10/03(月) 04:26:04.680864uy
2011/10/03(月) 06:14:44.61リアルに99%のスレに書き込んでるよ
毎回コテなわけじゃないし
煽りがつまらなくなってるって感じるならお前は観察力が高い
なんか最近めんどーになってきたから、すげー勢いまかせでかいてる
以前は「あ、これ投下したら10人中8人相手をイラつかせることができるな」って文章を考えてたけど
最近は10人中5人程度をイラつかせるような ワード を文章に入れ
あとは適当に文字数を稼ぐために駄文詰め込んでるだけ
俺が言うのもなんだけど、こんな適当にかいてるレスを読んでる奴って、物好きだなと思う
0865デフォルトの名無しさん
2011/10/03(月) 10:46:56.840866デフォルトの名無しさん
2011/10/03(月) 12:47:51.52俺もこれからの時代のドカタ言語はその2つになるんじゃないかと思ってる
0867デフォルトの名無しさん
2011/10/03(月) 13:10:23.470868デフォルトの名無しさん
2011/10/03(月) 13:38:52.140869uy
2011/10/03(月) 13:55:24.59単純に使いたくない 触れたくないない だけかな
ドカタ言語ってまだやさしい表現でさ
真実を言っちゃうと ゴミ言語 ってことだよ でもそれだと
言葉が少しきついから、譲歩してドカタ言語って言っているだけなのに
0870デフォルトの名無しさん
2011/10/03(月) 14:05:56.330871デフォルトの名無しさん
2011/10/03(月) 15:36:31.31一概に馬鹿にしてるとは言えん気もしてたんだが
0872uy
2011/10/03(月) 16:28:22.380873デフォルトの名無しさん
2011/10/03(月) 17:36:18.200874デフォルトの名無しさん
2011/10/03(月) 20:51:17.18どういう理屈で決まるんだよ。
0876デフォルトの名無しさん
2011/10/03(月) 21:22:40.16はたから見れば、好き嫌いにすぎないのに、
自分のわがままであることを認めたくないから
土方言語なんてのがあるかのように言い張る。
結局は、土方言語なんて言っている人の
心の弱さの現れなんだよ。
0877デフォルトの名無しさん
2011/10/03(月) 21:27:38.010878デフォルトの名無しさん
2011/10/03(月) 21:30:07.21こればかりは好み関係なく土方言語だと思うわ。
0879uy
2011/10/03(月) 22:16:41.55うまくまとめに入ってるwwww
お前ほんと心弱いな
もしかしてJAVAが折れたらお前も折れちゃうの?
そりゃあ悪いことをした
折れろゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0880デフォルトの名無しさん
2011/10/03(月) 22:20:34.380881デフォルトの名無しさん
2011/10/03(月) 22:47:22.280883デフォルトの名無しさん
2011/10/03(月) 23:51:52.19反論できんわ
0884デフォルトの名無しさん
2011/10/04(火) 00:30:12.26土方B 「あ!?ツルハシが使いやすくて良いに決まってるだろ」
土方C 「複式ショベルが早くていいとおもうんだけど」
0885デフォルトの名無しさん
2011/10/04(火) 00:33:59.740886uy
2011/10/04(火) 04:58:31.34真っ直ぐにしか走れない
真っ直ぐにしか走れない頭の悪い土方をどうやって使うかが上の仕事
生かすも殺すもさじ加減
0887デフォルトの名無しさん
2011/10/04(火) 08:11:36.53道具に拘るのは
極普通のこと。
0888デフォルトの名無しさん
2011/10/04(火) 08:22:53.030889デフォルトの名無しさん
2011/10/04(火) 08:55:47.64それは間違ってるよw
0890デフォルトの名無しさん
2011/10/04(火) 09:07:24.40なんで間違ってるの?
お前が道具に拘ってないのは、お前が優秀じゃないだけのことだろ?
0891デフォルトの名無しさん
2011/10/04(火) 09:19:24.76きみは否定されるとテンション上げて反論してくる典型的なダメプログラマーだね。
疲れるプログラマーの相手は現場だけにしたいところw
まさか土方でさえ分かることを反論されるとはw
0892デフォルトの名無しさん
2011/10/04(火) 09:21:49.350893デフォルトの名無しさん
2011/10/04(火) 09:33:07.08ゲームすら通用しなくなった日本企業に世界的なソフトウェアは存在しないし、
プログラマーじゃ収入もたかが知れてる。
0894デフォルトの名無しさん
2011/10/04(火) 09:40:26.87このスレ要らんな
0895デフォルトの名無しさん
2011/10/04(火) 09:50:29.750896デフォルトの名無しさん
2011/10/04(火) 11:27:51.54拘りなんて捨てて、状況に応じて使う奴のが優秀だと思うんだが。
0897デフォルトの名無しさん
2011/10/04(火) 11:40:38.930898デフォルトの名無しさん
2011/10/04(火) 11:41:48.04使い分けることに拘るのも道具、手段に対する拘りといえるな
0899デフォルトの名無しさん
2011/10/04(火) 11:47:29.330900デフォルトの名無しさん
2011/10/04(火) 12:01:05.63それでも、数学者や理論物理学者は狭き門なので、それに成り得なかった様な
人がプログラマーになったりはすると思う。そういう人は、他の分野の研究者
には、もっと成りたくないから。
0901デフォルトの名無しさん
2011/10/04(火) 12:09:32.14そんなのみんなわかってるわけで
暇潰しのスレでなに言ってんの?
さて、今日は動的厨でもやるかなw
かかってこいよ静的厨
0902デフォルトの名無しさん
2011/10/04(火) 12:22:07.04そして「良工は先ずその刀を利くし、能書は必ず好筆を用う」という言葉を残してる
0903デフォルトの名無しさん
2011/10/04(火) 12:30:09.53道具を使うことは事実。
でも、プログラミングに置いては、さて、どうかなと疑問に思う
な・・・。
0904デフォルトの名無しさん
2011/10/04(火) 12:35:31.94言語をころころと変えるのは非効率と言うこともあるかな。
その辺が、ハサミやノミなどとは違う理由かも。
0905デフォルトの名無しさん
2011/10/04(火) 12:52:34.97Googleに入社するためのIQは、あらゆる企業の中で最も高いそうだ。
他の調査でも、プログラマより頭がいいと思われるのは、
理論物理学者と数学者くらいらしい。
給料の高さと頭の良さは必ずしも関係ない。やりたい職業をやっている
人も多いから。
0906デフォルトの名無しさん
2011/10/04(火) 12:57:00.80のが多いのは、マスゴミ脳って奴だな。
0907デフォルトの名無しさん
2011/10/04(火) 12:58:06.140908デフォルトの名無しさん
2011/10/04(火) 13:01:25.52このスレで言う「プログラマ」ってGoogleのエンジニアのようなひとのことなんだ
知らなかったよ
0909デフォルトの名無しさん
2011/10/04(火) 13:10:20.46「Googleのエンジニア==プログラマ」
でないとしたら何なんですか?
0910デフォルトの名無しさん
2011/10/04(火) 13:13:45.99いずれにしろGoogleで技術系の仕事をしてるからといってプログラマとは限るまい。
0911デフォルトの名無しさん
2011/10/04(火) 13:20:37.36研究者は研究者であって、一般医「エンジニア」とは言わない。
また、ネットワークエンジニアが、プログラマに比べて優秀だとは
全く思えない。創造性がなく、事務処理やっている様に思える。
0912デフォルトの名無しさん
2011/10/04(火) 13:22:21.98プログラマと区別するために"IT土方"という用語があるんじゃないか
0913デフォルトの名無しさん
2011/10/04(火) 13:22:51.320914デフォルトの名無しさん
2011/10/04(火) 13:26:46.00優秀でも頭が良くても、ネットワークにも、自然言語にも興味が
ない人は、他のソフトを作りたいと思うと思うけど。
0915デフォルトの名無しさん
2011/10/04(火) 13:26:58.90恐ろしい世界だ。
0916デフォルトの名無しさん
2011/10/04(火) 13:27:12.09言語間で相互運用できる場合も多々あるので、一概に非効率とは言えない
0917デフォルトの名無しさん
2011/10/04(火) 13:29:04.030918デフォルトの名無しさん
2011/10/04(火) 13:42:31.520919デフォルトの名無しさん
2011/10/04(火) 13:47:03.98としたハード重視だと言われている。今後ソフトの重要性はますます高まると
考えられているのに、「プログラマに頭のいい人はならない」なんて思う人
がいるのは非常に問題。パソコンに触ったことが多い日本では、プログラマが
何をやっているのか分からない人が多いので、馬鹿にされる。そして、優秀な
人からやめていく。それで、日本のソフトは弱いまま。
0920デフォルトの名無しさん
2011/10/04(火) 13:49:52.43日本でプログラマといえばドカタに決まっとる
0921デフォルトの名無しさん
2011/10/04(火) 13:53:04.81学校での成績も良くて、医者でも何でも慣れたが、ソフトが作りたくて
プログラマになりたい人もいるんだよ。実際に舞台が少なくても。
そういうレッテル張りは、今後の若手にも、日本の将来にとっても
マイナスになる。優秀な学校、優秀な成績で学校を卒業しても、
いざ就職しようとすると、良いソフト会社がない、なんて状況が
実際に起こっているが。
0922デフォルトの名無しさん
2011/10/04(火) 13:59:04.94アフリカにいるイチローみたいなもん
0923デフォルトの名無しさん
2011/10/04(火) 14:00:55.02そういった連中をごっそり獲ってくメーカーが、しかしそこに入ってみたら下請けを
マネジメントするお仕事。
これじゃあIT3流国まっしぐらになるのも当然です。
0924デフォルトの名無しさん
2011/10/04(火) 14:02:40.84ごっそり獲るほどいるのかねえ
0925デフォルトの名無しさん
2011/10/04(火) 14:06:27.09いまごろ裸で洞穴で住んでたんじゃないかな
0926デフォルトの名無しさん
2011/10/04(火) 14:09:34.96色んなケースがあるとは思うが、IBMなんて、ソフト作りを止めてしま
い、企業のサポート役(何でも屋に近いと思われ)に徹するようになって
しまったらしいが。オープンソースの台頭でソフトで儲けるのは難しく
なってきている。
FireFoxも、成果をごっそりGoogle Choromeに持って行かれてしまい、
倒産する恐れ有り。オープンソースは設計図をいつでも盗まれるので
予想できたことだが。そもそも、FireFoxの収益は、Google検索を
使うとFireFox陣営に還元される仕組みによっており、Googleが
金を出さなくなったらFireFoxは倒産するので、非常に危険性の
高いやり方。
0927デフォルトの名無しさん
2011/10/04(火) 14:12:57.78オープンソースが台頭する前から
日本の企業はカスなわけだけど
0928デフォルトの名無しさん
2011/10/04(火) 14:17:04.59ますます参入しにくくなったと思う。
0929デフォルトの名無しさん
2011/10/04(火) 14:20:44.50原発もそうなってる
0930デフォルトの名無しさん
2011/10/04(火) 14:22:00.040931デフォルトの名無しさん
2011/10/04(火) 14:23:20.910932デフォルトの名無しさん
2011/10/04(火) 14:25:03.660933デフォルトの名無しさん
2011/10/04(火) 15:03:41.21片山さつき は、全国模試で1番、1番、1番だったらしいし、
鳩山邦夫 は、全国模試で1番、3番、3番だったらしい。
このように、成りたい職業は、人それぞれ。
0934デフォルトの名無しさん
2011/10/04(火) 15:17:54.020935デフォルトの名無しさん
2011/10/04(火) 15:21:16.51Mozillaの成果は全て持って行ったのでは?
0936デフォルトの名無しさん
2011/10/04(火) 15:27:54.51FireFoxの成果は全く入ってないのかな?
0937デフォルトの名無しさん
2011/10/04(火) 16:00:28.21JavaScript自体、NetScapeが作ったものだから全く入ってない事はないが、
そもそもFirefoxなんてお手本になるほどきれいな仕様じゃないだろ。
互換性ぐちゃぐちゃなんだから。
0938デフォルトの名無しさん
2011/10/04(火) 16:09:12.84V8は新規開発でしょ
接点無いな
0939デフォルトの名無しさん
2011/10/04(火) 16:25:49.03> い、企業のサポート役(何でも屋に近いと思われ)に徹するようになって
> しまったらしいが。オープンソースの台頭でソフトで儲けるのは難しく
> なってきている。
誰に騙されてるか知らんが、
つ ttp://www-142.ibm.com/software/products/us/en/atoz
全部が全部自社製というわけじゃないが、というか、ヨソ製の「取扱い製品」も多いけど。
0940デフォルトの名無しさん
2011/10/04(火) 16:29:40.62しかし、もしFireFoxやMozillaがオープンソースでなければ、
Google Chromeが出来ることもなかったと思う。
0941デフォルトの名無しさん
2011/10/04(火) 16:30:50.07IBM自身が、収益の柱がサポートになった、と言っているよ。
0942デフォルトの名無しさん
2011/10/04(火) 16:35:54.98>FirefoxはNetScape=Mozilla由来、GoogleはWebkit (KDE)
後半は、意味不明。KDEやWebkitが一体なんだというの?
0943デフォルトの名無しさん
2011/10/04(火) 16:36:56.05信者がこんな妄想癖だからFxが厨ブラウザ認定されるんだよな。
mxrでいいからMozillaのソースを一回読んでみ。
C++だけど難しくはないから。
0944デフォルトの名無しさん
2011/10/04(火) 16:49:18.89一時期そんな話題があったような。
0945942
2011/10/04(火) 16:49:45.08なるほど、
>WebKit(ウェブキット)は、アップルが中心となって開発されている
>オープンソースのHTMLレンダリングエンジン群の総称である。
>HTML、CSS、JavaScript、SVGなどを解釈する。
>WebKit は、元々Appleの Mac OS X に搭載される Safari のレンダ
>リングエンジンとして、Linux や BSD といった、UNIX系用のレンダ
>リングエンジンである KHTML をフォークして開発された。現在は
>その他の多くのプラットフォームに移植されている。
でしたか。でも、オープンソースなエンジンを使っていて、
やはり、Googleが自分で開発したわけではないんですね。
0946デフォルトの名無しさん
2011/10/04(火) 16:52:26.210947デフォルトの名無しさん
2011/10/04(火) 16:53:02.57に立たされる事になった事は事実なんですね。自分もオプソだから、
文句を言うことも出来ない。
0948デフォルトの名無しさん
2011/10/04(火) 17:00:32.32CanonicalだってWikimediaだって資金繰りで苦しくなってるだろ。
0949デフォルトの名無しさん
2011/10/04(火) 17:05:42.01悪化させるだろう。
0950デフォルトの名無しさん
2011/10/04(火) 17:12:27.750951デフォルトの名無しさん
2011/10/04(火) 17:50:13.66なると経産省も認めている。サービスやメンテを行わないと駄目だ
そうだ。
しかし、作り手としては、パッケージソフトそのもので食っていき
たいと人も多かろうから、若い人は大変になるよ。
0952デフォルトの名無しさん
2011/10/04(火) 17:57:53.270953デフォルトの名無しさん
2011/10/04(火) 17:59:02.40って何年前にあった話だよ。業界の動向を何年間全く知らないで今日まで生きてきた奴なんだよ。
ほんとにもう。
0954デフォルトの名無しさん
2011/10/04(火) 18:02:29.61オプソはそれより深刻だと思うけど。
0955デフォルトの名無しさん
2011/10/04(火) 18:49:47.27めしうま
0956デフォルトの名無しさん
2011/10/04(火) 18:57:08.55そういうことは普通にあるし特に深刻ではないだろう
0957デフォルトの名無しさん
2011/10/04(火) 22:01:35.26昔は、コンピュータ・ソフトは、力のある個人が大企業に対抗できる
傾向があったのに、最近では、AppleやGoogleなどの大企業が台頭するよう
になったように感じる。FireFoxがGoogleから支援を受けるなど、大組織
ならではのやり方を行ってやっと食っていけるとか、Appleなどハードが
あるのでソフトが売れなくてもいい企業、Googleなど検索用の大型施設を
持つ企業など、ソフトそのものではない政治的な力がないと行けなくなった。
0958デフォルトの名無しさん
2011/10/04(火) 22:05:39.58アフォですか? あの look&feel なくしてどこが Apple ですか?
ある意味, ソフトだけで勝負してる会社です.
0959デフォルトの名無しさん
2011/10/04(火) 22:09:02.42でも、無料でダウンロードしてPC/AT互換機でMac OS Xが動かせるわけ
じゃないから、ハードが売れることで集金できる仕組みがある。
0960デフォルトの名無しさん
2011/10/04(火) 22:40:19.27FDははっきり言って誰でも作れる様な物であった。
それと、>>945にあるような
「HTML、CSS、JavaScript、SVGなどを解釈するHTMLレンダリングエンジン群」
などは、おいそれとは作れる様な物ではない物がソース公開されている
事とは全く異なる。
0961デフォルトの名無しさん
2011/10/04(火) 23:36:13.48穴を掘って埋める仕事が待たれるお
0962デフォルトの名無しさん
2011/10/05(水) 03:37:34.760963デフォルトの名無しさん
2011/10/05(水) 07:09:13.670964デフォルトの名無しさん
2011/10/05(水) 08:42:11.67すぐに他のチームに置き換わるということです。
0965デフォルトの名無しさん
2011/10/05(水) 11:46:51.22Firefoxの開発者が置き換わってるわけではないだろ
0966デフォルトの名無しさん
2011/10/05(水) 11:51:06.34ルサンチマン抱えるのはいいけど、他人に迷惑はかけるなよ。
0967デフォルトの名無しさん
2011/10/05(水) 12:50:00.23Firefoxの収益が悪化し、今後、Google Chromeへとバトンタッチし
て行き、Firefoxの開発は終了するのではないでしょうか。
0968デフォルトの名無しさん
2011/10/05(水) 12:53:28.50まあ、金儲けの手段ではなく、遊びで作る人の集まりかも知れません。
その意味で、OSS開発者は親の財産や資産が豊富にある金持ちという
のは当たっているかも。
「ルサンチマン」というのは自分より優れた物に対する僻み・やっかみ
の事ですが、単に親が金持ちというだけで「本人が優れている」訳で
はないので今回はそれに当たらないでしょう。
0969デフォルトの名無しさん
2011/10/05(水) 13:06:26.59無能プログラマでも、「俺はOSS開発者」と虚勢を張るには適している
仕組みです。0.001%でも開発に関与したなら、
「俺はあのソフトを作った」と言えますし。
商用ソフトなら、そんな余剰人員は雇うわけにはいきませんので、
OSSの存在があってこそ活躍の場がある人もいるのでしょう。
そういった人が、本当の凄腕プログラマよりも圧倒的に多いために
OSS賛同者が増えるのでしょう。
OSS賛同者が多い理由は、「自分の作った物を凄腕プログラマが作った
物より重視する」心理が働いているらしいです。
0970デフォルトの名無しさん
2011/10/05(水) 13:16:34.39これは真理です
0971デフォルトの名無しさん
2011/10/05(水) 13:28:44.41胸が熱くなるな
0972デフォルトの名無しさん
2011/10/05(水) 13:53:54.79この文章でも読みましょうね
http://japanese.joelonsoftware.com/Articles/StrategyLetterV.html
0973デフォルトの名無しさん
2011/10/05(水) 13:58:20.41文系の人、大したプログラミング能力もない人が妄想して書いた
OSS界隈では良くある文書ですね。
0974デフォルトの名無しさん
2011/10/05(水) 14:17:04.29>文系の人、大したプログラミング能力もない人が妄想して書いた
>OSS界隈では良くある文書ですね
それこそ根拠も説得力もないです。
もし、自分の無能さを感じて愚痴っているだけなら、
早々に認めたほうがあなたのためになりますよ。
0975デフォルトの名無しさん
2011/10/05(水) 14:25:27.67プログラミング能力が高いなら、それを示す証拠を提示しないと。
0976デフォルトの名無しさん
2011/10/05(水) 14:28:21.410977デフォルトの名無しさん
2011/10/05(水) 14:29:26.10作為的としか思えないw
記事に関しては俺が出したわけじゃないから何も言わん
0978デフォルトの名無しさん
2011/10/05(水) 14:31:25.41ASは文章能力高い奴多いらしいから
0979デフォルトの名無しさん
2011/10/05(水) 14:36:42.40当時のアメリカでは金は増え続けると信じられていた。
0980デフォルトの名無しさん
2011/10/05(水) 14:42:06.99プログラミングのコモディティ化であり、プログラマにとっての禁忌であると同時に
テロ行為である、ということですね。分かります。
端的に言って、まさにそれが狙いです。
0981デフォルトの名無しさん
2011/10/05(水) 14:46:23.38その例えは正しくない
0982デフォルトの名無しさん
2011/10/05(水) 14:47:36.68あんたは俺より無能なのかい?
0983デフォルトの名無しさん
2011/10/05(水) 14:57:58.020984デフォルトの名無しさん
2011/10/05(水) 15:42:07.83>現実:彼らがそうしているのは、IBMがITコンサルティング企業になろう
>としているからだ。ITコンサルティングというのはエンタープライズ・ソ
>フトウェアの補完財だ。したがってIBMはエンタープライズ・ソフトウェアを
>コモディティ化する必要があり、そのための最良の方法はオープンソースを
>後押しすることなのだ。そして見よ、彼らのコンサルティング部門はこの
>戦略で大儲けしている。
これを見ると、>>926 の前半は完全に正しいことが分かる。
0985デフォルトの名無しさん
2011/10/05(水) 15:44:35.64>OSS界隈では良くある文書
なんだろ?
お前人を侮辱しておいて成果だけかすめ取るとか最低だな。
0986デフォルトの名無しさん
2011/10/05(水) 16:31:37.21何が成果なのか良く分かりませんが?
0987デフォルトの名無しさん
2011/10/05(水) 16:36:12.88「やはり俺の言った事は正しかった(キリッ」
とか言ってる事じゃね?
0988デフォルトの名無しさん
2011/10/05(水) 16:46:06.05サーバー(ハード)を売ったり、映画コンテンツを配信するプラット
フォームを誰でも無料で持っている状態にして、映画コンテンツを売ろうと
したりと、「プログラム・ソフト」自体の競争原理なんて物はお構いなし
のジャイアンみたいな大企業(サーバー・ハードや映画の)ばかり得する
ようにし向けた物だったんですね。
三方良しとは真逆で、自分達の売りたい物だけが売れる様にして、プログラム
自体の価値はいくらでも下げてもお構いなし。
・Sunはハード企業だからソフトを作る力が今一だった--->ハードで稼ぐた
め、OSを無料にし向けるため、Linux に資金を提供した。
・Netscape は、サーバーを売って儲けるために、ブラウザを安くしたかった
↑OS自体、ブラウザ自体を作り込みたい若手プログラマの権利は無視。
0989デフォルトの名無しさん
2011/10/05(水) 16:48:36.57もともと、OSS反対派には分かり切っていたことを、OSS賛同派の人が認めて
文書化しただけのことでしょう。
「正しかった」のは、当然のことであり、むしろ、OSS陣営の人が認めた
事が確認できたまでです。
0990デフォルトの名無しさん
2011/10/05(水) 16:53:36.950991デフォルトの名無しさん
2011/10/05(水) 17:27:51.35単調なビジネスロジックを書き込むという作業でしょ?
なんでオープンソースをdisってんの?お世話になってるのに。
0992デフォルトの名無しさん
2011/10/05(水) 17:37:28.43ドキュメントがなければただのブラックボックスと思われても仕方ない
0993デフォルトの名無しさん
2011/10/06(木) 16:13:50.20批判した相手でさえ利用するのに抵抗がない。
サイコパスだろこれ。
0994デフォルトの名無しさん
2011/10/06(木) 17:30:43.46どっちにしろ、つまらん。
0995デフォルトの名無しさん
2011/10/06(木) 17:52:26.400996デフォルトの名無しさん
2011/10/07(金) 00:41:54.14赤帽とか馬鹿にしてんのかw
0997デフォルトの名無しさん
2011/10/07(金) 18:44:34.510998デフォルトの名無しさん
2011/10/07(金) 18:51:38.930999デフォルトの名無しさん
2011/10/07(金) 21:01:56.401000デフォルトの名無しさん
2011/10/07(金) 22:42:42.1310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。