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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
まだまだ需要がありそうなので立ててみました

前スレ
http://hibari.2ch.net/test/read.cgi/tech/1308499587/
2デフォルトの名無しさん:2011/09/15(木) 01:14:17.69
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

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

                  京都大学霊長類研究所

3デフォルトの名無しさん:2011/09/15(木) 01:15:11.77
4uy: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::} |    几  :{     い、
5デフォルトの名無しさん:2011/09/15(木) 02:04:37.30
このスレの真のタイトルは

    やっぱりRubyでは安全なソフトは作れない
6uy:2011/09/15(木) 02:44:30.45
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
だからJAVAを使い続ける Rubyは使いこなせないから、わかりにくい、そんなものいらないとか言い始めちゃう。
中学生でもやってるのに・・・。。。


まともな人はRubyを使う  結論はとっくにでてたね

ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
↑ これがポイントでーす
7デフォルトの名無しさん:2011/09/15(木) 04:01:48.34
>>6
スクリプト(笑)すごいですね^^
8デフォルトの名無しさん:2011/09/15(木) 10:39:24.15

ゴミはJAVAつかってもRubyつかっても開発速度がおなじ。
9uy:2011/09/15(木) 10:42:37.65
だから
スクリプト言語なんていらない(キリッ)

なんてセリフを余裕ではいてくる層がいる

マジ、 じゃあやってみろ って
お前JAVA使って、
俺Rubyで、コーディング速度で勝負してみますか って。w



もうさー、  ひっでーゴミみたいな仕事ばっっっっっかり やらせてるから

そういう勘違いしたゴミグラマが量産されんだよ
ITに関しては中小企業つぶしたほうが良い気がするなぁ
10デフォルトの名無しさん:2011/09/15(木) 11:12:20.39
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレにようこそ
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
11デフォルトの名無しさん:2011/09/15(木) 12:11:11.02
動的言語の話になると、すぐに型付けの話になりがちだけど

個人的には、動的言語では定義と実行の区別があいまいで(または区別が無くて)
基本的にコードが上から実行されるというスクリプト言語的な所が
拡張性を(ついでに取っ付き易さも)生んでる気がする
定義と実行の区別が無いからこそ、いつでも柔軟に再定義できるわけだし
12uy:2011/09/16(金) 02:36:53.17

もう結論でてた

ゴミには扱えないで終了
13デフォルトの名無しさん:2011/09/16(金) 02:52:03.94
バカは議論ではなぜか
いかに相手より自分が賢いのか、を証明しょうとする。
14デフォルトの名無しさん:2011/09/16(金) 03:20:50.25
>>11
柔軟に再定義できるということは、
どこで定義されるかわからないということ。
どこからでも変更可能ということ。

これはグローバル変数に似ているし、
またgotoにもにている。
15デフォルトの名無しさん:2011/09/16(金) 09:58:35.24
Javaにはぬるぽがあるから型安全性は動的言語と変わらんし、
バイトコード操作(javassistとか)使えば再定義も可能

ただ、動的言語に比べて果てしなく冗長なだけ
16デフォルトの名無しさん:2011/09/16(金) 10:05:51.44
ただし、実行中に再定義するのはJVMの仕様上難しいので
ロード前に書き換える事になる。つまり一種のプリプロセッサだな

だから、安全性は動的言語と大差ないのに
出来る事は少なく、しかも冗長という
17デフォルトの名無しさん:2011/09/16(金) 10:18:13.16
なんのためにカスタマイズしたクラスローダーが実行中に使えるようになってるんだよw
18デフォルトの名無しさん:2011/09/16(金) 11:22:55.15
クラスをロードした後に変更するのは難しい
19デフォルトの名無しさん:2011/09/16(金) 23:18:35.65
つまり、変なことをしなければ
Javaの方が当然安全ということだ。
20デフォルトの名無しさん:2011/09/17(土) 00:13:11.47
javaのぬるぽはscalaで解決済み、互換性のためにnullは残ってるから100%排除は無理だが
scala用に設計されたライブラリ使えばぬるぽ?なにそれな生活が送れる

まあすべてのライブラリにscalaのラッパーがあるわけじゃないが
21uy:2011/09/17(土) 00:30:07.92
>>13
何勘違いしてんだか知らないけど   お前のことをゴミ って言ってるだけであって

頭大丈夫か? もう頭無理っぽいねお前w  産業廃棄物乙
22デフォルトの名無しさん:2011/09/17(土) 02:40:04.90
動的言語の定義は良くわからんが、>>11を定義とすると
SML/OCamlは動的言語だなー
実際、書いてるときの感触がいわゆるP言語と似てるし、
文法チェックが超強力なバージョンって感じで
23デフォルトの名無しさん:2011/09/17(土) 06:52:07.65
>>19
Javaでは変なことはしないが、動的言語では変なことをするという前提?
それとも、動的言語では変なことをしなくても安全じゃないってこと?だとしたら何故?
24デフォルトの名無しさん:2011/09/17(土) 09:45:55.08
>>23
無駄な柔軟性があるから。

たとえばグローバル変数にしておけばどこからでも値を変えられて便利じゃね?
gotoがあればどこにでもジャンプできて便利じゃね?

動的言語の不必要に高い柔軟性はこれと同じ。安全にするのであれば制限を加えたほうがいい。

どうせ同じ変数に互換性がない型を入れたりしないので変数には型をもたせたほうがいい。
実行時にコードを柔軟に書き換える機能なんて持たせずに
継承とか多態とかそういう名前で制限される方法を使ったほうがいい。

こういう制限を持たせることで、その制限に反すること
(例 ローカル変数を触れない場所から書き換えようとすること)を
静的にチェックできるようになる。
25デフォルトの名無しさん:2011/09/17(土) 09:53:09.85
たしかに、変数にnull入れられる(真の意味で)無駄な機能は無い方が良いな
静的にチェックも出来ないしな
26デフォルトの名無しさん:2011/09/17(土) 09:58:44.15
動的型の柔軟性は使いこなせれば武器になる
Javaのぬるぽはメリットが存在しないウンコ機能
27デフォルトの名無しさん:2011/09/17(土) 10:00:54.41
ぬるぽ以外にも、Object型とキャストを使えばなんでもやり放題とか
抜け道だらけだろ。たいして変わらんわ。
28デフォルトの名無しさん:2011/09/17(土) 11:19:24.74
>>24
グローバル変数は名前が長くなる傾向があるから使いたくない。
gotoも行き先に名前をつけなければならない。
whileとか使えば名前いらない。

型の名前を書かないのはこれと同じ。
変な名前を大量に覚えさせるのはやめたほうがいい。
29デフォルトの名無しさん:2011/09/17(土) 11:22:12.33
型名を書かないのは型推論で実現できるので、動的言語である必要性はない
30デフォルトの名無しさん:2011/09/17(土) 11:35:58.92
>>28
Javaほど沢山のクラス名を付けさせる/覚えさせる言語を他に知らない
31デフォルトの名無しさん:2011/09/17(土) 11:39:24.16
>>29
それは、C++0xのコンセプトが実現可能と言っているのと同じ、机上の空論
結局実現できず今でもダックタイピングしてるのが現実
32デフォルトの名無しさん:2011/09/17(土) 11:41:19.43
>>28

> 型の名前を書かないのはこれと同じ。
> 変な名前を大量に覚えさせるのはやめたほうがいい。

前後二行が全く繋がってないのだが。
33デフォルトの名無しさん:2011/09/17(土) 12:36:55.82
>>25
> たしかに、変数にnull入れられる(真の意味で)無駄な機能は無い方が良いな

そのとおり。たとえばC++にはnullを入れられない”参照"というものがある。
その利点の一つが、nullを入れられないから、"より"安全ということになってる。
(誰も、完璧とはいってないのでくだらないツッコミはしないように)
34デフォルトの名無しさん:2011/09/17(土) 12:38:40.42
>>27
> ぬるぽ以外にも、Object型とキャストを使えばなんでもやり放題とか

でも少なくとも、Object型を使っているということと
キャストを使っているということが、コード上にしっかり書いてある。

普通は使わなくていいはずのものを使っている。それが不必要なものならば
コードレビューなどで指摘されるだろう。
35デフォルトの名無しさん:2011/09/17(土) 12:59:38.84
>>32
たとえ繋がってなくても、結論しか書かない奴より、前と後を書く奴のほうがまし

そういえば、型宣言にも結論ありきみたいな所があるよね
36デフォルトの名無しさん:2011/09/17(土) 16:00:43.98
過程すっとばしたら結論だけ言ってるのと変わらんだろアホ
37デフォルトの名無しさん:2011/09/17(土) 16:18:22.35
>>24
お前が不必要という機能がなければ、単体テストで満足にモックも作れないわけだが
(テスト対象コードに強い制限が付く)
38デフォルトの名無しさん:2011/09/17(土) 17:42:02.40
>>37
作れる。
39デフォルトの名無しさん:2011/09/17(土) 18:49:50.11
いやいや、Javaの最近のモックフレームワークも普通に
バイトコード操作使ってるから
使わないと自在にモック作れないから
40デフォルトの名無しさん:2011/09/17(土) 19:06:17.54
Javaのような腐れ言語と比べても仕方ない。
Scala, Haskell, OCaml 辺りと比べようぜ。
41デフォルトの名無しさん:2011/09/17(土) 19:46:21.72
>>39
そうなんだよね。作れるから問題ない。

そして実際作れるからといって、
そういうテクニックを普段から使うなと。

厳密に区別するべきだよ。

危険なテクニックはテストだけとか使用する場所を限定すること。
42デフォルトの名無しさん:2011/09/17(土) 21:44:13.62
うんうん。高速で走るのは危険だから、高速道路は作らなくていいよね、
サーキットさえあればいいよね、という素晴らしい発想ですね。
43デフォルトの名無しさん:2011/09/17(土) 22:00:18.28
>>41
Pythonで危険なことをしようとするときに使う関数やモジュールは
大体決まってるので、危険なテクニックを使ってるかはコード見れば分かるよ
44デフォルトの名無しさん:2011/09/18(日) 00:58:11.30
ここでいう危険かことというのは、
変数に入れる値に、本来想定した互換性がない型を
入れられるとか、そういうことだぞ。
45デフォルトの名無しさん:2011/09/18(日) 08:55:19.73
>>44
ぬるぽ、ぬるぽ!
46デフォルトの名無しさん:2011/09/18(日) 09:01:20.29
>>45
うん。だからNULLが入らないほうがもっと優れてるよね。

何でも入る <<<< 互換性がある方のみ入る < NULLも互換性がないとみなす

こういうこと。より優れているのは言うまでもない。
47デフォルトの名無しさん:2011/09/18(日) 09:04:40.42
ああ、Javaでも安全なソフトは組めないってこと?
それなら同意するわ
48デフォルトの名無しさん:2011/09/18(日) 09:06:45.51
ぬるぽと動的型で一体どこが違うの?
静的にチェックできないし、メソッドにアクセスしたら例外出るのも一緒じゃん
49デフォルトの名無しさん:2011/09/18(日) 09:12:26.90
>>47
いやw 当たり前だろ。

どっちがより優れてるかって問題であって
おまえ、銀の弾丸なんて無いんだぜ。
50デフォルトの名無しさん:2011/09/18(日) 09:13:32.18
>>48
チェックできる型数が違う。

できないことを上げて反論しているようだが、
反対にできることを上げてみれば、
違いは明らかだろう。
51デフォルトの名無しさん:2011/09/18(日) 09:14:19.96
いやいや、Javaと動的言語なら型安全性は同レベル
記述力は動的言語の方が上

つまり 動的言語 >>>>> Java
52デフォルトの名無しさん:2011/09/18(日) 09:18:04.58
結局、Javaでも全てのオブジェクト型変数はNullチェックしないと使えないし、
しかもそれは静的チェックではないわけ
Rubyとかでkind_of?してるのと変わらんわ
53デフォルトの名無しさん:2011/09/18(日) 09:18:06.54
>>51
根拠が抜けてる。
反論しなおせ。
54デフォルトの名無しさん:2011/09/18(日) 09:19:22.71
> 結局、Javaでも全てのオブジェクト型変数はNullチェックしないと使えないし、

ん? nullチェックしてどうするんだ?
nullですよって例外出すのか?

Null Pointer Exceptionでいいじゃん
55デフォルトの名無しさん:2011/09/18(日) 09:20:56.87
>>52
だからnull以外は、実行時にチェックしなくていいから
楽ってことなんじゃないのか?
56デフォルトの名無しさん:2011/09/18(日) 09:22:04.27
>>54
え?じゃあ動的型でもNoMethodErrorとか出せばいいわけ?

いやいや、それじゃダメだろwww
57デフォルトの名無しさん:2011/09/18(日) 09:23:32.43
>>55
全てのオブジェクト型変数にNullは入るだろ
お前は基本型だけ使ってプログラム組んでるのか?
58デフォルトの名無しさん:2011/09/18(日) 09:23:35.65
>>52
Nullチェックなんて書かないよ。
そんなもん書かなくても、ちゃんと例外だしてくれるんだし。

で、Nullは問題だよね。実行時にしかわからないから。
実行時にしかわからないのは、問題だって認識はあるんだよね?
じゃあ、Null以外なら実行前にわかるってことも認識できるよね?
59デフォルトの名無しさん:2011/09/18(日) 09:25:29.73
>>56
だから、(Nullも含めて)実行時にわかるよりも
実行前にわかったほうがいい。

実行時に例外だすなんてもってのほか。
ぬるぽももっての他だが、ぬるぽだけですんでる分まだマシ。
60デフォルトの名無しさん:2011/09/18(日) 09:32:56.38
動的型にはダックタイピングと実行時型エラーという
メリットとデメリットが存在する

ぬるぽは全ての参照型に実行時型エラーのデメリットがあるが
メリットが何も存在しない
61デフォルトの名無しさん:2011/09/18(日) 09:36:32.15
ダックタイピングねぇ。

あれ、意味あるの?
アヒルインターフェースを備えていれば
アヒルであるってだけでしょ?

それって静的型でできることだよね?
62デフォルトの名無しさん:2011/09/18(日) 10:57:18.67
Javaは都合が悪くなると、動的言語と同じ事もできるって言うし
C++は都合が悪くなるとCと同じ事もできるって言う。
いざとなれば同じ所に逃げ込めば安全だと思ってる。
危険だと言ってるのは今だけで、持続的な言質を与えるつもりはぜんぜんないのだ。
63デフォルトの名無しさん:2011/09/18(日) 11:17:01.84
何言ってんだお前は
64デフォルトの名無しさん:2011/09/18(日) 12:01:16.26
Maybeモナド
65デフォルトの名無しさん:2011/09/18(日) 12:03:47.77
>>63
そういうお前は何も言っていないじゃないか
つっこむならもっとつっこめよ
66デフォルトの名無しさん:2011/09/18(日) 14:54:47.87
同じことができるかどうかは問題ではない。
その言語にとっての一番自然な書き方でどう実現できるかが重要だろう?
67デフォルトの名無しさん:2011/09/18(日) 16:07:17.50
>>61
メソッド一つのインターフェースを山ほど作って
インターフェース爆発を起こすわけですねwww
68デフォルトの名無しさん:2011/09/18(日) 16:21:35.08
>>67
ん? それはダックタイピングの欠点かいな?

アヒルのように歩き、アヒルのように鳴くのなら、アヒルだというが、
じゃあ、アヒルように歩くが、アヒルのように鳴かなのなら、それは何なんだ?

結局、アヒルであるためには、アヒルである条件をすべて満たさないといけない。
アヒルである条件は全部満たしてこそアヒルなわけだ。つまりそれがインターフェース。

メソッド一つ一つバラバラにしかできないとしたら、それはさっき書いたように
アヒルのように歩くが、アヒルのように鳴かな中途半端なものができてしまう。

その中途半端な存在をアヒルとして扱って、動作保証は出来るのか?

69デフォルトの名無しさん:2011/09/18(日) 17:46:22.20
>>68
なんでインターフェースの無い言語でインターフェース爆発起こすんだよw

インターフェース爆発の例
http://gee.cs.oswego.edu/dl/jsr166/dist/extra166ydocs/extra166y/Ops.html
70デフォルトの名無しさん:2011/09/18(日) 17:51:16.93
OCamlを使いたいならOCaml使えばいいじゃない
形式手法で検証したいなら形式的検証ツールを使えばいいじゃない

必死で他言語をdisったところで得るものはないと思うが
71デフォルトの名無しさん:2011/09/18(日) 18:07:07.23
>>68
頭大丈夫?ダックタイピングってなんなのかわかってる?
「アヒルのように歩き、アヒルのように鳴くならそれはアヒル」って言葉だけで
ダックタイピングがわかった気にな ってるっしょw始末におえねーww
頭固いんだよオッサン
72デフォルトの名無しさん:2011/09/18(日) 18:44:26.74
>>68
動的言語的で、最も自然な形でインターフェースを実現するとダックタイピングになるんだよ。
Javaインターフェースは「Aならば、Bを持つ」という考えで、ダックタイピングは「Bを持つならば、Aである(と考えても構わない)」という考えだ。どちらも目指すところ、実現していることは同等だ。
ただダックタイピングのほうがより柔軟だ。ミックスインや実行時でのメソッド追加が可能な、動的言語には固定化したインターフェースは必要ないどころか邪魔なだけだ。

73デフォルトの名無しさん:2011/09/18(日) 18:56:43.79
ただし、Javaのインターフェースと動的言語のダックタイピング。どちらが安全かといえば、パラメータの型まで指定できるJava のほうが安全に決まっている。
例えるなら、Java インターフェースは「100V50Aの二つ穴コンセント」のようにかっちりとした規格を決められるのにたいして、ダックタイピングは「ブタの鼻でも二つ穴だからコンセントになる」みたいな感じ。
でもこれは静的型付けと動的型付けの本質的な差異だからね。ダックタイピング固有の問題ではない。

ちなみにおれはJavaは大嫌いだが、PMとして土方を使う分には便利だと思っている。
74デフォルトの名無しさん:2011/09/18(日) 18:56:57.78
ただし、Javaのインターフェースと動的言語のダックタイピング。どちらが安全かといえば、パラメータの型まで指定できるJava のほうが安全に決まっている。
例えるなら、Java インターフェースは「100V50Aの二つ穴コンセント」のようにかっちりとした規格を決められるのにたいして、ダックタイピングは「ブタの鼻でも二つ穴だからコンセントになる」みたいな感じ。
でもこれは静的型付けと動的型付けの本質的な差異だからね。ダックタイピング固有の問題ではない。

ちなみにおれはJavaは大嫌いだが、PMとして土方を使う分には便利だと思っている。
75デフォルトの名無しさん:2011/09/18(日) 19:54:21.88
書き込みごときでミスるような使えない奴は、どんだけ偉そうなことを言っててもリアルじゃドカタなんだろうなー
76デフォルトの名無しさん:2011/09/18(日) 20:05:18.74
AならばB(アヒルのように振る舞うならばアヒルである)と
BならばA(アヒルならばアヒルのように振る舞う)の区別がつかないとか
プログラマとして大丈夫か?
77デフォルトの名無しさん:2011/09/18(日) 20:12:35.59
ダックタイピングは structural subtyping でも出来るし、
nominal subtyping の言語でも type erasure のような技法を
使えば実現可能(C++のboostでは使われてる)

だから動的型だけの特徴じゃないのだが、structural subtyping はまだマイナーだし、
Type erasure は少々ややこしいのが難点だな
78デフォルトの名無しさん:2011/09/18(日) 20:22:39.08
>>75
まあ、あれだ。
大事なことだから二回言っただけだw

>>76
公文学習教室で論理数学の講座でも主催しとけ

>>77
>>66を嫁
79デフォルトの名無しさん:2011/09/18(日) 22:17:32.31
アヒルのように振る舞うならばアヒルである

これは論理的に言って間違い。
アヒルのように振る舞う、動物モノマネ王はアヒルではない。
80デフォルトの名無しさん:2011/09/18(日) 22:36:20.41
馬鹿は無理に論理的って言葉使わない方がいいぞ。
81デフォルトの名無しさん:2011/09/18(日) 22:46:36.54
>>80
そんなことより反論したら? 論理的にw
82デフォルトの名無しさん:2011/09/18(日) 22:50:58.01
>>79>>81
structural subtyping で型安全性を完璧に満たす型システムを構成することが可能
83デフォルトの名無しさん:2011/09/18(日) 22:53:33.71
>>79
> アヒルのように振る舞うならばアヒルである

ただの「AならばB」だろ?どこに論理的におかしいところがある?
「論理的に」だぞ?
84デフォルトの名無しさん:2011/09/18(日) 23:13:29.15
論理わかんないやつに触るなよ
めんどくさいだけ
85デフォルトの名無しさん:2011/09/18(日) 23:20:33.56
特に理由もなく、本物とかモノマネとか、結論がいきなり出てくるのが宣言。
振る舞いを見た上でアヒルだと結論づけるのがダックタイピング。

宣言は論理というより公理に近い。
86デフォルトの名無しさん:2011/09/19(月) 00:04:24.43
>>83
いや、お前はAならばBといっただけで何も証明してないだろ。

AならばB 具体的に言えば、りんごならばバナナ。
これが間違っているのは明らかだよな。

AならばBというのはただの命題。お前は命題を言っただけで、
「AならばB」が正しいという証明をしてないんだよ。

「アヒルのように振る舞うならばアヒルである 」
この命題を出発点として、正しいかを考えるのが論理学だ。

やってみ。「アヒルのように振る舞うならばアヒルである 」という
”命題” が 正しいか。
87デフォルトの名無しさん:2011/09/19(月) 00:16:00.75
>>86
間違ってるって何の根拠も無く言い出したのはお前なんだから、
お前が間違ってるって証明しろよ。
88デフォルトの名無しさん:2011/09/19(月) 00:18:14.93
>>86
馬鹿は無理して論理とか証明とかの言葉使わない方がいいぞ。
89デフォルトの名無しさん:2011/09/19(月) 00:30:54.90
>>86
で、間違ってたらなんなの?

単なる例えをロンパ(笑)したとして、だからダックタイピングはアンチパターンだって主張しようとしてるの?
それともしょうもない雑談に付き合ってほしいだけ?
90デフォルトの名無しさん:2011/09/19(月) 00:32:42.69
例え話だと議論が発散してしまうから、もっと具体的な話しよう

ポリモーフィズムするのに継承関係を必要とするのがインターフェース
メソッドの有無で判断するのがダックタイピング

プログラミングではこれ以上抽象的な議論は必要無いだろうし
その上でメリットとデメリットを語ったほうが生産的だよ
91デフォルトの名無しさん:2011/09/19(月) 00:42:57.13
プログラムのいいところは、どんなにえらそうにしてても使えるコードを書かなければ相手にされないところだ
92デフォルトの名無しさん:2011/09/19(月) 01:06:22.66
数学的にな話をしていて、やっと気づいたよ。
静的言語のメリット。

ようするに数学的(主に論理学)であること。
数学的であるから、数学のテクニックが使える

数学では定義を厳密に行う。厳密な定義があれば
様々なことを論理的に導出できる。
それは式を簡略化したり、矛盾を見つけることにつながる。

これをプログラム言語に当てはめると、変数、型、インターフェース
様々な定義から、矛盾あるコードを見つけることができる。
この論理学的手法を使えるのが、静的言語のメリットなんだ。
93デフォルトの名無しさん:2011/09/19(月) 01:17:07.07
>>90
> ポリモーフィズムするのに継承関係を必要とするのがインターフェース
> メソッドの有無で判断するのがダックタイピング

それは正確ではないな。インターフェースだって結局はメソッドの
有無で判定しているんだよ。○○というメソッドが定義されているか。
定義されていなければ、コンパイルエラーになる。

本質的なのは、○○(アヒル)である。という定義がコンピュータに理解できる
言語(ソースコード)で書いてあるか、それとも人間しか理解出来ない言語(ドキュメント)かの違いだろう。

コンピュータに理解できる言語で書いてあれば、コンピュータが人間に変わって
いろんなことをやってくれる。それが静的言語のメリットだな。
94デフォルトの名無しさん:2011/09/19(月) 01:22:05.26
論理学がすきな学生だなw
かなり遠回り&勘違いしているが、静的言語のいいところは静的(=コード実行前)にプログラムの構造が決まるところだよ。だからコンパイル時にプログラム内の構造バグをチェックできる。
それだけではなく、リファクタリングも100%問題なく実施できる。
動的言語は実行時にそれが決まるというだけで、数学的に矛盾があるわけではないw
95デフォルトの名無しさん:2011/09/19(月) 01:29:20.40
> 静的言語のいいところは静的(=コード実行前)にプログラムの構造が決まるところだよ。
> だからコンパイル時にプログラム内の構造バグをチェックできる。

それは違う。たとえばRubyをコード実行前にコンパイルしたところで
コンパイル時にプログラム内の構造バグは(静的言語よりも)わからない。

コンパイル時にわかるのはわかるのは、静的言語であることも条件の一つだが、
それよりも重要なのはソースコードに定義が書いてあること。
定義があるから論理学的手法によって、自前に矛盾を見つけることができる。

いくら実行前にコンパイルしたからと言って、定義がなければ何も導出できない。

96デフォルトの名無しさん:2011/09/19(月) 01:31:20.83
動的言語は実行時にそれが決まるというだけで、数学的に矛盾があるわけではないw

正しくは、動的言語は実行時にそれが決まる仕組みにするために、定義を書くことができくなった。
定義がないために、定義があれば見つけられたようなこと(矛盾など)を見つけることができない。
97デフォルトの名無しさん:2011/09/19(月) 02:37:39.58
>>95
静的言語のメリットは>>94で書いた通り。
コンパイルってなんだ?おれは実行前/実行時の話をしたんだが。

>>96
静的言語のほうが安全なのは当たり前だ。誰も反対していない。
その安全を手に入れるための制約(=実行前の構造決定)を捨てることによるメリットの
方が大きいというのが動的言語の主張だ。
98デフォルトの名無しさん:2011/09/19(月) 02:42:36.91
ここでスレタイに沿いたいのだが、安全なソフトウェアの定義をしたい。
おれの定義はこれだ。

「数百人 x 数十か月 の開発工程の結果、容易に保守可能なソフトウェアを生産できるか?」

経験上、Javaであれば問題なく可能だ。数百人のうち9割9分はドカタでも構わない。
企業にとったらこんなありがたい言語はない。
Rubyではこうはいかないし、Cも論外だ。優秀な数百人を集めないと、同様の保守性を期待する
ことはできない。
だから、Javaはプログラマとしては唾棄すべき言語だが、管理する側にとってはこれ以上ない
言語なんだ。
99デフォルトの名無しさん:2011/09/19(月) 02:47:42.15
> その安全を手に入れるための制約(=実行前の構造決定)を捨てることによるメリットの

ないよそんなもん。
100デフォルトの名無しさん:2011/09/19(月) 02:55:59.09
>>98
1万人月を越えるような巨大プロジェクトで保守容易なプログラムを作るってすごいね
お前が設計したの?
101デフォルトの名無しさん:2011/09/19(月) 03:06:03.31
>>100
1万人月分の設計を一人でするわけないだろw 面白いやつだな。
適切なフレームワークとアーキテクチャを選べば、Javaの場合コードの影響
を局所限定的にすることができる。
これがメソッドを実行時に書き換えることができるだの、ダックタイピングだの、
ミックスインだの言ってる言語だと数行のコードで全体が破滅しかねない。

・・・でも可能ならばおれは動的言語でこの規模のプロジェクトを成功させて
みたいよ。
102uy:2011/09/19(月) 07:21:44.80
こんなゴミみたいな議論してる暇があったら
動的言語使いこなす練習でもしてくれば
103デフォルトの名無しさん:2011/09/19(月) 07:39:20.36
>>93
インターフェースがポリモーフィズムするのに継承関係を必要とするのは事実だろ
直接的にメソッドの有無を判定しているわけではない
何故なら全く同じシグネチャのメソッドを持っていても、継承関係が無ければ
ポリモーフィズムできないからだ
104デフォルトの名無しさん:2011/09/19(月) 07:41:29.07
>>99
(土方には)ないよそんなもん。
105デフォルトの名無しさん:2011/09/19(月) 08:18:53.70
eval可能な言語は全て動的言語の一種?
106デフォルトの名無しさん:2011/09/19(月) 09:07:35.42
静的型のメリットはプログラマで無くても分かるが、
動的型のメリットは、その柔軟性を発揮できるプログラマにしか分からない
低能プログラマには「動的型 = 静的型 - 静的型チェック」としか映らないだろう
107デフォルトの名無しさん:2011/09/19(月) 09:19:04.57
おまえもいつか石頭になって、わかいひとたちから低能よばわりされるときがくるぞ
108デフォルトの名無しさん:2011/09/19(月) 09:26:02.16
謙虚でないひとのいうことは雑音みたい
109デフォルトの名無しさん:2011/09/19(月) 09:39:40.31
>>105
ポリモーフィズム可能な言語は
静的な制約の一部または全部を無効化できるから動的言語の一種。
110デフォルトの名無しさん:2011/09/19(月) 09:44:15.76
ad-hod polymorphismだけがpolymorphismじゃねー
111デフォルトの名無しさん:2011/09/19(月) 09:55:07.34
動的言語って、型を理解できない奴が使う言語だろ。
112デフォルトの名無しさん:2011/09/19(月) 10:45:57.52
おまえが何を理解できてるか知らんが、Javaは何も理解してなくても
危険なコードが書けないのが利点なんじゃなかったっけw
113デフォルトの名無しさん:2011/09/19(月) 10:50:00.65
>>112
お前そういう勘違いしていたのか?
だから話が噛み合ってないんだな。
なっとくだわーw

えとな、世の中完璧なんてものはない。
どちらが優れているかだ。
もちろん優れているのは静的言語。
114デフォルトの名無しさん:2011/09/19(月) 10:57:29.01
>>109
lisp なんて多態性なんて言葉かできる前からあるがな。
115デフォルトの名無しさん:2011/09/19(月) 11:04:22.33
実行時メタプログラミング=動的言語
実行時型付け言語=動的型付け言語

VB6やPL/SQLも動的言語ではあるよな。
DBの列名を定数の様に扱えるとか。
116デフォルトの名無しさん:2011/09/19(月) 11:12:00.10
最も動的と言えば、シェルスクリプトだろ。
ある意味一番安全で一番柔軟。
即時修正可能。
117デフォルトの名無しさん:2011/09/19(月) 11:20:59.60
デバッガ使って実行時コード書き換えが一番動的
いまだにこのやり方で解決する事例が結構あるのが笑い話もしくは怪談
118デフォルトの名無しさん:2011/09/19(月) 11:24:05.65
メタプログラミングが危険だと言えばいいのに。
メタプログラミングを諦めきれないやつが
静的なメタプログラミングは悪くない、悪いのは動的言語だ、ということにしたいのか。
119デフォルトの名無しさん:2011/09/19(月) 11:31:01.33
スペース区切りの文字列を配列アクセス
文字列を結合してコマンド名作成
コマンドの出力をシンボルとして使用
クオートでくくらずSQLを実行
ファイル操作も専用構文があってパターンの補完が行える

CGIとかわざわざ静的言語なんざつかわんでも
シェルスクリプトで事足りる事が多いよな
画面レイアウトもHTMLのテンプレ読み込んで加工する方が楽だし
120デフォルトの名無しさん:2011/09/19(月) 11:31:29.11
>>118
冷静になれよ。C++のような
静的なメタプログラミングを備えた言語もある。
悪いのは定義ができないこと。
定義がなければ数学的導出が行えない。
121デフォルトの名無しさん:2011/09/19(月) 11:46:16.22
lispは式自体がデータで究極のメタ言語だけど、
OOの型ばっかで関数型の動的性について非難できるやつはいないのな。
程度が知れる。
122デフォルトの名無しさん:2011/09/19(月) 11:56:44.92
関数型の動的性ってのは一見柔軟に見えて優れているように思えるが、
gotoはどこにでもジャンプできるから柔軟だ。みたいなもんだよ。

gotoといった汎用的なものから、関数やループといった
特殊化されたものができてコードが理解しやすくなって、
人間もコンパイラも最適化やエラーを見つけられるようになったように、

関数型の動的性も特殊化され、よりわかりやすい静的な方法に
置き換えられていく。
123デフォルトの名無しさん:2011/09/19(月) 11:57:03.53
型が弱すぎるんだよ
とっとと依存型使えそうすりゃ誰もコード書けなくなるからw
124デフォルトの名無しさん:2011/09/19(月) 12:00:16.83
能書きはいいからちゃんと動くもの作れよ。
バグ作り込むとすぐ言語を悪者にしてさぁ。
125デフォルトの名無しさん:2011/09/19(月) 12:09:12.44
はいはい使うやつが優秀ならアセンブラでなんでも作れる論ね
126デフォルトの名無しさん:2011/09/19(月) 12:11:12.94
アセンブラって、どちらかに分類するとしたら
動的言語だよな。
127デフォルトの名無しさん: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はリスト内包表記あるの知ってるけど、他の言語でも、こんなに短く書けるんだろうか。。。
128デフォルトの名無しさん:2011/09/19(月) 12:15:13.63
>>127
実用的な例でお願いします。
129デフォルトの名無しさん:2011/09/19(月) 12:17:37.06
>>126
アセンブラはプロセッサ
アセンブリが動的かどうかはアセンブリの種類による
130デフォルトの名無しさん:2011/09/19(月) 12:19:15.45
>>129
静的に型が決まらないから
動的って言ってるだけ。

きにすんなw
131デフォルトの名無しさん:2011/09/19(月) 12:30:15.11
>>130
自己書き換えコードの事いってんのかと思ったがな。
132デフォルトの名無しさん:2011/09/19(月) 12:36:12.87
>>128
この程度の例も出来なくて何が実用的な例だよ

大量の組み合わせの中から、条件に合った組み合わせだけを抽出するのは実用でも十分使いまわせるだろ
133デフォルトの名無しさん:2011/09/19(月) 15:03:37.15
型=数値、文字列の内部表現
くらいにしか考えてない奴が多いな。
134デフォルトの名無しさん:2011/09/19(月) 15:19:12.54
型=定義。
定義があれば導出が行える。
135デフォルトの名無しさん:2011/09/19(月) 15:24:29.39
型⊇それに属する値全てが満たして欲しい性質 説で
ある性質を満たすことを型チェックで機械的に保障することができるわけだ
136デフォルトの名無しさん:2011/09/19(月) 18:54:34.73
>>135
満たして欲しい性質がそのまま満たされることはない
現実を見て落とし所を探す
コンパイルが通った頃には、何を譲歩してこうなったのかわけわからん性質が残るばかり
137デフォルトの名無しさん:2011/09/19(月) 19:14:19.95
そりゃ型システムが満たして欲しい性質に関して健全な(欲を言えば完全でもある)型を表現できてないだけだ
型システムによる制約をソフトウェア設計に利用するのは最も軽量な形式手法といえる(TAPL1章より引用)けど
その程度の形式手法すら実用化されてないわけで、形式手法関連の研究が他分野から貶されるのもよくわかる話だよな
138デフォルトの名無しさん:2011/09/19(月) 20:30:13.23
型安全厨は動的型付け言語では安全なソフトは作れないスレたてて
そっちでやれよ
このスレはちゃんと動的言語について書け
139デフォルトの名無しさん:2011/09/19(月) 20:57:56.90
こっちの方>>127も、動的静的問わず御願いします

どの言語がどの位の長さのコードになるのか気になる
140デフォルトの名無しさん:2011/09/19(月) 20:58:50.55
便所の落書きの為に乱立とかあほか
141デフォルトの名無しさん:2011/09/19(月) 22:38:57.21
型安全厨ってOO関係のスレにも現れるし、やっぱり隔離スレ立てるか
142デフォルトの名無しさん:2011/09/19(月) 22:55:55.50
立てて、どうせすぐ機能せずに落ちると思うけどものは試しだ
143デフォルトの名無しさん:2011/09/19(月) 23:02:05.57
さっさと立てろよボケ
144デフォルトの名無しさん:2011/09/19(月) 23:12:54.44
しばらく家にいないから帰宅した週末に立てる。
145デフォルトの名無しさん:2011/09/19(月) 23:14:39.45
今ネットできるんだから、
今やれよ
146デフォルトの名無しさん:2011/09/19(月) 23:22:20.49
ここ自体が隔離スレなんだしイラネ
147デフォルトの名無しさん:2011/09/19(月) 23:45:58.97
>>127

・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]
148デフォルトの名無しさん:2011/09/19(月) 23:46:38.18
>>127

・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;
}
149デフォルトの名無しさん:2011/09/20(火) 02:17:11.04
perl的終末感
150デフォルトの名無しさん:2011/09/20(火) 03:14:28.88
>>148が一番コードが読みやすいな。
151デフォルトの名無しさん:2011/09/20(火) 03:29:50.97
>>150
うっそ、まじでwwww
信じらんねー
152デフォルトの名無しさん:2011/09/20(火) 03:35:42.57
こうやってみるとhaskellが一番に綺麗だな
153デフォルトの名無しさん:2011/09/20(火) 03:37:12.69
短ければいいってもんじゃないしな。

そこに書いてある意図が
コメント無しでわかるのが一番良い。

このコード説明してみて。と言われて
説明したくなったら、それはそのコードが
コメントを必要としているということだ。
154デフォルトの名無しさん:2011/09/20(火) 03:40:35.00
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) list.add({x, y, z});
  return list;
}
155デフォルトの名無しさん:2011/09/20(火) 04:04:47.05
c++11

#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;
}

見にくい
156デフォルトの名無しさん:2011/09/20(火) 05:39:58.91
>>153に一票追加。
157デフォルトの名無しさん:2011/09/20(火) 07:17:15.17
>>149
肝心のparlが無いぞ
158デフォルトの名無しさん:2011/09/20(火) 07:48:41.31
>>154
Java7ではそのコードが通るようになったのか?
159デフォルトの名無しさん:2011/09/20(火) 10:54:34.78
>>153
リスト内包表記から説明しないといけないとか言われたら
そりゃJavaが一番説明コストが低いだろうなw
160デフォルトの名無しさん:2011/09/20(火) 11:04:26.33
>>150
それは関数型で育って無いからだろ。
英語で育った人間が
日本語を読みづらいのは当たり前。
161デフォルトの名無しさん:2011/09/20(火) 12:21:16.07
今や色々な高級言語に関数型の考え方は取り入れられてるけどな
162デフォルトの名無しさん:2011/09/20(火) 12:34:13.70
>>127は保守性を検証と言ってるから
関数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) )
163デフォルトの名無しさん:2011/09/20(火) 12:36:49.67
C#が出てなかったので

static 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();
}
164デフォルトの名無しさん:2011/09/20(火) 12:42:46.81
そもそも、静的な言語ですら安全かどうかって話なのに
動的な言語が安全かどうかなんて、議論して意味あるの?
165デフォルトの名無しさん:2011/09/20(火) 12:46:08.11
世間的には、Javaみたいな半分動的型付けの言語でも
安全に組めると思われてんじゃねーの?
166デフォルトの名無しさん:2011/09/20(火) 13:17:39.57
>>162を修正

def 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)
167デフォルトの名無しさん:2011/09/20(火) 13:43:31.53
>>127
Perl

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で包んだほうが効率良さそう。つーか色々無理。
168デフォルトの名無しさん:2011/09/20(火) 14:33:45.64
流れに便乗 >>127
Prolog


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).
169デフォルトの名無しさん:2011/09/20(火) 14:33:54.10
質問です。
私は大学一年です。前期、授業でPythonとPrologを習いました。そのPrologの
方ですが、引数に現れるのは、リストかアトムでリストの要素も全部アトムです。
このような言語でも静的か、動的か、というような議論は意味があるのですか?
170デフォルトの名無しさん:2011/09/20(火) 14:41:29.76
% 見たらPrologの話がふたつ続いている。うれしくなって、図に乗って。

ピタゴラス数ならび(_要素値上限,_ピタゴラス数ならび) :-
    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).
171デフォルトの名無しさん:2011/09/20(火) 14:50:29.84
本当だ。>>168 と書きこみ時刻がほぼ重なっててワロタ。

ついでに質問に答えとく。Prologの引数に現れるのは項で、項は変数かアトムか複合項。リストは複合項。
ここでいう動的・性的の違いは、プログラム中であるパラメータに適用している演算が正当かどうかが性的に判別可能かどうかなので
そういう意味ではPrologは間違いなく動的。
172デフォルトの名無しさん:2011/09/20(火) 14:56:31.12
>>171
Prologってエッチな言語だったんですね
173デフォルトの名無しさん:2011/09/20(火) 16:03:52.10
Rubyは?Rubyは無いの?
174uy:2011/09/20(火) 16:10:36.39
>>151
な・・・  しんじらんねーんだよ
本当にJAVAメインにしてるバカは、技術者じゃなくて
なんつったらいいんだゴミグラマか? そうだな ゴミだ。

>>150
マジで業界を去れ



「 バカは効率がわからない 」

効率のいいものと 悪いものをみせても  バカには区別がつかないから、 いいほうを選ぶか悪いほうを選ぶかは2分の1の確率になっちゃうんだよ。。。。
サイコロでも転がしてろwwwwwwwwwww   ゴミグラマは死ね   死ねゴミグラマ
175デフォルトの名無しさん:2011/09/20(火) 17:01:36.30
>>173
Rubyだとこんな感じ

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)), $/"`
176デフォルトの名無しさん:2011/09/20(火) 17:32:51.20
Ruby

def 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
177デフォルトの名無しさん:2011/09/20(火) 17:41:23.80
ああ、もっと簡単に書けたわ

def pyths(n)
    (1..n).to_a.permutation(3).select {|x,y,z| x**2 + y**2 == z**2}
end
178デフォルトの名無しさん:2011/09/20(火) 18:54:01.93
>>162>>166

import 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;
  }
}
179178:2011/09/20(火) 18:55:16.21
続き

class 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]));
  }
}
180デフォルトの名無しさん:2011/09/20(火) 19:09:07.26
>>98
>ここでスレタイに沿いたいのだが、安全なソフトウェアの定義をしたい。
>おれの定義はこれだ。
>
>「数百人 x 数十か月 の開発工程の結果、容易に保守可能なソフトウェアを生産できるか?」
>
>経験上、Javaであれば問題なく可能だ。数百人のうち9割9分はドカタでも構わない。

同じく経験上、これはウソだと主張する。
ほんとにこれが実現しているなら、Javaを採用したプロジェクトは、100%とまではいかないにしても高い確率で成功するはず。
しかし実際はどうだ。みんな徹夜の連続で、休日返上で働いてるにもかかわらず、納期は守れず、要件は満たせず、セキュリティバグがわんさか出てくる。

じゃあJavaじゃなくて動的言語を使ったらもっとひどいことになるのか?
まったくそんなことないようだ。知り合い数人がPHPとRubyでシステム作ってるけど、
納期前に徹夜が2、3日あるくらいで、それ以外は徹夜しないし、休日出勤もないらしい。
それでいて、納期遅れはしないし、なにより仕事が楽しいといってはばからない。

たぶんね、プロジェクトの成否に、言語はあんまり関係ないんだよ。
プロジェクトを小規模にするとか、仕事の進め方を変えるとか、言語以外のことのほうが、プロジェクトの成否には重要なんだと思う。

>企業にとったらこんなありがたい言語はない。
>Rubyではこうはいかないし、Cも論外だ。優秀な数百人を集めないと、同様の保守性を期待する
>ことはできない。
>だから、Javaはプログラマとしては唾棄すべき言語だが、管理する側にとってはこれ以上ない
>言語なんだ。

こういうふうに、管理する側がそれに気づいてないうちは、Javaの失敗プロジェクトはなくならない。
181デフォルトの名無しさん:2011/09/20(火) 19:20:08.14
うう、書いてから気づいた。

>>98
>ここでスレタイに沿いたいのだが、安全なソフトウェアの定義をしたい。
>おれの定義はこれだ。
>
>「数百人 x 数十か月 の開発工程の結果、容易に保守可能なソフトウェアを生産できるか?」
>
>>経験上、Javaであれば問題なく可能だ。数百人のうち9割9分はドカタでも構わない。

これって、「大規模なプロジェクトを(高確率で)成功させるプログラミング言語」の定義であって、
「安全なソフトウェアの定義」じゃないよね。
こんな、日本語ですら破綻したこと書いてる人間相手に、真面目にリプしたのがはずかしい・・・
きっと、この人が書いたコードはもっと破綻しているだろう。
182デフォルトの名無しさん:2011/09/20(火) 19:25:54.69
>>162
haskell

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)]
183デフォルトの名無しさん:2011/09/20(火) 19:39:21.45
関数型言語は大体似た感じになるな
OCaml

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
184デフォルトの名無しさん:2011/09/20(火) 19:50:59.29
>>181
なにがリプだよ、きもちわりい奴だな
185デフォルトの名無しさん:2011/09/20(火) 19:54:56.63
リプ〜?
リップー!!
プリプ〜♪
186デフォルトの名無しさん:2011/09/20(火) 20:06:14.68
twitterではレスの事をreplyっていうんだっけ
187デフォルトの名無しさん:2011/09/20(火) 20:47:07.88
ぶっちゃけJavaの冗長さはIDEでもカバー出来ないレベル
188デフォルトの名無しさん:2011/09/20(火) 20:56:58.81
その冗長さが安心感を生むとのこと
189デフォルトの名無しさん:2011/09/20(火) 21:04:10.58
この議論にも飽きたなー
190デフォルトの名無しさん:2011/09/20(火) 21:50:18.18
>>174
この人ねえ...多分、こういう言動続けているとクビになって業界去ると思うよ。
仮に、ここで罵倒しているのが現在あるいは未来の仲間、上司や取引先だとしたらって考えが無いんだねえ。
ま、お前の人生だから俺にはどうでもいいしあぼーんしておくだけだがな。

>>189
どちらの方式も使える言語や解決策は探すと大抵あるしなあ。
結局は怪我しまくって上達するか、あるいは適材適所っていうのが戯論系スレのオチ。
191デフォルトの名無しさん:2011/09/20(火) 21:57:21.97
結局は、コードの長さに違いはあれど、
考える時間を入れたら、殆ど差がないんじゃないか?
少なくともこの例では。
192デフォルトの名無しさん:2011/09/20(火) 22:16:46.77
考える時間は使う人が多少習熟してればどの言語も一定
誰もが内包の方がループで考えるより時間掛かるなんてことはない
193デフォルトの名無しさん:2011/09/20(火) 22:25:45.58
>>184
本人降臨〜
間違いを指摘されたからってキレるな〜www 落ち着け〜www
194デフォルトの名無しさん:2011/09/20(火) 22:37:50.53
>>192
いや、その時間が誤差レベルの差しかないのではないかってことなんだが。
195デフォルトの名無しさん:2011/09/20(火) 22:41:32.99
数学になれてれば直感的でむしろ自然に書けるが。
196デフォルトの名無しさん:2011/09/20(火) 23:03:13.96
数式は必ずしも読みやすいってわけじゃないんだよね。
197デフォルトの名無しさん:2011/09/20(火) 23:10:53.82
多重ループになってる内包表記はちゃんと改行しないと読みにくいな
198デフォルトの名無しさん:2011/09/20(火) 23:13:42.90
>>194
関数型言語の機能や考え方が受け入れられて来たからで有って、手続き型言語の機能だけ、考え方だけだとjavaのコードみたいなのばかりだったと思う
199デフォルトの名無しさん:2011/09/20(火) 23:24:21.15
人間の頭の中って
たいがい手続き型で考えてね?
200デフォルトの名無しさん:2011/09/20(火) 23:28:30.87
出遅れたけど Common Lisp で、

(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)))

となるけど、こんなのライブラリ使えばどの言語でもどうとでもなりそう。
201デフォルトの名無しさん:2011/09/20(火) 23:33:01.32
裸の王様
昔oo今関数型
202デフォルトの名無しさん:2011/09/20(火) 23:36:11.93
>>199
そうでもない
人間、楽に考えられたら楽に考えられる方に流れてく
関数型言語の機能が入って来てるのも、その兆候

203デフォルトの名無しさん:2011/09/21(水) 00:04:50.95
Ted Newardが言ってたことだけど、昔なぜObject Orientedがもてはやされたかというと、
C++に始まる静的型付けオブジェクト言語を使って、様々な高速フレームワークを構築す
る必要があったからにすぎず、今はそういうのはほぼ完成されているので、仕事の内容
が、動的関数型言語を必要とするようなものにシフトしている。関数型言語の流行は、人
間の頭の適性とか趣味の問題とは全く関係なくて、単純に全世界で行われているプログ
ラミングの仕事の総量内のパーセンテージの問題であるのだと思います。
204デフォルトの名無しさん:2011/09/21(水) 00:05:50.32
>>203
意味がわかりません。
205デフォルトの名無しさん:2011/09/21(水) 00:09:47.11
>>197
pyths n = [(x,y,z) | x <- [1..n],
                         y <- [1..n],
                         z <- [1..n],
                         x^2 + y^2 == z^2]

改行するだけで随分読みやすくなるな
206デフォルトの名無しさん:2011/09/21(水) 00:20:18.36
forにはbreakが、ifにはelseがある
mapとfilterにはない
機能が少ない分、読みやすくなってもらわないと困る
207デフォルトの名無しさん:2011/09/21(水) 01:22:22.38
データの制約は反感を買うのにコードの制約はすんなり受け入れられるのはなぜなのか
208デフォルトの名無しさん:2011/09/21(水) 04:52:32.82
>>169
質問は 型 = 構造体の形式 と解釈しているようですが、

1) Prologの引数にはリスト以外の複合項(構造体)がこないというのは「作法」であって、
 Prologの規則ではない。プログラマによっては、あるいはアプリケーションの要請で
 引数として複合項を渡すことはないわけではありません。
2) リスト以外の複合項が引数として現れず、すべてアトムまたは変数だとしても、
 a) foo(四季:X)
 b) foo(X) :- member(X,[春,夏,秋,冬]), ...
  a)は、Xがアトミックなデータしか取ることがなくても、型付することが可能なことを示しています。
  Prologはb)を採用している訳で、このことが動的で型付けなしの意味です。
ただし、Prologの単一化を安全で強い型付けと解釈する向きもあります。これは上の「作法」には
反しますが、呼び出され側の引数に構造体を置いた場合、呼び出し側の引数の構造体の細部まで
形式検査を完全に行うことになるからです。
209208:2011/09/21(水) 04:57:35.81
>>208
説明が適切でありませんでした。2) の a) ですが、これはProlog以外の
言語の例です。
現在のPrologでこのように記述すると ':'(四季,X) という複合項が呼び出され側の引数に
記述されたことになってしまいます。
210デフォルトの名無しさん:2011/09/21(水) 06:09:38.55
>>170
ニ等辺三角形は現れないと勝手に思い込んでいた。
組合せではだめで、重複組合せになるのかな。
最後の述語も、

短辺はひっくり返すことも可能(_x,_x,_x,_x) :- !.
短辺はひっくり返すことも可能(_x,_y,_x,_y).
短辺はひっくり返すことも可能(_y,_x,_x,_y).

になりますか。
211デフォルトの名無しさん:2011/09/21(水) 08:11:10.53
リスト内包表記は低能にはウケが悪い
212デフォルトの名無しさん:2011/09/21(水) 08:14:43.87
ループに慣れすぎなんだよ
213デフォルトの名無しさん:2011/09/21(水) 08:16:44.90
>>191
読むのにかかる時間は大違い
214デフォルトの名無しさん:2011/09/21(水) 09:12:33.03
ttp://twitter.com/#!/yukihiro_matz/status/113795262165680128
> 私が理解している限り、「良いソフトウェア」を開発するためには「小さいチーム」と「優秀な開発者」が最重要で、
> それらの欠如をIDEやら静的型言語やらで埋めることはできるというのは幻想。
> 動的型言語は最初からそんな幻想を提供しない

そのとおりだよな
215デフォルトの名無しさん:2011/09/21(水) 09:15:06.72
ttp://twitter.com/#!/yoshiki_shibata/status/114440801949462528
> 日本のメーカーは、ソフトウェア開発を労働集約型だと思っている人が多いのではないでしょか(仮説)。
> だから、「単価」だけしか話題にしなかったり、やたら経験の浅い人をろくな教育もせずに大量投入する。

ttp://twitter.com/#!/yoshiki_shibata/status/114442273743314944
> その結果、プロジェクトが障害だらけになって火を吹くと、担当者のスキルが低いのが原因だと分析したりします。
> そんなのは、最初から分かていること。
> 分からないで、プロジェクトを進めているとしたら、それは、スキルの低い開発者の問題ではなく、マネジメントの問題です。

まあ、言語が静的になったからといって解決できるような問題ではない。
216デフォルトの名無しさん:2011/09/21(水) 09:34:57.99
無脳なんだな
217uy:2011/09/21(水) 10:52:23.86
つうか、なんでツイッターのURLとかはってるやつがいるんだよ

バカじゃないの
まともに議論する気がないなら失せろ

お前みたいなゴミが業界を腐らせているんだろうな
知的障害者スレスレの人間
ゴミグラマ
218デフォルトの名無しさん:2011/09/21(水) 12:20:38.19
>>200
既にライブラリの有無では埋められない程の差が
一部の言語間には現れてると思うけどね
まあ、>>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)]
219デフォルトの名無しさん:2011/09/21(水) 14:13:50.54
C++03の方がまだC++11より見通しがいいな
boost使えば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;
}
220デフォルトの名無しさん:2011/09/21(水) 14:46:51.57
このスレでは関数型言語は動的言語扱い?
221デフォルトの名無しさん:2011/09/21(水) 15:24:02.48
>>220
両刀使い。。。かな
222デフォルトの名無しさん:2011/09/21(水) 15:25:47.72
ハスケルはよく知らんけど性的じゃないっけ
223デフォルトの名無しさん:2011/09/21(水) 15:30:22.53
動的型付け ≠ 動的言語?
224デフォルトの名無しさん:2011/09/21(水) 16:46:50.53
言葉の定義も曖昧なまま4スレも議論してたのかw
225デフォルトの名無しさん:2011/09/21(水) 16:53:30.64
議論じゃないよ真剣n代喋り場だろう
こういうのは白黒付けるとすぐ結論が出てつまらない
226デフォルトの名無しさん:2011/09/21(水) 16:55:24.05
>>223
当然。シェルだってPrologだってストアドだって動的言語なんだから。
実行時にメタ処理ができれば動的言語。
227デフォルトの名無しさん:2011/09/21(水) 17:13:50.11
また変なオレオレ用語が出てきた
228デフォルトの名無しさん:2011/09/21(水) 17:31:06.65
>>218
OCamlには 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
229デフォルトの名無しさん:2011/09/21(水) 18:40:12.79
>>226
メタ処理って何よ
230デフォルトの名無しさん:2011/09/21(水) 18:47:54.64
>>218
Perl
多重ループを抽象化できるライブラリがあれば解決でしょ。

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";
231デフォルトの名無しさん:2011/09/21(水) 18:57:59.69
>>229
メタってついてんだからふつーに処理のための処理とか解釈すりゃよくね
232デフォルトの名無しさん:2011/09/21(水) 19:14:24.87
>>231
問題はそれが書けない汎用言語のほうが少ない事だ
233デフォルトの名無しさん:2011/09/21(水) 19:41:04.53
真面目に議論してる奴とかまってもらえなくて泣いてる奴が居る件について
234デフォルトの名無しさん:2011/09/21(水) 21:50:04.12
めんどくせーから静的型付けオブジェクト指向言語以外は
全て動的言語ってことにしとくか?
235デフォルトの名無しさん:2011/09/21(水) 22:21:46.20
まあ乱暴。ラクでいいけどw
236デフォルトの名無しさん:2011/09/21(水) 22:46:47.92
Haskell

lproduct 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重ループだった
237228:2011/09/21(水) 23:03:22.83
>>236
そう書けば良かったのか。気がつかなかった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]
238デフォルトの名無しさん:2011/09/21(水) 23:14:17.55
何でもかんでも動的言語に含めたら
型安全厨を隔離するスレとして機能しなくなるだろ
239デフォルトの名無しさん:2011/09/21(水) 23:31:04.77
>>127に飽きた人はこれもやってみて

> じゃあ、Dumpクラスを継承したクラスの全ての公開メソッドに
> 引数と戻り値を出力する処理を追加するようなDumpクラスを
> Scalaで書いてみてよ
> 動的言語なら10行くらいで書けるから
240デフォルトの名無しさん:2011/09/22(木) 05:39:17.20
安全なプログラムを作成・保守するにはソースコードは簡潔であるべき。
そして、このスレ見ても分かるように、変数の型は書かないほうが
アルゴリズムに関係無い情報(ノイズ)が無くて読みやすい。

そもそも、変数の型みたいな処理系が知ってる情報を
わざわざ人間様に打たせるというのが時代にそぐわないんだよ。
241デフォルトの名無しさん:2011/09/22(木) 06:03:02.16
>>239 Rubyならよっちゃんだな・・・

def 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
242デフォルトの名無しさん:2011/09/22(木) 06:06:19.61
あ、「Dumpクラスを継承したクラス」か。よく読んでなかった
243デフォルトの名無しさん:2011/09/22(木) 08:05:34.36
>>240
>安全なプログラムを作成・保守するにはソースコードは簡潔であるべき。
>そして、このスレ見ても分かるように、変数の型は書かないほうが
>アルゴリズムに関係無い情報(ノイズ)が無くて読みやすい。

それは変数の型がノイズになってしまうような言語が悪いのであって
静的型付き言語の一般的な欠点ではない。
240はたぶんJavaやC++やC#しか知らないと思う。
HaskellやOCamlなどもっと他の言語を勉強すべし。
244デフォルトの名無しさん:2011/09/22(木) 08:10:04.36
型の重要性を理解するためだけならHaskellや普通のML系よりAgdaとかCoqみたいな依存型言語をちょっと触ればいい
245デフォルトの名無しさん:2011/09/22(木) 08:43:08.09
> 安全なプログラムを作成・保守するにはソースコードは簡潔であるべき。
> そして、このスレ見ても分かるように、変数の型は書かないほうが
> アルゴリズムに関係無い情報(ノイズ)が無くて読みやすい。

それは数行で終わるような処理の話であって、
普通は1ファイル1000行ぐらいにはなるし、
別のファイルからの呼び出しも発生する。

その場合に、コードを読むための必要な情報(型など)が
近くにないとコードを理解するのに、いろんなことを
考えないといけなくなる。

そのため、このスレに書ける程度の短いコードを例に出すこと自体が
動的言語有意になってる。全くもって現実的ではない証明方法だ。
246デフォルトの名無しさん:2011/09/22(木) 09:07:38.39
>>245
普通は1ファイル1000行・・・ なんてあるのかい。
私の中央値は4行くらいだな。
247デフォルトの名無しさん:2011/09/22(木) 09:55:03.32
アルゴリズム以外ノイズてw
248デフォルトの名無しさん:2011/09/22(木) 09:55:21.72
主語を省略出来て、肯定か否定かが文末の一文字で決まる言語使いのおまいらが、なに言っても説得力ねえか?
249246:2011/09/22(木) 10:42:30.63
中央値4くらい、はおかしかった。ファイル行数を小さい順並べた上での中央値の意味だから。
append/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行は大きくなる。
250246 249:2011/09/22(木) 11:08:35.95
ファイルの行数が1000でも6でもそんなことはプログラムの管理手法に
よる差異でどうでもいい。大事な点は動的型付け言語のProlog が
節の本体に定義された述語の一部をまさに動的に部分的に参照するだけで、
プログラムが管理できるということだ。
どこかに型情報が管理されていることもないから、1000行の「一覧ソース」など
必要がない。
251デフォルトの名無しさん:2011/09/22(木) 11:30:32.77
すみません。日本語が変だったので書きなおし。
・・・
大事な点は、動的型付け言語のPrologの場合、述語の定義節の本体から
呼び出される述語を、必要に応じてまさに動的に参照することを繰り返すだけで、
全体のプログラムを管理できるということだ。
どこかに型情報が管理されていることもないから、1000行の「一覧ソース」など必要がない。
252uy:2011/09/22(木) 12:42:51.66
このスレ見てる奴のために俺が代弁してやるよ


>>249-251

ハァ????????????????????????????????????????
すみませんじゃねーよ
Prologの話題は隔離所でやれ

P言語でこの話題に入っていいのはPerl,Python,PHPだけ
そんなHSP以下のゴミ言語なんて誰も興味ないし、マジで何言ってるかわからないし

お前の言ってることはPrologじゃなくてもできる事だろ、
初心者がこの話題に入ってくるな レスを消費するな

知識をひけらかすのではなく、「「「「「「「「相手を納得」」」」」」」」」」」」」」させることを考えて文章を書け
学生か子供なんですか? つうかまず初心者だろ
いきなりなんで「中央値」なんていう言葉がでてくるんだよ

今は行数の話してんだよwwwwwwwwwwwwwww オンドォウールルラギッタンディスカー???wwwwwwwwwww
お前Prolog以外の言語何ができんの? もしPrologしか「できる」って人に言えるレベルに到達してないなら、もう二度とこのスレに書き込むな 
253デフォルトの名無しさん:2011/09/22(木) 12:48:16.62
>>252
この前はどうも。
254デフォルトの名無しさん:2011/09/22(木) 12:49:30.81
変数/関数の型なんてコードに書かなくても、動的型言語ならデバッガで実行中に、
静的型言語なら編集中にエディタに表示できる環境があるじゃん
255uy:2011/09/22(木) 12:52:06.43
>>251
初カキコ・・・すみません・・・日本語が変だったので書きなおし。

俺みたいなProlog使いで中央値なんて言葉使ってる腐れ野郎、他にいますかていねーか、はは

今日のム板の様子
JAVA最強!! JAVAはなんでもできる!! この世はJAVAだけでいい!
ま、それが普通ですわな

かたや俺は電子の砂漠でProlog使って、呟くんすわ
it'a true Programing. BUGってる? それ、仕様ね。

好きな中央値 4
尊敬する中央値 6 ( 7までいくとNO )

なんつってる間に時代遅れっすよ(笑) あ〜あ、Prolog使いの辛いとこね、これ
256uy:2011/09/22(木) 12:57:17.81
普通は1ファイル1000行・・・ なんてあるのかい。 (キリッ)(キリッ)(キリッ)(キリッ)
私の中央値は4行くらいだな。 (キリッ)(キリッ)(キリッ)(キリッ)(キリッ)

行で話してんのにwwwwwwwww単位かえやがったwwwwwwwwwwwwwwwww
ワイルドキャットと零戦52型くらい違うwwwwwwwwwwwwwwww
257デフォルトの名無しさん:2011/09/22(木) 12:58:43.95
uyにゃん可愛いにゃん(*´Q`*)
258うy:2011/09/22(木) 13:01:20.21

>>250
マジレスすると
>節の本体に定義された述語の一部をまさに動的に部分的に参照するだけで、

お前の言ってるこれは、
おそらく、「初期化情報」や初期値代入さえも、その「部分」に収まってるって事言っているんだろう

俺もそれやったことあるよ Rubyでだけど
けど限界は知っている
その限界は、型情報と実コードを別々の場所に分離して書くよりもさらに低い場所に限界がある
大局的に見れず小さな場所でしかプログラミングやってない奴は、黙ってればいいと思うよ

259デフォルトの名無しさん:2011/09/22(木) 13:04:46.71
>>234
COBOLやFORTRAN、Cも静的言語だろ。
動的型付けと動的言語の区別が付かないやつは書き込むなよ。
260uy:2011/09/22(木) 13:06:13.22
なんで限界が来るかっていうと、
その「部分」の一箇所に実行コードから初期値代入やら初期化処理やらすべてを詰め込むため
ソースコードが必要以上に冗長した場合、
そのコードの上下にかかれてるコードまでのエディタをスクロール等をして
見に行く為の時間が長くなる、

つまり常に、"ある程度"精錬されたコードをかかなければやっていけない
ゴミコードをかくと、後からきつくなってくる
で、実際俺でさえ面倒なときはゴミコードを書くときはあるので、
その書き方は、ソースコードを最初から最後まで一環して芸術作品にするくらいの気持ちで書いていかないと
とても大規模なものをかいていけるレベルではない ようは、完成したものは完璧でも、
読みやすさを捨てざるをえなくなるか、読みやすさも捨てずにいこうとしたら、時間がかかる
素人には小規模なプログラムでさえきついし、それを扱って、C#,Rubyで普通にかいていくコードよりも
開発効率をだそうとしたら、本気で天使にならない限り無理
261デフォルトの名無しさん:2011/09/22(木) 13:27:50.77
よくある動的型付け言語って動的言語とはちょと違わね
静的型付け言語でもGoみたいなクラス非結合な
インターフェースの仕組みをもってて、
常にインターフェースにキャストしてりゃ
動的型付け言語と挙動は変わらない訳だしね

逆に文字列から関数を生成するような動的言語の機能を
静的言語で真似ることは無理
262デフォルトの名無しさん:2011/09/22(木) 13:41:55.73
今ある言語にそういう機能が付いてないだけで
普通に作れるだろ
263デフォルトの名無しさん:2011/09/22(木) 13:57:02.03
そういう機能がついた時点で動的言語になるだろ。
264デフォルトの名無しさん:2011/09/22(木) 13:57:56.70
実行中に環境から受け取った文字列から関数を作ると仮定すると、
その関数の型付けは実行時に行うしかない
だからその部分だけは動的型付けにならざるを得ない
265デフォルトの名無しさん:2011/09/22(木) 14:06:42.34
動的言語ならjsonみたいな事できてなんぼのもんでしよ
266デフォルトの名無しさん:2011/09/22(木) 14:11:49.99
関数作成時に型チェックできるでしょ
267デフォルトの名無しさん:2011/09/22(木) 14:17:47.36
型宣言があろうと実行時に型チェックするなら動的型だろうに
268デフォルトの名無しさん:2011/09/22(木) 14:20:13.41
C++もRTTIに限って言えば動的だな
269デフォルトの名無しさん:2011/09/22(木) 14:27:10.79
関数を実行する前にチェックするだろ
270デフォルトの名無しさん:2011/09/22(木) 14:43:26.53
じゃあ動的型言語でも関数実行前に引数の型チェックしたら
静的型付けなのか?笑わせんなw
271デフォルトの名無しさん:2011/09/22(木) 14:51:30.40
チェック可能な関数すべてチェックすれば静的型付けだろ
272デフォルトの名無しさん:2011/09/22(木) 15:07:37.43
*使わないAS3みたいな感じか
273デフォルトの名無しさん:2011/09/22(木) 16:34:55.46
関数の入り口でチェックしても、式を評価する直前にチェックしても
型の齟齬があったとき実行時例外が出るのは同じだけどな。

ま、こんなコード

Object[] x = new Integer[1];
x[0] = new String();

が通る言語でも平気で静的型を名乗ってるから何でも良いか。
274デフォルトの名無しさん:2011/09/22(木) 17:13:14.08
>>271
※コンパイル時に
だろ
275デフォルトの名無しさん:2011/09/22(木) 17:17:42.65
>>268
微妙じゃね。非常に非力な動的機能ではあるかも知れないけど。
dynamic_castしてもシグニチャが同じだけのクラスにキャスト出来ないし。
名前の割に大して動的じゃない。
276デフォルトの名無しさん:2011/09/22(木) 17:17:59.51
文字列から関数作るときに
コンパイルするじゃん
277デフォルトの名無しさん:2011/09/22(木) 17:22:08.58
>>273
それのどこが動的?そのコードに実行時チェックが必要な
ところなんてないだろ
278デフォルトの名無しさん:2011/09/22(木) 17:24:55.79
動的言語がこの世から消え去っても大した影響はないけど
静的言語がこの世から消えたら大変なことになる
279デフォルトの名無しさん:2011/09/22(木) 17:25:42.11
この世について無知披露乙wwwwwwwww
280デフォルトの名無しさん:2011/09/22(木) 17:26:20.77
>>239
流れ読まずに投下

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"))
281デフォルトの名無しさん:2011/09/22(木) 17:26:48.94
>>276
その理屈じゃインタプリタだってコンパイルしてるよねって話に
なるだろうが。
282デフォルトの名無しさん:2011/09/22(木) 17:28:33.30
>>281
だから何?
だれもそんな話してないけど
283デフォルトの名無しさん:2011/09/22(木) 17:29:30.31
おいJavaさんをdisるのはヤメロ
284デフォルトの名無しさん:2011/09/22(木) 17:30:59.20
>>282
じゃ何が言いたかったんだよ
285デフォルトの名無しさん:2011/09/22(木) 17:33:07.69
動的言語のインタプリタもコンパイルしているけど
コンパイル時には型チェックはしないだろ
286デフォルトの名無しさん:2011/09/22(木) 17:35:45.43
そうだね。
なんかインタプリタもコンパイルするから静的だと主張してんのかと思った。
287デフォルトの名無しさん:2011/09/22(木) 17:41:19.35
実行時に識別子を検索しない (例えばハッシュテーブルを使わない) 等
実行時の処理を減らす言語は評価できる。
最適化だけやってりゃいいのに
なぜ安全をチェックする (ただし実行時はチェックしない) 事に拘るのか理解できない。
288デフォルトの名無しさん:2011/09/22(木) 17:51:42.75
実行時型エラーが出ても静的型付けかー面白いなー
289デフォルトの名無しさん:2011/09/22(木) 17:51:54.12
B言語でも使ってみたら?
あれは本当の意味で型がないから。
290デフォルトの名無しさん:2011/09/22(木) 17:53:58.20
>>288
C++以降の言語は皆出るんじゃなかったっけ?
291デフォルトの名無しさん:2011/09/22(木) 17:55:45.71
実行時型エラーが出ない静的型言語の方が珍しいだろ。
292デフォルトの名無しさん:2011/09/22(木) 18:02:02.54
型エラーやらセグメントエラーやらってのは、
機械語レベルで設定できらものであって全然動的じゃねぇ。
VCですらコンパイルオプションで設定できる。
293デフォルトの名無しさん:2011/09/22(木) 18:22:18.56
自分と同じ言語で書いた、設定情報を取り込んでそのままプログラムの一部として実行できなきゃ
動的とは言えないよねぇ
294uy:2011/09/22(木) 18:49:35.08
>>251
初カキコ・・・すみません・・・日本語が変だったので書きなおし。

俺みたいなProlog使いで中央値なんて言葉使ってる腐れ野郎、他にいますかていねーか、はは

今日のム板の様子
JAVA最強!! JAVAはなんでもできる!! この世はJAVAだけでいい!
ま、それが普通ですわな

かたや俺は電子の砂漠でProlog使って、呟くんすわ
it'a true Programing. BUGってる? それ、仕様ね。

好きな中央値 4
尊敬する中央値 6 ( 7までいくとNO )

なんつってる間に時代遅れっすよ(笑) あ〜あ、Prolog使いの辛いとこね、これ
295デフォルトの名無しさん:2011/09/22(木) 18:59:36.40
Meta-circular evaluatorか
296デフォルトの名無しさん:2011/09/22(木) 19:38:11.85
>>293
急にハードル上がったな。反対はしないけど。
297デフォルトの名無しさん:2011/09/22(木) 19:46:05.04
インタプリタ系だと実行時にコードをインクルードして
クラスやら変数やら一斉に追加できるものは割とあるよね
静的言語で似たようなことしようとするのでは手間が全然違う
298デフォルトの名無しさん:2011/09/22(木) 19:49:48.03
あぁHaskelのことか
299デフォルトの名無しさん:2011/09/22(木) 19:52:46.79
そりゃ言語の特徴というより処理系の特徴だな
REPLで実行するとそういうことが出来る
300デフォルトの名無しさん:2011/09/22(木) 20:03:18.44
原理的に出来ないのと
処理系に実装されてないだけってのは
分けて考えてくれ
301デフォルトの名無しさん:2011/09/22(木) 20:03:22.55
静的言語と動的言語の違いが分からないので外延的に定義してください
302デフォルトの名無しさん:2011/09/22(木) 20:14:56.13
インタプリタのCで遅延includeとか許されたっけ?
規格上許されてんのは動的言語だけでしょ。
確かにC++もJavaも動的リンクは可能だけど、
インターフェースのルールを無視した読み込みは不可能。
関数単位を無視したコード読み込みなんてのも出来ない。
303デフォルトの名無しさん:2011/09/22(木) 20:21:39.82
ソケットから受け取ったコードを同一プロセスで実行するとかってのは、
全然処理依存の問題じゃないと思うぞ。
304デフォルトの名無しさん:2011/09/22(木) 20:23:54.18
>>301

動的言語:Perl, Python, Ruby, Prolog
静的言語:C, C++, Java

残り埋めて
305デフォルトの名無しさん:2011/09/22(木) 20:35:37.41
>>304
この辺も動的だわ

PHP ECMAScript全般 lisp sh系全般
PostScript Objective-C Smalltalk
Haskel
306デフォルトの名無しさん:2011/09/22(木) 21:35:24.38
>>305
なんでHaskellが動的言語なの?
307デフォルトの名無しさん:2011/09/22(木) 22:11:57.23
インタプリタがあるから
308デフォルトの名無しさん:2011/09/22(木) 22:19:07.39
C言語にもインタープリタあるじゃん
309デフォルトの名無しさん:2011/09/22(木) 22:20:35.15
>>306
実行時に型を判定して分岐とかできるからでしょ。
実行時にメタ処理するから動的という話では。
310デフォルトの名無しさん:2011/09/22(木) 22:35:30.69
>>309
スレタイ解釈のレスの応酬は前にあったけど、頭がまとまらなかった。
「動的型付けでは安全なソフトを作れない」なら主張として解る(賛同しているのではない)けど、
文字通りの「動的」だと、「使わなけりゃいいじゃない」という感想にどうしてもなってしまう。
311デフォルトの名無しさん:2011/09/22(木) 22:36:55.31
Forthも実行中にワードを組み込むことができるから動的言語か
Objective-Cみたいな動的型付け言語を動的型を動的に含めると、
APL も動的言語なんだけどどうなんだろうね。
312デフォルトの名無しさん:2011/09/22(木) 22:42:58.86
動的=実行時にメタ処理を行う
静的=コンパイル時しかメタ処理が出来ないし
313デフォルトの名無しさん:2011/09/22(木) 22:54:21.18
Haskellは一度関数宣言したら同じスコープで再定義は出来ないはず
どこが動的なんだ?
314デフォルトの名無しさん:2011/09/22(木) 22:55:44.67
>>309
JavaもC++も動的言語じゃん
315デフォルトの名無しさん:2011/09/22(木) 22:59:44.00
じゃhaskellは静的言語だな
Evalも標準じゃないし
316デフォルトの名無しさん:2011/09/22(木) 23:01:18.99
実行時でも、コンパイル時でも、メタ処理は黒魔術
コンパイル時なら許されるという考えは甘すぎる
317デフォルトの名無しさん:2011/09/22(木) 23:07:17.96
効率が上がるんなら使わないだけバカ。
広域にバグをもたらすマクロとは違う。
318デフォルトの名無しさん:2011/09/22(木) 23:15:03.34
流石に字句置換ではのぅ
319デフォルトの名無しさん:2011/09/22(木) 23:53:59.11
json型グラフDBとかS式グラフDBとか有れば面白いのにな。
静的言語+ORMappingより格段に生産性が有るだろうに。
320デフォルトの名無しさん:2011/09/23(金) 05:58:59.37
>>319
それやるぐらいなら
ODBのほうが生産性上がるよ。
321デフォルトの名無しさん:2011/09/23(金) 08:24:13.58
Haskellはメタプログラミングの枠組みがあるから動的
322デフォルトの名無しさん:2011/09/23(金) 08:26:42.81
非正格で動的な部分を全てランタイムに追い出したHaskellのどこが動的だ
馬鹿も休み休み言え
メタプログラミングは出来るが「静的に」だ
323デフォルトの名無しさん:2011/09/23(金) 08:37:16.28
あーいや、ギャグのつもりだってばw

昔、Haskell には型がない、とか主張してた奴がいてさw
324デフォルトの名無しさん:2011/09/23(金) 08:42:43.74
wwwそいつは頭オカシイわw


現状はこんな感じか?

動的言語:Perl, Python, Ruby, Prolog, PHP, ECMAScript全般, Common Lisp, Scheme,
          sh系全般, AWK, PostScript, Objective-C, Smalltalk
静的言語:C, C++, Java, COBOL, Fortran, Haskell
325デフォルトの名無しさん:2011/09/23(金) 10:19:37.43
はいはいeval eval

let _ = 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)
326デフォルトの名無しさん:2011/09/23(金) 12:39:22.87
動的言語に対する批判一覧

・静的型検査が無い => 対象:動的型言語
・型宣言が無いから読み難い => 対象:動的型言語、型推論のある言語
・メタプログラミングは黒魔術
    ・字句解析フェーズ => 対象:Cマクロ 等
    ・構文解析フェーズ => 対象:Lispマクロ、Camlp4(OCaml) 等
    ・意味解析フェーズ => 対象:型レベルプログラミングできる言語全般(C++/D テンプレート、Haskell、Scala 等)
    ・実行フェーズ => 対象:evalがある言語全般
327デフォルトの名無しさん:2011/09/23(金) 13:25:34.41
メタプログラミングは、C++のように
型がしっかりしてれば、使って良い。
328デフォルトの名無しさん:2011/09/23(金) 14:48:27.05
メタプログラミングに型なんてどうでもいいだろ
329デフォルトの名無しさん:2011/09/23(金) 14:51:14.41
>>320
DB上のオブジェクトに変換が必要で
素直に取り込める訳じゃないでしょ
めんどくさい
330デフォルトの名無しさん:2011/09/23(金) 18:07:59.24
>>329
RDBはそうだね。
DBのオブジェクトに変換が必要。
331デフォルトの名無しさん:2011/09/23(金) 19:24:37.76
>>326
まあ、低能が扱うと怪我しそうな特徴ばかりではある
332デフォルトの名無しさん:2011/09/23(金) 19:43:49.76
>>325
evalと動的な名前束縛があるのでOCamlは動的言語?
333デフォルトの名無しさん:2011/09/23(金) 22:16:53.60
>>326
>>310も言ってるけど、静的型検査以外は「使わなければ良い」だな。
334デフォルトの名無しさん:2011/09/24(土) 00:33:51.01
>>332
そりゃそうだ
335uy:2011/09/24(土) 06:38:29.83
>>327
はぁ????????????wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

まさかお前、C++ テンプレートが 効率上げるとか思ってないだろうな


やってないなら教えてやるけど
あれ違うよ あれただの研究材料だよ


実際にC++で開発するときもテンプレートは使わないほうがいいよ


int でも doubleでも 大丈夫ですwwwwwww とか。やめたほうがいいよ やめたほうがいいよおおおおおおwwwwwwwwwwww

wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
336デフォルトの名無しさん:2011/09/24(土) 08:08:02.52
やめたほうがいいよおwwwwww
337デフォルトの名無しさん:2011/09/24(土) 09:09:53.14
動的言語では安全なソフトは作れない、じゃなくて
動的言語では低能はソフトを作れない(使いこなせない)が正しい事が分かったね
338デフォルトの名無しさん:2011/09/24(土) 09:51:25.79
低能を売り払い少数精鋭にするか、見下しながら買い叩くか
339uy:2011/09/24(土) 11:59:40.52
少数精鋭()にできる会社なんて限られる
個人に頼りすぎると、
そいつがいなくなったときのダメージが大きい

だから雑魚が大量にいるほうが会社にとって良い日本のIT社会

JAVAでも使ってろごみかす
340デフォルトの名無しさん:2011/09/24(土) 12:20:43.71
>>335
STL使ったこと無いの?
341デフォルトの名無しさん:2011/09/24(土) 12:30:24.19
能力ない人(自分も含む)にとって、
変数の型宣言をするかしないかって
それほど大きく影響するもんか?

むしろ動的言語での開発って
単体テストをあまり書かないってところが問題な気はする。
適当に走らせて動きをみるとかそんな感じでやっちまう。
342デフォルトの名無しさん:2011/09/24(土) 12:42:35.64
とりあえずアホみたいに関数をオーバーロードさせといて、
もう読むのが嫌になった頃合いにテンプレート使うのが素人(俺)のやり方
343デフォルトの名無しさん:2011/09/24(土) 14:08:35.19
>>330
RDBじゃなくてオブジェクトデータベースの事だよ。
ODBは言語上のオブジェクトそのものは解釈出来ないから、
どうしても言語側とDB側での変換が必要となる。
最もORマッピングよりはマシだけど。
344デフォルトの名無しさん:2011/09/24(土) 15:03:21.95
>>341
型宣言が必須だと高階関数が面倒くさい
あと動的言語のほうがテストを書く文化あるだろ(テストを過信しすぎる程に)
345デフォルトの名無しさん:2011/09/24(土) 15:24:15.40
>>344
テストについては、動的とか静的とかより、性格とか文化とか、社風とか、環境の方が影響多い気がするな

国内企業も、外資系企業もテスター経験したが、外資系企業は最低限のテストしかしたがらない

通常の手順とは別にショートカット機能付けといて、「我々は通常の手順しかサポートしないから、テストは通常の手順しかしなくて良い」とか、平気で言うもん

客からクレーム入って初めてテストするとか、普通
だったら最初からショートカット機能付けるなよ。と思った

怖くて辞めちゃったよ
346デフォルトの名無しさん:2011/09/24(土) 16:26:09.47
> 型宣言が必須だと高階関数が面倒くさい
別にめんどくさくない。
347デフォルトの名無しさん:2011/09/24(土) 17:01:09.58
>>346
あ、別に高階関数を使った事無い人には聞いてないです
348デフォルトの名無しさん:2011/09/24(土) 17:55:27.86
もう何度も言われてる事だろうが、静的な型付けの言語ならする必要のないテストまで動的型付けの言語はする必要がある。
349デフォルトの名無しさん:2011/09/24(土) 18:08:59.90
たとえば?
350デフォルトの名無しさん:2011/09/24(土) 18:38:02.33
ベクトルの内積

let ( *- ) 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
351デフォルトの名無しさん:2011/09/24(土) 18:43:49.67
動的型付け言語と静的型付け言語なんてどうでもいいわ
スレタイ通り動的言語と静的言語の問題を書け
352デフォルトの名無しさん:2011/09/24(土) 18:50:54.40
>>350
多少文字数が減る程度微々たる問題過ぎる
継承関係無視とかメッセージ転送とかもっとマトモなネタを出せよ
353デフォルトの名無しさん:2011/09/24(土) 18:51:46.56
可読性は上がってるな
354デフォルトの名無しさん:2011/09/24(土) 19:23:18.36
OCamlは型推論した結果をコンパイラに出力させられる(そのまま型宣言として使える)わ、
型推論の結果を使ってカーソルが当たってる変数/関数の型を表示できるわ(Emacs, Vim, Eclipse)、
型推論に対する環境が充実し過ぎ。
こんな特殊な言語の話を一般化するのはどうかと。
355デフォルトの名無しさん:2011/09/24(土) 19:38:05.04
>>348
詳しく
356uy:2011/09/24(土) 20:30:13.87
>>340
本当に理解してないゴミなんだな・・・
バカか?

テンプレートを直に触るって事は、「STLを作る」って事になるんだけど
お前はまさか、自分でゼロからかいてSTL並のものを全くバグを混入せず作れるとか思ってるわけか

 じ ゃ あ や っ て み ろ ゴ ミ

それで開発効率()が、上がると思っているなら や っ て み ろ

つうか一人でやってろ(笑)wwwwwww
357デフォルトの名無しさん:2011/09/24(土) 21:09:25.93
>>352
> 多少文字数が減る程度
倍以上減っててワロスwww
358デフォルトの名無しさん:2011/09/24(土) 22:29:40.88
>>352
破壊的代入を使わずに処理と状態を持ち回るため(破壊的代入は可能なら避けたい)、

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
359デフォルトの名無しさん:2011/09/24(土) 23:40:41.13
>>348
もう何度も言われてる事だろうが、こういうことを書いて具体例を挙げられたやつを見た事が無い。
おそらく今回も逃げるだろう。
360デフォルトの名無しさん:2011/09/25(日) 00:44:06.19
>>359
返り値の内部表現型をチェックするテストでも日々書かされまくってんじゃない
361デフォルトの名無しさん:2011/09/25(日) 03:00:21.59
やっぱり動的型付け言語では安全なソフトは作れない
http://hibari.2ch.net/test/read.cgi/tech/1316887046/

>OO関連及び動的言語関連で事あるごとに争っている
>静的型付け厨と動的型付け厨が、思う存分飽きるまで仲良く
>罵り合う為のスレです。

>スレの進行を妨げる型安全議論を見かけた場合は、
>こちらへの誘導をお願いします。
362デフォルトの名無しさん:2011/09/25(日) 03:35:55.84
>>350
名前付きの関数作るんだったら、最初から名前付き関数作れば?
代入するだけ無駄だろ。何のための無名関数だよ。
363デフォルトの名無しさん:2011/09/25(日) 03:38:44.11
>>359
Alexに言われるまでもない。

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.

364デフォルトの名無しさん:2011/09/25(日) 03:41:55.99
>>357
3分の1も減ってなくて笑えねぇ
同じ記述を2どと書かないとか、常に10分の1ぐらいまで減らせるとかできないのか
365デフォルトの名無しさん:2011/09/25(日) 03:48:18.66
>>364
ハッスル気味なところ悪いんだが、お前さん何と戦おうとしてるんだ?
ろくでもないすれ違いにいちいちカッカしてちゃ疲れるだけだぜ
366デフォルトの名無しさん:2011/09/25(日) 03:50:13.66
Steve曰く、Rubyはreliableじゃない。

Steve 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.
367デフォルトの名無しさん:2011/09/25(日) 03:55:20.32
どうでもいい、型安全語りたきゃ隔離スレの方に書け
368デフォルトの名無しさん:2011/09/25(日) 03:57:32.25
分けて考えるのは不自然。
369デフォルトの名無しさん:2011/09/25(日) 03:59:34.07
OO系のスレと内容が重複するんだから隔離へ行け
370デフォルトの名無しさん:2011/09/25(日) 04:12:30.68
危険危険とは言うものの、2000年代に登場した言語にもevalが搭載されてんのは何でだ?
371デフォルトの名無しさん:2011/09/25(日) 07:13:54.34
>>362
は?ベクトル内積演算子をfold_left2で実装してるんだろ
こうやって新しく関数を作るのは高階関数とカリー化がある言語では当たり前
馬鹿は黙ってろよ
372uy:2011/09/25(日) 08:15:01.34
>>365
373デフォルトの名無しさん:2011/09/25(日) 09:45:10.32
正しく使ったら正しく動くっていうテストは動的型でも問題ないと思う
問題は、間違った使い方に対する正しいエラーメッセージ
これを気にすると動的型だけでなくC++やHaskellでも満足できなくなる
374デフォルトの名無しさん:2011/09/25(日) 11:27:34.04
>>361
このスレ自体が隔離スレなのに、さらに隔離するとか鬼か

メタプログラミングで型を副作用付きで拡張する(モンキーパッチ)には動的型が必要だし、
動的言語と動的型言語がイコールでなくても、わざわざ別スレ立てるほどじゃない
375デフォルトの名無しさん:2011/09/25(日) 13:32:01.61
>>363
自分の知識や経験から「動的言語では安全なプログラムは組めない」って結論に至ったんじゃなくて
誰かの受け売りですかwwwうけるwww

「Alexに言われるまでもない(キリッ」www
376uy:2011/09/25(日) 13:47:17.23
実際、LL支持者って、安全かどうかじゃなくて
自分が楽できるかどうかで物言ってるんだろ
でもそれでいいと思うよ

静的言語とか今更バカらしい
一度動的言語のよさを知っちゃうと、二度と静的言語なんて触りたくなくなるからね
趣味のプログラミングで、動的言語でも速度的に間に合うようなソフトを
静的言語で作ってるゴミカスってバカじゃないの?w
そのゴミカスが学生とかならいいんだけど、良い年いっていたり、(キリッ)としながらブログかいてたりすると
周りも教えてやるに教えてやれないんだよね^^;

動的言語でやっていくことが大前提で、その上でどうすればよいかを考えるべき
377デフォルトの名無しさん:2011/09/25(日) 14:01:34.21
>趣味のプログラミングで、動的言語でも速度的に間に合うようなソフトを
>静的言語で作ってるゴミカスってバカじゃないの?w
>そのゴミカスが学生とかならいいんだけど、良い年いっていたり、(キリッ)としながらブログかいてたりすると
>周りも教えてやるに教えてやれないんだよね^^;

教えるも何も・・・
どうでも良いんじゃないの? 趣味なんだから
378デフォルトの名無しさん:2011/09/25(日) 14:09:10.78
数行で収まる関数を作るなら動的言語が作るの早いけど
関数やクラスの集まりであるシステムを作ると
逆に静的言語のほうが早く作れるんだよね。

それはコーディング以外占める量が大きくなるからだろう。
コーディング以外っていうのは、設計したり、コードを読んだり
修正の時の影響範囲を調べたりとかそういうことね。

動的言語だと、どうしても影響範囲の把握に時間がかかる。
379デフォルトの名無しさん:2011/09/25(日) 14:10:48.28
>>376
静的言語をつかう理由を
動作速度だと思っている時点で
お前はまだまだだ。ってわかるよ。
まだまだな人間が言う言葉、誰も信じない。
380デフォルトの名無しさん:2011/09/25(日) 15:07:48.58
>>378
動的型付けと静的型付けの差異ならそんなこともあるだろうけど、
このスレで対象にしている動的、静的の差異ではちょっと考えられないな。
381デフォルトの名無しさん:2011/09/25(日) 15:12:44.77
あれ、そもそも動的、静的の差異で
動作速度に差なんてできたっけ?

そもそも>>376が言っていることが意味不明なんじゃ?
382デフォルトの名無しさん:2011/09/25(日) 15:28:17.07
>>371
代入してる事にかわりないだろ。
あと静的型付けでも推論規則で文字数は減らせるが、
それは知らんのだろうな。
383デフォルトの名無しさん:2011/09/25(日) 15:31:22.65
>>382
おいおい、>>350のコードはOCamlだぞ?
もちろん静的型付けで型推論だ
あと代入じゃなくて束縛
無知はお前
384デフォルトの名無しさん:2011/09/25(日) 15:44:37.17
>>380
動的、静的って言ったら普通は型の話で、
>>2見る限りこのスレも型の話だと思ったんだけど、
このスレが対象にしてる動的、静的ってなんなの?
evalができるとかそういう奴?
385デフォルトの名無しさん:2011/09/25(日) 15:47:45.22
>>383
OCamelに限らず静的型付け技術一般の話
386デフォルトの名無しさん:2011/09/25(日) 15:55:28.68
>>384
技術文書じゃちょっと前は大抵動的静的ってのは自己書き換え(メタ操作)系の動作を指すことが多かった。
PerlやVBなんて動的型付けは昔から出来たけど、その辺を掘り下げて動的言語と書いてるのは見たことはない。
387デフォルトの名無しさん:2011/09/25(日) 15:57:09.13
>>382
>>362>>350をどう書くべきだと言ってるの?
「代入するだけ無駄だろ」「何のための無名関数だよ」の意味が分からない
たぶん382は関数型言語をまったく理解してないと思われる
388デフォルトの名無しさん:2011/09/25(日) 16:00:44.57
ちなみに、>>350はeta-expansionする必要が無いから
カリー化でもっと短く書けて

let ( *- ) = List.fold_left2 (fun x a b -> x +. a *. b) 0.

になる。それで内積を a *- b で計算できるようになる
389デフォルトの名無しさん:2011/09/25(日) 16:02:00.07
List.fold_left2 (fun x a b -> x +. a *. b) 0. a b
List.fold_left2 ((fun x a b -> x +. a *. b) : float -> float -> float -> float) 0. a b

使う関数の引数にコレをそのままぶち込めばいいんじゃないか。
390デフォルトの名無しさん:2011/09/25(日) 16:25:55.69
>>389
えーと、まずそれは関数になってない(ただのfloat)のだけどね
まあ、ML系言語は知らないんだろうから(知ってたら>>382は無い)、それは見逃そう

まず第一に、お前はおそらく「高階関数を使う = 関数に関数を引数渡しする」
これ意外の用途が思い浮かんでいない、これが間違い

まあ、手続き型言語(例えばC言語のqsort)ではそうかもしれんけど、
関数型言語では、より一般的な高階関数(>>350の場合はList.fold_left2、>>358ではcps)を使って
具体的な関数を定義するのは普通のスタイルなんだ
391デフォルトの名無しさん:2011/09/25(日) 16:34:57.02
俺は>>382じゃないんだけど・・・。まぁいいか。
392デフォルトの名無しさん:2011/09/25(日) 16:40:12.22
let ( *- ) a b = 本体
で引数を2つとる関数定義しとんのとちゃうの?
393デフォルトの名無しさん:2011/09/25(日) 16:45:52.64
そうだよ
val List.fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a 
という一般的な型の関数から
val ( *- ) : float list -> float list -> float
という具体的な関数を作ってる
394デフォルトの名無しさん:2011/09/25(日) 16:52:36.76
カリー化

fold_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の内積 *)
395デフォルトの名無しさん:2011/09/25(日) 16:56:15.80
>>374
そうか?オブジェクト指向系のスレにも型安全の話題が散発するし、
こっちのスレに書いても、動的処理の話題で型安全の話が中断して
なんども振り戻しに戻るし、型安全の話だけに集中できるスレがあっても
いいんじゃなかろうか
396デフォルトの名無しさん:2011/09/25(日) 16:59:01.33
[](int x){return x == 10;}; C++のこれと同じだろ
397デフォルトの名無しさん:2011/09/25(日) 17:08:37.84
>>395
俺は>>374を書いたときは動的型スレいらんと思ってたけど、
>>361のスレ見ると型安全派がじつにイキイキしてる(笑)ので
今ではこれで良かったと思ってる
398デフォルトの名無しさん:2011/09/25(日) 17:11:07.50
>>396
何が同じなの?
399デフォルトの名無しさん:2011/09/25(日) 17:20:18.71
>>384
>>324前後の話だと思う。
400デフォルトの名無しさん:2011/09/25(日) 17:22:44.53
>>398
カリー化
401デフォルトの名無しさん:2011/09/25(日) 17:23:47.18
安全かどうかはともかく静的なシェルスクリプトとか使いたくねぇ
402デフォルトの名無しさん:2011/09/25(日) 17:29:14.94
>>400
カリー化は、例えば f : (a,b,c) -> 'd という型の関数を
f : 'a -> ('b -> ('c -> 'd)) に変換する操作を指す
また f : 'a -> ('b -> ('c -> 'd)) のような関数をカリー化された関数という

で、何がどう同じなの?
403デフォルトの名無しさん:2011/09/25(日) 17:30:27.99
カリー化の議論はやめろーもめるぞー
http://togetter.com/li/183700
404デフォルトの名無しさん:2011/09/25(日) 17:30:59.27
==という引数を2個とる関数を1つの引数を取る関数に変換してる。
405デフォルトの名無しさん:2011/09/25(日) 17:32:47.42
>>404
それは部分適用
406デフォルトの名無しさん:2011/09/25(日) 17:35:03.97
f(n)(m,l)(o);のような形はダメで
f(n)(m)(l)(o);の形でないとカリー化ではないと?
407デフォルトの名無しさん:2011/09/25(日) 17:36:18.72
>>405
ああ10と書いたのが悪かったかyぐらいにしとけば納得したか。
408デフォルトの名無しさん:2011/09/25(日) 17:49:11.48
>>407
カリー化はこんな感じ(C++0xでこう書けるかは知らないけど)

[](int x){return [](int y) {return x == y;};};
409デフォルトの名無しさん:2011/09/25(日) 17:50:45.95
わかったよ。あんまり考えてなかった。カリー化議論は終わり。
410デフォルトの名無しさん:2011/09/25(日) 18:01:22.34
結構凄腕のプログラマでも部分適用とカリー化を区別してなかったりする
プログラマとしての技量とは関係ないから、気にしなくて良いと思うぞ
411デフォルトの名無しさん:2011/09/25(日) 19:14:34.25
>>384
動的言語は、わざわざ自分で書かなきゃならない仕組みを
言語側が用意してくれているだけの話だからね。
静的言語を使って同じ仕組みを用意しても結局速度的には同じか
寧ろ遅くなるだろう。
412411:2011/09/25(日) 19:23:23.99
>>381
にレスしたつもりが間違えた
413デフォルトの名無しさん:2011/09/25(日) 19:33:49.11
>>411 メタプログラミングのできるフレームワークがあれば自分で書かなくてもいいんじゃない?
414デフォルトの名無しさん:2011/09/25(日) 19:41:02.49
そのメタプログラミングのフレームワークが違う言語で書かれてるってこと?
415デフォルトの名無しさん:2011/09/25(日) 19:49:47.91
フレームワークってなに?

フレームワークというバズワードに踊る人々
http://hibari.2ch.net/test/read.cgi/prog/1309712805/
416デフォルトの名無しさん:2011/09/25(日) 20:14:22.06
>>413
ライブラリか、ミドルウェアか、ツールキットか。
フレームワークが何をさしてるのか解からんが、
メタ情報の追加だけは、ソースをプリプロセスしない限り手書きになる。

まぁ、それはともかく、そんな周辺ツールを集めてまで
動的処理なんか書きたくないわ。言語が機能を持ってりゃ使うし、もってなきゃ諦める。
417デフォルトの名無しさん:2011/09/25(日) 20:45:12.48
Lispみたいに、ソースコードを文字列としてでなく操作対象にできればいいんじゃね?
それでいてHaskellみたいな静的な言語ってまだ有名なのは存在してないような気もするが。
418uy:2011/09/25(日) 20:46:32.41
なあ
どうしてお前たちって>>381
こういうレス放置してんの?
面倒くさいから?
それともレス見逃してんの?

黄色じゃなくて赤信号だよ 完全AUTO 誰か教えてやって 俺忙しいわ・・・ これ煽りじゃなくてマジレスなの まじれす。
419uy:2011/09/25(日) 20:49:31.95
本当にさぁ・・・どうっでもいいことばっかり躍起になって、
こういう間違いレスが放置されるから
「あれそうなのかな?」って勘違いするやつが出てくる悪循環だよね

大体ほとんどのやつはさ、自分で実践して身に着けた知識じゃなくて
誰かが言ってたそう言ってたって知識しかないんだよ、自分で実践するには、
小さなことでもたいてい1〜2時間はかかるもんだ 環境そろえたりサンプル探したりね・・・

はい まじれすでしたよ  動的言語も、いつかは静的言語と同じ速度まで上がりそうな機がするけどね、、、
まだ、そのアルゴリズム発見されてないです
420デフォルトの名無しさん:2011/09/25(日) 20:52:27.88
418 あぼ〜ん
あぼ〜ん

419 あぼ〜ん
あぼ〜ん
421デフォルトの名無しさん:2011/09/25(日) 20:57:29.12
どさくさまぎれて オブジェクト指向総合スレに変えてやったのに 藁
またこんなスレ作りやがって。
422デフォルトの名無しさん:2011/09/25(日) 21:05:12.62
このスレは別にOO関係ないだろ
uyみたいなマジキチさんがそっちに持って行こうとするだけで
423デフォルトの名無しさん:2011/09/25(日) 21:34:35.04
>>417
ASTにアクセスできる静的言語ってこと?あるよ
424デフォルトの名無しさん:2011/09/25(日) 22:01:02.30
>>422
それをあの手この手を使って誘導したんだよ。 藁 当時の
ログを見れば分かる。
425デフォルトの名無しさん:2011/09/25(日) 23:07:41.60
eval(笑)
426デフォルトの名無しさん:2011/09/26(月) 01:43:26.32
>>381
ああ・・・お前は勉強しなおしたほうがよい
427デフォルトの名無しさん:2011/09/26(月) 21:11:51.73
>>426
説明できないならレスしなくて良い
428デフォルトの名無しさん:2011/09/26(月) 21:30:08.55
速度で勝てるならそれに専念すればいいのに
安全なんて言うから、速度はあきらめたのかなって勘違いするやつが出てくる
429デフォルトの名無しさん:2011/09/26(月) 21:40:20.88
安全を言うなら形式手法ぐらいぶっとばないと
単に強めの静的型付けなだけの中途半端な関数型で安全とか片腹痛し
430デフォルトの名無しさん:2011/09/26(月) 21:45:06.28
> 片腹痛し
病気じゃね?
431デフォルトの名無しさん:2011/09/26(月) 22:29:35.94
scalaモヒカンが混じってるな?このすれ
432デフォルトの名無しさん:2011/09/26(月) 22:39:21.07
ScalaやHaskellなんかPerlと変わらんぐらいの安全性しか無いし
Functorだってあの定義で保障できるのはForgetfull Functorまでだ
433デフォルトの名無しさん:2011/09/26(月) 22:43:53.94
ここは動的型スレじゃないので、メタプログラミング可能なHaskellやScalaやMLは
どっちかというと動的言語側なんだわ
434デフォルトの名無しさん:2011/09/26(月) 22:52:54.25
Haskellは型にうるさいじゃん
型推論のおかげで意識せずにすむ場面が多いけど
435デフォルトの名無しさん:2011/09/26(月) 22:59:21.36
C++やJavaはHaskellやScalaよか安全性は低い
よって静的言語で安全性云々というのはナンセンス
436デフォルトの名無しさん:2011/09/26(月) 23:00:17.32
だから型付けで分類してるんじゃないんだって(>>361のスレが動的型スレ)
つーても、俺にも動的言語の正確な定義は分からんが、
このスレじゃメタプログラミングのやり易い言語を動的言語と呼ぶらしいよ

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
この説明では高階関数も動的言語の特徴に入ってる
437デフォルトの名無しさん:2011/09/27(火) 00:03:32.75
>>3で挙げられてる内容も型についての事ばかりけど?
438デフォルトの名無しさん:2011/09/27(火) 00:09:11.63
静的型付けとはいえ、Scalaのimplicit conversionとかは
安全厨から攻撃されるネタだね
プログラマの意図しない型変換が起こっていてもコードから分かり難いという理由で
439デフォルトの名無しさん:2011/09/27(火) 00:14:23.22
>>437
そうだね。で、君は型の話がしたいの?
わざわざ専用のスレがあるのに、ここで?
440デフォルトの名無しさん:2011/09/27(火) 00:22:46.62
ここは型の話をするスレ。
441デフォルトの名無しさん:2011/09/27(火) 00:42:20.62
http://hibari.2ch.net/test/read.cgi/tech/1316887046/33
> 何故、変数の型宣言みたいなレベルの低い話になるのだろう。
>
> せめてオープンクラスは柔軟な変更が可能になるけど
> 影響範囲がグローバルになるからClassbox的な機構が必要
> みたいな議論にならんものか。
442デフォルトの名無しさん:2011/09/27(火) 03:34:17.08
高レベルな話がいいなら、そういうスレを作ればいいんじゃないかな。
443デフォルトの名無しさん:2011/09/27(火) 07:53:22.88
基本的にこのスレは以下のパターンを繰り返してる

(1)静的厨(Java厨)が型安全性について勘違いした主張をする
(2)誰かがその間違いを訂正する
(3)ついでに動的言語のテクニックに言及する
(4)しばらく(3)のネタで議論(このときJava厨は議論に参加できない。可哀想w)
(5)一段落ついたところで、また(1)に戻る

だから型の話を禁止するとスレ自体が過疎化する
444デフォルトの名無しさん:2011/09/27(火) 08:56:29.85
>>436
あなたにというコメントではないけど
せめて必要条件と十分条件、必要十分条件くらい分けて考える癖を
つけたほうがいいよ。<後悔関数と動的言語

このスレって、ちょっとした想像を適当にふくらませてコメント
してるだけだろう?だから>>443 のループをやるんだろう?
JavaにしてもScalaにしても原理主義者がいっぱいいる言語で有名だからな
かれらのオナニーのためのスレってことだから放置で医院ではないか?
445uy:2011/09/27(火) 13:10:10.90
>>427
だからさぁ・・・・
こんな初歩的なこともわからないなら・・・

多分おまえ、俺に巻き込まれて透明削除されてんだよ

どうして静的言語と動的言語で実行速度に差がないとか勘違いしちゃうのか
ちょっとインタプリタかいてみろよ

どうせかけないレベルなんだろうけど 勉強になると思うよ そういう勘違い発言を二度としないためにね
それすらやらないならゴミグラマだから死ね
446デフォルトの名無しさん:2011/09/27(火) 19:58:27.41
動的言語がインタプリタで動くとは限らんけどな。
lispなんて元々コンパイル方式だし。
逆にCもインタプリタで動くしな。
447デフォルトの名無しさん:2011/09/27(火) 20:09:18.78
>>440
スレ違い
448デフォルトの名無しさん:2011/09/27(火) 21:07:30.85
>>445
> どうして静的言語と動的言語で実行速度に差がないとか勘違いしちゃうのか
> ちょっとインタプリタかいてみろよ

インタプリタと動的言語は違うでしょ。
それからJITって知ってる?
449デフォルトの名無しさん:2011/09/27(火) 21:32:58.36
C系の動的言語では、Objective-CはAppleの力ずくで普及しつつあるけど、
Open C++やDynaceはさっぱりだな。実行時にメタ操作しようとするとどうしても、
ある種のインタプリタを内蔵することになってバイナリーがでかくなるから、
基本構文が複雑な言語じゃ普及しづらいんだろうな。
450デフォルトの名無しさん:2011/09/27(火) 23:06:10.39
動的言語といってもさ、
実際には実行時にメソッド定義したいとか
いろんな型を変数に入れたいとか無いよね。

たいていはプログラミング時に決めるでしょ?
そう考えると、必要なのは動的であることではなくて
新しい型を定義する、簡単な記法だと思うわ。
451デフォルトの名無しさん:2011/09/27(火) 23:09:25.95
いやモンキーパッチが活躍する場は多々あるよ。
それは別としてJsonみたいなもんはしょっちゅう使える。
452デフォルトの名無しさん:2011/09/27(火) 23:19:59.46
だから、モンキーパッチを当てたい時って
本当はプログラム実行時に当てたいんじゃなくて
プログラム実行前にパッチ当てるので十分でしょ?

JSONはハッシュと配列の組み合わせで作れる。
453デフォルトの名無しさん:2011/09/27(火) 23:25:46.02
作れても作りたくはない。パース処理を自前で用意したり、
外部のライブラリ借りてくるのもめんどい。
そういうとき手軽に使える。
454デフォルトの名無しさん:2011/09/27(火) 23:31:05.97
スクリプト言語にどんな優れたコンパイラーが備わってても、型が動的であれば最適化に限界がある。
455デフォルトの名無しさん:2011/09/27(火) 23:32:14.40
>>453
なんの話してるの?

JSON? ライブラリを使わずに、
手軽に使えるのはJavaScriptだけだけど、
JavaScriptはJSONを解釈したらメソッドを持たない
ただのハッシュと配列の組み合わせになるよね。
456デフォルトの名無しさん:2011/09/27(火) 23:32:22.88
>>452
C++のテンプレートを実行時に使えたら便利って時は多いでしょ。
実行時の分岐の結果や演算結果でテンプレートを展開できれば、
複雑怪奇なテンプレートメタプログラミングをせずに済む。
また、実行時の条件により型を生成できないというテンプレートの
限界を突破できる。
457デフォルトの名無しさん:2011/09/27(火) 23:36:34.78
>>455
動的言語が直接取り込めるデータは同じ言語のデータだけなんだから
別にJavascriptでしか読み込めなくたって問題はないでしょ。
lisp用なら、lispの構文で書いたデータを読み込めれば十分。

ただのハッシュと、配列って事は全然重要じゃない。
一番は、evalだけですぐ読み込めること。
458デフォルトの名無しさん:2011/09/27(火) 23:57:07.47
つーか、プラグインがあるアプリケーションを
開発はもちろん使った事すら無いのだろうか
459デフォルトの名無しさん:2011/09/28(水) 00:07:22.76
Load後に速攻でプラグイン用インターフェースにキャストして使います
460デフォルトの名無しさん:2011/09/28(水) 00:38:32.34
以下は典型的なPrologのプログラム。atom_to_termとintegerの辺りが「動的」の
所以だが。(get_lineという述語が定義済みとする)

整数を得る(_整数) :-
    write('整数を入力してください : '),
    get_line(Line),
    整数入力検査(Line,_整数),!.
整数を得る(_整数) :- 整数を得る(_整数).

整数入力検査(Line,_整数) :-
    atom_to_term(Line,_整数,VarNameList),
    integer(_整数),!.
整数入力検査(Line,_) :-
    writef('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
    fail.
461デフォルトの名無しさん:2011/09/28(水) 02:01:07.57
>>458
> つーか、プラグインがあるアプリケーションを
> 開発はもちろん使った事すら無いのだろうか

静的言語でならプラグイン開発したことあるが、
それが何か関係あるのか?

プラグイン開発は静的言語がいいよ。
インターフェースがきっちり決まってるから
わかりやすい。
462デフォルトの名無しさん:2011/09/28(水) 02:12:12.42
>>461
プラグインは遅延バインディングの機構によって
プログラムを動的に変更/拡張するものだ

お前、動的なプログラムの変更は必要無いとか言ってなかったか?
463デフォルトの名無しさん:2011/09/28(水) 02:13:57.02
動的言語でプラグインうんぬんは、インターフェースの問題じゃないと思うが。
静的型付けとか動的型付けは、専用スレのネタだからね。
ここでのミソは、インターフェースが元々無くてもプログラム自体にメタに介入でき
パッチの形でプラグイン化できるって所だろ。
静的言語でやると、機械語やバイトコードレベルで介入することになるからやってられん。
464デフォルトの名無しさん:2011/09/28(水) 02:35:03.69
バイナリ互換性はソース互換性よりもずっと維持し難い。
バイナリレベルで外部モジュールとのリンクを行うと
バージョンアップでバイナリ非互換が発生して
これまでのプラグインが使えなくなったとか良くある話。
465デフォルトの名無しさん:2011/09/28(水) 05:45:38.72
>>450
動的言語では
実行時=プログラミング時
なんだが?
466デフォルトの名無しさん:2011/09/28(水) 05:54:55.18
動的言語はインタプリタどから重くて遅いと信じ込んでいる貴方、
「smalltalk-mt」でググるといい。
世の中には色々な変態さんがいることがわかる。
467デフォルトの名無しさん:2011/09/28(水) 07:28:50.66
lispはC++の次に早いぐらいで、java なんかよりは早い。
468デフォルトの名無しさん:2011/09/28(水) 07:35:14.62
>>467 ほとんどの処理系が native compile 可能だしね...
469デフォルトの名無しさん:2011/09/28(水) 07:39:28.62
Stalinのように多大なコンパイル時間という代償を払ってる例もある。
470デフォルトの名無しさん:2011/09/28(水) 08:00:20.03
同士スターリン
471デフォルトの名無しさん:2011/09/28(水) 12:25:03.47
native compileしても遅いもんは遅い
472デフォルトの名無しさん:2011/09/28(水) 13:02:57.70
実際速いんだから仕方ねえべ。
それは良いとして動的言語はバイナリー書き換えることなく、
デバッグログを仕込んだり、一度しか分岐しない分岐の削除ができる。
この辺で最適化もやれなくは無いんだよな。
小手先だけど。
473デフォルトの名無しさん:2011/09/28(水) 13:05:54.73
lispがjavaより早いって何の冗談だよw
474デフォルトの名無しさん:2011/09/28(水) 13:13:30.95
測ればいいじゃん。
javaのどんくささが解るだろ。
475uy:2011/09/28(水) 13:25:09.65
>>448
だからさぁ・・・
ほんっとになんどいっても理解しねーゴミだな

本当に、根本的な場所の知識がまったくないから
そんな勘違いしてんだよ・・・ ドヤ顔でw 全力で間違えてw コテハンに指摘されてw
でも認めないとかwwwwww バーカwwwwwww 一生勘違いしてろよwww
 

>>454
そういうこと

476uy:2011/09/28(水) 13:29:25.34
こういうゴミってさ、自分では判断出来ないから
どこかの誰かの受け売りをかたくなに信じてるんでしょ

"""どこの誰が""" 静的言語と動的言語の実行速度が """同じ""" だと言っていたのか
 そ い つ の 名 前 を こ こ に 出 せ 


そろそろごめんなさいすれば?w  そんなにuyに指摘されて意見曲げるのがイヤかよw お前のほうが技術力低いんだからしょうがないじゃん
くやしかった勉強すればーwww
477デフォルトの名無しさん:2011/09/28(水) 15:51:58.34
lispなんて頭がパーの奴しかもう使ってない
478uy:2011/09/28(水) 17:47:42.45
CommonLispが速いことも知らない"ごみかす"は黙ってろよ
なんで無知はすぐこうやって憶測でギャーギャーいってんだよ 死ね

CommonLispのやっている関数ごとのコンパイルだの、
型を明示的につけてCと同等かそれ以上の速度にまで高速化するのは、どのスクリプト言語でも理論的に可能なことではあるが
Rubyなんかじゃやってないし、やるつもりもないんだろう。
誰がどこで使うor使っているor使っていくつもり なのかはしらないけど
CommonLispの実装自体は、キチガイみたいなハイレベルなことやってるから、舐めないほうがいいとおもうよ 無知は死ね
479デフォルトの名無しさん:2011/09/28(水) 17:58:38.02
CommonLispとかダサ
型明示したらCと同等になる(キリッ

あほくさ
馬鹿しか使わんわCommonLispなんて
480デフォルトの名無しさん:2011/09/28(水) 18:00:59.74
CommonLispで書かれたコードが今すぐ全消滅しても
この世界で誰も困らない
481デフォルトの名無しさん:2011/09/28(水) 18:03:16.45
馬鹿Lisper「型明示すればCと同等かそれ以上まで高速化する(キリッ」
482デフォルトの名無しさん:2011/09/28(水) 18:06:09.26
どんだけCommonLisp嫌いなんだよw
483デフォルトの名無しさん:2011/09/28(水) 18:07:40.68
CommonLispでわざわざ型指定なんかするくらいなら
最初からまともな静的型な言語使う罠
484デフォルトの名無しさん:2011/09/28(水) 18:13:04.73
まともな静的言語Java(キリッ
485デフォルトの名無しさん:2011/09/28(水) 18:16:27.55
型指定したら速くなるのは当たり前なことだし
そんなんでいばられてもな
486デフォルトの名無しさん:2011/09/28(水) 18:41:48.57
レス乞食にレスする奴って頭おかしいの?
かわいそうに、煽ればレスしてもらえるって学習しちゃって、馬鹿の一つ覚えみたいに煽り続けてるじゃない
487デフォルトの名無しさん:2011/09/28(水) 18:54:13.79
今時のLISP系は型推論するしw
Javaが速いと思ってるなんて…
488デフォルトの名無しさん:2011/09/28(水) 18:55:00.11
uyよりバカって、マジ笑えるw
489デフォルトの名無しさん:2011/09/28(水) 19:08:24.84
>>488
確かに、バカの巣窟になってるねここ。まともに論議する気にもならんし
フレーマーの暇つぶしの場所でしょ。
490デフォルトの名無しさん:2011/09/28(水) 19:38:51.60
確かに早くなる書き方をすれば早くなるけど、
その部分は C とかの静的な言語と同等のソースになるらしい。
その手続き型なところを一関数なりマクロなりにしておけば、あとはその汚いところは見なくてすむ。
Python と C 併用するのとどっちが楽かは知らない。
491デフォルトの名無しさん:2011/09/28(水) 19:47:37.58
AutoCADでもメインのマクロ言語としてLispが使われてるけど、
3Dグラフィックすらプログラミングできない低能には無縁だわな。
492デフォルトの名無しさん:2011/09/28(水) 19:50:51.54
autolispはelisp未満の最悪のlispとして悪名高い
493デフォルトの名無しさん:2011/09/28(水) 20:18:42.76
AutoCADのLispは顧客からクレームつきまくりで
別なのと置き換えられたよ
494デフォルトの名無しさん:2011/09/28(水) 20:20:49.97
いまどきのLISP系って何のこといってんだ?
495デフォルトの名無しさん:2011/09/28(水) 20:31:44.09
今は置き換えられた?評判が悪い?
だからどうした、現役で稼動してた実績から目を背けるなよ。
496デフォルトの名無しさん:2011/09/28(水) 20:32:34.04
>その部分は C とかの静的な言語と同等のソースになるらしい。
Cと同等どころかうんこ以下のゲロコードだよ
全部静的言語で書いた方がはるかにまし
497デフォルトの名無しさん:2011/09/28(水) 20:32:49.52
過去形か・・・
498デフォルトの名無しさん:2011/09/28(水) 20:35:16.94
>>496
> Cと同等どころかうんこ以下のゲロコードだよ

速度の話と可読性の話を混同するなよ
そうやってマトモな思考能力が無いから
クダラナイ言語しか使えないんだよ
499デフォルトの名無しさん:2011/09/28(水) 20:36:56.41
>>498
アホはおまえだ
同等なソースと書いてあるだろ
500デフォルトの名無しさん:2011/09/28(水) 20:42:08.23
>>499
ホントだ。アホは俺だった
501デフォルトの名無しさん:2011/09/28(水) 20:47:42.41
まぁ、速度の話はどうでもいいわな。
やろうと思えば出せますよというだけの話で、
そもそも速度を求めて動的言語を使うわけじゃないし。
プログラムのボトルネックはおよそコード全体の3/10
あとの7/10は楽に作れるに越したことはない。
502デフォルトの名無しさん:2011/09/28(水) 20:49:25.73
規模が大きくなると残りの7/10も静的言語の方が楽だわな
503デフォルトの名無しさん:2011/09/28(水) 20:50:16.70
動的型付けを語り方は専用スレへどうぞ
504デフォルトの名無しさん:2011/09/28(水) 20:52:27.99
>>502
せめて根拠を言えよ
505デフォルトの名無しさん:2011/09/28(水) 20:53:57.17
動的が楽な根拠は?
506デフォルトの名無しさん:2011/09/28(水) 20:55:45.12
自前で書かなきゃならない処理を、動的言語がやってくれる。
既に書いた大量のコードの管理とか特に楽。
507デフォルトの名無しさん:2011/09/28(水) 20:58:24.57
自前で書かなきゃならない処理ってどんなん
全体のコード量はどれくらいで
動的言語がやってくれるのはどれくらいあんの?
508デフォルトの名無しさん:2011/09/28(水) 21:07:29.42
条件に一致する関数を集めてリストに放り込んだり。
一定のルールで命名づけした関数とデータのバインディングをしたり。
データの中に関数の呼び出しを混ぜておいて、簡単なスクリプトを作ったり。
ソケットで処理方法を送り付けたり。
その他色々。

で、静的言語が動的言語より楽になる点って何処?
509デフォルトの名無しさん:2011/09/28(水) 21:15:45.56
動的言語で実行時にならないとエラーにならないものを
静的言語なら実行しないでもエラーにすることが出来る。
これは実行する時間というコストの大幅な削減になる。
510デフォルトの名無しさん:2011/09/28(水) 21:19:14.04
静的言語でも動的言語と同じ事を書くなら実行時にすることになるから、
チェックが働いて安全というのは意味がない。それは静的型付け、動的型付けの問題。
511デフォルトの名無しさん:2011/09/28(水) 21:21:51.96
スクリプト内の関数呼び出しや、ソケットで新しい処理方法を送りつけるなんて処理を
どうやって静的言語でチェックすんの?
512デフォルトの名無しさん:2011/09/28(水) 21:34:14.15
これを静的言語で書いたらどれだけ効率良く書けるんでしょうねぇ。

var functionCall = node.innerText(); //XMLから"function Method(1,2,'20')"を取得
eval(functionCall);
513デフォルトの名無しさん:2011/09/28(水) 21:39:32.68
動的言語だと大規模プロジェクトの7/10がそういうコードなのか?
514デフォルトの名無しさん:2011/09/28(水) 21:45:13.33
これだけで、1/10ぐらいは済む事もあるな。
パーサーいらねぇもん。でも、静的言語でコレを書こうとしたら、1/10以前に
(1/10) * 14ぐらいになるだろうな。パーサー自分で書くか、Beanみたいな仕組みを
使ってシコシコ組み立てる必要がある。
515デフォルトの名無しさん:2011/09/28(水) 21:46:20.33
間違えた。7/10が(7/10)*14ぐらいに膨れ上がるか。
516デフォルトの名無しさん:2011/09/28(水) 21:51:35.83
その大規模プロジェクトの規模はどんくらいよ
517デフォルトの名無しさん:2011/09/28(水) 21:52:59.86
evalなんて危ないモンを出すなよ
518デフォルトの名無しさん:2011/09/28(水) 21:53:37.80
静的言語でも自前で実装すれば動的言語と同じことが可能だけど、
車輪の再発明だし、処理系の実装よりも洗練されてないし、
実行時エラー処理をキチンと作り込まないと安全じゃないしでデメリットが多い
519デフォルトの名無しさん:2011/09/28(水) 21:54:25.30
本当に大規模だと、サーバー間でプライベートなチャンネルを作って、
その中に関数を流すなんて事があった。
指示を受ける側のサーバーは、おくられてくる関数の事をしらなくていいんで
サーバープログラム自体を機能追加の度に修正する必要がなくて非常に捗った。
特に別業者が機能追加するときサーバーを直接弄られずに済んだのは助かる。
520デフォルトの名無しさん:2011/09/28(水) 21:56:00.39
evalが危険だとか言っても、ネットに公開したりしないならどういうこともない
521デフォルトの名無しさん:2011/09/28(水) 21:59:57.69
>>510
安全かどうかには直接関係ない。

実行時にならないとわからないエラーが
実行前に分かるという点に
時間的なコストというメリットがある。

そのぶんの時間を他のテストに回せるという点で
間接的に安全にはなる。
522デフォルトの名無しさん:2011/09/28(水) 22:01:22.61
だからどうやって実行前にエラーだと解るんだよ。
523デフォルトの名無しさん:2011/09/28(水) 22:04:07.21
>>522
実行時に分かるエラーの一部は、実行前に分かる。

そもそも実行前に分かるはずのエラーが
実行時にならないとわからないってのがありえない。

たとえばコンパイルエラーの類は実行前に分かるエラーだ。
524デフォルトの名無しさん:2011/09/28(水) 22:06:32.50
じゃ静的言語でどうやって >>512 の処理で実行前にエラーを出す?
525デフォルトの名無しさん:2011/09/28(水) 22:07:56.79
>>523
どうせ型付けの事を言いたいだけなんだろ?
そういうのは専用スレに書き込んできな
こっちより盛り上がるだろうよ
526デフォルトの名無しさん:2011/09/28(水) 22:11:55.02
実行前にエラーにわかるようにするためには、
コード上に論理的な制約を書けばいい。

このクラスは必ず○というインターフェースを実装している。
この変数には○というインターフェースを持っているものしか代入できない。

通常これらは宣言などというが、
見方を変えれば、論理的制約でもある。

コード上にコンパイラが理解できる形で制約を書いておくことで
実行前に解るようになる。

当然何も情報がない所から、実行前に解るようになるわけではない。成約情報を入れるのは人間。
そして静的に判定可能な形で制約情報を入れられる構文を持っているのが静的言語。
527デフォルトの名無しさん:2011/09/28(水) 22:13:40.86
>>524
誰も全てもエラーが静的に判断可能だとは言っていない。

静的に判断可能な、”量”が多いのが静的言語。

たまに完璧じゃないなら意味が無いというやつがいるが、
完璧に安全じゃないなら、エアバッグいらんのかと聞きたくなる。
528デフォルトの名無しさん:2011/09/28(水) 22:17:02.46
>>526
だ・か・ら 型付けを言いたいだけなんだろお前は

ユーザーが書き換え可能なXMLをプログラムが読み込んで
XML内に書きこまれたメソッド呼び出すという仕様なのに、
コンパイルエラーを出せるのか?ユーザーはコンパイルしないぞ
529デフォルトの名無しさん:2011/09/28(水) 22:19:42.84
>>527
今、動的型付けや静的片付けや、静的リンクが安全だとかの話はしてないわけだけど解ってる?
530デフォルトの名無しさん:2011/09/28(水) 22:19:44.37
大規模プログラムの話してるつもりなんだが
531デフォルトの名無しさん:2011/09/28(水) 22:27:13.24
大規模プログラムの話なら余計に関係ないよな。
静的言語で数千行かけて書いた処理を動的言語ならevalや
メタ構文で1行前後で済ませられる。それについての何の反論にもなってない。
1、2行で書いた処理と、安全安全といいながら数千行書いた処理
どっちがボロがでやすいかすぐ解るだろ。
532デフォルトの名無しさん:2011/09/28(水) 22:35:43.21
>>501-502から大規模プログラムの話だったんだけどな
まあどうでもいいや
533デフォルトの名無しさん:2011/09/28(水) 22:38:10.57
>>530
あんたが静的言語でシコシコ書いたうん1000行のevalと、
言語ユーザーによって世界中でテストされてる
動的言語機能のevalどっちが安全だよ

大体大規模開発で、evalと同等の機能作成に無駄に
費やせる時間なんてあるのかよ。ユーザーがXML中に
関数呼び出しを書かなきゃならないほど規模がデカイんだぞ。
534デフォルトの名無しさん:2011/09/28(水) 22:39:57.65
なぜevalにこだわるw
535デフォルトの名無しさん:2011/09/28(水) 22:42:34.29
静的に解決できる無駄な機能の話なんてしてないから
536デフォルトの名無しさん:2011/09/28(水) 22:45:08.22
てかこののスレは

実行時メタプログラミング = 動的言語
動的型付け ≒ 動的言語

って認識だから専用スレができたんだろ
537デフォルトの名無しさん:2011/09/28(水) 22:51:03.72
そもそも静的言語の100行程度しか短く書けないなら動的言語なんて使わんわ
静的言語の3倍以上短く書けてこそだ
538デフォルトの名無しさん:2011/09/28(水) 22:53:09.84
evalが無いならコンパイラ呼び出しちまえばいいんじゃね
539デフォルトの名無しさん:2011/09/28(水) 23:08:12.55
コンパイラあったら実行時メタプログラミングできるのかい
540デフォルトの名無しさん:2011/09/28(水) 23:13:24.19
>>526
動的言語でも、静的型付けできる言語は結構あるぞ
ActionScript, lisp, Objective-C とかね
541デフォルトの名無しさん:2011/09/28(水) 23:15:25.18
lispなんてゴミと
ActionScriptとObjective-Cを
一緒にするなよ
542デフォルトの名無しさん:2011/09/28(水) 23:20:01.86
Lispで擬似AIすら書けないヤツがほざきおる
543デフォルトの名無しさん:2011/09/28(水) 23:21:35.56
このスレLisp嫌いなやつ多すぎるだろ
なんか論文とか理解できなくてLisperに
バカにされたトラウマとかあるんだろうか
544デフォルトの名無しさん:2011/09/28(水) 23:24:06.67
アラン・ケイとかAmazonの創始者とか有名プログラマーは
Lispこそ至高とか言ってんのにやっぱ底辺とは思考が違うのな
545デフォルトの名無しさん:2011/09/28(水) 23:24:55.17
アランケイってもう過去の人でしょ
546デフォルトの名無しさん:2011/09/28(水) 23:28:06.39
そうだねガロアも、ガウスも、オイラーも昔の人だから、お前等以下だよな
547デフォルトの名無しさん:2011/09/28(水) 23:32:57.50
LispはSmalltalkよりはましだしな
548デフォルトの名無しさん:2011/09/28(水) 23:34:09.45
あったりめぇじゃん、このスレに書き込んでるパソコン大先生は天才ばっかだよ。
でも、あれ・・・? 何を作った人たちなんだろ?
549デフォルトの名無しさん:2011/09/28(水) 23:35:20.26
Lispは慣れると信者になる。
Obj-Cは慣れてもC++使いたくなってくる。
550デフォルトの名無しさん:2011/09/28(水) 23:35:23.20
Lispはカスだとわかるけど
ガロアはわからんだろ
551デフォルトの名無しさん:2011/09/28(水) 23:36:37.20
粕だ屑だというけどどこが不満なんだよ
552デフォルトの名無しさん:2011/09/28(水) 23:40:27.90
Lispで作られたソフトとかろくなもんないのに
Lisperの態度のでかさとLispマンセーが目に余る
553デフォルトの名無しさん:2011/09/28(水) 23:44:33.25
もっぱら使い捨てだが、素晴らしい成果を残したソフトなら大量にあるだろ。
いろんな研究論文で使われてんじゃん。日銭を稼ぐためにの事務処理ばっか
書いてる言語よりはよっぽど有効利用されてると思うけど。
554デフォルトの名無しさん:2011/09/28(水) 23:46:36.16
トポロジーを解き明かすLisp
片やDBの中身を取り出して画面に表示してるだけの・・・
555デフォルトの名無しさん:2011/09/28(水) 23:48:59.95
昔の資源がごく限られたマシンでLisp使うのは仕方ないけど
今使う奴はアホ
556デフォルトの名無しさん:2011/09/28(水) 23:55:30.66
Lispで凄いソフト作っている人が登場
557デフォルトの名無しさん:2011/09/28(水) 23:55:37.56
ML系やHaskellができてからは研究論文においては完全に立場奪われてるじゃん>lisp
558デフォルトの名無しさん:2011/09/29(木) 00:00:12.01
資源が大量にあったらLispよりよくなる言語があるの?
まぁHaskellとかMLはいいよね。やっぱそういう言語の事言ってんでしょ。
559デフォルトの名無しさん:2011/09/29(木) 00:02:15.78
もちろんJavaだろ
560デフォルトの名無しさん:2011/09/29(木) 00:04:36.65
Lispとかカス過ぎてなんのソフトもないから
RubyはLispだのJavascriptはLispだの言いだす始末
561デフォルトの名無しさん:2011/09/29(木) 00:04:55.76
LispをScalaに言い換えて、Scalaスレで言って来てみ。お前たちに合う仕事だ 笑
562デフォルトの名無しさん:2011/09/29(木) 00:06:41.00
Scala使っている人間は
Lisperほど横柄じゃないし
563デフォルトの名無しさん:2011/09/29(木) 00:07:37.51
Javaとか頭が沸いてるとしか思えねぇ仕事じゃなかったら絶対使わないわ
564デフォルトの名無しさん:2011/09/29(木) 00:08:42.97
別にJava使わない仕事してもいいんだよ?
565デフォルトの名無しさん:2011/09/29(木) 00:10:34.65
>>560
お前がしらんだけだろ
MaximaやらEmacsやらAmazonやら非Windows系は多い
566デフォルトの名無しさん:2011/09/29(木) 00:11:02.90
あのー 即レスくれる人がいるみたいだけど、uyみたいにコテハン
名乗ってくんない?そのほうが面白い。
567GodLisp:2011/09/29(木) 00:12:08.84
>>565
古いソフトばかりやん
新しいの書いてくれないと死んじゃうわ
568デフォルトの名無しさん:2011/09/29(木) 00:13:48.72
とりあえずJavaの内部クラスの有用性を教えてくれ。
569GodLisp:2011/09/29(木) 00:14:21.58
Vim死ね
570デフォルトの名無しさん:2011/09/29(木) 00:14:22.10
まぁ、今の時代JavaよりC++の方が儲かるしな。
CAD関連だとJavaの業務製品の7倍ぐらいの値で売れてうはうは
571GodLisp:2011/09/29(木) 00:16:51.80
>>568
ない
572デフォルトの名無しさん:2011/09/29(木) 00:24:07.03
>>560
使いどころが難しいのは確かだけど、
少なくともここ最近はみんな関数型言語の機能を取り込んできてるだろ。

だからこそJavaScriptなんかを使ってる奴が、
Lispや源流のC/C++を馬鹿にしてるのを見ると滑稽に見えるわけで。
もちろんJava厨も。

まあそういう奴らがいるから俺みたいなゴミでも食えるんだが。
573デフォルトの名無しさん:2011/09/29(木) 00:25:51.48
>>567
最新ならOneSpace DesignerというCAD
コイツ自体がLispじゃないだろうがLispが使われてる
Lispはフルに動的言語だからプラグイン向きの位置づけが多いわな
574デフォルトの名無しさん:2011/09/29(木) 00:27:30.97
いまどきは副作用がない言語を関数型言語というと思うんだけど
いまどきの定義だとLispは関数型じゃないでしょ
575デフォルトの名無しさん:2011/09/29(木) 00:30:26.69
誰だよAutoCADでLispなくなったとか書いたヤツは、
AutoCAD 2011ならVisual LISPが使えるじゃねぇか。
576デフォルトの名無しさん:2011/09/29(木) 00:32:45.99
>>574
素直にHaskellが一番って言えばよろしい。
577GodLisp:2011/09/29(木) 00:38:37.39
>>573
>LispはMEマクロに代わり採用されたが、プログラマが日本では少ないのが難点とも言える。
>同様の理由でサードパーティ製のプラグインの専門モジュールが少ない。

プラグイン少なくて死んでしまいそうだわ
578デフォルトの名無しさん:2011/09/29(木) 00:39:53.55
日本ではね
579デフォルトの名無しさん:2011/09/29(木) 00:40:29.00
>>574
XSLTでも使えば?
580デフォルトの名無しさん:2011/09/29(木) 00:43:04.13
Lispでマクロなんて開発者のオナニー
ユーザにとっては迷惑でしかない
581デフォルトの名無しさん:2011/09/29(木) 00:44:20.48
なんで困るんだよ
582デフォルトの名無しさん:2011/09/29(木) 00:46:40.46
根拠もなく感情論で言うようになったら終わりだな
583デフォルトの名無しさん:2011/09/29(木) 00:54:44.52
圧倒的なシェアを誇るAutoCADですら
ユーザの苦情を受けて他の言語でも拡張できるようにした
無名のソフトがLispなんて採用したら自殺もんよ
584デフォルトの名無しさん:2011/09/29(木) 01:07:48.58
Yahooを初めViawebで作られたサイトは結構あるけど
Lispの名前はあんま表に出ないな

>>583
C系上がりのプログラマにゃキツイもん
Lispでスタッフ募集しても頭数が揃わん
585デフォルトの名無しさん:2011/09/29(木) 01:09:03.89
大学だとわりとあちこちでLisp教えてるじゃん
なんで集まらないの?
586デフォルトの名無しさん:2011/09/29(木) 01:14:27.51
大学でLispが使えるようになったマジメな子がプログラマなんかするかいな
どうせ人をアゴで使うような職に付いてるだろうよ
587デフォルトの名無しさん:2011/09/29(木) 01:18:01.05
Lispが優れていると思うなら
給料高くしてでも雇えばいい
588デフォルトの名無しさん:2011/09/29(木) 01:23:10.18
>>574
今も昔も変わらないから頭に純粋を付けろ
589デフォルトの名無しさん:2011/09/29(木) 01:28:40.87
優秀な子は2000万出すと言っても来ないだろ
電力会社や財閥系の管理職になるのがオチ
590デフォルトの名無しさん:2011/09/29(木) 01:33:56.45
Lispが出来る優秀な子は管理職になるから
Lispのソフトが出来ないとかw
591デフォルトの名無しさん:2011/09/29(木) 01:38:02.10
いまLispやってる奴2000万で誘えばほとんど皆来るだろ
592デフォルトの名無しさん:2011/09/29(木) 01:38:41.13
プロコンで優勝するヤツは関数型言語が多いけど、
海外のコンテストなんかじゃ、あんまり純粋なプログラマは見かけないな。
数学関係とか物理とかが多い、変わったトコじゃ医学系がいる。
593デフォルトの名無しさん:2011/09/29(木) 01:40:14.78
>>588
純粋じゃないやつでも
なるべく副作用なくそうとしているやつと
まったく気にしてないのがあるよな
594uy:2011/09/29(木) 01:45:52.15
>>485
んー・・・その"""当たり前"""のことが PerlやRuby、
多くのスクリプト言語が出来ないんだよね

だからはっきりいってCommonLispは現在一般普及してる言語実装処理系より2歩は前を進んでいるよ

なくなっても困らない? そりゃそうだ 誰も使ってねーし
ただ、「こういうことも出来るよ。 こうするといいんじゃね?」 というITでもっとも先進的な空間が、Lisp
ゴミバカアホプログラマは無縁の領域だから、こなくていいと思うけど、勘違いはよくないよ
595デフォルトの名無しさん:2011/09/29(木) 01:47:38.56
別にCで拡張すればいいだけだし
出来ないのと単にやらないのを一緒にすんなよ
596デフォルトの名無しさん:2011/09/29(木) 01:53:50.10
LispはGreat、でも俺はもう別なの使っているよみたいな人ばかり
まともな人はもうLispなんて使ってない
597uy:2011/09/29(木) 01:54:03.27
アレだなー
大学でLispやってるって言ってるけど

ぜんぜん理解してない奴が多すぎる
S式の有用性に気づけるかどうかって、プログラミングの経験年数じゃなくて
まさにセンスって感じがするんだよな 俺は初見で「何か」に気づいて、
その「何か」、とても異質な「何か」に、出会えたことに喜びを覚えたレベル

土方仕事じゃ、こんな知識いらんし、 Lispはプログラミング言語っていうより、
C++と同じカテゴリーの、研究用言語って立ち位置だな

アホな煽りにムキになって無理にLispで何か作ることもないと思うよ
そういう言語じゃないから
598デフォルトの名無しさん:2011/09/29(木) 01:55:53.92
C++は研究用言語じゃないし、
研究者はもうLispからHaskellに移ってるよ
599uy:2011/09/29(木) 01:56:43.86
>>595
おいwwwwwwwwww
何このバカ・・・? え?wwwwwwwww もう一回いって
拡張??・ Cで拡張ってwwww 何を拡張するつもりだwwwwwwwwwwwww


とんでもねースレになった・・・・ とんでもねーな・・・・ 

お前は何にも出来ないから、自分の出来ないことでも誰かは楽ーに出来ると思って言ったんだと思うけど
それ、もうやめたほうがいいよ。 次からは「自分の出来ること・やったことのあること」だけで語れ 二度も恥をかくことはない
600デフォルトの名無しさん:2011/09/29(木) 01:58:50.35
Lisper2000万で雇いたいなら
TopLisperみたいなサイト作って
上位の奴採用したらいい
601uy:2011/09/29(木) 01:59:33.86
>>598
また理解してない奴が。

C++ → 静的メタ
Lisp → S式

な。

よくわかってないと思うけど、そういうこと。 説明したってどうせお前じゃ無理だ

Haskellなんつうゴミ言語はいらない

あー・・・・ やっぱこのスレ、特定の初心者が名無し粘着してんのかなー
面倒だからコテつけろよカス バカみたいに論外な低スキルの"ごみかす"に1レス消費するのがもったいない
602デフォルトの名無しさん:2011/09/29(木) 02:01:43.18
おれはuyみたいな低能アホ天使でもウェルカムだ
603uy:2011/09/29(木) 02:01:49.48
まじでごみみたいなすれだな
604デフォルトの名無しさん:2011/09/29(木) 02:10:10.93
>>601
まあS式の研究頑張れや
605デフォルトの名無しさん:2011/09/29(木) 05:51:42.98
>>598
流行りモノが好きな研究者モドキは、でしょう?
ついこないだまでジャバジャバ言ってた連中w
606デフォルトの名無しさん:2011/09/29(木) 07:31:01.36
>>600
ろくなのがあつまらんって
まともなやつは、物理だの専攻してる部門に進む
奴等にとってあくまでLispは研究を進めるための道具であって
飯を食う道具じゃない
607デフォルトの名無しさん:2011/09/29(木) 07:33:25.59
gimpも最近はpythonの拡張の方が多いぐらいだしな
昔の組み込み言語としてのlispの立ち位置の一部はpyhthonになってるのかも
608デフォルトの名無しさん:2011/09/29(木) 07:49:37.16
一般に専門知識なしに直感的に書ける言語は普及しやすい
関数型のユーザーはいつまでたっても研究者ばっかなんだろうな
609デフォルトの名無しさん:2011/09/29(木) 07:59:22.43
>>608
ではなぜPrologが流行らないのだ?
610デフォルトの名無しさん:2011/09/29(木) 08:26:33.47
一般に専門知識なしに直感的に書ける言語は、結果としてBASICのように
ゴミを量産して悪評まみれになって終わる。

「新しい技術」のユーザーはいつまでたっても研究者ばっかなんだろうな、
などと言ってる奴は時代にとり残されて自滅してきた。過去、山のように。
611デフォルトの名無しさん:2011/09/29(木) 09:18:26.35
C++は歴史的にも現状もバリバリの実践向けだろ…。
いくらなんでも知ったかしすぎ。
612デフォルトの名無しさん:2011/09/29(木) 09:21:04.46
Lisp知っててHaskell否定する意味が分からん
613デフォルトの名無しさん:2011/09/29(木) 11:27:43.44
C++はboostを「作る」連中は研究に片足突っ込んでる感じ
使うだけならただのライブラリ
614デフォルトの名無しさん:2011/09/29(木) 12:16:24.56
>>608
直感的な言語は関数型のほうが直感的なんだけど・・・
どっちかというと、入門書が多い言語が普及しやすいんじゃないかと思う。
615デフォルトの名無しさん:2011/09/29(木) 12:25:12.89
いまLispやってる奴は
まともなやつじゃないそうで
616デフォルトの名無しさん:2011/09/29(木) 12:26:37.29
他にLisp並みのマクロがある言語があれば肯定するけど
617デフォルトの名無しさん:2011/09/29(木) 12:32:04.35
Haskellは環境じゃないからな
Lisperからみりゃ死体の言語だ

ghci?
笑わせんな
618デフォルトの名無しさん:2011/09/29(木) 12:35:20.52
リスパーいわくリスプはさいきょうのげんご

最強の武器を持っていながら他の言語を駆逐できないなんて、リスパーって雑魚の集まりなんですねー
619デフォルトの名無しさん:2011/09/29(木) 12:44:03.32
誰かを傷付けることは強さじゃないのさ
620デフォルトの名無しさん:2011/09/29(木) 13:09:07.54
Lisperは自分の作ったプログラムを他人に配ったりしない
グレアムみたく自分だけ金儲けに使う
621uy:2011/09/29(木) 19:02:22.28
>>604
理解してないなぁ・・・
ほんとよくそんなレベルで何年も停滞できるよ

おそろしい
622デフォルトの名無しさん:2011/09/29(木) 19:09:13.41
uyってなんなの
気持ち悪いおっさんだな
623デフォルトの名無しさん:2011/09/29(木) 19:47:18.86
Lisperはすべからく気持ち悪いけどな
624デフォルトの名無しさん:2011/09/29(木) 19:48:19.84
すべからくの誤用と言ってほしいのか?
625デフォルトの名無しさん:2011/09/29(木) 20:12:14.50
626デフォルトの名無しさん:2011/09/29(木) 21:33:14.19
Lisperはすべからくすべて気持ち悪いべきだけどな。
627デフォルトの名無しさん:2011/09/29(木) 22:03:15.57
Lisperが気持ち悪いかどうかなど知らんし興味も無いが、
Lispのコードは気持ち悪い
628デフォルトの名無しさん:2011/09/29(木) 22:12:58.69
Lispで書かれた有用なコード自体ないしな
大昔のがいくつかあるだけ
629uy:2011/09/29(木) 22:39:26.60
>>628
こういう知ったかぶるゴミって。。。



その「大昔」の「いくつか」


 さ っ さ と ア プ リ ケ ー シ ョ ン 名 を 出 せ 

逃げんなよ? ゴミ
630デフォルトの名無しさん:2011/09/29(木) 22:47:19.71
じゃあ一つもなしでいいよ
Lisperが有用だって言っているだけだし
631デフォルトの名無しさん:2011/09/30(金) 00:16:17.06
>>629
支離滅裂になってるぞ…。
一回ガチで精神科行ってきたほうがいい。
632デフォルトの名無しさん:2011/09/30(金) 00:21:02.35
そこで emacs ですよ。
633uy:2011/09/30(金) 01:12:52.10
>>630
そうだよ 「ひとつもねーだろwwwwwww」 って事いってんだ

あるかどうかもわからないのに、お前何いってんだ????ってマジで心配になった

>>631
いやそれ、狙ってやってる

>>632
誰でも知ってるアプリ名はあげなくていい ウザい
634uy:2011/09/30(金) 01:15:53.28
つうか、このスレのやつらって
XMLをS式に変換出来ることもわかってなさそうなんだよ

Lispイラネとはいってても、XMLイラネとは思ってないんだろう
記述法の問題で、概念は似たようなものなのに

教養がないやつとしゃべるのは疲れる さっさと死ねよ 雑魚


>>630こいつも逃げちゃうしさぁ そこで何か名前だしてくれば スレが面白い流れになるというのに、
ハッタリだから、すぐ逃げちゃう
635デフォルトの名無しさん:2011/09/30(金) 01:20:08.43
いやXMLいらねーし
636デフォルトの名無しさん:2011/09/30(金) 01:23:18.54
今はVimの時代
Emacs使うくらいならIDE使った方が軽いし便利
637デフォルトの名無しさん:2011/09/30(金) 01:25:59.90
S式でそんなに感動できるならJSONで発狂するんじゃないか。
uyは見てると可哀想にはなるが、助けてやりたいとも思わないわ。
638デフォルトの名無しさん:2011/09/30(金) 01:33:32.58
使用者だからこそわかるけど、
標準エディタとしてのviはとっくに死んでるし、
vimはemacsと同じような位置づけになってるという…。
639デフォルトの名無しさん:2011/09/30(金) 02:02:14.35
viは俺が3歳のときに4時間で作ったけどな。
640デフォルトの名無しさん:2011/09/30(金) 02:09:27.65
すごいでちゅね
641デフォルトの名無しさん:2011/09/30(金) 02:23:18.88
有用がどういうことか知らないけど
そこそこ有名なあるデジタル家電のファームの一部がLispで書かれてるな。
実務で使われてるのはそれしか知らない。
642デフォルトの名無しさん:2011/09/30(金) 08:41:36.65
vimも編集機能は慣れれば高速な作業が可能だけど、プログラミング支援って意味じゃEclipseとかVSとかのIDEには遠く及ばないな。
omni補完とか無理矢理だからな。
ま、スクリプト言語の場合、どっちみち補完効かないから、構わないけど。
643デフォルトの名無しさん:2011/09/30(金) 09:15:28.47
>ま、スクリプト言語の場合、どっちみち補完効かないから、構わないけど。
と思っていた時期が俺にもありました。
644デフォルトの名無しさん:2011/09/30(金) 09:57:41.67
IDEの補完はクソ重過ぎて笑える
PCがしょぼいとかそういうレベルじゃねーだろ
645デフォルトの名無しさん:2011/09/30(金) 11:32:54.46
$foo = new Foo;
して、$foo->でメソッド補完出来るIDEあるの?
646デフォルトの名無しさん:2011/09/30(金) 15:46:01.74
おま何時の時代の人間だ。
foo->
foo.
abd::
asd:abc::foo->
色々補完有るし、説明も出るぞ。
なおかつ
foo->sub001( でパラメータリストも関数分出るぞ
647デフォルトの名無しさん:2011/09/30(金) 15:53:18.37
引数やメンバ変数の補完はでんの?
648デフォルトの名無しさん:2011/09/30(金) 15:55:07.97
メンバー変数出るぞ、enumもでる
パラメータリストは、説明が出るだけで、補完とはいえんな。
説明が出るから、それ見て入れるだけだが
649デフォルトの名無しさん:2011/09/30(金) 18:31:16.70
補完に頼り過ぎたら阿呆なるよ。
650デフォルトの名無しさん:2011/09/30(金) 18:39:08.92
プログラミング言語の研究は半世紀前から停滞しているのに対して
IDEは最近出たばかりだからなpython rubyよりも新しい
言語機能をいくつか追加するよりも高度なIDEの方が開発効率に貢献しているから
IDEと相性の良い言語の方が効率はいい
つまり型宣言のない言語の普及はすぐに頭打ちになるし
言語仕様をバカみたいに追加すると開発環境が対応できなくなって効率が落ちる
コード書く時間よりリファレンス引く時間が長いとうんざりしてやる気なくなる
651デフォルトの名無しさん:2011/09/30(金) 18:57:06.23
>>650
は?IDEなんざSmalltalkの頃からあるのに何言ってんの?
Java最強って言いたいなら理論武装くらいちゃんとして下さいよwww
652デフォルトの名無しさん:2011/09/30(金) 19:06:21.92
>>651
お前から何者にもなれない雑魚の匂いがぷんぷんしてくる
653デフォルトの名無しさん:2011/09/30(金) 19:11:18.78
>プログラミング言語の研究は半世紀前から停滞しているのに対して
あれあれ
654デフォルトの名無しさん:2011/09/30(金) 19:21:04.14
どっちもお盛んね
655デフォルトの名無しさん:2011/09/30(金) 19:29:54.05
プログラミングに必要なことは使いやすく便利な道具ではなくて、細心で丁寧な姿勢。
656デフォルトの名無しさん:2011/09/30(金) 19:56:32.06
プログラミング言語の研究は半世紀前から停滞しているのに対して
IDEは最近出たばかりだからな(キリッ
657デフォルトの名無しさん:2011/09/30(金) 20:30:34.46
半世紀前の言語研究しか知らん、ってw
半世紀前の最先端というとGCか。Java1厨かな?
658デフォルトの名無しさん:2011/09/30(金) 21:58:17.40
いや、半世紀前の言語研究も知らんだろ
659デフォルトの名無しさん:2011/09/30(金) 22:11:30.23
そもそも、なぜ土方や低能は
変数の型宣言を好むのだろうか?

それが分かればこの不毛な論争にも
解決の糸口が見えるかもしれん
660デフォルトの名無しさん:2011/09/30(金) 22:13:15.22
IDE使いにハッカーはいるんだろうか? 疑問に思ってる。
古臭くってもvim/emacs使いなんじゃなかろうか?
661デフォルトの名無しさん:2011/09/30(金) 22:26:48.79
eclipseなハカーは居そうじゃね?
662デフォルトの名無しさん:2011/09/30(金) 23:05:09.01
>>659
文字列が嫌いなんじゃないの
CUIやプロトコルのような中小零細言語が嫌い
663デフォルトの名無しさん:2011/09/30(金) 23:08:11.69
>>659
> そもそも、なぜ土方や低能は
> 変数の型宣言を好むのだろうか?

コーディングというめんどくさくて
つまらない作業を楽にできるから。
664デフォルトの名無しさん:2011/09/30(金) 23:08:57.18
>>660
> IDE使いにハッカーはいるんだろうか? 疑問に思ってる。

IDEかどうかは関係なく
C言語などの静的言語を使うよ。ハッカーは。
665デフォルトの名無しさん:2011/09/30(金) 23:09:28.35
そういや、動的言語でハッカーとか聞いたこと無いな。
666デフォルトの名無しさん:2011/09/30(金) 23:10:25.06
え?
667デフォルトの名無しさん:2011/09/30(金) 23:12:08.28
え? の意訳

「今から反論してやる、まっとれ。」


まってるよんw
668デフォルトの名無しさん:2011/09/30(金) 23:12:30.47
>>662>>663
煽りではなく、マジでどう繋がるのか分からないんだけど
669デフォルトの名無しさん:2011/09/30(金) 23:13:32.87
>>668
くだらないスペルミスとか、引数の順番内容とか
そんなのを覚えなくてすむんだよ。
670デフォルトの名無しさん:2011/09/30(金) 23:15:37.57
>>665
lisp は駄目なの?
671デフォルトの名無しさん:2011/09/30(金) 23:16:16.88
>>670
ハッカーの名前がでないなら、ダメなんだろうな。
672デフォルトの名無しさん:2011/09/30(金) 23:16:45.43
>>669
引数の順番はキーワード引数のほうが覚えなくて良いじゃん
くだらないスペルミスはスコープがしっかりした言語や、
それこそ型推論があれば良い
673デフォルトの名無しさん:2011/09/30(金) 23:17:04.29
言っとくが、言語開発者はダメだぞ。

言語開発者の自作言語宣伝は
ただのマーケッティングだからw
674デフォルトの名無しさん:2011/09/30(金) 23:18:36.88
型安全の煽り合いは隔離スレでどうぞ
675デフォルトの名無しさん:2011/09/30(金) 23:18:38.41
>>672
> 引数の順番はキーワード引数のほうが覚えなくて良いじゃん

そのキーワードが何かわからんだろう。
定義がなければ。

> くだらないスペルミスはスコープがしっかりした言語や、
> それこそ型推論があれば良い

スコープじゃスペルミスは防げないぞ。
型推論は型宣言のシンタックスシュガーだから。
676デフォルトの名無しさん:2011/09/30(金) 23:19:14.69
LispハッカーといえばPaul Grahamだけど(露出的に)
俺こいつ嫌いなんだよねw
677デフォルトの名無しさん:2011/09/30(金) 23:22:56.97
>>675
> そのキーワードが何かわからんだろう。
> 定義がなければ。

関数/メソッドの定義はあるだろ。アホすぎねお前?
キーワード引数付きの動的型言語使った事無いのかよ
678デフォルトの名無しさん:2011/09/30(金) 23:23:17.35
ハッカーの定義はなんだよ。
リーナスやら、ストールマンか?
まさか、ケビン・ミトニックみたいなヤツとか下らない事言うなよ
679デフォルトの名無しさん:2011/09/30(金) 23:23:35.43
>>677
だから、定義あったほうがいいってことだろ?
680デフォルトの名無しさん:2011/09/30(金) 23:24:56.88
うん。定義があると一度書くだけで
その他の行でいろいろコーディングを楽する
サポートを得られるんだ。まともなエディタを使っていれば。
681デフォルトの名無しさん:2011/09/30(金) 23:25:25.08
定義と宣言は違う。例えばアセンブリ言語でも定義は書ける。
ま、型安全の話は他所でやれ。
682デフォルトの名無しさん:2011/09/30(金) 23:25:40.25
> スコープじゃスペルミスは防げないぞ。

LispやSchemeは変数宣言があるから、スペルミスして未宣言の変数/関数を書いたら
分かると思うけど、気のせいか?
683デフォルトの名無しさん:2011/09/30(金) 23:27:02.03
そういや、定義と宣言の違いが分からないアホが居るんだったね
684デフォルトの名無しさん:2011/09/30(金) 23:27:22.17
まあ分かるといっても実行時にならないとわからないなら、
ミスを修正するのに時間がかかるけどね。

ミスは分かるのが早いほど、修正も早くなる。
685デフォルトの名無しさん:2011/09/30(金) 23:28:04.66
Cでの話ですが、たぶん他の言語でも同じだと思います。

定義 ---- 中身を書いて、名前を付ける。
宣言 ---- 名前や引数の型等だけをコンパイラに教える。

定義は、その実体を書いて、それを名前と結びつけています。
宣言は、実体はよその場所にあるけれども、こういう名前でこういうものだよ、とコンパイラに教えています。

宣言はそのソースファイルにないものを使う(例えばライブラリの使用や、ソースファイルを分割しての開発)ために必要な仕組みです。

関連事項として、間違った宣言を書いたとき、宣言とソースファイルの記述が合致していても、実際に結合するライブラリなどと食い違いがあると、コンパイル時ではエラーが出ず、結合時にエラーが出るというちょっとわかりにくいエラーが出ます。
今の開発環境ではあまりでないと思いますが。
686デフォルトの名無しさん:2011/09/30(金) 23:28:31.01
>>676
今、給湯室で
美人の新人OLにイチャモンをつける
お局さんの姿が目に浮かんだよ。

「私、あの子嫌いなのよねw」
687デフォルトの名無しさん:2011/09/30(金) 23:28:34.61
JIS X3014:2003の3.1 宣言及び定義では、次のように規定されています。

宣言は, 次の場合を除いて, 定義という。
 − 関数本体を指定せずに関数を宣言している場合
 − extern指定子又は<<結合指定>>を含んでいて, <<初期化子>>も<<関数本体>>も含んでいない場合
 − クラス宣言の中で静的データメンバを宣言している場合
 − 型定義宣言, <<using宣言>>又は<<using指令>>の場合

すなわち、クラス指定子は上記の例外に該当しませんので、常に定義ということになります。しかも、不完全型の場合も上記に挙がっていませんが、その後に定義でない例として記述されていますので、定義ではありません。また、定義というのは宣言の一種です。

簡単にいうと、クラスの宣言というのは、

class CSubClass;

であり、定義というのは、

class CSubCalss : public CSuperClass
{
public:
};

のことになります。

CSubClass a;

というのは、オブジェクトaの定義であって、クラスCSubClassの宣言でも定義でもありません。

688デフォルトの名無しさん:2011/09/30(金) 23:29:05.12
だから、静的型付け動的型付けは専門スレでやれよ。
実行時メタプログラミングについて語れないヤツは来るな。
689デフォルトの名無しさん:2011/09/30(金) 23:30:08.02
一般的な使い分けとしては、「宣言 (declaration)」はある識別子を言語処理系が認識できるようにすること(*)、
「定義(definition)」はその識別子に正確な意味を与えること、となると思います。
言語によってこれらは別々であることもありますし、同時に行われることもあります。同じ言語内でも識別子の種類によって、
宣言と定義が常に一緒のものと別々でも良いものが混在していたりします。
複数の言語に渡って一般的な説明をする場合は、どちらの動作を説明しているかによって使い分ければ良いと思います。
一方、Javaの文法の説明をしている場合は「宣言」とするのが良いでしょう。なぜなら言語仕様でDeclarationとなっているからです。
http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html
690デフォルトの名無しさん:2011/09/30(金) 23:31:04.44
>>684
どこに対してのレスだよ
691デフォルトの名無しさん:2011/09/30(金) 23:31:53.37
とっとと巣に帰れ シッシッ

やっぱり動的型付け言語では安全なソフトは作れない
http://hibari.2ch.net/test/read.cgi/tech/1316887046/
692デフォルトの名無しさん:2011/09/30(金) 23:38:37.86
>>688
これって型付けの話だったのかな?
693デフォルトの名無しさん:2011/09/30(金) 23:44:22.49
宣言だのってのは動的言語、静的言語とは関係ないだろ、
宣言の行く末はどうせ型安全云々の下らん話だ。

定義だの云々を動的言語、静的言語に結び付けたいなら
モンキーパッチとかもっとマトモな話を出せ。
694デフォルトの名無しさん:2011/09/30(金) 23:51:02.21
「津波に耐えられる堤防を建てよう」と宣言する
「津波に耐えられる堤防を建るとはどういうこと?」と定義(計画内容)を尋ねる

くだらねぇ話だな・・・。
695デフォルトの名無しさん:2011/10/01(土) 00:33:48.70
モンキーパッチのどこがまともな話なのかw
それこそ下らないだろ。

まあモンキーパッチを実行前に適用する
言語拡張が必要だ。みたいな話なら面白いかもね。
696デフォルトの名無しさん: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

モンキーパッチングの大半はこのように
実行前にパッチをあてることが可能だろう。
697デフォルトの名無しさん:2011/10/01(土) 00:39:42.89
本来モンキーパッチは、オリジナルのコードにパッチを当てる行為なわけで
ソースコードに本当にパッチをあてる方法でも実装できるんだよね。

だから殆どの場合は実行前にパッチを当てられるんだよね。
それを行う構文をどうするかは別の話だけど。
698デフォルトの名無しさん:2011/10/01(土) 00:44:26.68
実行時メタプログラミングつってんのに、
何、実行前にパッチをあてることが可能だろう(キリッ
とか言ってんだよ。
699デフォルトの名無しさん:2011/10/01(土) 00:51:15.19
モンキーパッチは本当は動的言語でやるのは危険なんだよ。

たとえばモンキーパッチであるメソッドを置き換える。
そうすると、その置き換えを知っているものは問題なく使用できるけど、
置き換えを知らないもの。たとえば、そのメソッドが定義された
オブジェクト自身とかの場合に問題が起きる可能性がある。

オブジェクト自身はメソッドが置き換えられていない前提でメソッドを使用している。
でもメソッドが変わってしまうために想定外の動作をしてしまう可能性がある。

だから安全に行うのであればモンキーパッチ専用の構文が必要になる。
パッチをあてる対象クラス自身からの呼び出しならオリジナルが呼び出されるとか
置き換わったメソッドの方を呼び出す範囲を決めるための構文とか。
700デフォルトの名無しさん:2011/10/01(土) 00:52:09.86
事前にパッチを当てられるとか静的言語で出来ること例に上げて何の意味があんだよ
実行時じゃないと出来無い課題に対して実行時にパッチできるから意味があるんだろバカじゃねぇの
701デフォルトの名無しさん:2011/10/01(土) 00:53:26.43
>>698
だから、たまたまモンキーパッチを動的言語でやれるからといって、
それは実行時メタプログラミングの範疇にするべき問題ではないということ。
だから下らない話。
702デフォルトの名無しさん:2011/10/01(土) 00:54:15.51
動的言語がOOPLであるなんて决まりはない
C++系統の構文の問題が動的言語にあるとは限らん
703デフォルトの名無しさん:2011/10/01(土) 00:54:29.99
>>700
モンキーパッチは動的言語の意味を示す例としては
適切ではないということだよ。
704デフォルトの名無しさん:2011/10/01(土) 00:55:21.22
>>703
動的言語でググってきたら?
705デフォルトの名無しさん:2011/10/01(土) 00:56:18.98
つまりモンキーパッチは邪道なんだな。
706デフォルトの名無しさん:2011/10/01(土) 00:57:03.35
動的言語って究極には、プログラム自体がデータなんだよ。
データに近づけば近づくほど動的になる。
逆にプログラムという概念に差別化して距離を置けば置くほど静的になる。
707デフォルトの名無しさん:2011/10/01(土) 00:58:39.66
708デフォルトの名無しさん:2011/10/01(土) 00:59:13.64
>>706
で、その究極の例がアセンブラ
コードもデータも全く同じ。

実行時にコード書き換えなんて当たり前。
709デフォルトの名無しさん:2011/10/01(土) 01:00:47.63
>>707
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

逆にモンキーパッチのページにも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
710デフォルトの名無しさん:2011/10/01(土) 01:02:12.58
動的言語のアンチにマトモに動的言語の意味を知ってるヤツって少ないよな
更に言えば、動的言語の用途を知ってるヤツは極僅か
そのザマでなんでアンチになろうとするのか?
711デフォルトの名無しさん:2011/10/01(土) 01:03:26.82
>>710
そんな内容のレスをすることは、お前にとって重要なことだったのか?
712デフォルトの名無しさん:2011/10/01(土) 01:04:15.59
>>710
それよりも、何か具体的な自分の主張なり
反論をして欲しいところだw
713デフォルトの名無しさん:2011/10/01(土) 01:04:43.10
>>709
文盲かよ
714デフォルトの名無しさん:2011/10/01(土) 01:06:01.14
>>713
盲目も何も、書いてないものは見えんよw
715デフォルトの名無しさん:2011/10/01(土) 01:07:51.38
パケットデータ自体を動的言語で組んで指定のネットワークで作業をさせる。
はたしてこれを、静的言語で安全にかつ短く書けるか?
716デフォルトの名無しさん:2011/10/01(土) 01:07:55.95
wikipediaなんだから誰でも書き換えられる。
evalのあとに(モンキーパッチとも言う)ってネタで追加してみたらw
717デフォルトの名無しさん:2011/10/01(土) 01:08:00.31
>>707のリンク先の文章でいえば、
「オブジェクトシステムや型システムの実行時変更」
が動的言語におけるモンキーパッチに該当する
718デフォルトの名無しさん:2011/10/01(土) 01:08:50.65
>>715
それやったら、スクリプトインジェクション起こされて
脆弱性になったぞ。

どうしてくれる!w
719デフォルトの名無しさん:2011/10/01(土) 01:10:10.91
>>717
あれ? evalは?w
720デフォルトの名無しさん:2011/10/01(土) 01:11:23.72
>>719

>709が
> お前の持ってきたリンクにモンキーパッチなんてのってないし、
って書いてたから
721デフォルトの名無しさん:2011/10/01(土) 01:11:34.25
モンキーパッチは、やってることの形容であって、具体的な手法論じゃない。
evalはあくまで具体的な手法。
モンキーパッチをevalで実装してる例はぐぐれば大量に出てくる。
http://www.google.co.jp/search?gcx=c&sourceid=chrome&ie=UTF-8&q=Monkey+patching+eval
722デフォルトの名無しさん:2011/10/01(土) 01:12:38.06
>>717
少し論理学を勉強したほうがいいのではないか?

「オブジェクトシステムや型システムの実行時変更」が
モンキーパッチなのではなく

「オブジェクトシステムや型システムの実行時変更」の
適用例の一つがモンキーパッチ。


だが、モンキーパッチは本来に実行時に変更する必要はなく動的にやる意味も少ないから
「オブジェクトシステムや型システムの実行時変更」の適用例としては
ふさわしくないというのが話の流れだ。
723デフォルトの名無しさん:2011/10/01(土) 01:13:48.99
>>721
それただの検索クエリーじゃないかw
自分で探してこいよ。まったく行動が糞ガキ全開だなw
724デフォルトの名無しさん:2011/10/01(土) 01:14:27.38
>>718
単にチューリング完全で、指定外のデータや関数へのアクセス権が無けりゃ簡単にできるわな。
SQLでOS自体のカーネルを消せれるか?それと同じだ。
725デフォルトの名無しさん:2011/10/01(土) 01:14:52.20
> SQLでOS自体のカーネルを消せれるか?それと同じだ。

SQLインジェクション起こされちゃったw
726デフォルトの名無しさん:2011/10/01(土) 01:15:06.33
>>722
だから>>717では「動的言語における」って枕詞付けたのに
727デフォルトの名無しさん:2011/10/01(土) 01:16:09.28
つけたから何なんだろう?
728デフォルトの名無しさん:2011/10/01(土) 01:16:19.91
>>723
1ページづつ表示して、これがモンキーパッチを使った〜プログラムです
これはモンキーパッチを使った〜プログラムですと紹介して欲しいのか?

現実にコレだけ掲載されてることが重要だろうが。
729デフォルトの名無しさん:2011/10/01(土) 01:17:49.22
>>725
SQLインジェクション起こして攻撃されるのはDBの中だけだよな。
まぁ、攻撃されたDBのデータを表示すれば被害が起きるかもしれないが、
破壊されるのはDBという砂場だけだ。
730デフォルトの名無しさん:2011/10/01(土) 01:17:51.99
>>727
だから静的言語におけるモンキーパッチはまた別の話ってこと
なのに>>722みたいなのを得意顔で書くお前は
論理学どころか日本語を学び直した方が良い
731デフォルトの名無しさん:2011/10/01(土) 01:18:43.53
>>728
モンキーパッチをconstで実装してる例はぐぐれば大量に出てくる。
evalで実装している例よりも多くでてくるぞ。
http://www.google.co.jp/search?gcx=c&sourceid=chrome&ie=UTF-8&q=Monkey+patching+const

何が言いたいのか分かる?
evalで検索して出てきたからって、
モンキーパッチとは全く関係ない話かもしれないってことだよ。

732デフォルトの名無しさん:2011/10/01(土) 01:20:17.76
>>731
intが付いてれば全てオブジェクト指向言語か笑わせる
733デフォルトの名無しさん:2011/10/01(土) 01:20:20.49
>>731
> モンキーパッチをconstで実装してる例はぐぐれば大量に出てくる。

え?
734デフォルトの名無しさん:2011/10/01(土) 01:20:51.56
evalが付いてれば全てモンキーパッチか笑わせる
735デフォルトの名無しさん:2011/10/01(土) 01:21:20.83
>>733
最後までちゃんと読めよw
736デフォルトの名無しさん:2011/10/01(土) 01:24:56.31
「evalでモンキーパッチを実装している」と「evalが付いている」の区別ができない人が・・・
737デフォルトの名無しさん:2011/10/01(土) 01:25:22.84
モンキーパッチをconstで実装してる例はぐぐれば大量に出てくる(キリッ
738デフォルトの名無しさん:2011/10/01(土) 01:28:25.79
モンキーパッチは他所でやってくれ
739デフォルトの名無しさん:2011/10/01(土) 01:28:57.56
簡単な文章なんだから英語ぐらいよんだら?

http://giorgiosironi.blogspot.com/2010/09/monkey-patching-in-php.html

PHPでeval使ってモンキーパッチを実現する例だが、これ読んでて「eval」が
「付いてる」だけとか言ってたらもう話すことはないわ。とりあえず自閉症の養護学校行ってくれ
740デフォルトの名無しさん:2011/10/01(土) 01:35:54.34
それより >>729 についてどうなった
音沙汰がないが
741デフォルトの名無しさん:2011/10/01(土) 01:38:55.06
sandboxという概念を知らなかったとかだったりして
742デフォルトの名無しさん:2011/10/01(土) 01:40:23.62
サンドボックス上では動的言語は問題にならんわな
743デフォルトの名無しさん:2011/10/01(土) 01:46:24.66
同スコープでそのままパッチしないでeval使う意味がわからない。

スクリプト実行時にeval使うって意味だと、
MonkeyPatchingの実装じゃなくて、前段階の話になっちゃうし。

744デフォルトの名無しさん:2011/10/01(土) 01:50:49.90
お前の言っている意味も解からんわ
evalはダイナミックリンクじゃないから、呼び出し元の変数を変更できるんだけど。
evalはそれができないと言いたいのか?まぁ、言語によるだろうけど。
745デフォルトの名無しさん:2011/10/01(土) 01:57:39.36
js> var x=10;
js> eval("x=20");
20.0
js> java.lang.System.out.println( "x:" + x );
x:20

javascriptなんかは自由にプログラム内の変数にアクセスできるな。
746デフォルトの名無しさん:2011/10/01(土) 01:58:44.01
>>744
そのままコードを書けばいいだけで、evalする意味ないだろ。
動的言語の話ししてるのになんでダイナミックリンクが出てくるの?
747デフォルトの名無しさん:2011/10/01(土) 02:04:37.98
>>745
rhino?
748デフォルトの名無しさん:2011/10/01(土) 02:04:50.15
プログラムが完全に閉じてて実行時に外部からメモリ空間書き換えなきゃならんとかってルールはないだろ
自由に作業できる入口を一個だけ用意しとけばいい
あとは、その入口からメタ機能を利用してプログラム全域を書き換えるだけだ
749デフォルトの名無しさん:2011/10/01(土) 02:05:18.14
>>747
yeah
750デフォルトの名無しさん:2011/10/01(土) 02:06:54.05
なんだ。eval(モンキーパッチ)とか言っていたのは
PHP厨房だったのか?通りでレベルの低さを感じるわけだw

>>739
それ、モンキーパッチに相当するコードは、
function strlen〜の部分であってevalは単に読み込んだファイルを実行するのに使ってるだけじゃん。

しかもモンキーパッチ(既存の関数の置き換え)ではなく、それはただの名前空間に追いやってるだけ。
> This isn't "monkey patching". This is just namespaces.
ってリンク先のリンク先のコメントで指摘されてるよな。

requireは実行前に読み込まれるから論外として、実行時に読み込まれるincludeでも、
名前空間は独立するものになるのだろう。
だからファイルとして読み込んでevalで実行しているんだ。

あー、本当にレベルが低い。
751デフォルトの名無しさん:2011/10/01(土) 02:12:32.60
「evalを実行するコード」を読み込みできるなら、
わざわざevalを使う必要ないじゃないの。
MonkeyPatchを実行時生成するならevalもわかるけど、趣旨とは違うし。
752デフォルトの名無しさん:2011/10/01(土) 02:13:14.97
本当のモンキーパッチは名前空間に追いやるなんてことは必要ないため
名前空間に追いやるために使っているだけのevalは不要。
モンキーパッチとは無関係であることが自滅によって証明されてしまったようだw
753デフォルトの名無しさん:2011/10/01(土) 02:14:25.40
ごめんあと一言いいたい。
eval使ってグローバルが書き換わってるのを見て喜んでるのは馬鹿だからな?
外部から読み込むならsandbox使えボケ。
754デフォルトの名無しさん:2011/10/01(土) 02:15:03.29
>>750
機械翻訳ご苦労さん。
それはそうとrunkitはどう思ってる。
755デフォルトの名無しさん:2011/10/01(土) 02:15:46.62
>>754
話しそらそうとしても無駄だぞw

いい加減evalはモンキーパッチとは無関係だと
認めろよ。
756デフォルトの名無しさん:2011/10/01(土) 02:16:15.77
つか、機械翻訳なんて使ってないしw

自分じゃねーの? レベル低いPHP厨房さん。
757デフォルトの名無しさん:2011/10/01(土) 02:17:42.05
グローバル変数が書き換わることなんて重要じゃないんだがね
ましてやモンキーパッチも大して重要じゃない

動的言語の話としてわな
758デフォルトの名無しさん:2011/10/01(土) 02:17:46.24
>>745
REPLが既にeval(笑)
759デフォルトの名無しさん:2011/10/01(土) 02:19:20.04
>>757
だから、俺は>>695の時点でモンキーパッチは動的言語の
話題としては下らないとさっさと切り捨てたんだがw
760デフォルトの名無しさん:2011/10/01(土) 02:19:51.46
>>758
常識じゃね?なんかウケることが?
761デフォルトの名無しさん:2011/10/01(土) 02:20:35.85
>>759
じゃ動的言語らしい話題を出せ
762デフォルトの名無しさん:2011/10/01(土) 02:20:46.06
あ、>>452の時点で指摘してたわw
763デフォルトの名無しさん:2011/10/01(土) 02:21:39.68
>>756 そのわりにかなり間があいたな
764デフォルトの名無しさん:2011/10/01(土) 02:21:40.69
>>760
js> eval("x=20");
765デフォルトの名無しさん:2011/10/01(土) 02:22:48.14
>>764
何がおかしいのかさっぱり
766デフォルトの名無しさん:2011/10/01(土) 02:23:23.99
>>761
俺は動的言語? ぷwwwの立場だから
出すつもり無いわw

それよりか、現在動的言語でしかできないようなことを
静的言語として実行前に行う言語仕様を考えるほうが興味あるな。

本当に動的言語でやるべきことなんて
実際はかなり少ないと思ってる。
767デフォルトの名無しさん:2011/10/01(土) 02:24:44.55
eval("eval(\"eval(\"eval(\"10\")\")\")\");

インタプリタを含めていくらでも再起できるけど笑いのツボが解からん
768デフォルトの名無しさん:2011/10/01(土) 02:24:44.54
>>765
eval(eval(eval(eval(eval(eval("x=20"))))));
769デフォルトの名無しさん:2011/10/01(土) 02:25:21.26
>>763
ずっと2ちゃんねる見てたわけじゃないし
機械翻訳なら逆にすぐにレスできるだろ。

時間見てみ、30分ちょいあるだろ?



アニメ1話見てただけだwww
770デフォルトの名無しさん:2011/10/01(土) 02:25:45.93
時空を超えた
771デフォルトの名無しさん:2011/10/01(土) 02:26:37.43
>>769
いやバカだから日本語にしても読めないだけかと思ったよ
772デフォルトの名無しさん:2011/10/01(土) 02:28:04.83
eval("eval('eval')")("eval('eval')")("eval('eval')")("x=20")
773デフォルトの名無しさん:2011/10/01(土) 02:28:20.09
>>771
馬鹿ってのは、evalをどう使っているのか、
ただのPHPという貧弱な言語仕様の制限をかいくぐるためにに使っていて
モンキーパッチとは直接関係ないことを見抜けなかった奴のことかな?w
774デフォルトの名無しさん:2011/10/01(土) 02:28:47.84
>>766
じゃ「現在動的言語でしかできないようなことを
静的言語として実行前に行う言語仕様」とやらを教えてくれ
妄想でいいから
775デフォルトの名無しさん:2011/10/01(土) 02:29:54.46
>>774
すでに書いたけど。

> 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
>
> モンキーパッチングの大半はこのように
> 実行前にパッチをあてることが可能だろう。
776デフォルトの名無しさん:2011/10/01(土) 02:31:23.27
>>767
evalのメリットを語るのにeval前提であるという矛盾。
喩え下手の馬鹿を見るのは微笑ましいなぁと。
777デフォルトの名無しさん:2011/10/01(土) 02:31:51.99
件の記事は名前空間を使った非侵襲的な動作。
本質はsandboxの使い方というオチ。
778デフォルトの名無しさん:2011/10/01(土) 02:32:20.86
>>775
そんな下らないことはいいから、ユーザーが書いたプログラムを制御するスクリプトを、
実行中のプログラムが、片安全に読み込んで実行する例とか書いてくれ。
779デフォルトの名無しさん:2011/10/01(土) 02:33:44.56
型安全である必要はないわ、それはあっちのスレのネタ出し
780デフォルトの名無しさん:2011/10/01(土) 02:34:03.55
>>778
散々でてますけど。
781デフォルトの名無しさん:2011/10/01(土) 02:34:22.96
>>776 ますます意味が解からん
782デフォルトの名無しさん:2011/10/01(土) 02:34:31.64
話の途中だけど、風呂入ってくるわ。
2ちゃんねらに俺の生活のリズム合わせるつもり無いんでw

ちゃんと書いてないとまたレスするまで間があいたと言われそうだからな。
風呂入りながらネギま!4巻ほど読むから、
それなりに時間は空くしレスしないで寝るかもな。

じゃw
783デフォルトの名無しさん:2011/10/01(土) 02:35:21.79
>>778
それは動的言語とは全く関係ない。
784デフォルトの名無しさん:2011/10/01(土) 02:35:41.61
>>780
どこに?
785デフォルトの名無しさん:2011/10/01(土) 02:36:57.66
>>784
evalとsandbox
例外受け取ればもう十分だろ。
786デフォルトの名無しさん:2011/10/01(土) 02:38:17.36
>>783
動的言語なら簡単に書けるじゃん。
文字列をそのままプログラムとして同じプロセス空間で実行できるし。

静的言語でも同じぐらい簡単に書けるのか?
787デフォルトの名無しさん:2011/10/01(土) 02:42:32.59
>>781
そっか。
なんだかごめんね。
788デフォルトの名無しさん:2011/10/01(土) 02:44:33.18
>>785
eval ができた時点で動的言語じゃん。
実行時メタプログラミングができたら動的言語だろ。
789デフォルトの名無しさん:2011/10/01(土) 02:45:50.20
http://www.infoq.com/jp/news/2011/09/twitter-storm-real-time-hadoop
>ほとんどが Clojureで書かれている。
790デフォルトの名無しさん:2011/10/01(土) 02:45:52.41
>>788
JavaでJavaScript動かしたらどうなるの…と。
791デフォルトの名無しさん:2011/10/01(土) 02:47:45.43
>>790
"やっぱり動的言語では安全なソフトは作れない"と言う資格を失う
792デフォルトの名無しさん:2011/10/01(土) 02:51:24.08
まぁ実行時にソースレベルで書き換えができりゃいいだけで、
evalだけが動的言語でもないけどな。
構文木を外部から取り込んだ情報を
元に書き換えるってのも動的だ。
793デフォルトの名無しさん:2011/10/01(土) 02:58:01.05
>>790
Rihnoでも呼び出し元のプログラムに介入はできなかった。
操作できるのはJava のライブラリの表面だけ。
現実にはjavascriptでJavaのメタプログラミングは不可能なのかもね。
794デフォルトの名無しさん:2011/10/01(土) 03:04:44.70
>>793
それはリフレクション使えばいいんじゃないか。
795デフォルトの名無しさん:2011/10/01(土) 03:07:26.61
>>789
このスレが終焉に向かう。
796デフォルトの名無しさん:2011/10/01(土) 03:08:19.03
>>794
リフレクションは表面だけでしょ
797デフォルトの名無しさん:2011/10/01(土) 03:12:59.20
すれ違い気味な話だが、Rhinoで動的な機能も使わず普通にコード書ても
Javaのリフレクションと同じことがスゲー簡単に書ける。

var pack = java.util;
とか
object["sub" + "string"]( 10 );
とかね。
798デフォルトの名無しさん:2011/10/01(土) 03:20:03.42
>>796
コンパイラもつければいっちょ上がり!
799デフォルトの名無しさん:2011/10/01(土) 03:28:22.40
>>797
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/scripting/programmer_guide/index.html#jsengine

RhinoとかSpiderMonkeyなんかのブラウザ以外の実装使ってしみじみ思うのは、
SleepとThreadがあるだけでJavaScriptがどれだけ便利になるか…ってことだな。
800デフォルトの名無しさん:2011/10/01(土) 03:31:17.85
>>799
スタンドアロンというかデスクトップでも結構使えるよな
801デフォルトの名無しさん:2011/10/01(土) 08:58:32.28
夜中の間に変な感じで議論が進んだんだな

モンキーパッチがもっとも活躍するのは
ユニットテストでモック/スタブを作るとき

まあ、テストしない土方には関係無いんですけどね
802デフォルトの名無しさん:2011/10/01(土) 09:50:26.78
パッチを当てたコードは
パッチをあてる前のコードと同じなの?
つまりちゃんとしたテストになっているのか?
803デフォルトの名無しさん:2011/10/01(土) 10:17:01.89
>>802
それはdllでもjarでも同じ問題があるね
バイナリファイルは中身を見るのがむずかしい
テキストは最高だぜ
804デフォルトの名無しさん:2011/10/01(土) 10:23:29.77
ユニットテストでモック/スタブを作るときに
モンキーパッチをするのは間違い。

モック/スタブを作るならば、同じインターフェースを
備えたラッパーを作るべき。

中身を見れることに依存すると、中身が見れない、
つまりソースコード非公開ライブラリでは使えない
汎用性のないテクニックになる。
805デフォルトの名無しさん:2011/10/01(土) 10:37:10.18
>>804
なんでホワイトボックステストができる対象まで
ブラックボックステストに限定せないかんの?アホなの?
806デフォルトの名無しさん:2011/10/01(土) 10:47:02.93
>>805
そういう話ではない。モンキーパッチはパッチ。
つまりオリジナルのソースコードの書き換えそのものなのだから、
モックやスタブの場合のみにパッチをあてるやり方では同じ動きにならない。
適用箇所を間違っている。

つーか、なんでもモンキーパッチという奴ってなんなの?
やってることをちゃんとわかってるのか。
807デフォルトの名無しさん:2011/10/01(土) 10:56:26.49
>>806
は?パッチって言葉から想像だけで書いてるだろ
808デフォルトの名無しさん:2011/10/01(土) 10:58:46.17
>>804
そのインターフェースとやらの方法で
privateなオブジェクトやメソッドローカルなオブジェクトを
オリジナルのソースコードに変更を加えずにモック化してみろ
809デフォルトの名無しさん:2011/10/01(土) 10:59:05.27
>>807
モンキーにそれほど重要なことが含まれてるのかw

つか、反論あるならちゃんと中身を言えよ。
810デフォルトの名無しさん:2011/10/01(土) 10:59:55.64
>>808
それはモンキーパッチでもできないじゃんw
811デフォルトの名無しさん:2011/10/01(土) 11:00:30.51
>>810
できる。余裕
812デフォルトの名無しさん:2011/10/01(土) 11:04:56.17
モンキーパッチはもともとゲリラパッチと呼ばれていたことからも解るように、
本当ならやらないほうがいいパッチなんだよ。

もちろん意味が無いテクニックくとは言わない。
だがそれは”普通のコード”で実現できなく、
外部のコードを自分の開発の制御下に
持ってこれない場合に行うもの。

テストなんてのは、自分が開発したコードに対して行うもので、
当然自分の開発の制御下に置くものだし、置けるはずのものなんだから、
そんなどうしようもない場合に用いるテクニックを多用する時点で、
自分が開発したコードがテストがしにくいコードになってると言わざるを得ない。
813デフォルトの名無しさん:2011/10/01(土) 11:09:20.63
落とし穴 [編集]

丁寧に作られていなかったり、ドキュメントが貧弱だったりするモンキーパッチからは、以下のような問題が引き起こされることがある:

状況が変わり、そのパッチが、変更される対象のオブジェクトに対して仮定していることがもう正しくなくなってしまった場合に、
アップグレードにまつわる問題が引きおこされる。もしもパッチを適用したプロダクトが新バージョンになって変更されると、
パッチが壊れて動作しなくなる可能性が高い。このような理由からほとんどの場合において、モンキーパッチは、条件をチェックして、適切な時だけ適用するように作られる。

もしも、同じメソッドに対して、2つのモジュールが同時にモンキーパッチを適用しようとすると、
それがalias_method_chainのようなパターンを使用して書かれていない限りは後から実行した方が"勝ち"、
もう片方のパッチは動作しない[4]。

モンキーパッチを適用すると、ディスク上の元のソースコードと、見た目の振る舞いが異なるため、
パッチの存在に気づかなかった人を混乱させる可能性がある。

例え使用されていなかったとしても、プログラミング言語内でモンキーパッチを適用できるということは、
強いカプセル化を強制することと両立しないため、モンキーパッチの機能の有用性は問題である、
と見る人も中にはいる。このオブジェクト間のカプセル化は、Object-capability_modelで必要とされる。
814デフォルトの名無しさん:2011/10/01(土) 11:10:58.05
モンキーパッチの落とし穴を知っている人、気づいている人なら
信頼性を担保するべきテストコードで
テスト時にだけモンキーパッチをあてる方法は
使えないとわかるはずなんだがな。
815デフォルトの名無しさん:2011/10/01(土) 11:13:20.04
>>801
> モンキーパッチがもっとも活躍するのは
> ユニットテストでモック/スタブを作るとき

お前、昨日 「eval(モンキーパッチ)」と
言っていたやつだろ?

お前はもう喋るなw
お前が喋るとどんどんふりになる。
816デフォルトの名無しさん:2011/10/01(土) 11:15:53.45
なんでもモンキーパッチでやろうとすんなハゲw
817デフォルトの名無しさん:2011/10/01(土) 11:25:17.60
ひどいな。叩かれまくりだな。




俺も仲間に入れろやwww
818デフォルトの名無しさん:2011/10/01(土) 11:49:33.29
>>808に反論できなくて発狂してんのか?w
819デフォルトの名無しさん:2011/10/01(土) 11:49:55.40
>>806
>そういう話ではない。モンキーパッチはパッチ。
>つまりオリジナルのソースコードの書き換えそのものなのだから、

根本のスタートが間違ってるから、Wikipwdiaで急遽調べたわけでも無さそうだな。
820デフォルトの名無しさん:2011/10/01(土) 12:29:48.12
書き込みから漂う圧倒的な土方臭から
>>812-817が同一人物だと分かる。
821デフォルトの名無しさん:2011/10/01(土) 14:00:15.33
>>820
それを言うことは、お前にとって重要だったのか?
822uy:2011/10/01(土) 14:11:00.73
本当にお前たちって、知能低いんだなって思う

ここ100レスでやたら同じ単語が連呼されてるけど

お前らがサルに見えるよ
同じ単語を何度も連呼してるのは頭が悪そうに見えるからやめたほうがいいよ
実際に悪いいんだろうけど
823デフォルトの名無しさん:2011/10/01(土) 14:26:47.46
悪いいって結局いいのか悪いのか
824デフォルトの名無しさん:2011/10/01(土) 18:16:48.95
>>775
拡張メソッドなんて、Objective-CのCategoryと同じで、
全然動的言語の代用にならねぇじゃねぇか。
拡張性のある言語デザインの話であって
動的静的の問題点とは完全に別物
825デフォルトの名無しさん:2011/10/01(土) 18:35:35.74
>>824
どうも、理解能力が足りないみたいだね。

ほんとうの意味で動的言語が必要な場面は少ない。
例えばオブジェクトにメソッドを付け加えるのは
動的言語である必然性はないってことだよ。

君はどうしても動的言語でなければいけない例を上げればいい。
俺はそれを静的に解決する方法を考えるだけの話。
拡張メソッドのように静的言語で解決する方法はあるはずだ。
826デフォルトの名無しさん:2011/10/01(土) 18:44:20.27
オブジェクトにメソッドを追加したり、クラスを拡張したり
するだけなら動的処理必要ないだろ。テンプレートで十分だ。
そもそもOO関係で動的機構が必要になる機械は無い。
動的言語機能が必要になるのは、もっと原始的なレベルの話。
827デフォルトの名無しさん:2011/10/01(土) 18:48:31.63
そう。たとえば動的言語はアセンブラのようなもの。
828デフォルトの名無しさん:2011/10/01(土) 18:50:59.04
コードを実行時に書き換えたいと思ったのは
何十にも暗号化されたプロテクトコードが
自分自身の暗号を解除している処理の途中に割り込んで
動的にパッチあてていった時ぐらいだよな。
829デフォルトの名無しさん:2011/10/01(土) 18:59:49.60
いいえ
830uy:2011/10/01(土) 19:01:02.03
動的に書き換えなきゃならないケースってのは

起動に時間のかかるようなプログラムや
頻繁に小さな変更を与えて行かなくちゃならないようなやつだよ

お前たちみたいなゴミッカスが触れる機会はないと思うから気にしなくていいよ
831デフォルトの名無しさん:2011/10/01(土) 19:10:37.34
>>830
具体的に、どの製品の話をしているのですか?
832デフォルトの名無しさん:2011/10/01(土) 19:14:54.83
例えばプラグイン的な仕組みを作った静的言語・・・C言語とかは
静的言語でいいんだよな?
833デフォルトの名無しさん:2011/10/01(土) 19:24:31.94
ソースレベルで操作できることが動的言語の最低条件だろ。
動的言語で作成したバイナリーは、それ自身が動的言語の
インタプリタとして動作するように作れなきゃならない。

無論動的言語でも、外部からソースを読み込ませて動的機能に掛ける
コードを書いてなけりゃ無理だがそれは別の話。
834デフォルトの名無しさん:2011/10/01(土) 19:30:21.52
ミッションクリティカルなところじゃ再起動みたいなことやってれば
オワコンじゃろ?
そんな時は動的書き換えができることって重要じゃよ。
たった数秒のリセットのお陰で、宇宙空間のどこかに飛んでいったとか
たった数秒のリセットで相手のミサイルから逃げられなくぶち落とされた
じゃどうなる?
835デフォルトの名無しさん:2011/10/01(土) 19:40:01.93
>>834
あほか。

ミッションクリティカルなら、動的に書き換えるなんて
馬鹿やるわけがないだろ。元に戻せないだろうが。

本当にミッションクリティカルなら
待機系サーバを用意して切り替えとか
そういうふうにして修正を行うんだよ。

やっぱり素人かよ。
836デフォルトの名無しさん:2011/10/01(土) 19:41:16.96
俺は動的言語も使うけど、これは>>835の言う通りだと思う
837デフォルトの名無しさん:2011/10/01(土) 19:44:54.82
>>834
だからお前はしゃべるなって言われただろ?w
838デフォルトの名無しさん:2011/10/01(土) 19:47:42.11
ミサイルから逃げるなにかを制御するプログラムを動的にパッチ当てるってどういう状況
839デフォルトの名無しさん:2011/10/01(土) 20:04:21.82
べつにいいんじゃよ煽りを相手にしてるからじゃ
840デフォルトの名無しさん:2011/10/01(土) 20:10:02.52
>>838
素人の考えることだからなwww

ミサイルハッキングされました!
なに? 正常プログラムで上書きするんだ!
書き換え完了、再起動命令送信!・・・再起動、間に合いません!
ちくしょーちくしょー動的言語に、動的言語にさえなればー!

とかそういうアニメでも妄想してんだろw
841デフォルトの名無しさん:2011/10/01(土) 20:22:56.13
そんなのどうでも良いから>>808を静的にやってみろって
842デフォルトの名無しさん:2011/10/01(土) 23:32:00.34
>>841
例として動的言語でどうやるのか
書いてみて。
843uy:2011/10/02(日) 05:07:16.09
>>831
こういう勘違いゴミカスっているよな
ここは「ム板」であって、仕事の話ならマ板にいけよゴミ
製品だぁ?


たとえば動的にコード書き換えたいと思うのは2chBOTだな
荒らしやってると、結構すぐに対策してくるんだよ

まぁミサイルの話もでたけど、
「目標」が、動的にプログラムを変えてくるなら、
こっちも動的にソースコードを変えていきたいわけだよ

何らかの「イレギュラー」が発生する可能性の高い場面では動的に書き換えられないで再起動なんてお話にならない
844デフォルトの名無しさん:2011/10/02(日) 06:24:42.58
低俗な話がしたいなら、C++ならマクロでアクセス指定子書き換え、
オフセット調べて書き換え、JavaならsetProperty

まともに答えると、普通は動的書き換えなんて考える前に再設計
依存部分を抽象化(インターフェイスに)して分割、後から注入
メソッド変更したいなら継承

不可能ならそれが設計
テスト内容自体が間違ってるわけで、動的、静的関係ない
845デフォルトの名無しさん:2011/10/02(日) 06:42:12.02
>>843
動的に設定変えられればいいだけで、もはや言語すら関係ないな
プログラミングすらできるか疑わしい
846デフォルトの名無しさん:2011/10/02(日) 14:54:22.43
>>838
えーと…ガンダムSEEDとか?
847uy:2011/10/02(日) 15:17:44.77
>>845
うわぁ・・・・・・・・・ 本日の一番の恥さらし決定

あのさぁ、そこまですべてのコードを洗練させれるなら
動的にコード変更したい! なんて誰も思わないわけよ

イレギュラーって言葉の意味わかってないな ゴミッカスには早い話だって最初から言ってたけどね 俺は。
下手に噛み付くから、そうやって恥ずかしいことをかいちゃう
848uy:2011/10/02(日) 15:21:55.11
初心者にありがちなのは
「すべてのコードを完璧に」なんだよ

そりゃ、全部完璧に、いつも完璧にかけるなら それでいいさ
しかし、実際には「 本 番 は そ こ ま で 甘 く な い 」
クラックにしても相手が対応してくる前にスクリプト完成させて攻撃するんだよ
オブジェクト指向が・・・えーと・・・クラス?
なんてやってる間に対策される

最低限読める程度のコードで、さっさと作るんだよ 外部ファイル読みだし? そんなことやってる暇はない

仕事もそこまでシビアではないにしても、時間との勝負って面では同じだね。いくらでも時間かけていいなら
完璧にできるさ。 学校は卒業しろよ?
849デフォルトの名無しさん:2011/10/02(日) 16:55:59.30
おまえも就職しろよ。アーキテクチャーを自然に考えられないと、猿にタイプライター叩かせてるのと変わらんからな。
850デフォルトの名無しさん:2011/10/02(日) 16:56:52.51
うむ同意
851デフォルトの名無しさん:2011/10/02(日) 18:37:32.20
結局安全性の話は何処へ行ったんだ?
852デフォルトの名無しさん:2011/10/02(日) 21:00:19.16
それは動的型付け言語スレへ行ったんじゃね
こっちのスレのほうが隔離スレっぽ
853デフォルトの名無しさん:2011/10/02(日) 21:59:57.35
uyは最高に使えない奴
技術的な話になるとすぐ逃げ出すし
854デフォルトの名無しさん:2011/10/02(日) 22:32:02.27
時間かけたらできるって言う奴はまずできない。
855デフォルトの名無しさん:2011/10/02(日) 22:35:06.78
>>854
じゃあお前はテトリス作れるか? 1時間で。
856デフォルトの名無しさん:2011/10/02(日) 22:46:16.26
じゃあって
857デフォルトの名無しさん:2011/10/02(日) 22:58:11.10
>>855
なんで俺に聞くの?
858デフォルトの名無しさん:2011/10/02(日) 23:00:02.34
>>857
「時間かけたら出来るっていう奴はまずできない」と言ったから
お前はこの質問になんて答えるか知りたかったからさ、
859デフォルトの名無しさん:2011/10/03(月) 01:52:45.02
>>858
「それだけじゃ見積もりできませーん」
860uy:2011/10/03(月) 02:04:11.61
>>853
たとえば?

もしかしてお前さ、
俺がいろんな場所にレスしてるの知らなくて

uyはこのスレしか見てないとか思ってないよね?

悪いけど、俺マ板ム板の99%のスレッドに書き込んでると思うお

そんなのをいちいち全スレのレスチェックしにこねーから ゴミか? バカか?

何か言いたいことあるなら早めに言ったほうが良いよ
861デフォルトの名無しさん:2011/10/03(月) 03:38:17.01
99%は言い過ぎって分かってて言ってるでしょおまいさん
別に常に自分の書き込みがおもろいとでも自負してんなら良いのよ、他人が云々するこっちゃない

本当の問題はおまいさんの書き込みが日々つまんなくなってる点だよ
なんか悪いのか?
クズでも言える煽りはクズに任せとけばいんじゃね
862デフォルトの名無しさん:2011/10/03(月) 04:11:50.85
今も昔も無能である事は変わんないけど
恥知らずだったのが恥を知りはじめちゃったのが
つまらなくなった原因じゃないかな
きっと、ちん毛が生え始めたんでしょう。
863デフォルトの名無しさん:2011/10/03(月) 04:26:04.68
恥ん毛?
864uy:2011/10/03(月) 06:14:44.61
>>861
リアルに99%のスレに書き込んでるよ
毎回コテなわけじゃないし

煽りがつまらなくなってるって感じるならお前は観察力が高い
なんか最近めんどーになってきたから、すげー勢いまかせでかいてる
以前は「あ、これ投下したら10人中8人相手をイラつかせることができるな」って文章を考えてたけど
最近は10人中5人程度をイラつかせるような ワード を文章に入れ
あとは適当に文字数を稼ぐために駄文詰め込んでるだけ

俺が言うのもなんだけど、こんな適当にかいてるレスを読んでる奴って、物好きだなと思う
865デフォルトの名無しさん:2011/10/03(月) 10:46:56.84
時代はc#とruby。
866デフォルトの名無しさん:2011/10/03(月) 12:47:51.52
>>865
俺もこれからの時代のドカタ言語はその2つになるんじゃないかと思ってる
867デフォルトの名無しさん:2011/10/03(月) 13:10:23.47
ドカタ言語とか言って差別する奴ほどろくなコードを書かないよな。何を使ってもw
868デフォルトの名無しさん:2011/10/03(月) 13:38:52.14
時代はjavaとjavascript
869uy:2011/10/03(月) 13:55:24.59
差別っつうか
単純に使いたくない 触れたくないない だけかな

ドカタ言語ってまだやさしい表現でさ

真実を言っちゃうと ゴミ言語 ってことだよ でもそれだと
言葉が少しきついから、譲歩してドカタ言語って言っているだけなのに
870デフォルトの名無しさん:2011/10/03(月) 14:05:56.33
jsとPHP、Rubyあたりはウェブドカタ言語だね
871デフォルトの名無しさん:2011/10/03(月) 15:36:31.31
え?土方言語って給料のためにコード書く場に適した言語のことじゃないのか
一概に馬鹿にしてるとは言えん気もしてたんだが
872uy:2011/10/03(月) 16:28:22.38
いのなかのかわず
873デフォルトの名無しさん:2011/10/03(月) 17:36:18.20
田舎の川の図
874デフォルトの名無しさん:2011/10/03(月) 20:51:17.18
つか、言語で土方とかきまんねーよw
どういう理屈で決まるんだよ。
875uy:2011/10/03(月) 21:10:10.70
>>874
少なくとも言語で「土方ではない」は決まるよ
決まるよ
876デフォルトの名無しさん:2011/10/03(月) 21:22:40.16
単に、俺が使いたくない言語ってだけだろ。

はたから見れば、好き嫌いにすぎないのに、
自分のわがままであることを認めたくないから
土方言語なんてのがあるかのように言い張る。

結局は、土方言語なんて言っている人の
心の弱さの現れなんだよ。
877デフォルトの名無しさん:2011/10/03(月) 21:27:38.01
「お前の母ちゃんデベソ」みたいなもんだよな。
878デフォルトの名無しさん:2011/10/03(月) 21:30:07.21
好んで使いたい訳じゃないがちょくちょくphp案件回ってくる。
こればかりは好み関係なく土方言語だと思うわ。
879uy:2011/10/03(月) 22:16:41.55
>>876
うまくまとめに入ってるwwww

お前ほんと心弱いな
もしかしてJAVAが折れたらお前も折れちゃうの?

そりゃあ悪いことをした











折れろゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
880デフォルトの名無しさん:2011/10/03(月) 22:20:34.38
その必死さが、心が弱いと・・・
881デフォルトの名無しさん:2011/10/03(月) 22:47:22.28
頭良い奴はプログラマーにならないよな普通。
882uy:2011/10/03(月) 22:53:34.60
>>881
全力同意


883デフォルトの名無しさん:2011/10/03(月) 23:51:52.19
せやな

反論できんわ
884デフォルトの名無しさん:2011/10/04(火) 00:30:12.26
土方A 「やっぱスコップ最強だよなー」
土方B 「あ!?ツルハシが使いやすくて良いに決まってるだろ」
土方C 「複式ショベルが早くていいとおもうんだけど」
885デフォルトの名無しさん:2011/10/04(火) 00:33:59.74
現場監督「アホかこの現場にあるもんでやるしかなかろうが手え動かせ手え」
886uy:2011/10/04(火) 04:58:31.34
土方は考えなんてないからね

真っ直ぐにしか走れない


真っ直ぐにしか走れない頭の悪い土方をどうやって使うかが上の仕事
生かすも殺すもさじ加減
887デフォルトの名無しさん:2011/10/04(火) 08:11:36.53
優秀な人が
道具に拘るのは
極普通のこと。
888デフォルトの名無しさん:2011/10/04(火) 08:22:53.03
○的言語みたいな大雑把な特徴では拘りが足りない。
889デフォルトの名無しさん:2011/10/04(火) 08:55:47.64
>>887
それは間違ってるよw
890デフォルトの名無しさん:2011/10/04(火) 09:07:24.40
>>889
なんで間違ってるの?
お前が道具に拘ってないのは、お前が優秀じゃないだけのことだろ?
891デフォルトの名無しさん:2011/10/04(火) 09:19:24.76
>>890
きみは否定されるとテンション上げて反論してくる典型的なダメプログラマーだね。
疲れるプログラマーの相手は現場だけにしたいところw

まさか土方でさえ分かることを反論されるとはw
892デフォルトの名無しさん:2011/10/04(火) 09:21:49.35
道具に拘らない優秀な人って誰?例くらい挙げられるでしょ?
893デフォルトの名無しさん:2011/10/04(火) 09:33:07.08
日本人で本当に優秀なプログラマーだったら、アメリカ行ってるだろうからな。
ゲームすら通用しなくなった日本企業に世界的なソフトウェアは存在しないし、
プログラマーじゃ収入もたかが知れてる。
894デフォルトの名無しさん:2011/10/04(火) 09:40:26.87
道具に拘らないなら動的言語でも静的言語でもどっちでも良いってことか
このスレ要らんな
895デフォルトの名無しさん:2011/10/04(火) 09:50:29.75
その発想はなかった
896デフォルトの名無しさん:2011/10/04(火) 11:27:51.54
どっちも良いという考えは駄目なの?
拘りなんて捨てて、状況に応じて使う奴のが優秀だと思うんだが。
897デフォルトの名無しさん:2011/10/04(火) 11:40:38.93
状況に応じて使い分ける奴は「道具に拘ってる」
898デフォルトの名無しさん:2011/10/04(火) 11:41:48.04
一つの道具に拘るだけが拘りじゃないからな
使い分けることに拘るのも道具、手段に対する拘りといえるな
899デフォルトの名無しさん:2011/10/04(火) 11:47:29.33
手段に拘るというメタ手段への拘り
900デフォルトの名無しさん:2011/10/04(火) 12:01:05.63
>>881-882
それでも、数学者や理論物理学者は狭き門なので、それに成り得なかった様な
人がプログラマーになったりはすると思う。そういう人は、他の分野の研究者
には、もっと成りたくないから。
901デフォルトの名無しさん:2011/10/04(火) 12:09:32.14
>>896
そんなのみんなわかってるわけで

暇潰しのスレでなに言ってんの?

さて、今日は動的厨でもやるかなw
かかってこいよ静的厨
902デフォルトの名無しさん:2011/10/04(火) 12:22:07.04
「弘法筆を選ばず」の空海は状況に応じて筆を使い分けたそうな
そして「良工は先ずその刀を利くし、能書は必ず好筆を用う」という言葉を残してる
903デフォルトの名無しさん:2011/10/04(火) 12:30:09.53
まあ、散髪屋でも多種類のはさみを使い分け、名職人も独自の自作の
道具を使うことは事実。

でも、プログラミングに置いては、さて、どうかなと疑問に思う
な・・・。
904デフォルトの名無しさん:2011/10/04(火) 12:35:31.94
今までに自分で作った関数群の蓄積が役に立つこともあるので、
言語をころころと変えるのは非効率と言うこともあるかな。
その辺が、ハサミやノミなどとは違う理由かも。
905デフォルトの名無しさん:2011/10/04(火) 12:52:34.97
>>881-882
Googleに入社するためのIQは、あらゆる企業の中で最も高いそうだ。
他の調査でも、プログラマより頭がいいと思われるのは、
理論物理学者と数学者くらいらしい。

給料の高さと頭の良さは必ずしも関係ない。やりたい職業をやっている
人も多いから。
906デフォルトの名無しさん:2011/10/04(火) 12:57:00.80
「拘る」が肯定的な意味だと勘違いする
のが多いのは、マスゴミ脳って奴だな。
907デフォルトの名無しさん:2011/10/04(火) 12:58:06.14
システム手帳極薄カード型電卓とか、極端にニッチな道具も面白いものよ。
908デフォルトの名無しさん:2011/10/04(火) 13:01:25.52
>>905
このスレで言う「プログラマ」ってGoogleのエンジニアのようなひとのことなんだ
知らなかったよ
909デフォルトの名無しさん:2011/10/04(火) 13:10:20.46
>>908
「Googleのエンジニア==プログラマ」

でないとしたら何なんですか?
910デフォルトの名無しさん:2011/10/04(火) 13:13:45.99
ネットワークエンジニアとか自然言語処理研究者とか、研究者はエンジニアじゃないか。
いずれにしろGoogleで技術系の仕事をしてるからといってプログラマとは限るまい。
911デフォルトの名無しさん:2011/10/04(火) 13:20:37.36
>>910
研究者は研究者であって、一般医「エンジニア」とは言わない。
また、ネットワークエンジニアが、プログラマに比べて優秀だとは
全く思えない。創造性がなく、事務処理やっている様に思える。
912デフォルトの名無しさん:2011/10/04(火) 13:22:21.98
>>908
プログラマと区別するために"IT土方"という用語があるんじゃないか
913デフォルトの名無しさん:2011/10/04(火) 13:22:51.32
職人とライン工の違いみたいなものか
914デフォルトの名無しさん:2011/10/04(火) 13:26:46.00
>>910
優秀でも頭が良くても、ネットワークにも、自然言語にも興味が
ない人は、他のソフトを作りたいと思うと思うけど。
915デフォルトの名無しさん:2011/10/04(火) 13:26:58.90
Google以外のプログラマは全部ドカタか。
恐ろしい世界だ。
916デフォルトの名無しさん:2011/10/04(火) 13:27:12.09
>>904
言語間で相互運用できる場合も多々あるので、一概に非効率とは言えない
917デフォルトの名無しさん:2011/10/04(火) 13:29:04.03
スター俳優だけで舞台が成り立ってるわけでもなしに
918デフォルトの名無しさん:2011/10/04(火) 13:42:31.52
土方がいないとビルだってできないんだからお前ら胸はってプログラマーですって言っても良いんだよ。
919デフォルトの名無しさん:2011/10/04(火) 13:47:03.98
ハードからソフト(プログラム)へ重要性が高まっているのに、日本は旧態依然
としたハード重視だと言われている。今後ソフトの重要性はますます高まると
考えられているのに、「プログラマに頭のいい人はならない」なんて思う人
がいるのは非常に問題。パソコンに触ったことが多い日本では、プログラマが
何をやっているのか分からない人が多いので、馬鹿にされる。そして、優秀な
人からやめていく。それで、日本のソフトは弱いまま。
920デフォルトの名無しさん:2011/10/04(火) 13:49:52.43
日本には舞台そのものがないからな
日本でプログラマといえばドカタに決まっとる
921デフォルトの名無しさん:2011/10/04(火) 13:53:04.81
>>920
学校での成績も良くて、医者でも何でも慣れたが、ソフトが作りたくて
プログラマになりたい人もいるんだよ。実際に舞台が少なくても。
そういうレッテル張りは、今後の若手にも、日本の将来にとっても
マイナスになる。優秀な学校、優秀な成績で学校を卒業しても、
いざ就職しようとすると、良いソフト会社がない、なんて状況が
実際に起こっているが。
922デフォルトの名無しさん:2011/10/04(火) 13:59:04.94
日本にいる天才プログラマは
アフリカにいるイチローみたいなもん
923デフォルトの名無しさん:2011/10/04(火) 14:00:55.02
東大東工大京大阪大で、世界に通用するクラスのコンピュータサイエンスやって、
そういった連中をごっそり獲ってくメーカーが、しかしそこに入ってみたら下請けを
マネジメントするお仕事。

これじゃあIT3流国まっしぐらになるのも当然です。
924デフォルトの名無しさん:2011/10/04(火) 14:02:40.84
世界に通用するクラスのコンピュータサイエンスやっている人間が
ごっそり獲るほどいるのかねえ
925デフォルトの名無しさん:2011/10/04(火) 14:06:27.09
イチローがアフリカで生まれたら
いまごろ裸で洞穴で住んでたんじゃないかな
926デフォルトの名無しさん:2011/10/04(火) 14:09:34.96
>>923
色んなケースがあるとは思うが、IBMなんて、ソフト作りを止めてしま
い、企業のサポート役(何でも屋に近いと思われ)に徹するようになって
しまったらしいが。オープンソースの台頭でソフトで儲けるのは難しく
なってきている。

FireFoxも、成果をごっそりGoogle Choromeに持って行かれてしまい、
倒産する恐れ有り。オープンソースは設計図をいつでも盗まれるので
予想できたことだが。そもそも、FireFoxの収益は、Google検索を
使うとFireFox陣営に還元される仕組みによっており、Googleが
金を出さなくなったらFireFoxは倒産するので、非常に危険性の
高いやり方。
927デフォルトの名無しさん:2011/10/04(火) 14:12:57.78
それは何か関係ある話なの?
オープンソースが台頭する前から
日本の企業はカスなわけだけど
928デフォルトの名無しさん:2011/10/04(火) 14:17:04.59
>>927
ますます参入しにくくなったと思う。
929デフォルトの名無しさん:2011/10/04(火) 14:20:44.50
下請を安くこきつかって儲ける仕組みにしたのは経産省
原発もそうなってる
930デフォルトの名無しさん:2011/10/04(火) 14:22:00.04
誰かが舞台を用意してくれるのを待てないなら、自分の力試しから始めたら良い。
931デフォルトの名無しさん:2011/10/04(火) 14:23:20.91
舞台で演じるのと舞台を作るのとでは大変さが違う
932デフォルトの名無しさん:2011/10/04(火) 14:25:03.66
人任せじゃいつ迄も止まったままだけどな。
933デフォルトの名無しさん:2011/10/04(火) 15:03:41.21
「政治家には優秀な人がなるわけなんてない」と思いがちだが、
片山さつき は、全国模試で1番、1番、1番だったらしいし、
鳩山邦夫 は、全国模試で1番、3番、3番だったらしい。
このように、成りたい職業は、人それぞれ。
934デフォルトの名無しさん:2011/10/04(火) 15:17:54.02
chromeがfirefoxから何を持ってったんだというのだろう
935デフォルトの名無しさん:2011/10/04(火) 15:21:16.51
>>934
Mozillaの成果は全て持って行ったのでは?
936デフォルトの名無しさん:2011/10/04(火) 15:27:54.51
HTMLパーサや、JavaScriptエンジンなどは、Mozilla由来じゃないの?
FireFoxの成果は全く入ってないのかな?
937デフォルトの名無しさん:2011/10/04(火) 16:00:28.21
FirefoxはNetScape=Mozilla由来、GoogleはWebkit (KDE)
JavaScript自体、NetScapeが作ったものだから全く入ってない事はないが、
そもそもFirefoxなんてお手本になるほどきれいな仕様じゃないだろ。
互換性ぐちゃぐちゃなんだから。
938デフォルトの名無しさん:2011/10/04(火) 16:09:12.84
つってもECMA仕様になったもんだし
V8は新規開発でしょ
接点無いな
939デフォルトの名無しさん:2011/10/04(火) 16:25:49.03
> 色んなケースがあるとは思うが、IBMなんて、ソフト作りを止めてしま
> い、企業のサポート役(何でも屋に近いと思われ)に徹するようになって
> しまったらしいが。オープンソースの台頭でソフトで儲けるのは難しく
> なってきている。

誰に騙されてるか知らんが、
ttp://www-142.ibm.com/software/products/us/en/atoz
全部が全部自社製というわけじゃないが、というか、ヨソ製の「取扱い製品」も多いけど。
940デフォルトの名無しさん:2011/10/04(火) 16:29:40.62
>>937
しかし、もしFireFoxやMozillaがオープンソースでなければ、
Google Chromeが出来ることもなかったと思う。
941デフォルトの名無しさん:2011/10/04(火) 16:30:50.07
>>939
IBM自身が、収益の柱がサポートになった、と言っているよ。
942デフォルトの名無しさん:2011/10/04(火) 16:35:54.98
>>937
>FirefoxはNetScape=Mozilla由来、GoogleはWebkit (KDE)

後半は、意味不明。KDEやWebkitが一体なんだというの?
943デフォルトの名無しさん:2011/10/04(火) 16:36:56.05
>>936>>926だったのか?
信者がこんな妄想癖だからFxが厨ブラウザ認定されるんだよな。
mxrでいいからMozillaのソースを一回読んでみ。
C++だけど難しくはないから。
944デフォルトの名無しさん:2011/10/04(火) 16:49:18.89
あ、プラグインの実装はまんまMozillaだったかも。
一時期そんな話題があったような。
945942:2011/10/04(火) 16:49:45.08
>>943
なるほど、

>WebKit(ウェブキット)は、アップルが中心となって開発されている
>オープンソースのHTMLレンダリングエンジン群の総称である。
>HTML、CSS、JavaScript、SVGなどを解釈する。
>WebKit は、元々Appleの Mac OS X に搭載される Safari のレンダ
>リングエンジンとして、Linux や BSD といった、UNIX系用のレンダ
>リングエンジンである KHTML をフォークして開発された。現在は
>その他の多くのプラットフォームに移植されている。

でしたか。でも、オープンソースなエンジンを使っていて、
やはり、Googleが自分で開発したわけではないんですね。
946デフォルトの名無しさん:2011/10/04(火) 16:52:26.21
system zのメンテで食って行ってる人達がうらやましい
947デフォルトの名無しさん:2011/10/04(火) 16:53:02.57
いずれにせよ、オプソの台頭によって、FireFoxが収益面でが窮地
に立たされる事になった事は事実なんですね。自分もオプソだから、
文句を言うことも出来ない。
948デフォルトの名無しさん:2011/10/04(火) 17:00:32.32
あのさ、そもそもOSSなんてそんなもんよ?
CanonicalだってWikimediaだって資金繰りで苦しくなってるだろ。
949デフォルトの名無しさん:2011/10/04(火) 17:05:42.01
OSSは、採用した人だけでなく、全てのソフト開発者の収益を
悪化させるだろう。
950デフォルトの名無しさん:2011/10/04(火) 17:12:27.75
フリーソフトヘイターの集会場はここですか?
951デフォルトの名無しさん:2011/10/04(火) 17:50:13.66
OSSの台頭によって、パッケージ・ソフトで収益を得ることは難しく
なると経産省も認めている。サービスやメンテを行わないと駄目だ
そうだ。

しかし、作り手としては、パッケージソフトそのもので食っていき
たいと人も多かろうから、若い人は大変になるよ。
952デフォルトの名無しさん:2011/10/04(火) 17:57:53.27
経産省のアホの言うこといちいち気にしてんなよ
953デフォルトの名無しさん:2011/10/04(火) 17:59:02.40
FD(っていうソフトね)があるために商品レベルのファイル管理ソフトがなかなか出てきません、
って何年前にあった話だよ。業界の動向を何年間全く知らないで今日まで生きてきた奴なんだよ。

ほんとにもう。
954デフォルトの名無しさん:2011/10/04(火) 18:02:29.61
>>953
オプソはそれより深刻だと思うけど。
955デフォルトの名無しさん:2011/10/04(火) 18:49:47.27
OSSのおかげで開発者間の格差が拡がった

めしうま
956デフォルトの名無しさん:2011/10/04(火) 18:57:08.55
図書館には置けないような本が売れるみたいな
そういうことは普通にあるし特に深刻ではないだろう
957デフォルトの名無しさん:2011/10/04(火) 22:01:35.26
>>955
昔は、コンピュータ・ソフトは、力のある個人が大企業に対抗できる
傾向があったのに、最近では、AppleやGoogleなどの大企業が台頭するよう
になったように感じる。FireFoxがGoogleから支援を受けるなど、大組織
ならではのやり方を行ってやっと食っていけるとか、Appleなどハードが
あるのでソフトが売れなくてもいい企業、Googleなど検索用の大型施設を
持つ企業など、ソフトそのものではない政治的な力がないと行けなくなった。
958デフォルトの名無しさん:2011/10/04(火) 22:05:39.58
> Appleなどハードが> あるのでソフトが売れなくてもいい企業
アフォですか? あの look&feel なくしてどこが Apple ですか?
ある意味, ソフトだけで勝負してる会社です.
959デフォルトの名無しさん:2011/10/04(火) 22:09:02.42
>>958
でも、無料でダウンロードしてPC/AT互換機でMac OS Xが動かせるわけ
じゃないから、ハードが売れることで集金できる仕組みがある。
960デフォルトの名無しさん:2011/10/04(火) 22:40:19.27
>>953
FDははっきり言って誰でも作れる様な物であった。

それと、>>945にあるような
「HTML、CSS、JavaScript、SVGなどを解釈するHTMLレンダリングエンジン群」
などは、おいそれとは作れる様な物ではない物がソース公開されている
事とは全く異なる。
961デフォルトの名無しさん:2011/10/04(火) 23:36:13.48
プログラムはコピーできるんだから大量の開発者なんていらんわな
穴を掘って埋める仕事が待たれるお
962デフォルトの名無しさん:2011/10/05(水) 03:37:34.76
オープンソースの台頭とFirefoxの収益減というのの関連性がまったく分からないんだが。
963デフォルトの名無しさん:2011/10/05(水) 07:09:13.67
ヘイト厨の論理だからな
964デフォルトの名無しさん:2011/10/05(水) 08:42:11.67
>>962
すぐに他のチームに置き換わるということです。
965デフォルトの名無しさん:2011/10/05(水) 11:46:51.22
>>964
Firefoxの開発者が置き換わってるわけではないだろ
966デフォルトの名無しさん:2011/10/05(水) 11:51:06.34
OSSは今も昔も金持ちと持ちつ持たれつの関係だよ。
ルサンチマン抱えるのはいいけど、他人に迷惑はかけるなよ。
967デフォルトの名無しさん:2011/10/05(水) 12:50:00.23
>>965
Firefoxの収益が悪化し、今後、Google Chromeへとバトンタッチし
て行き、Firefoxの開発は終了するのではないでしょうか。
968デフォルトの名無しさん:2011/10/05(水) 12:53:28.50
>>966
まあ、金儲けの手段ではなく、遊びで作る人の集まりかも知れません。
その意味で、OSS開発者は親の財産や資産が豊富にある金持ちという
のは当たっているかも。

「ルサンチマン」というのは自分より優れた物に対する僻み・やっかみ
の事ですが、単に親が金持ちというだけで「本人が優れている」訳で
はないので今回はそれに当たらないでしょう。
969デフォルトの名無しさん:2011/10/05(水) 13:06:26.59
しかも、OSS開発には、誰でも参加出来るので企業には採用されない
無能プログラマでも、「俺はOSS開発者」と虚勢を張るには適している
仕組みです。0.001%でも開発に関与したなら、
「俺はあのソフトを作った」と言えますし。
商用ソフトなら、そんな余剰人員は雇うわけにはいきませんので、
OSSの存在があってこそ活躍の場がある人もいるのでしょう。
そういった人が、本当の凄腕プログラマよりも圧倒的に多いために
OSS賛同者が増えるのでしょう。

OSS賛同者が多い理由は、「自分の作った物を凄腕プログラマが作った
物より重視する」心理が働いているらしいです。
970デフォルトの名無しさん:2011/10/05(水) 13:16:34.39
自分で作った物は原価で手に入る
これは真理です
971デフォルトの名無しさん:2011/10/05(水) 13:28:44.41
GCCも何も、一切使わない凄腕企業

胸が熱くなるな
972デフォルトの名無しさん:2011/10/05(水) 13:53:54.79
僻み根性丸出しでアホなことを書き散らす前に、
この文章でも読みましょうね
http://japanese.joelonsoftware.com/Articles/StrategyLetterV.html
973デフォルトの名無しさん:2011/10/05(水) 13:58:20.41
>>972
文系の人、大したプログラミング能力もない人が妄想して書いた
OSS界隈では良くある文書ですね。
974デフォルトの名無しさん:2011/10/05(水) 14:17:04.29
>>973
>文系の人、大したプログラミング能力もない人が妄想して書いた
>OSS界隈では良くある文書ですね
それこそ根拠も説得力もないです。

もし、自分の無能さを感じて愚痴っているだけなら、
早々に認めたほうがあなたのためになりますよ。
975デフォルトの名無しさん:2011/10/05(水) 14:25:27.67
>>974
プログラミング能力が高いなら、それを示す証拠を提示しないと。
976デフォルトの名無しさん:2011/10/05(水) 14:28:21.41
Java土方に能力を疑われるなんてJoelも災難だなw
977デフォルトの名無しさん:2011/10/05(水) 14:29:26.10
>>975
作為的としか思えないw
記事に関しては俺が出したわけじゃないから何も言わん
978デフォルトの名無しさん:2011/10/05(水) 14:31:25.41
今までの発言を地で言ってるならLDかもしれんな
ASは文章能力高い奴多いらしいから
979デフォルトの名無しさん:2011/10/05(水) 14:36:42.40
サブプライムローン破綻前で、金融幻想を信じている段階の記事。
当時のアメリカでは金は増え続けると信じられていた。
980デフォルトの名無しさん:2011/10/05(水) 14:42:06.99
つまり、私が無償かつ無料でJavaのオープンソースライブラリを書いて公開することは、
プログラミングのコモディティ化であり、プログラマにとっての禁忌であると同時に
テロ行為である、ということですね。分かります。

端的に言って、まさにそれが狙いです。
981デフォルトの名無しさん:2011/10/05(水) 14:46:23.38
お前の書いたクソJavaコードには価値が無いから
その例えは正しくない
982デフォルトの名無しさん:2011/10/05(水) 14:47:36.68
破綻後もMercurialだのGitだのを絶賛してるわけだが
あんたは俺より無能なのかい?
983デフォルトの名無しさん:2011/10/05(水) 14:57:58.02
サイレントテロは正義
984デフォルトの名無しさん:2011/10/05(水) 15:42:07.83
>>972
>現実:彼らがそうしているのは、IBMがITコンサルティング企業になろう
>としているからだ。ITコンサルティングというのはエンタープライズ・ソ
>フトウェアの補完財だ。したがってIBMはエンタープライズ・ソフトウェアを
>コモディティ化する必要があり、そのための最良の方法はオープンソースを
>後押しすることなのだ。そして見よ、彼らのコンサルティング部門はこの
>戦略で大儲けしている。

これを見ると、>>926 の前半は完全に正しいことが分かる。
985デフォルトの名無しさん:2011/10/05(水) 15:44:35.64
>文系の人、大したプログラミング能力もない人が妄想して書いた
>OSS界隈では良くある文書
なんだろ?
お前人を侮辱しておいて成果だけかすめ取るとか最低だな。
986デフォルトの名無しさん:2011/10/05(水) 16:31:37.21
>>985
何が成果なのか良く分かりませんが?
987デフォルトの名無しさん:2011/10/05(水) 16:36:12.88
根拠もなく馬鹿にしておきながら、その馬鹿にした相手の文章を引用して
「やはり俺の言った事は正しかった(キリッ」
とか言ってる事じゃね?
988デフォルトの名無しさん:2011/10/05(水) 16:46:06.05
>>972 を読むと、>>987 以外には、ブラウザをワザと無料にすることで、
サーバー(ハード)を売ったり、映画コンテンツを配信するプラット
フォームを誰でも無料で持っている状態にして、映画コンテンツを売ろうと
したりと、「プログラム・ソフト」自体の競争原理なんて物はお構いなし
のジャイアンみたいな大企業(サーバー・ハードや映画の)ばかり得する
ようにし向けた物だったんですね。

三方良しとは真逆で、自分達の売りたい物だけが売れる様にして、プログラム
自体の価値はいくらでも下げてもお構いなし。

・Sunはハード企業だからソフトを作る力が今一だった--->ハードで稼ぐた
め、OSを無料にし向けるため、Linux に資金を提供した。

・Netscape は、サーバーを売って儲けるために、ブラウザを安くしたかった

↑OS自体、ブラウザ自体を作り込みたい若手プログラマの権利は無視。
989デフォルトの名無しさん:2011/10/05(水) 16:48:36.57
>>987
もともと、OSS反対派には分かり切っていたことを、OSS賛同派の人が認めて
文書化しただけのことでしょう。

「正しかった」のは、当然のことであり、むしろ、OSS陣営の人が認めた
事が確認できたまでです。
990デフォルトの名無しさん:2011/10/05(水) 16:53:36.95
少なくとも Joel Spolsky はOSS陣営じゃねーけどな。むしろ逆。
991デフォルトの名無しさん:2011/10/05(水) 17:27:51.35
Javaのお仕事ってオープンソースのフレームワークに
単調なビジネスロジックを書き込むという作業でしょ?
なんでオープンソースをdisってんの?お世話になってるのに。
992デフォルトの名無しさん:2011/10/05(水) 17:37:28.43
コンサルティングはともかくドキュメントは重要かもね
ドキュメントがなければただのブラックボックスと思われても仕方ない
993デフォルトの名無しさん:2011/10/06(木) 16:13:50.20
自分をことごとく棚にあげて、他人を批判し、
批判した相手でさえ利用するのに抵抗がない。

サイコパスだろこれ。
994デフォルトの名無しさん:2011/10/06(木) 17:30:43.46
uyかコピーキャット。
どっちにしろ、つまらん。
995デフォルトの名無しさん:2011/10/06(木) 17:52:26.40
996デフォルトの名無しさん:2011/10/07(金) 00:41:54.14
>>969
赤帽とか馬鹿にしてんのかw
997デフォルトの名無しさん:2011/10/07(金) 18:44:34.51
998デフォルトの名無しさん:2011/10/07(金) 18:51:38.93
埋め
999デフォルトの名無しさん:2011/10/07(金) 21:01:56.40
999
1000デフォルトの名無しさん:2011/10/07(金) 22:42:42.13
アラン・ケイ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。