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

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

前スレ
http://hibari.2ch.net/test/read.cgi/tech/1306002146/
2デフォルトの名無しさん:2011/05/28(土) 18:12:37.72
静的言語派:規模が大きくなったらテスト大変。型検査で一定の安全性を確保
動的言語派:テスト書けば型エラーも見つかる。早く書けるからテストを書く時間も充実
Java厨:IDEのリファクタリング機能でメソッド名を変更できる
3デフォルトの名無しさん:2011/05/28(土) 18:46:48.51
Haskell厨涙目w
4デフォルトの名無しさん:2011/05/28(土) 18:49:48.40
> Java厨:IDEのリファクタリング機能でメソッド名を変更できる

IDEの機能が充実してるってふつーに重要なファクターだと思うけど、
ちゃかしにかかってるってことは動的派ろくに反論できないとみた。
5デフォルトの名無しさん:2011/05/28(土) 18:52:09.66
契約プログラミングが出て来ないのは終わってるだろ。
界面とかインターフェイスの話も出てきてないし。
誰も知らんのかね?
6デフォルトの名無しさん:2011/05/28(土) 18:55:37.22
知らんなぁ
7デフォルトの名無しさん:2011/05/28(土) 18:56:03.21
D言語くらいしか知らん
8デフォルトの名無しさん:2011/05/28(土) 18:56:21.83
>>4
IDEの補完機能とか便利だし、静的言語&IDEが強力なのは事実
でも、前スレのJava厨のメソッド名変更できるって説明は失笑もんだろ
だから静的言語派とJava厨は別枠なの
9デフォルトの名無しさん:2011/05/28(土) 18:57:11.39
>>5
おれもしらんなぁ。
Eiffelみたいなやつ?
10デフォルトの名無しさん:2011/05/28(土) 19:03:35.00
契約プログラミングの概念はcにもあるな。assertとかガードとか。

ポイントは呼出元と呼出先がそれぞれ想定する条件を明示することかね。
プログラミングなんてモジュールの組合せでしかないから、その組合せの部分で
問題なければ良いわけで。
11デフォルトの名無しさん:2011/05/28(土) 19:19:41.19
>>5
Programming by Contractの話は↓のほうがいいんでない。
「おまいら、DbC(契約による設計)ってやってる?」
http://hibari.2ch.net/test/read.cgi/tech/1265691115/

程度によるけど、最初から仕様をかっちり決めることができないってものも多い。
なんでも良いから動くものをさっさと作れとなると、変数に型無し言語のフットプリントの軽さが良く思えてしまう。

まず大まかな外的動作仕様から動くものをつくり、そこから更に厳密に仕様を練り上げていくっていうのは
けっこうありだとは思うんだけど…

でも、日本の会社の多くのプロジェクト(特に大手ベンダー)ではウォーターフォール的な工程を納期ありきで
組むから、後工程における仕様の昇華作業なんて無いんだよね。
12デフォルトの名無しさん:2011/05/28(土) 19:20:06.29
>>5
契約プログラミングの話が出てくると動的、静的言語の安全性の話に影響があるっていう意味でいってるんだよね?
Eiffelみたいな言語レベルでサポートしてるやつだとコンパイル時に呼び出し側の正確性も判定できるとかそーいう話かな?Eiffel書いた事無いのでわからんけど。
13デフォルトの名無しさん:2011/05/28(土) 19:24:11.36
どんな言語でも危険なコード書くやつは書くから何の議論するスレなんだ?
14デフォルトの名無しさん:2011/05/28(土) 19:28:52.15
表向きは安全なプログラムをいかに書くかを
静的/動的型付けの観点から議論するスレ

実際は、ときどき書き込むJava厨のレスに
爆釣りされるスレ
15デフォルトの名無しさん:2011/05/28(土) 19:37:06.86
書き込みの勢いある時と無い時の差が極端なのと、書き込む内容のどーしようも無さ的にJava厨って言ってるの一人もしくはごく少数な気がするんだけど…
16デフォルトの名無しさん:2011/05/28(土) 19:54:35.14
リファクタリングと聞くたびにispellもスクリプトも知らず
JNI使った事ないんだろうなと思ってしまう

開発環境にリファクタリングついてるの大きいけどね
17デフォルトの名無しさん:2011/05/28(土) 20:19:46.41
>>15
俺もそう思うよ

メソッド名の変更がどうこうって話をやたらと引っ張ってる彼な
18デフォルトの名無しさん:2011/05/28(土) 21:45:12.85
ここまで、Javaのコードなし。
19デフォルトの名無しさん:2011/05/28(土) 21:51:30.11
>>18
別にJavaのコードいらないだろ。
静的型付け言語のメリット挙げていって、それは動的型付けではメリットではない
あるいはこの言語ではこのように解決しているってな流れだから。
20デフォルトの名無しさん:2011/05/28(土) 22:13:27.42
Javaのコードが出てこないのは、Javaのコードが冗長で面倒くさいからだろう。
動的言語で2,3行で済むことが、10行とかかかるからな。
まぁ、これも安全性とやらとの代償か
21デフォルトの名無しさん:2011/05/28(土) 22:16:43.45
つか、なんかコードが必要な話題があったか。
22デフォルトの名無しさん:2011/05/28(土) 22:21:25.83
C#とかはでてきてるけどね
23デフォルトの名無しさん:2011/05/28(土) 23:51:39.18
C++民の俺にはJavaのコードが長いという感覚が理解できない
24デフォルトの名無しさん:2011/05/29(日) 02:20:52.12
>>8
> でも、前スレのJava厨のメソッド名変更できるって説明は失笑もんだろ

それ言い出したのは動的厨。

普通にリファクタリングが簡単にできるという話を
動的厨がメソッドの名前変更だけに限定しただけ。
25デフォルトの名無しさん:2011/05/29(日) 04:21:26.97
メソッドの名前変更程度でリファクタリングは簡単にはならんと思うよ。
その最初のレスも、確かにリファクタリングのことなんだろうが微妙に紛らわしいし。
26デフォルトの名無しさん:2011/05/29(日) 04:28:28.27
リファクタリングはメソッド名変更だけじゃないよ。

引数の追加、順番の入れ替え、複数の引数のクラス化
クラスの分割、親クラスへのメソッドの移動
小クラスへのメソッドの移動
クラスからのインターフェースの作成、
インターフェースからクラスのひな形作成
メソッド内のコードの塊を新たなメソッドに抽出
逆にメソッドをインライン展開

ありとあらゆるリファクタリングの手法を
静的言語ならIDEのサポートで効率的に
しかも確実に行える。

動的言語ならこれらを手作業でやらないといけなくなる。
27デフォルトの名無しさん:2011/05/29(日) 04:30:56.43
ん〜と、それ静的言語じゃなくてIDEの利点じゃね?
もちろん動的言語とIDEの相性はお世辞にも良くはないが
静的言語なら必ずIDEが充実してる、ってワケでもないし。
28デフォルトの名無しさん:2011/05/29(日) 04:42:28.60
>>27
どんなに優れたIDEでも
情報が欠けているところから
情報を作り出すことは不可能。

動的言語では実行しないとわからない情報が多すぎる。
コードを書いているときは実行前なのだ。
実行前に情報がわからないと、IDEはなにもできなくなる。

実行前にいろんな情報が確定する静的言語だからこそ
このようなサポート機能をつくることが可能になる。


29デフォルトの名無しさん:2011/05/29(日) 07:47:48.48
>>28
情報とひきかえに何かしてやるっていうのは取引であってサポートではないよね
それと、手作業と比べて具体的にどの程度効率化するのか、分からないことが多すぎる
30デフォルトの名無しさん:2011/05/29(日) 08:42:37.67
>>28

> クラスの分割、親クラスへのメソッドの移動
> 小クラスへのメソッドの移動
> メソッド内のコードの塊を新たなメソッドに抽出

この辺、変数の型付けと関係ないじゃん
31デフォルトの名無しさん:2011/05/29(日) 08:44:41.23
>>26

> クラスからのインターフェースの作成、
> インターフェースからクラスのひな形作成

インターフェースの無い言語なんて静的言語にもあるし、
そもそもduck typingのある動的言語には必要無いものだよ
32デフォルトの名無しさん:2011/05/29(日) 08:49:07.27
>>29
GUI部分は全部自動化してくれるから、事実上中身に集中すれば良いのよ?

クラスも親クラスとクラス名を指定すれば勝手に作ってくれるわ
(こっちはマクロと組み合わせないと、手で書くのと変わらないわね)

1-100迄の範囲しか受け付けない変数も、型と変数名と範囲を指定すれば、範囲を判定するコード書かなくて済むわ
(範囲外の入力があった時の処理だけで済むの)

全体のコードは動的言語よりはるかに長いけど、実際私たちが書く部分は、動的言語とそれ程大差無いと思うの
(自動補完を活用すれば、逆転してるかも?)

大部分は型が決まってるからこその、決めうちが出来る恩恵なの
33デフォルトの名無しさん:2011/05/29(日) 09:31:56.61
補完に必要なのは名前空間であって型ではないんだが
オブジェクト指向では名前空間と型の違いがあいまいだな
34デフォルトの名無しさん:2011/05/29(日) 09:35:09.16
>>32
・親クラスとクラス名を指定すればクラスを生成する機能
→ 動的言語でも普通に可能で、静的言語の利点ではない

・1-100までの範囲しか受け付けない変数(仮引数だよね?)
→ 静的言語か動的言語か、ましてや型システムにもあまり関係がない
  (文法・開発環境のサポートがあるか否かの問題)

・コードの長さ
→ 動的言語のが短い傾向はあるが、静的言語でもマクロなクラス構成、総称型、型推論などで短くなるし
  動的言語だからと言って短くできるとは限らず、動的/静的には「傾向」以上の関係がない


そんなんじゃなくて、静的型言語の利点ってのは
例えば処理Aと処理Bがあって、両方からC(x)を呼ぶときに
処理AではちゃんとC()の想定通りの型のxを渡してるのに
処理Bでは実はxに不正な型の値が入っちゃってました、とかその辺がデバッグ時でなくコンパイル時に判ることでしょ?
(呼んだ後のことに関しては動的型でもテストで大概引っかかっちゃうから、旨味はすくない)
35デフォルトの名無しさん:2011/05/29(日) 09:38:18.22
>>33
カッコで括った上に「自動補完活用すれば」って書いてる通り、型の利点に入れてないわよ?

分かりにくかったら、ごめんなさいね
36デフォルトの名無しさん:2011/05/29(日) 09:40:36.69
スコープも大事だなぁ
グローバルスコープを根とするスコープ識別子の木を構築して
現在の編集位置がそのどこに対応するかという情報を得るライブラリというのはIDEに必須だ
それがあってようやく選択した識別子に対して構文、意味論的な操作を行うことで
インスペクション、リファクタリングというIDEの支援が柔軟かつメンテしやすい形で提供できるのだから
37デフォルトの名無しさん:2011/05/29(日) 09:52:16.88
IDEは静的とか動的とかじゃ無くて、クラスライブラリ決めうちかどうかの問題な気がしてきた
GUIとか特に
38デフォルトの名無しさん:2011/05/29(日) 11:46:59.90
リファクタリングがとーとか言ってるが、Java厨が実際にリファクタリングをやってるか
というと、ほとんどってねーだろ。
最近やっとリファクタリングって言葉を覚えたばかりなのに。やってるとしても、メソッド名の
変更程度が関の山なんだよ。
39デフォルトの名無しさん:2011/05/29(日) 11:51:01.49
>>38
てめーが両方でやってみりゃ良いだろ
ウザイ
40デフォルトの名無しさん:2011/05/29(日) 12:02:14.23
少人数での開発ならまだしも、大規模開発になればなるほど、リファクタリングなんて
おいそれとできないはずなんだよ。

影響範囲が広いリファクタリングは、それだけ影響をうけるソースが多いということで、
そんなもんを、IDEがサポートしているからと、気軽に変更されて、レポジトリにコミット
されたんじゃ、場合によっては多大なコンフリクトを招くおそれがある。

(続く)

41デフォルトの名無しさん:2011/05/29(日) 12:04:50.35
> 少人数での開発ならまだしも、大規模開発になればなるほど、リファクタリングなんて
> おいそれとできないはずなんだよ。

そんなのは、リファクタリング以前の話であって、
リファクタリングのやりやすさの話とは関係ないじゃないか。

話をそらすな

(続かない)
42デフォルトの名無しさん:2011/05/29(日) 12:07:45.26
だから、大規模開発になればなるほど、リファクタリングに対する参加メンバーへの事前
のネゴが必要になる。静的言語だから楽にできる。で済まされる話じゃないはず。

(続く)
43デフォルトの名無しさん:2011/05/29(日) 12:11:33.09
小規模開発なら、ソースの数も少ないから、リファクタリングに対する、IDEから得られる
メリットなんて、それほど声高に主張するほどのものではないし、動的言語の方が、同じ処理
でもコードがコンパクトな分、リファクタリングそのものや、検証に対する負荷も軽い。
44デフォルトの名無しさん:2011/05/29(日) 12:13:59.59
(終わり)
45デフォルトの名無しさん:2011/05/29(日) 12:14:06.78
リファクタリングは、外部から見た動作を変えずに
内部構造を整理することなんだけど、
記述が冗長な言語はどんだけリファクタリングしても
一定以上簡潔な記述にはならないんだよね
46デフォルトの名無しさん:2011/05/29(日) 12:20:41.29
リファクタリングを恐れているのは何故か
それはテストコードがないという理由と
コードの影響範囲がわからないという理由のせい。
47デフォルトの名無しさん:2011/05/29(日) 12:22:13.53
>>45
記述量を減らすのがリファクタリングじゃないぞ。

構造をきれいにするのが目的。
48デフォルトの名無しさん:2011/05/29(日) 12:23:53.74
Java厨は、ただでさえ冗長なJavaのソースを、
極上で濃厚なナポリタンに仕上げるからな。
簡潔にしろといわれても無理。
もうそのまま納品して神様にお祈りするしかない。
メンテナンスなんてごめん被りたい。
49デフォルトの名無しさん:2011/05/29(日) 12:25:00.29
リファクタリングするにしても関係者のみに連絡すれば良い。
関係者が多くなってしまうのは、
コードの担当部分が正しく切り分けできていないから。
プログラム全体が一つの大きな塊になっている。

これはコード上の大きな問題でリファクタリングするべき兆候
50デフォルトの名無しさん:2011/05/29(日) 12:25:21.78
>>48
※個人の感想です
51デフォルトの名無しさん:2011/05/29(日) 12:25:47.58
Ruby最近使ってるけど、確かにundefined変数も
走らせて見るまで分からないって、ちょっとつらい。
エディタはEmacs。
みんなどうやってるんだろ。
あと、ドット押したらメソッド一覧出てこないのも開発効率が少し悪い。
何回くぐってんだって感じ。
52デフォルトの名無しさん:2011/05/29(日) 12:27:12.80
>>48
静的動的関係無く、納品してもメンテ続くだろ
53デフォルトの名無しさん:2011/05/29(日) 12:28:01.62
>>26のリストで動的型言語で出来ないのは
引数の順番入れ替えと、複数の引数のクラス化と、メソッドのインライン展開くらいだね
あとはメソッド名の変更か
それすらprivateメソッドなら名称変更と引数入れ替えくらいできる
54デフォルトの名無しさん:2011/05/29(日) 12:28:39.45
前スレ >>994

Lisp はむしろコンパイラの方が一般的
言語仕様の中にコンパイラへの指示方法も含まれてるくらいだから
55デフォルトの名無しさん:2011/05/29(日) 12:30:17.61
Emacs内に出したREPLとの連携も
ファイル全体の再評価ができなく
あんまりラピッドプログラミングって感じがしない。
俺が知らないだけか設定が悪いんだろうけど。
56デフォルトの名無しさん:2011/05/29(日) 12:30:22.73
>>51
ipython使ってるけど、変数に入ってるオブジェクトが
確定してるときはドット押したあと補完効くよ
57デフォルトの名無しさん:2011/05/29(日) 12:30:56.30
メンテ=既存のコードに影響しないように、似たような処理をたくさん追加する・・・間違ったメンテ
コードが加速度的に壊れていいく。


メンテ=リファクタリングを含む ・・・ 正しいメンテ
ただし、これができるのは適切なテストコードが存在し、
プログラムの構造がきれいにわかれており、
影響範囲がすぐに分かるように静的言語を使っている必要がある。

それができていないと、かたくなにリファクタリングを否定する
逆に言えば、リファクタリングを否定している人は
正しいシステム開発を行えていない。
58デフォルトの名無しさん:2011/05/29(日) 12:31:16.58
Javaさんのメリットとして、大人数開発が構造的に可能であるということが挙げられる
で、これだけを求めてJavaしてる場合、リファクタリングとは相性がたいへん悪い
メス入れただけで血がぷっしゃあだ
リファクタリングのまな板の上に乗せるのは前提条件がいくつもあるんだから、まずは整えないと
59デフォルトの名無しさん:2011/05/29(日) 12:32:33.09
>>57

> 影響範囲がすぐに分かるように静的言語を使っている必要がある

論理が飛躍しすぎだろ
60デフォルトの名無しさん:2011/05/29(日) 12:34:02.18
>>58
だから、リファクタリング以前の話は、別の話だから
それ持ち出してるやつ馬鹿でしょ?って話じゃね。

rubyはだめだ。rubyを使える人がいない。みたいな。
61デフォルトの名無しさん:2011/05/29(日) 12:34:02.91
Javaは、ゲッタ、セッタとそのコメントだけで数百行の
ソースがざらにあるからな。
何このクソ言語って思う。
62デフォルトの名無しさん:2011/05/29(日) 12:34:51.52
>>61
× 何このクソ言語
○ 何このクソソース

いいかげんにしろよ。
63デフォルトの名無しさん:2011/05/29(日) 12:36:10.07
Javaの単純なクラス見てると、
これただのハッシュマップでよくね?って時がある。
64デフォルトの名無しさん:2011/05/29(日) 12:36:18.95
>>59
残念ながら動的言語は影響範囲が分かりづらいんだよ。
65デフォルトの名無しさん:2011/05/29(日) 12:37:20.70
>>63
ハッシュマップは、ただの値だ。
オブジェクトはメソッドがあるもの
ハッシュマップはオブジェクト指向ではない。
66デフォルトの名無しさん:2011/05/29(日) 12:39:15.40
基本、ゲッタ、セッタは自動生成で、必要に応じてフックできる言語の方がいいよなぁ。
67デフォルトの名無しさん:2011/05/29(日) 12:39:29.91
>>63
それでもハッシュではなくクラスにしていると
メソッド(キー)の値の意味などを変更したいなと思ったときに
それを使用しているコード、つまり影響があるコードが
すぐにわかるんだよ。
68デフォルトの名無しさん:2011/05/29(日) 12:40:40.43
>>66
Java+Eclipseでそれは可能。

private変数作っておけば
あとはそれに対するゲッタセッタを生成してくれる。
69デフォルトの名無しさん:2011/05/29(日) 12:41:31.97
Objective-Cが最強ってことか
70デフォルトの名無しさん:2011/05/29(日) 12:44:25.82
>>68
それはわかるんだけど、機械がやってくれるってだけで、ソースは膨らむじゃん。
行数でコストを見積もってるならありがたいのかもしれないけど。
71デフォルトの名無しさん:2011/05/29(日) 12:45:44.26
>>69
むしろsmalltalkだろ
cの部分要らんがな
72デフォルトの名無しさん:2011/05/29(日) 12:47:19.02
ゲッタセッタの嵐は親クラスに隠蔽しておけば良い。
73デフォルトの名無しさん:2011/05/29(日) 12:52:14.97
>>72
子クラスにもメンバ変数はあるだろ、普通。
74デフォルトの名無しさん:2011/05/29(日) 12:57:18.02
ゲッタセッタがないメンバ変数なら子クラスにおいとけ。
今話してるのは、ゲッタセッタの嵐でうざいものだ。
75デフォルトの名無しさん:2011/05/29(日) 13:54:50.90
結局のところ、静的言語でのみIDEサポート可能な
リファクタリングって何だったの?

>>64
なんで?
76デフォルトの名無しさん:2011/05/29(日) 14:03:50.94
Scalaだと単なるゲッタセッタは超短くかけるよ、スニペットとか自動生成とか全く必要ない
77デフォルトの名無しさん:2011/05/29(日) 14:05:21.89
リファクタリングに積極的なのは、むしろ動的言語ユーザの方だろ。
規模がでかいのと、テストも書かないのと、意識の問題で、実際は
Java厨でリファクタリングする奴はほとんどいない。
78デフォルトの名無しさん:2011/05/29(日) 14:08:01.23
>>60
滅多に使わない機能や、実行コスト(>>42)を殆ど減らしてくれない機能は
大したメリットにならないってだけ
79デフォルトの名無しさん:2011/05/29(日) 14:14:43.08
動的言語のユーザーって元デザイナーとか高卒バイト上がりとかそういう人が多い気がする。
大学や大学院でコンピュータサイエンスを学んだ人ってほとんど居ないんじゃない?
80デフォルトの名無しさん:2011/05/29(日) 14:19:03.00
Paul Grahamのことですねわかります
81デフォルトの名無しさん:2011/05/29(日) 14:26:00.84
>>80
彼は大学院を出ているが、言語開発者だ。
ただのユーザーではない。
それに、ちゃんとした経歴を持つユーザーだって中にはいることぐらい俺だって知ってる。
そんな傾向があるなぁという話をしてるんだよ。
82デフォルトの名無しさん:2011/05/29(日) 14:28:19.77
大学や大学院でコンピュータサイエンスを学んだ人は、静的言語も動的言語も関数型も手続き型も
ケースバイケースで臨機応変に使ってるよ。
83デフォルトの名無しさん:2011/05/29(日) 14:33:25.87
節操無いな
拘りというものが無いのか
84デフォルトの名無しさん:2011/05/29(日) 14:39:39.09
そうだね、拘りは別にないな。良いものがあればそれを使うだけ。

85デフォルトの名無しさん:2011/05/29(日) 14:40:41.57
>>83
プログラマはプログラミングするのが仕事であって、言語を宣伝するのが仕事じゃ無いからな
一つの言語に拘る必要性は無いな
86デフォルトの名無しさん:2011/05/29(日) 14:41:43.25

 Java土方は、拘りとかそんなものじゃなくて、
 Javaしか知らないんだろ。 これが現実。

87デフォルトの名無しさん:2011/05/29(日) 14:41:45.35
スレタイ全否定だな
88デフォルトの名無しさん:2011/05/29(日) 14:45:01.12
ここのスレタイを肯定しているのは、Java土方だけだろw
89デフォルトの名無しさん:2011/05/29(日) 14:49:59.21
それなら「やっぱりJava以外では安全なソフトは作れない」にスレタイ変更しないとな
どんな釣堀なんだと
90デフォルトの名無しさん:2011/05/29(日) 15:01:37.98
>>82
でも優秀な経歴の人間が動的言語の主戦場であるWEB開発の、それもUIに近い部分なんかにわざわざ携わると思うか?
91デフォルトの名無しさん:2011/05/29(日) 15:02:32.70
Java土方が他の静的言語ユーザも味方にひきこもうとしたけど、
そっぽを向かれたってだけだろw
92デフォルトの名無しさん:2011/05/29(日) 15:10:03.95
>>90
思わない。
動的言語の主戦場はWEB開発に限られたものではないからね。
むしろ簡単なテキスト処理や、Webのスクレイピング、データ分析、
思いついたアイデアのプロト作成、集合知プログラミングなんかは、
扱いが手軽で、ロジックに集中できる動的言語の方が便利なことが
多いよ。
93デフォルトの名無しさん:2011/05/29(日) 15:51:48.04
動的言語の一番の主戦場はIDEだろ。
静的言語マンセーしてるJava厨が大好きなEclipseも元は動的言語の開発環境だったという罠
ttp://ja.wikipedia.org/wiki/VisualAge
94デフォルトの名無しさん:2011/05/29(日) 15:52:49.85
>>90
研究所や大学ではMathematicaやRはよく使われてるぞ
95デフォルトの名無しさん:2011/05/29(日) 16:01:46.73
研究所や大学ってピンきりだよね
Javaドカタ以下の人間が偉そうな顔してたりもすれば
ありえないほど優秀な人間もいる
96デフォルトの名無しさん:2011/05/29(日) 16:04:54.49
まあでも、土方よりはよっぽど勝ち組だよね。
97デフォルトの名無しさん:2011/05/29(日) 16:08:21.24
頭脳労働って時点ですむ世界が違うってね
自分の努力で報酬や拘束時間が変わるのはすばらしい
土方だと頑張ろうが頑張るまいが薄給長時間労働
98デフォルトの名無しさん:2011/05/29(日) 16:11:28.31
論文読み書きできれば商売になるからな

プログラムの技術()って意味だとあまり参考にするべきじゃぁないよ
ど底辺な所が多いから
99デフォルトの名無しさん:2011/05/29(日) 16:15:02.38
それでもJava土方とは比べるべくも無いわ
100デフォルトの名無しさん:2011/05/29(日) 17:33:30.81
大学通った事無いから大学に幻想をもってしまうんですかね
101デフォルトの名無しさん:2011/05/29(日) 17:38:58.38
大学と大学院を同じだと思っている大卒の馬鹿さ加減
102デフォルトの名無しさん:2011/05/29(日) 17:56:03.82
院卒でJavaとか使ってる奴いるの?
103デフォルトの名無しさん:2011/05/29(日) 18:05:24.46
せんせーでJava使ってた経歴ある人多いよね
世代的にだろうけど

某先生とかいまだにMLで売名活動がんばってるよね
104デフォルトの名無しさん:2011/05/29(日) 19:01:20.40
どの言語使うかじゃなくて
その言語で何するかですよね?
105デフォルトの名無しさん:2011/05/29(日) 19:03:45.37
ぶっちゃけJava土方が悪いだけなんだよね。
Java土方が
106デフォルトの名無しさん:2011/05/29(日) 19:04:10.83
Java土方がは何の言語を使ってもダメ。
107デフォルトの名無しさん:2011/05/29(日) 19:05:07.22
どうもJavaはアカデミック臭が強くていかんね。
108デフォルトの名無しさん:2011/05/29(日) 19:08:38.00
リファクタリングなんてただの道具なんだよ。

小説家にとって必要なのはいい鉛筆じゃない。
弘法筆を選ばずというように本物の小説家は
何を使っても良い小説を書ける。

プログラマも同じで、どんな道具を使うかにはこだわらない。
プログラマがやるのはコード設計であって、
コーダーの仕事であるコーディングじゃない。
109デフォルトの名無しさん:2011/05/29(日) 19:11:05.08
じゃあ一生COBOLでも使って炉や
110デフォルトの名無しさん:2011/05/29(日) 19:11:44.62
>>93
> 静的言語マンセーしてるJava厨が大好きなEclipseも元は動的言語の開発環境だったという罠

罠でもなんでもないわw

最終的にJavaがメインの言語として選ばれたってのは、
やっぱり静的言語じゃなきゃなって方向転換したってことだろ。
111デフォルトの名無しさん:2011/05/29(日) 19:13:01.69
道具はこだわったほういいよ
より生産性上がるものを選ぶべき

道具コレクターになる必要はないが
112デフォルトの名無しさん:2011/05/29(日) 19:16:21.92
静的言語はいいけどJavaは無いわー
113デフォルトの名無しさん:2011/05/29(日) 19:18:01.91
Javaはドカタガーだからなw
Javaドカタガーwww
114デフォルトの名無しさん:2011/05/29(日) 19:18:37.08
>>111
たかが鉛筆ごときで生産性が変わるとお考えか?
115デフォルトの名無しさん:2011/05/29(日) 19:22:51.83
昔は鉛筆消しゴムと墨汁ぐらいの違いあったけど
いまだと鉛筆とシャープペンぐらいの違いだね
116デフォルトの名無しさん:2011/05/29(日) 19:23:57.34
>>114
日本の誇る三菱ハイユニを馬鹿にするのか?
あとはステッドラーとファーバーカステルとか。
117デフォルトの名無しさん:2011/05/29(日) 19:29:14.50
昔コボラー
今ジャバラー
118デフォルトの名無しさん:2011/05/29(日) 19:35:33.76
未来ドカタガー(笑)
119デフォルトの名無しさん:2011/05/29(日) 19:38:07.55
土方、土方ってオウムのように繰り返すヤツのことが
ドカタガーって言うんじゃなかったっけ?
120デフォルトの名無しさん:2011/05/29(日) 19:45:23.71
>>119
いいえ
木霊です
121デフォルトの名無しさん:2011/05/29(日) 20:20:07.51
生産性考えて言語選択する時代はとっくに終わっている
今は生産性考えて椅子にこだわる時代

椅子にこだわってない会社はうんこ
122デフォルトの名無しさん:2011/05/29(日) 20:31:01.60
>>110
いや、動的言語で新しく切り開かれた開発環境を
時代遅れのコマンドラインを使っていた愚鈍な静的言語ドカタに「施し」てやったら、
静的言語ドカタが喰い付いて

「メソッド名が簡単に変更デキルーッ!静的言語無敵ーーーーッ!!」

と大騒ぎになったというのが真相だw
123デフォルトの名無しさん:2011/05/29(日) 20:37:25.07
開発環境をつくるんなら動的言語が圧倒的に有利だな
124デフォルトの名無しさん:2011/05/29(日) 20:53:11.51
Javaの欠点語る代わりにJava厨とかJava土方の存在挙げるのやめてくれない?
全然言語デザインの欠点じゃないから建設的な論議に繋がらないんだけど。
125デフォルトの名無しさん:2011/05/29(日) 20:54:38.90
>>122
ドカタガーさんこんばんは。
今日も木霊ですか?
126デフォルトの名無しさん:2011/05/29(日) 20:56:16.14
このスレ覗くといっつも動的派がJava厨の人格攻撃してるレスが目にはいてくる。
IDEのサポートは静的のほうが格段に上ってのを覆せないから
そこらへんしか攻めるポイントがないんだろうな。
127デフォルトの名無しさん:2011/05/29(日) 20:57:33.00
>>122
名前変更に限れば、メソッド名よりも
private変数のほうが嬉しいかな。

時々private変数と同じ名前で
ローカル変数を作ってしまうやつがいる。
こういうとき静的言語なら適切に警告してくれるし、
そういう場合に名前変更しても、問題なくうまくいく。
128デフォルトの名無しさん:2011/05/29(日) 20:58:03.30
苦しくなったら、ドカタガーが登場してくるよねw
129デフォルトの名無しさん:2011/05/29(日) 21:20:10.99
これが動的言語のリファクタリングの限界だ
Padre

sub dummy {
  my $self = shift;
  my $start = 1; my $end = 10; my $ret = 0;
  for(my $i = $start; $i <= $end; $i++) {
    $ret += $self->{step} * $i;
  }
  print $ret;
}

↓ forの部分を「Refactor」の「Extract Subroutine」を実行する

sub dummy {
  my $self = shift;
  my $start = 1; my $end = 10; my $ret = 0;
  my ($i) = foo ($start, $self, $end, $ret);
  print $ret;
}
sub foo {
  my $start = shift;
  my $self = shift;
  my $end = shift;
  my $ret = shift;

  for(my $i = $start; $i <= $end; $i++) {
    $ret += $self->{step} * $i;
  }
  return ($i);
}
130デフォルトの名無しさん:2011/05/29(日) 21:22:01.89
土方って言い方がよくないね。デジ方とかでいいんじゃないかな。
131デフォルトの名無しさん:2011/05/29(日) 21:22:51.99
普通の人が望む答え

sub dummy {
  my $self = shift;
  my $start = 1; my $end = 10; my $ret = 0;
  $ret = $self->foo($start, $end);
  print $ret;
}
sub foo {
  my $self = shift;
  my $start = shift;
  my $end = shift;
  my $ret = shift;

  for(my $i = $start; $i <= $end; $i++) {
    $ret += $self->{step} * $i;
  }
  return $ret;
}
132デフォルトの名無しさん:2011/05/29(日) 21:24:54.54
サンプル提示する前に、まず、dummyとかfooとか、何をしたいのかわからんメソッド名をリファクタリングしろや。
133デフォルトの名無しさん:2011/05/29(日) 21:28:26.63
PerlでOOPするなよ。PythonかRuby をお勧めする。
134デフォルトの名無しさん:2011/05/29(日) 21:46:05.66
な? 土方の程度がわかったろw
135デフォルトの名無しさん:2011/05/29(日) 21:50:09.54
>>132
> サンプル提示する前に、まず、dummyとかfooとか、何をしたいのかわからんメソッド名をリファクタリングしろや。

それは無理だ。
メソッド名のリファクタリングの機能がついてない。
それは当然だろう。

なぜならsub fooのfooをbarに名前変更したとき、
$obj->foo()という呼び出しをbarに変更していいのかわからないからだ。

$objの型が静的に決まらないから、
このfooがどのfooなのか分からない。
136デフォルトの名無しさん:2011/05/29(日) 21:52:25.65
なお、dummyはPadreが用意したテンプレだ。
137デフォルトの名無しさん:2011/05/29(日) 22:01:30.27
Ruby Refactoring Browserの制限
http://www.kmc.gr.jp/proj/rrb/tutorial/index.html
というわけで、Ruby Refactoring Browserには以下のような制限があります。

rename-methodは、同じ名前のメソッドをすべて変更してしまう「rename-method-all」と
指定したクラスのみのメソッドの名前のみを変更してくれるが、
レシーバ付きの メソッドの面倒は見てくれない「rename-method」のどちらかしかできない。

Rubyは動的型付けな言語なので、Javaなどのような静的型付けな言語とちがって
どこからどこまでを変えれば良いかは静的には判断できないため、
このような 2つの機能を用意して、ユーザに選ばせるようにしています。

以上のことは、Ruby Refactoring Browserの基本的な設計やRubyの特徴上、
避けがたい機能制限です。開発が進んでもこのあたりの制限がなくなることはないでしょう。

orz
138デフォルトの名無しさん:2011/05/29(日) 22:18:36.38
コード出たとたん静かになったな。
139デフォルトの名無しさん:2011/05/29(日) 22:42:01.25
>>127
それに限って言えばPerlやPythonやRubyのが上だなあ。
Perlのオブジェクトが持つ属性はハッシュの中にしかないし
Pythonのオブジェクトが持つ属性は自分の属性であってもレシーバ必須だし
Rubyのオブジェクトが持つ属性は基本的に頭に@が付く。

…まあ、Perlは原始的過ぎて代替クラスシステムに頼ったりするし
Pythonはself毎回書くの面倒だってよく叩かれるし
Rubyはprivateメソッドとローカル変数の区別が付かないっていう、別の弱点はあるんだがな。
140デフォルトの名無しさん:2011/05/29(日) 22:44:04.61
sub dummy {
 my $self = shift;
 my ($start, $end) = (1, 10);

 return $self->sum($start, $end);
}

sub sum {
 my ($self, $start, $end) = @_;

 my $sum;
 map { $sum += $_ * $self->{step}; } ($start..$end);

 return $sum;
}
141デフォルトの名無しさん:2011/05/29(日) 22:46:09.56
↑ >>129のコードが糞すぎるのでリファクタリングしてやった。
142デフォルトの名無しさん:2011/05/29(日) 23:08:52.99
で?
143デフォルトの名無しさん:2011/05/29(日) 23:17:51.40
いや、ヒマだったからつい。そんだけ。
さぁ、寝るか。
144デフォルトの名無しさん:2011/05/30(月) 00:09:57.12
動的がー(笑)が消えると
静になるな。
145デフォルトの名無しさん:2011/05/30(月) 00:37:25.07
勢いあると思ったらやっぱり頭おかしい奴が常駐してたか
146デフォルトの名無しさん:2011/05/30(月) 01:04:48.54
Java厨が消えたら、このスレも平和になったな。
よきかな、よきかな
147デフォルトの名無しさん:2011/05/30(月) 01:06:36.95
いや、コード出しておとなしくなったのは
ドウテキガーなんだがw
148デフォルトの名無しさん:2011/05/30(月) 01:08:27.67
ここまでJavaのコードなしw
149デフォルトの名無しさん:2011/05/30(月) 01:13:04.10
Haskell とか SML とかの静的言語が普通に使える世の中になったら
静的言語を使うんだがなあ
150デフォルトの名無しさん:2011/05/30(月) 01:13:36.95
関数型で作ったもの教えて
151デフォルトの名無しさん:2011/05/30(月) 01:19:11.45
俺に言ってるの?
152デフォルトの名無しさん:2011/05/30(月) 01:20:16.85
作ってない人には聞いてない
153デフォルトの名無しさん:2011/05/30(月) 01:21:30.46
何でここで聞いてるの?
154デフォルトの名無しさん:2011/05/30(月) 01:21:51.04
作ってない人には聞いてない
155デフォルトの名無しさん:2011/05/30(月) 01:23:41.59
俺が聞いてるのに...
156デフォルトの名無しさん:2011/05/30(月) 01:25:15.59
ほらね、スレが伸びてる時、
そこにいるのは誰?w
157デフォルトの名無しさん:2011/05/30(月) 01:26:02.77
おまえ
158デフォルトの名無しさん:2011/05/30(月) 01:27:39.14
ワラタw
159デフォルトの名無しさん:2011/05/30(月) 01:37:28.31
自覚した人がレスをした〜w
160デフォルトの名無しさん:2011/05/30(月) 02:25:42.43
>>107
えっ
161デフォルトの名無しさん:2011/05/30(月) 02:27:34.62
JavaはEEばかりに力入れてて
面白くないから使うのやめた
162デフォルトの名無しさん:2011/05/30(月) 02:29:58.87
やっぱ言語は面白いかどうかで選ばないとね。
他人がどうとか仕事でやる奴はバカ。
163デフォルトの名無しさん:2011/05/30(月) 02:39:38.97
オナニー楽しい?
164デフォルトの名無しさん:2011/05/30(月) 03:34:19.12
気持ちいいお
165デフォルトの名無しさん:2011/05/30(月) 05:02:18.79
>>127
private変数への参照が動的言語だとわからないという
頭がおかしい思い込みはどこから来たんだい?
166デフォルトの名無しさん:2011/05/30(月) 05:36:00.79
>>129>>131
それ動的型付け関係ないから。
本当にどうしようもないほどアホだな。
167デフォルトの名無しさん:2011/05/30(月) 05:53:34.99
安全とか仕事で使ってるとかどうでもいいから。
どうせ糞みていな日本企業だろw
そんなところの風習興味ねぇから。
誰も使わねえソフトのリファクタリングとか笑かすなよ。
168デフォルトの名無しさん:2011/05/30(月) 05:57:51.13
>>167
お前はどこの洞穴に住んでるんだよw
169デフォルトの名無しさん:2011/05/30(月) 05:58:55.80
>>129
これが動的言語のリファクタリングの限界だ(キリッ

いったい何が動的言語の限界だったの?www
170デフォルトの名無しさん:2011/05/30(月) 07:07:03.83
>>140
Java厨にとっては、マウスでクリックして出来る範囲の
「リファクタリング」だけがリファクタリングだから、
そうやって人間の知性が反映されちゃダメだよ。
彼らには知性なんて無いんだから、同じことは出来ないだろ?
171デフォルトの名無しさん:2011/05/30(月) 08:33:05.19
で、反論は?
172デフォルトの名無しさん:2011/05/30(月) 08:47:13.63
安全!テスト!品質!とか掲げてみずほみたいな
ぶっ壊れ方するんだろ?
捨てちまえ、安全なんて。
173デフォルトの名無しさん:2011/05/30(月) 09:07:23.45
      土方に動的言語は無理
174デフォルトの名無しさん:2011/05/30(月) 09:12:26.01
土方に指示もできない人間に社会生活は無理
175デフォルトの名無しさん:2011/05/30(月) 09:25:18.48
動的言語が対応できるのは小規模なウェブサイトくらい
低性能で二酸化炭素を多く排出し、原発事故に繋がり放射能をまき散らすはめになる
176デフォルトの名無しさん:2011/05/30(月) 09:30:13.88
動的言語でメソッド名を自動変更するような
リファクタリング機能をIDEに付けるのは難しい

class Foo:
    def foo(self):
        print 'foo'
f = Foo()
f.foo()
def bar(self):
    print 'bar'
Foo.foo = bar
f.foo()

こんなコードの場合、クラスFooのメソッドfooをrenameしたときに
どこまで変更するのが人にとって望ましい結果か分からない
177デフォルトの名無しさん:2011/05/30(月) 09:34:34.40
結局のところ、Javaが大規模開発に優れているのは、
クラスがバカなPGにバカなことをさせないための檻として機能するからであり、
>>176のように簡単にJailbreakできる言語では
土方を率いて開発など無理なわけですよ
178デフォルトの名無しさん:2011/05/30(月) 09:43:25.28
そもそも土方はリファクタリングなんてしないし
179デフォルトの名無しさん:2011/05/30(月) 10:23:45.29
しかし、土方ってどんだけメソッド名の変更したがりなんだよ。
あ、それが仕事なんだっけ
180デフォルトの名無しさん:2011/05/30(月) 10:24:44.52
grepラー刃牙
181デフォルトの名無しさん:2011/05/30(月) 10:28:02.23
土方言っててもプロジェクトは改善されない
見合ったコストでスタッフの質上げられない限り
182デフォルトの名無しさん:2011/05/30(月) 10:30:09.01
オープンソースでもひとの集まり具合と進捗に影響する
183デフォルトの名無しさん:2011/05/30(月) 10:30:42.82
土方は綴り間違いをよくやらかすから、あとで気づいてこっそり直そうとするんだよ。
だから、変数名やメソッド名の変更機能は必須なんだよ。
それを奴らはリファクタリングと呼ぶ。
184デフォルトの名無しさん:2011/05/30(月) 10:44:22.86
セントジョーンズワート
イチョウ葉エキス
ギャバ
DHA
EPA
亜鉛
ギムネマシルベスタエキス
桑の葉エキス
烏龍茶エキス
キトサン
唐辛子
ビタミンB1
ビタミンB2
ビタミンB6
ビタミンB12
クロム酵母
桑の葉エキス
ビール酵母
カルシウム
セレン

↑俺毎日朝これだけのサプリ飲んでる。
だから静的も動的もどっちも使いこなせるんだ。
185デフォルトの名無しさん:2011/05/30(月) 10:45:00.79
>>177
わざわざ危険なPGばかり集めて「どうだ安全だろう」って
言ってることとやってることが逆じゃないか
186デフォルトの名無しさん:2011/05/30(月) 10:46:28.16
あ、一つ忘れた、
L-チロシンも飲んでる
187デフォルトの名無しさん:2011/05/30(月) 10:52:51.98
CoQ10飲んでないとかモグリだろ
188デフォルトの名無しさん:2011/05/30(月) 10:54:22.10
>>185
安全で早く安いシステムが望ましい。
Javaだから安全だ、と宣伝しておいて、
一方では素人同然だが安い人材を登用すれば、
少なくとも安くて安全(と相手に思わせる)システムはできあがる。
189デフォルトの名無しさん:2011/05/30(月) 10:56:43.37
実際Aである必要はなくて相手がAであると思えばそれでA
宇宙を限定した場合の外延性だね
190デフォルトの名無しさん:2011/05/30(月) 11:03:51.66
>>185
好き好んでダメなPG集めてるわけじゃないだろwww
それしか集まらなかったんだよ
191デフォルトの名無しさん:2011/05/30(月) 11:36:37.34
変数名の綴り間違いとか明らかに一度も動作確認してない関数があるままコミットしちゃうようなプログラマが多いから
静的型付けで安全性が向上するのは間違い無いだろう。馬鹿馬鹿しいけど
192デフォルトの名無しさん:2011/05/30(月) 12:05:09.66
>>191
ん?それはどう考えても逆では?
そういうことは静的ならコンパイルしたらすぐに分かるわけで、
動作する前にバグが検出できるでしょ?
でも動的は動作させてみるまでわからない。
どっちが危険かは明らか。
193デフォルトの名無しさん:2011/05/30(月) 12:07:36.26
あ、悪い、読み間違った。
>>192はスルーで。
194デフォルトの名無しさん:2011/05/30(月) 12:27:08.94
動的言語派だってJava土方に動的言語が無理なのは分かっとる
ただスレタイのように他のPGにまで一般化するなと
195デフォルトの名無しさん:2011/05/30(月) 12:32:15.45
継承元の名前を意図せずオーバーライドしたりとか、リフレクションが使われてたら
名前変更による不整合をコンパイラでも検知できないわけで、コンパイルエラーが
出なかったからと、すっかり安心しきってしまうのはどうかと思うが。
196デフォルトの名無しさん:2011/05/30(月) 12:34:31.48
>>195
そういうところを扱うのは大規模開発では一部のPG
他の土方はずっとrenameしてる
197デフォルトの名無しさん:2011/05/30(月) 12:37:07.72
メソッドの追加(綴り間違い)と、
メソッド名の変更(綴り間違いの修正)が
土方の仕事だから
198デフォルトの名無しさん:2011/05/30(月) 12:39:29.68
AOPを使うときは名前って大事だよね。
199デフォルトの名無しさん:2011/05/30(月) 15:15:09.87
流石にリフレクションの検知は難しいけどオーバーライドくらいは開発環境側で検知出来るでしょ
200デフォルトの名無しさん:2011/05/30(月) 15:21:46.09
開発環境は飽くまで補助でしょ。
そこのところちゃんと分かっとかないと。
201デフォルトの名無しさん:2011/05/30(月) 15:47:43.03
mixinって便利だよねぇ。え? Javaにはないの? 
202デフォルトの名無しさん:2011/05/30(月) 15:51:01.47
>>201
Javaは保守的に過ぎる感はある
まあmixinと似たようなことをやるならScalaのtraitとかになる
203デフォルトの名無しさん:2011/05/30(月) 15:52:01.97
Java厨よりJava叩いてるやつのほうがキモイんだが
204デフォルトの名無しさん:2011/05/30(月) 15:57:19.50
    /\___/ヽ
   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|
.   |   `-=ニ=- ' .:::::::|
   \  `ニニ´  .:::::/
   /`ー‐--‐‐―´\
205デフォルトの名無しさん:2011/05/30(月) 17:22:26.72
Javaみたいな時代遅れの静的型なんかより
Haskellみたいな現代的な静的型を相手にしたほうがいい

俺的には、手続きベース言語なら動的型、関数型なら静的型だな
206デフォルトの名無しさん:2011/05/30(月) 17:39:24.01
Haskellって実務で使われてるの? つか、使えるの? 大規模開発できる?
207デフォルトの名無しさん:2011/05/30(月) 17:46:10.66
>>206
お前はプログラマーなんだろ?
自分でやれよ。
208デフォルトの名無しさん:2011/05/30(月) 17:51:58.43
じゃあScalaで
209デフォルトの名無しさん:2011/05/30(月) 17:56:54.99
そもそもオブジェクト指向が静的型と相性悪い
210デフォルトの名無しさん:2011/05/30(月) 18:11:16.07
>>207
いや、やれよって言われても、俺はHaskellは使ったことないから、聞いた方がはやいかなと思って。
211デフォルトの名無しさん:2011/05/30(月) 18:15:08.85
そもそもオブジェクト指向は俺とも相性が悪い
212デフォルトの名無しさん:2011/05/30(月) 18:27:57.87
>>209
ちがうだろ
リフレクションが危険なのだから、リフレクションなしの静的OOは間違っていない
213デフォルトの名無しさん:2011/05/30(月) 18:49:26.78
静的ということは、オブジェクトの性質を動的に変えられないということだ。
静的言語のオブジェクトは、予め敷かれたレールの上を走るだけの人生だ。
まぁストラテジパターンを使って振る舞いを変える程度のことはできるが、所詮、
猫の鳴き声をミャーから、ワンに変えられるという程度の話だ。

動的言語なら、オブジェクトの性質を実行時にいかようにでも変えられる。
オブジェクトが突然変異をおこしミュータントが生まれるモデリングだって可能
なわけだ。それこそ、猫をライオンに変えたり、首の長い兎にかえたり、空を飛ぶ
像に変えることだってできる。 しかし、その想像力を掻き立てる自由度の高さ故、
一歩間違えば、オブジェクトが暴走を始め、手の施しようのない状態に陥る危険性
をはらんでいる。一介の土方ごときに扱える代物ではないのだよ。
214デフォルトの名無しさん:2011/05/30(月) 19:00:41.87
>>213
動的言語がみんなオブジェクト指向だというのは間違っている
215デフォルトの名無しさん:2011/05/30(月) 19:07:22.40
PrototypeやJQueryは、JavaScriptという言語を見事に変異させたね。
216デフォルトの名無しさん:2011/05/30(月) 20:03:24.74
ここまでC#無し
217uy:2011/05/30(月) 22:00:21.79
213で結論でてるけど、「 一介の土方ごときに扱える代物ではない 」 だね
個人開発なら良いけど、ゴミみたいな奴がProjectにいる場合、動的言語なんて使いたくねえよ
優秀だろうとハッカーだろうと、そのProjectチームで一番レベルの低い奴に、足並みをそろえるために
JAVA等を使うんだ
チーム全員のスキルが高いなら、正直、言語はなんだっていいんだよwww チームの全員が「 いざとなれば 」 たとえ一人でも
プログラムを完成まで持っていけるレベルであるのが好ましい、
それすらかなわないゴミみたいな奴が多いから、コーディングを束縛して、変なほうへ突っ走らないように規約を沢山作らなくちゃならなくなって
その結果www バカみたいな言語で仕事しなくちゃいけなくなってんだよ・・・・・


>>176
alias使っていらなくなったら古いメソッド消せばいいだろks
218デフォルトの名無しさん:2011/05/30(月) 22:10:31.19
じゃあ早く証明駆動開発が普及させて真っ当な計算機科学を知らない人間には手も足も出ないぐらいハードル上げないと
219uy:2011/05/30(月) 22:19:25.74

ほんとだな

どんどんハードル上げちまえ

もう 知ったか野郎に落胆させられる日常は秋田
220デフォルトの名無しさん:2011/05/30(月) 22:33:44.38
>>217
> alias使っていらなくなったら古いメソッド消せばいいだろks

176の主張理解できてなくね?アホ過ぎ
221uy:2011/05/30(月) 23:20:42.33
ああもう静的言語厨うざい

話のフィールドが低いんだよ
もうとっくのとっくのとっくに答えでてることを

二度と話かけんな
222デフォルトの名無しさん:2011/05/30(月) 23:29:06.03
美意識の問題で動的言語はだめ。
書いたコードの動作が透けて見えないと嫌
223デフォルトの名無しさん:2011/05/30(月) 23:36:03.47
よし、話を整理しよう

                動的言語  静的言語
ユニットテスト          ○    ○
リファクタリングのしやすさ  △    ○
IDEのコード補完対応     △    ○
エラーの早期発見       △    ○

ここまではコンセンサスを得られていると思う。
224デフォルトの名無しさん:2011/05/31(火) 00:03:38.56
>>221
> 二度と話かけんな

それは不可能。
225デフォルトの名無しさん:2011/05/31(火) 00:08:07.21
>>217
> alias使っていらなくなったら古いメソッド消せばいいだろks

ドウテキガー曰く、
そんな自分勝手にメソッド名を消せばいいとかありえない。
メソッドを変えていいかコンセンサスを得てから
Obsoleteつけて世界中の人に古いメソッドは使うなと
周知する必要があるとかうんたらかんたらと
的はずれなことを言っていたから、

そんな方法じゃだめだよ。
226デフォルトの名無しさん:2011/05/31(火) 00:11:25.17
Obsoleteじゃなくて、Deprecated をつけて古い名前の方を非推奨にするんだよ、タコ
227デフォルトの名無しさん:2011/05/31(火) 01:27:34.41
このスレはデフォルトの名無しさんばかり書きこんでおられますね。
228デフォルトの名無しさん:2011/05/31(火) 02:03:03.86
そりゃ当たり前だろ、匿名掲示板なんだから
229デフォルトの名無しさん:2011/05/31(火) 03:07:41.67
JavaScript の代わりに Haskell がブラウザ上でネイティブに動くなら
断然 Haskell を使うんだがなあ

まあ JavaScript でも不満は無いけど
230デフォルトの名無しさん:2011/05/31(火) 03:17:49.78
無い無い
231uy:2011/05/31(火) 03:20:57.20
Haskellって何?

つうか、RubyかPerlがクライアント側で動くようにしろよーーー
さっさと言語統一
232デフォルトの名無しさん:2011/05/31(火) 03:29:35.41
Perlはともかく
Rubyなんてゴミはいらん
233uy:2011/05/31(火) 03:41:20.48
変数に$ついてる言語( 笑 )
デリミタのついてる動的言語( 笑 )
234デフォルトの名無しさん:2011/05/31(火) 05:13:09.94
Rubyはかなりマシだとは思ったけど、
関数型言語覚えた後だとちょっとゴテゴテしてるなぁって感じ。
Perlは知らない。覚える気もない。
235デフォルトの名無しさん:2011/05/31(火) 06:59:51.50
>>234
うわ、自分が居るw
236デフォルトの名無しさん:2011/05/31(火) 07:30:33.34
まあ、動的言語ならオープンクラス使ってサクッとやるところも
Java土方は「インターフェースからクラスのひな形作って……」とかやって、
それで生産性が高いとか思ってるんでしょwww
ま、適材適所で言語を選べない低能は哀れだね
237デフォルトの名無しさん:2011/05/31(火) 08:09:28.27
※個人の感想です
238デフォルトの名無しさん:2011/05/31(火) 08:29:45.21
>>236
インターフェースが必要なければ
普通にクラス作ればいいじゃん。

お前がアホにしか見えないんだけど。
239デフォルトの名無しさん:2011/05/31(火) 08:35:36.80
>>238
だから、オープンクラスで簡単に出来るところを
新たにクラス作って継承するんでしょ?www
それで生産性が高いとか、アホ過ぎwww
240デフォルトの名無しさん:2011/05/31(火) 08:45:31.08
規模の大きいソフトでの安全性の話のスレでなに言ってるんだ
241デフォルトの名無しさん:2011/05/31(火) 08:47:21.85
だから言ってるじゃん。大規模っていうのが土方率いて開発って意味なら
動的言語はありえないって
でも、少人数で開発するなら動的言語も選択肢に入るし、
テスト書けば安全なプログラムは組める

お前等土方はJava使ってなよ
242デフォルトの名無しさん:2011/05/31(火) 08:49:07.17
まあ、静的言語ならせめてScala使いたいよね
Java土方には覚えられないかもしれないけどね
243デフォルトの名無しさん:2011/05/31(火) 08:49:10.04
土方を扱えないからトイプログラムの再生産
存在価値なし
244デフォルトの名無しさん:2011/05/31(火) 08:50:24.02
土方の作ったプログラムって存在価値あんの?www
245デフォルトの名無しさん:2011/05/31(火) 08:53:12.13
社会のシステムはそうやって作られてるんだよ
246デフォルトの名無しさん:2011/05/31(火) 08:54:28.96
そうだねそうだね、そのとおりだね
今日も一日メソッド名変更のお仕事頑張ってね
247デフォルトの名無しさん:2011/05/31(火) 09:01:14.63
存在価値のないお前はやることないな
248デフォルトの名無しさん:2011/05/31(火) 09:48:31.24
>>240
たしかにMonkey patchingによる変更は場当たり的だし、危険ですらある

でも、そうやって使われた機能のうち有用だと認められたものを
本家の機能として取り込んでいく
そういうのもリファクタリングっていうんだよ

リファクタリングと聞くとメソッド名変更を思い浮かぶ人には
難しい話かもしれないけどね
249デフォルトの名無しさん:2011/05/31(火) 09:59:50.97
モンキーパッチングはいまあるRubyの機能を活用して実現してるのに
取り込むもなにもなかろうもん
250デフォルトの名無しさん:2011/05/31(火) 10:03:00.63
処理系に取り込むんじゃなくて既存クラスに取り込むんだろ
有名どころではRubyのSymbol#to_proc
251デフォルトの名無しさん:2011/05/31(火) 13:02:34.85
あのルパン三世を書いてる人か...
252デフォルトの名無しさん:2011/05/31(火) 17:46:52.71
規模が大きいとか連呼してるサルは
よほど巨大なクラスを作ってるんだろうな

いくらクラス数が多くたって
個々のクラスを適度ななサイズにして
十分な量のテストコード書けば
動的型でも十分コントロールできるし
巨大クラスな静的型よりよほど安全だ

253デフォルトの名無しさん:2011/05/31(火) 17:50:29.36
誰がそれをやるんだよ、相手は土方だぞ!
254デフォルトの名無しさん:2011/05/31(火) 17:52:02.03
世の中オブジェクト指向だけじゃないと何度言ったらわかる
255uy:2011/05/31(火) 17:52:32.53
>>234
Perlすら知らないでRuby語っちゃうの?
それRubyがおぼえられなかったの間違いじゃね


Perl6はRubyとは別ベクトルに進んでるけど、
特殊変数まみれにする事でPerlは開発効率を高める言語だから
その一点においてはRubyどころか、関数型(笑)とか余裕で超えてるし
一気に突き放す可能性もある
その特殊変数を覚えて使いこなせればの話なんだけどな

Perlはやっぱり正規表現の考えの延長上にある言語だと思う
暗黙の了解を、どんどん増やしていって、プログラマ自身をPerlのフィールドに引き込む言語
たいしてRubyを含め、Perl以外の言語は、自分のフィールドに言語を引き込む
だからいってしまえば、Perl以外の言語っていうのは再発明を積極的に行っちゃう言語とも言えるんだよ ほんの小さな事だけど
無駄な変数宣言が多くなってしまうからね それは = 再発明

$記号がSHIFT押さなきゃ打てないとか、みにくいとか、そんなのレジストリ変更するとかフォント変更すれば
どうにでもなる問題だからな・・・・未来はあると思ってる
256デフォルトの名無しさん:2011/05/31(火) 17:58:33.26
Githubの適当なプロジェクトを例示しながら説明すれば、説得力があるよ。
257デフォルトの名無しさん:2011/05/31(火) 18:23:47.13
Haskellで書いたほうが安全とか言うけどさ、
処理系がバギーだからトータルじゃPythonのほうがまだ安全じゃね?
スレッドとか低レベルIOとかグッチャグチャだぜ?
258uy:2011/05/31(火) 18:33:13.73
Haskellとか、冗談みたいなゴミ言語だからさ・・・

RubyとかJAVAすら扱えなくて、そっち方面に逃げたバカだろ
相手にしなくていい どうせ1年持たずにプログラミングの世界を去る人間
259デフォルトの名無しさん:2011/05/31(火) 18:37:17.88
>>258 Haskelの特にどの辺がゴミ言語だと思うの?
260デフォルトの名無しさん:2011/05/31(火) 18:41:01.20
>>257
kwsk
261デフォルトの名無しさん:2011/05/31(火) 18:44:05.52
>>255
可読性落ち過ぎだろ
関数型言語は数学の視点に立てば、決して可読性が落ちる物じゃ無い
(むしろ読みやすい)
262デフォルトの名無しさん:2011/05/31(火) 18:51:27.42
わからないものはゴミ!
263デフォルトの名無しさん:2011/05/31(火) 18:54:47.95
>>262
ひょっとしてHaskellのこと知らないのにゴミ言語とか言ったの?
実はJavaしか知らないとか?
264デフォルトの名無しさん:2011/05/31(火) 19:01:10.45
>>262
ええええええええ!?
基礎くらいは分かってからディスれよ。。。
GUI以外は、本当に分かり易いんだぜ?
リストとリストの構文糖衣
基本的な演算子
これだけ覚えれば、大抵の関数は自作出来るんだぞ

これほど内部処理の書き方が楽な言語有るかよ
265デフォルトの名無しさん:2011/05/31(火) 19:04:46.01
Java厨が他の言語しってるわけねーだろw
266uy:2011/05/31(火) 19:07:05.13
PerlはLarryの視点に立てば、決して可読性が落ちる物じゃ無い
(むしろ読みやすい)
(キリッ)
http://perlgeek.de/en/article/5-to-6

つうかPerlも多重継承できるようになってるのか、Ruby涙目
267デフォルトの名無しさん:2011/05/31(火) 19:07:56.69
Haskellなんてなんの実績もないだろ
所詮、おもちゃ言語
268デフォルトの名無しさん:2011/05/31(火) 19:10:54.37
RubyはMix-Inが使えるから、多重継承はいらない。
269デフォルトの名無しさん:2011/05/31(火) 19:15:18.61
>>260
ネイティブスレッドの管理と非同期IO
270uy:2011/05/31(火) 19:24:58.71
>>268
いる 欲しい
普通に言語内で行えるパターンが多いに越した事は無い
多重継承ないせいでmoduleを介して多重継承しなくちゃいけなくなってる
結局module includeだって名前衝突するんだから多重継承とかわらない
Perlの特殊変数も欲しいし、あれがないせいで未だにPerlに劣る部分が出てるかと
271デフォルトの名無しさん:2011/05/31(火) 19:42:49.60
どっちみちクラスはモジュール単位たせろ
272uy:2011/05/31(火) 19:45:32.89
そうかもしれん
俺が間違っていタセロ
273デフォルトの名無しさん:2011/05/31(火) 19:49:15.86
常人にはHaskellのようなlazyな言語の
計算量を見積もるのは不可能に近い
沢山計算するようなプログラムをHaskellで組むと
すげー遅いんだけどどこが遅いか分からん、
みたいになる(少なくとも俺は)
274デフォルトの名無しさん:2011/05/31(火) 19:52:41.71
>>270
Rubyにあった方がいいPerlの特殊変数って何がある?
275デフォルトの名無しさん:2011/05/31(火) 19:58:47.54
>>269
具体的に
276uy:2011/05/31(火) 20:00:37.73
一番欲しいと思ったのは ループ時の $_
それあれば
[1,2,3,].each do
 print $_
end
とかかけるし
けど$はあんまり好きじゃないから
[1,2,3,].each do
 print each_self.n
end
こんなんになるのがrubyらしく見える
277デフォルトの名無しさん:2011/05/31(火) 20:04:15.22
Rubyにも、$_ あるやん
278デフォルトの名無しさん:2011/05/31(火) 20:07:44.60
>>273
haskell的には分からなくて良い
遅いのは、そもそもアルゴリズムが遅いんだ。みたいな風潮?
279uy:2011/05/31(火) 20:08:56.00
どこに
280デフォルトの名無しさん:2011/05/31(火) 20:10:47.87
● 変数 $_

変数「$_」は、省略された場合のデフォルト変数として使われることがあります。
Ruby の場合は、メソッド/関数形式の場合、次の処理で利用されています。
また、文字列の比較などのデフォルトの対象になります。
なんでもかんでも「$_」をデフォルト変数/引数として使用するというわけではありません。

gets
readline
print
split
scan
chop
chop!
chomp
chomp!
gsub
gsub!
sub
sub!
281uy:2011/05/31(火) 20:12:47.66
「 ループ時の $_  」

はい
282デフォルトの名無しさん:2011/05/31(火) 20:13:53.71
>>273
ん?関数型言語は副作用考えなくて良いから
計算量を見積もるのはむしろやり安いぞ。
ステップを見積もるのは難しいが。
283デフォルトの名無しさん:2011/05/31(火) 20:18:00.86
Lispの四則演算 きもち悪い
284uy:2011/05/31(火) 20:19:25.31
人に読みやすいかどうかよりも
プログラム言語としての統一性のためにあんな事になってる感じだからな
人がそれ読めるようになるといいんだけど、その進化をするまでに少し時間がかかる
285デフォルトの名無しさん:2011/05/31(火) 20:21:27.60
>>283
haskellにおいでませ^^
286デフォルトの名無しさん:2011/05/31(火) 20:22:10.70
計算式を一回ばらして、人間が優先順位を考えてやらないといけないとか、俺には無理。
287デフォルトの名無しさん:2011/05/31(火) 20:26:05.64
ほぉ、Haskellは四則演算は普通に書けるのか。関数型のくせに
288デフォルトの名無しさん:2011/05/31(火) 20:32:39.89
四則演算舐めんな
その正体は体だぞ実数だぞ
289デフォルトの名無しさん:2011/05/31(火) 20:32:55.73
>>287
書けるさw
むしろlisp系が特殊なだけだろ
290デフォルトの名無しさん:2011/05/31(火) 20:36:56.58
ついでに、smalltalkも普通の演算規則じゃ無いからね
優先順位はみんな一緒♪
ちゃんとカッコを付けないと、大変
(全部平等なオブジェクトとして見てるのかね?)
291デフォルトの名無しさん:2011/05/31(火) 20:43:38.14
>>287
演算子は全て関数だぞ。

(+) :: (Num a) => a -> a -> a
という具合。
他言語ユーザーから余り理解されていないが、
Haskellのコアはかなりシンプル。
292デフォルトの名無しさん:2011/05/31(火) 20:45:14.51
>>282
結局は俺がアホであることに帰着されるが、
Debug.Trace でどこでどのくらい計算が廻ってるのか
printf デバッグしたのは悲しい思い出
293デフォルトの名無しさん:2011/05/31(火) 20:52:04.91
ここは動的型付言語か静的型付言語かのスレですか
それとも動的言語か静的言語かのスレですか
294デフォルトの名無しさん:2011/05/31(火) 20:53:01.50
HaskellとかLispとか、趣味でやる分にはいいのかもしれんがなぁ..
仕事では使う場面ないよなぁ、普通は。
295デフォルトの名無しさん:2011/05/31(火) 20:54:02.24
>>293
Javaかそれ以外の言語かのスレです。
296デフォルトの名無しさん:2011/05/31(火) 20:55:08.55
>>294
使おうと思ったら使えるだろ。
下っ端サラリーマンには難しいかもしれんがな。
297デフォルトの名無しさん:2011/05/31(火) 21:00:37.46
まず、使おうと思う気がおきない。
298デフォルトの名無しさん:2011/05/31(火) 21:04:48.99
>>297
サーバーなんかはI/Oの高速さが重要だから
Cはちょっと低機能だしJavaはI/Oが遅いし、っていう時に
HaskellやOCamlを使うのは理にかなっているよ。
299デフォルトの名無しさん:2011/05/31(火) 21:11:02.22
>>298
おれなら、C++かPythonを選択する。
300デフォルトの名無しさん:2011/05/31(火) 21:13:59.41
俺ならC++もPythonも無いなw
301デフォルトの名無しさん:2011/05/31(火) 21:16:53.13
Haskellはコミュニティーが小さすぎて却下だな。問題が起きた時の情報源が少なすぎる。無理。
302デフォルトの名無しさん:2011/05/31(火) 21:17:55.11
無理じゃない人が使ってる
303デフォルトの名無しさん:2011/05/31(火) 21:18:13.62
IRCのHaskellチャンネルは年中無休で賑わっているが。
304デフォルトの名無しさん:2011/05/31(火) 21:20:28.77
>>299
C++もCと同じぐらい低機能。
クラスとかSTLとかBOOSTとかがあるだけのC。
Javaよりさらに遅いPythonを使うのはバカげてる。
305デフォルトの名無しさん:2011/05/31(火) 21:23:01.25
はいはいJava最強Java最強
306デフォルトの名無しさん:2011/05/31(火) 21:29:29.14
Pythonコンパイラだってあるんだぞ、探せば。
307デフォルトの名無しさん:2011/05/31(火) 21:31:49.12
>>306
現状のPythonコンパイラは静的言語だよ。
動的言語のコンパイラを作るのは難しいからね。
308デフォルトの名無しさん:2011/05/31(火) 21:36:22.09
動的だろうが、静的だろうが、どっちでもいいんだよ。
309デフォルトの名無しさん:2011/05/31(火) 22:12:05.12
 ・・・・というオチがついたところで
       おあとがよろしいようで   _
            ∧_∧       .|  |
            (´‘J‘`)       |三|
           cく_>ycく__)       |凡|
           (___,,_,,___,,_)  ∬   |_|
          彡※※※※ミ 旦.   ┴
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   \ どっ!!  /   \ ワハハ! /
     \     /      \     /
   ∧∧   ∧∧ ∧ ∧  ∧ ∧ ∧ ∧
   (    ) (    )   ,,)(   )(   )
310デフォルトの名無しさん:2011/05/31(火) 22:21:49.79
=== 終了 ===
311uy:2011/05/31(火) 22:38:43.32
>>304
絶対こいつC++使えない・・・  死ねよゴミが
312デフォルトの名無しさん:2011/05/31(火) 22:41:53.56
>>311
ハイハイ、乙
C++で商用ネトゲのゲームサーバ実装したことあるからね。
313uy:2011/05/31(火) 22:46:09.66
あ、よくみたらHaskellのおばかさんだったwwwwwwww

なるほど・・・・ PerlどころかRubyどころかC++すら使えないから
Haskell程度のゴミ言語SUGEEしてるわけかwwww

>>312
??




ああ・・・なんだ、ただのガキだった・・・・ もういいやこういうの秋田市
314デフォルトの名無しさん:2011/05/31(火) 23:30:17.36
まぁ、要するに2chで誰それがどんな言語がどれだけ使えるかとか、
何が出来るとかできないとか、学歴がどうとかこうとか、どんな経歴があるかとか、
そんな情報は何の役にも立たないのだから、
いちいち相手にしてる奴はただのバカ
315uy:2011/05/31(火) 23:44:40.20
それをいったら314
2chっていう遊びそのものが無駄だ

はりぼて知識でもいいので、俺の前でボロ出さないでくれたらそれでいいよ
316デフォルトの名無しさん:2011/05/31(火) 23:55:40.37
>>315
真実だという証拠も、そうでない証拠もない。
2chはそういうところだ。
だから、2chで出していいのはソースが存在する情報だけなんだよ。
317uy:2011/06/01(水) 00:32:31.06
いいからガキはもう寝ろ
318デフォルトの名無しさん:2011/06/01(水) 00:55:13.39
こっからはニートの時間だなw
319デフォルトの名無しさん:2011/06/01(水) 00:58:50.22
いまだにテトリスしか作れないw
320uy:2011/06/01(水) 01:15:29.70
もう
なんでも





いい
321デフォルトの名無しさん:2011/06/01(水) 04:06:17.61
今日もJava土方が必死だったな。
俺はニートじゃないからもう寝るよ。
322デフォルトの名無しさん:2011/06/01(水) 08:47:31.55
C++は「言語として」は異常なほど多機能で、ぶっちゃけやり過ぎて解りにくいレベル
でも「標準構成でやれること」はその割に少なくて、外部ライブラリに頼る部分が多い
なので「低機能」という言葉の定義によって話が変わってくると思う
323デフォルトの名無しさん:2011/06/01(水) 10:22:22.79
オブジェクト指向で無ければプログラミングに非ず
とか思ってそうな奴がいるのはウザいなぁ。
最近オブジェクト指向を覚えたばかりのお猿さんなのかな?
関数型プログラミングも覚えれば別の見地も開けるだろうに。
324デフォルトの名無しさん:2011/06/01(水) 10:28:33.58
一時期やたら関数型ハマったけど、やっぱり流行りに過ぎなかった
325デフォルトの名無しさん:2011/06/01(水) 10:37:27.99
>>323
関数型言語はまだ発展段階。
体系的にプログラミングする手法もまだ確立されていないだろ?
だから研究やホビー以外で使うのをためらう人が多いんだよ。
326デフォルトの名無しさん:2011/06/01(水) 10:54:24.16
プロダクションには使えないなキリッとか
ホビー、ホビーってしたり顔するけど
単に周りが使ってるかどうかで判断してるだけの
周回遅れの技術音痴プログラマばっかり。
おまえのコードがプロダクションレベルじゃねぇぞ。
327デフォルトの名無しさん:2011/06/01(水) 10:57:29.74
>>325
ためらうもなにも、実際に20年以上前から関数型言語が大規模業務で使われているわけだが。
328デフォルトの名無しさん:2011/06/01(水) 11:03:54.56
そういえばErlangはエリクソンで使われてきた業務言語で
関数型+動的型付けだったか
329デフォルトの名無しさん:2011/06/01(水) 11:08:26.32
エリクソンはerlang、JRの鉄道情報システムはProlog、
Exciteの株式システムはOCamlで実装されてる。
他の証券会社でLISPで実装してるところがあったような。
330デフォルトの名無しさん:2011/06/01(水) 11:19:05.38
>>325
クラスをクロージャに置きかえるだけの手法なら完全に確立している。
メソッド名が一向に確立しないクラスとは違って無名関数は名前で悩まない。
331デフォルトの名無しさん:2011/06/01(水) 11:22:54.65
>>329
んー、やっぱそんなもんなのか
332デフォルトの名無しさん:2011/06/01(水) 11:23:32.53
コテハンより名無しの方がいいってこと?
333デフォルトの名無しさん:2011/06/01(水) 11:25:56.06
ここで言ってる体系的なプログラミング手法ってのは
ダメなPGには延々メソッド名変換させておくとか
そういう方法論のことなんだろ?
そりゃ関数型言語じゃ確立してないだろうな
334デフォルトの名無しさん:2011/06/01(水) 11:27:28.81
>>329
Prologすげえええ
335デフォルトの名無しさん:2011/06/01(水) 12:28:07.54
鉄道か、言われてみればProlog向きかも知れんな
関数型じゃなくて論理型言語だけど
336デフォルトの名無しさん:2011/06/01(水) 12:41:08.36
当時は鉄道情報システムのの設計にZ言語が使われた。
そしてZ言語からほとんどそのままPrologに落とした。
今でも形式手法の成果として挙げられる。
337デフォルトの名無しさん:2011/06/01(水) 12:43:12.93
と、絶版になった本に書いてあった。
338デフォルトの名無しさん:2011/06/01(水) 12:46:12.50
javascriptはオブジェクト指向でも関数型でもかける
そうじゃなくて目的に対しどうだったら安全かが大事
339デフォルトの名無しさん:2011/06/01(水) 12:48:44.77
おい、動的か静的かの話なのに、オブジェクト指向か関数型かで話すんじゃねーよ
340デフォルトの名無しさん:2011/06/01(水) 12:49:34.00
どうだったら安全なんですか?
危険であると仮定したらFalseが証明できるとかそういう「天と地がひっくり返らなければ」レベルの安全?
341デフォルトの名無しさん:2011/06/01(水) 14:48:50.27
何度も言いますが、100%の安全等ありえません。

自分の身は自己責任で守ってください。我々の住むこの世界は
常に危険と隣り合わせだということを肝に銘じでおくべきでしょう。

しかしあまり神経質になっても精神的な負担になってしまいます。
どうしても心配だという方は、ヘルメットと防弾チョッキを常時身に
つけるなどされれば気休めになるのではないでしょうか。
また、最近では、さらに放射線防護服も着用されれば、よりいっそう
安心感が増すことでしょう。
これらは昔は入手困難なものもありましたが、今では通販等でも
手軽に手に入れることが可能です。

繰り返しますが、自分の身は自分で守るしかありません。言語が
静的だろうが、動的だろうが、そんなことは関係ないのです。
342デフォルトの名無しさん:2011/06/01(水) 16:06:29.81
言語としての安全性は動的が静的を上回ることは無いだろうが、それは下限を言ってるだけで、最後書く人次第じゃないの結局。特にテスト
343デフォルトの名無しさん:2011/06/01(水) 17:00:38.72
そろそろアサーションをきっかり言語レベルでサポートした動的言語が普及しないものかな。
344デフォルトの名無しさん:2011/06/01(水) 17:05:23.66
>>343
それは標準ライブラリとしてでもいいのかね?
345デフォルトの名無しさん:2011/06/01(水) 19:02:37.34
そういえば、黒田アーサーって最近見ねーな
346デフォルトの名無しさん:2011/06/01(水) 19:56:24.26
100じゃないなら0でいいです!
347デフォルトの名無しさん:2011/06/01(水) 21:15:16.98
>>336
普通はZ記法と呼ばんか?
348デフォルトの名無しさん:2011/06/01(水) 22:18:15.74
>>329
> JRの鉄道情報システムはProlog
ソースきぼん
349デフォルトの名無しさん:2011/06/02(木) 00:23:12.08
SmalltalkとC++でどっちが安全か
おれはどっちもどっちだと思う
しかしここにJavaを混ぜればJavaだと思う。
ちなみに普段はC++で仕事してる。
350デフォルトの名無しさん:2011/06/02(木) 00:31:59.26
>>348
その計画に携わった先生が言ってた
351デフォルトの名無しさん:2011/06/02(木) 00:39:00.88
てかインターネットが栄えるずっと昔の話がネットで拾えるわけないだろ。
352デフォルトの名無しさん:2011/06/02(木) 03:17:14.40
serverをseverとスペルミスしていた。

やっぱり静的言語がいいと思った。
353デフォルトの名無しさん:2011/06/02(木) 04:59:38.96
Clojureは動的言語だけど、
EmacsでC-c C-k でコンパイル?すれば
すぐスペルミス分かっていいよ。
354デフォルトの名無しさん:2011/06/02(木) 12:36:00.39
>>353
それはスペルチェックでは
355デフォルトの名無しさん:2011/06/02(木) 17:40:29.37
>>349
ちゃんと作ればSmalltalkのほうが遥かに安全だ
356デフォルトの名無しさん:2011/06/02(木) 17:43:55.16
>>355
なんで閉じた環境でしか動かない終わった言語を今更持ち出すのか、そっちの方を問いたい。
357デフォルトの名無しさん:2011/06/02(木) 17:44:38.76
>>2
ム板できたての頃にこんな罵り合いを見たことがある。
358デフォルトの名無しさん:2011/06/02(木) 17:48:59.87
お前ら成長してねーな
359デフォルトの名無しさん:2011/06/02(木) 19:29:18.91
今時のIDE+静的言語だと、エディタで文字を入力している傍からスペルミス程度は警告してくるからなぁ…。
360デフォルトの名無しさん:2011/06/02(木) 19:33:16.04
>>356
おまえ、今時のSmalltalk知らないだろ
よくいるよな、20年前のSmalltalkしか知らない老害と
自分で使ってみることすらせず老害の言葉を受け売りするガキw
361デフォルトの名無しさん:2011/06/02(木) 19:59:38.32
>>360
多言語と比べたベンチマークはある?
362デフォルトの名無しさん:2011/06/02(木) 20:43:46.89
今どきも Smalltalk って言ったら VisualWorks か Squeak だよね、多分
363デフォルトの名無しさん:2011/06/02(木) 20:44:59.16
>>362
どっちも閉鎖環境だけど。
364デフォルトの名無しさん:2011/06/02(木) 20:48:48.73
閉鎖と言うのはちょっと違うな
リッチな仮想マシンというか
仮想環境というか
継続的環境というか
365デフォルトの名無しさん:2011/06/02(木) 20:51:13.84
そういう環境だと、Apacheと併用したり、
スタンドアロンで動くソフトを配布したりするのは難しくなるよね。
366デフォルトの名無しさん:2011/06/02(木) 20:53:27.16
丸っと全部配布しちゃえば良いから stand alone はむしろ楽なんじゃないの
367デフォルトの名無しさん:2011/06/02(木) 20:57:02.68
>>366
まず、見た目が格好悪い。
ユーザーが使い方がわからない。
そして遅い。
368デフォルトの名無しさん:2011/06/02(木) 20:59:02.45
見た目が悪くてユーザが使い方が分からなくて遅いアプリなんて沢山あるじゃん
作り方次第
369デフォルトの名無しさん:2011/06/02(木) 21:03:39.19
>>368
smalltalkはpythonやrubyなどの他のスクリプト言語より特殊だからね。
使い手も多くないし、見た目が良くてユーザビリティに優れて初心者でも分かりやすくて早いアプリを作るのは難しいんじゃないかなぁ。
370デフォルトの名無しさん:2011/06/02(木) 21:05:04.66
pythonやrubyでも、見た目が良くてユーザビリティに優れて初心者でも分かりやすくて早いアプリを作るのは難しいと思う
python遅いし
371デフォルトの名無しさん:2011/06/02(木) 21:05:12.84
Squeakなんかは小学生にコンピュータに触れさせるためのツールとして使われている実績があるし、
トイ言語としては優秀なんじゃない?
372デフォルトの名無しさん:2011/06/02(木) 21:15:57.91
>>359
識別子を定義するときに間違えても警告してくれんの?
ま、英語の綴り間違いとかアホっぽいからどうでもいいけど
373デフォルトの名無しさん:2011/06/02(木) 21:23:24.67
プログラミングでなくとも、見た目が良くてユーザビリティに優れて初心者でも分かりやすいものを作るのは難しい。
早いことが良いかどうかはものによる。
374デフォルトの名無しさん:2011/06/02(木) 21:28:50.11
そうかい、じゃあ何でも機械語でプログラミングしてくれ。

と言われるぞ。
作りやすさってもんがある。
375デフォルトの名無しさん:2011/06/02(木) 21:33:23.81
>>336
Zはプログラミング言語じゃないだろ。
376デフォルトの名無しさん:2011/06/02(木) 21:34:42.69
>>375
プログラミング言語ではないが仕様記述言語だな。
377デフォルトの名無しさん:2011/06/02(木) 22:29:11.13
378デフォルトの名無しさん:2011/06/03(金) 00:11:11.51
>>377
マンデブロに到っては37倍!?
遅ぇー…。
379デフォルトの名無しさん:2011/06/03(金) 00:14:42.06
ちなみにpythonは74倍
380デフォルトの名無しさん:2011/06/03(金) 00:18:13.10
>>378
いかがわしい集合だなあ
381デフォルトの名無しさん:2011/06/03(金) 00:18:57.57
WEB用途だと速度はあんまり関係ないよね。
重要なのは処理速度よりもI/Oの速度になってくる。
それにpythonはcgiとかGAEとかいろいろ組み込んで使えるし、
そういう使い方ができるからこそスケールアウトとかもやりやすい。
VisualWorksはちょっとそういう使い方はできないっぽいよね。
自分でスケールアウトするように作らなきゃいけなくなるから手間だよね。
382デフォルトの名無しさん:2011/06/03(金) 00:20:02.31
>>380
そう思うならsmalltalkで軽いマンデルブロのコード書いて証明してみな。
383デフォルトの名無しさん:2011/06/03(金) 00:21:33.12
GoogleがUnladen Swallowで一生懸命Pythonの処理速度を上げようとしたけど
ダメだったじゃん...。GAEはGoのサポートを始めたね。

一方FacebookはPHPをC++にトランスレートして高速化した。
384デフォルトの名無しさん:2011/06/03(金) 00:30:21.81
>>383
2chもCで書かれてるね。
まぁ、当然PythonやPHPのようなスクリプト言語とC/C++では
I/Oのスピードが雲泥の差だから仕方ない。
ある程度サービスの形が定まったなら、C/C++に切り替えても良いと思う。
385デフォルトの名無しさん:2011/06/03(金) 00:36:04.58
>>382
2chは初めてか?力抜けよ
386デフォルトの名無しさん:2011/06/03(金) 00:38:35.56
あまりライブラリ部に興味ない
387デフォルトの名無しさん:2011/06/03(金) 00:44:40.41
>>384
bzrもCで書き換えて欲しいな
pythonは遅くてかなわん...
388デフォルトの名無しさん:2011/06/03(金) 01:41:54.33
pythonが遅いとか言ってたら、スクリプト言語は全滅じゃん。
389デフォルトの名無しさん:2011/06/03(金) 01:45:59.50
390デフォルトの名無しさん:2011/06/03(金) 02:09:17.73
SBCLは型指定できるしコンパイラ付き
391デフォルトの名無しさん:2011/06/03(金) 02:13:01.53
言語  処理系  時間
C  gcc 3.4.4  2.3 秒
Java  Java 1.6.0 (HotSpot VM)  4.2 秒
Smalltalk  VisualWorks7.7nc  10.6 秒
Smalltalk  Squeak4.1 (Cog VM)  26.5 秒
Common Lisp  SBCL 1.0.37  29.4 秒
Ruby  Ruby1.9.2  128.5 秒
Python  Python 3.1.2  475.9 秒
Scheme  Gauche 0.9  550.2 秒
392デフォルトの名無しさん:2011/06/03(金) 02:17:18.49
pythonさん遅ぇー...。
393デフォルトの名無しさん:2011/06/03(金) 05:11:27.79
>>365
> そういう環境だと、Apacheと併用したり、

ぽか〜ん
こいつバカじゃん
394デフォルトの名無しさん:2011/06/03(金) 05:12:39.25
>>363
VisualWorksが閉鎖環境だと言うなら、UNIXプロセス自体が閉鎖環境だよw
395デフォルトの名無しさん:2011/06/03(金) 07:32:23.23
Python だと遅いところは ctypes とか scipy.weave.inline を使って
簡単に速くできるからなぁ
396デフォルトの名無しさん:2011/06/03(金) 07:45:24.47
pypyとかpsycoとかあるやん
397デフォルトの名無しさん:2011/06/03(金) 08:23:54.76
Smalltalkのことをわかってない香具師大杉
398デフォルトの名無しさん:2011/06/03(金) 08:26:08.42
起動が遅い環境は、リソースを解放して再起動すると遅いからリソースを占有し続ける
それが閉鎖的に見える
統合環境はほとんど必然的に閉鎖環境になる
399デフォルトの名無しさん:2011/06/03(金) 08:38:05.20
Pythonの3系は遅くなったのか? 2系はそうでもなかったのに。
400デフォルトの名無しさん:2011/06/03(金) 08:40:38.38
ん? よくみるとそうでもないな
401デフォルトの名無しさん:2011/06/03(金) 09:01:47.94
>>395
Java も JNI を使えば簡単に速く出来るし、
C もインラインアセンブラ使えばもっと速くなるな
ObjC なんて特別な事をしなくても常に C のコードとハイブリッド出来るし、
Lisp を始め、今どきの言語は FFI くらい普通に装備している

それでも既にチューニング済みの標準ライブラリとかは速くなり様が無いし、
言語仕様的に遅い部分はどうしようもないというのが常識だが
402デフォルトの名無しさん:2011/06/03(金) 09:06:26.95
>>396
JITくらい標準で使える様にしておいて下さいよ...。
403デフォルトの名無しさん:2011/06/03(金) 09:07:18.78
でも、そういったFFIが簡単にできるという立場に立てば、
>>391の差は現実に使うときには影響は
ずっと小さいってことになるよね

>>401
標準ライブラリにmonkey patchあてたら?
404デフォルトの名無しさん:2011/06/03(金) 09:10:59.61
>>401
例えばJavaでArrayListが配列に比べて遅いのとか、
Boxingが遅いのとか、
言語仕様的にうんこな部分はどうしようもないよなぁ
405デフォルトの名無しさん:2011/06/03(金) 09:50:03.76
うんこではないと思うが..
406デフォルトの名無しさん:2011/06/03(金) 09:53:49.40
>>403
その分だけ相手も速くなるから、結局一緒
現実的な話をすれば、速くなればなっただけ機能が増えたり
適用領域が広がったりする物なので、結局一緒
407デフォルトの名無しさん:2011/06/03(金) 09:57:36.31
>>395-396
それで簡単に bzr が git 並みにサクサク動く様になるなら
この世に苦労はないわな
408デフォルトの名無しさん:2011/06/03(金) 10:32:00.79
bzrみたいなうんこじゃなくて
hgと比べろよ
409デフォルトの名無しさん:2011/06/03(金) 10:34:55.00
>>406
際限なく高速化できて差が一定のままならその通りだが、
実際には速度差は縮むから、全然一緒じゃないよ
そんなことも分からないほどアホだから
Javaくらいしか使えないんだよ、可哀想に
410デフォルトの名無しさん:2011/06/03(金) 10:48:56.84
gitには確かに速度で及ばないけど十分実用範囲の速度を出せてるよなhg
あぁbzrは早く死んでください
411デフォルトの名無しさん:2011/06/03(金) 11:04:52.23
安全性から速度へテーマが変わったのか
412デフォルトの名無しさん:2011/06/03(金) 11:15:01.74
squeakの安全性について語りましょう
413デフォルトの名無しさん:2011/06/03(金) 11:26:47.71
むしろC++とJNIでunsafeなソフトを作る
414デフォルトの名無しさん:2011/06/03(金) 11:32:16.47
haskellではunsafeな関数とffiにだけ気をつけておれば型に関して安全なコードが書ける。
415デフォルトの名無しさん:2011/06/03(金) 11:34:52.77
まずは危険性を放置した無責任なPGを罰する法整備を早急にしないとな。
PGにやる気がないんじゃいくら言語にこだわっても意味が無い。
416デフォルトの名無しさん:2011/06/03(金) 11:43:23.85
仮にそれぐらい厳しくなっても形式的手法は流行らないだろうな
417デフォルトの名無しさん:2011/06/03(金) 11:44:31.21
>>415
プログラマを免許制にすればいいんだよ。
あらゆるプログラミングを免許なしに行えないようにすれば良い。
フリーソフト公開するのも免許必須。
情報処理技術者認定試験を免許試験にし、
さらに研修医制度みたいな研修プログラマ制度みたいなのもすればいい。
418デフォルトの名無しさん:2011/06/03(金) 11:45:20.82
>>416
免許制にして院卒が増えれば流行るんじゃね。
419デフォルトの名無しさん:2011/06/03(金) 11:47:34.61
もちろん、プログラマになろうとする奴の数を制限してプログラマの給料アップにも貢献。
給料が増えることでモチベーションもアップし、日本のIT業界の進歩が加速する。
420デフォルトの名無しさん:2011/06/03(金) 11:55:14.77
そんなことせんでもCSのマスター以上持ってるの限定ってやって
資格の難度をまともな大学院の入試レベルにするだけでも1/10未満になるだろうよ
421デフォルトの名無しさん:2011/06/03(金) 11:59:06.93
>>420
まず、そんなことをする経営者はいない。
免許制度はプログラマを守る制度であって、
安全性を向上させるための制度ではないからだ。
もちろん免許制度はプログラマにとっては得になるが、経営者にとって得にはならない。
422デフォルトの名無しさん:2011/06/03(金) 12:15:53.30
いまだに予算を人月で計算してたりするしな
423デフォルトの名無しさん:2011/06/03(金) 12:17:24.16
プログラマの白い巨塔つくろうぜ
424デフォルトの名無しさん:2011/06/03(金) 12:51:15.22
なんで?
425デフォルトの名無しさん:2011/06/03(金) 12:53:04.59
プログラマに逆らう経営者が許せん
426デフォルトの名無しさん:2011/06/03(金) 12:53:54.75
どうして?
427デフォルトの名無しさん:2011/06/03(金) 12:59:45.43
ところで動的言語は安全なの?
428デフォルトの名無しさん:2011/06/03(金) 13:28:04.36
C言語に比べりゃだいたい安全よ
429デフォルトの名無しさん:2011/06/03(金) 14:05:47.30
>>419
医者でも医療ミスのリピーターってのがいるからなぁ。
プログラムの安全にはあまり効果ないような気がする。
430デフォルトの名無しさん:2011/06/03(金) 14:23:37.29
>>429
100人中10人が医療ミスするのか、100人中1人が医療ミスするのか、どっちがいいの?
431デフォルトの名無しさん:2011/06/03(金) 15:22:37.89
ソースの配布は表現の自由だし
コンパイラだけ規制してミスが10分の1になったら静的型は終わりだな
432デフォルトの名無しさん:2011/06/03(金) 15:27:31.50
表現の自由とスクリプト言語プログラミングの規制をどうやって両立すればいいかね・・・
433デフォルトの名無しさん:2011/06/03(金) 15:29:20.05
出版物としてのソース配布はOK、プログラムとしてのソース配布はNG
ってことにすればいいんじゃね。
その判断基準は社会通念ってことで。
434デフォルトの名無しさん:2011/06/03(金) 15:40:43.77
人材不足に拍車がかかり、コスト上昇。
オフショア開発に移行で日本終了。
435デフォルトの名無しさん:2011/06/03(金) 15:57:14.78
日本のエリートプログラマによる開発は高級・安全・安定・高速で、
海外は安かろう悪かろう、という風に意識が変わる。

今のままでは日本は高いから海外へ、という風になっている。
途上国と同じ土俵で戦ってもしょうがないだろ。

高級な日本製品を作るプログラマはエリートでなければならないのだから、
当然免許制は必要だし、今までのように高卒や中卒が成り上がりでやってきたような奴らが
幅を効かせるようじゃ駄目だ。
436デフォルトの名無しさん:2011/06/03(金) 18:37:14.87
やっぱ日本のSIerは悉く滅びるべきという俺の論は正しかった
437デフォルトの名無しさん:2011/06/03(金) 19:01:47.29
>>421
経産省の主導で免許制を新設したら、
認可SIerでの実務経験が事実上の要件になるのは
火を見るより明らかなわけだが。
438デフォルトの名無しさん:2011/06/04(土) 00:27:23.05
動的言語の最高峰は
どんなコードを書いても
まったく構文エラーが出ない言語だろう。

何もかもが動的に決まる。
そう、構文までも。

構文エラーはでないが実行したら
当然正しくは動かない。

どや? つこてみたいか?
439デフォルトの名無しさん:2011/06/04(土) 00:57:55.73
つこてみたい
440デフォルトの名無しさん:2011/06/04(土) 01:58:09.88
Forth! Forth!! Forth!!!
441デフォルトの名無しさん:2011/06/04(土) 04:16:43.79
>>438
それ、Smalltalkだな。
コンパイラを実行時に変更可能だし、
コンパイルエラーもnilあたりを返すようにすればいい。
442デフォルトの名無しさん:2011/06/05(日) 03:20:18.33
あげ
443デフォルトの名無しさん:2011/06/05(日) 08:30:37.01
Java土方くん、急にいなくなったな
どっかのデスマ案件に拉致られたのかなw
444デフォルトの名無しさん:2011/06/05(日) 08:45:10.08
プロの火消しとして活躍してるってことで逆に羨ましいわ
445デフォルトの名無しさん:2011/06/05(日) 10:02:50.63
IDEの話と実行速度の話が終わったから
Java土方くんに参加出来そうな話題がないだけかも
446デフォルトの名無しさん:2011/06/05(日) 11:24:55.62
土方(´;ω;`)かわいそうです
447デフォルトの名無しさん:2011/06/05(日) 12:14:04.64
日曜ぐらい休めよw
448デフォルトの名無しさん:2011/06/05(日) 12:14:35.63
あ、2ちゃんねるをだぞw
449デフォルトの名無しさん:2011/06/05(日) 15:29:19.35
次のネタは考えてあるんだけどね。
ただ、面白いから別スレとして建てようとしてる。
なんかLvが足りないとか出るからもうちょっとまって。
450デフォルトの名無しさん:2011/06/07(火) 00:00:27.99
定義はテンプレに入れるべきだと思う
451デフォルトの名無しさん:2011/06/07(火) 00:30:38.62
別に静的言語派でもないんだけど質問。
あるオブジェクトXが、オブジェクトAの中でオブジェク0トBに引き渡され、
さらにBの中でオブジェクトCに引き渡されたとき、オブジェクトCはMethodYをオブジェクトXに
求めたとする。Aに引数渡すとき、オブジェクトCの仕様をどうやってしってる?
ただメソッドからメソッドへ引き渡されるなら簡単なんだけど、
オブジェクトのフィールドを経由して遥か別地点でこの問題に気づくと非常に面倒くさいんだけど。
452デフォルトの名無しさん:2011/06/07(火) 00:49:57.63
>>451
なんかよく分からんが、ここ読んどけ
ttp://ja.wikipedia.org/wiki/デメテルの法則
453デフォルトの名無しさん:2011/06/07(火) 01:37:17.42
アヒルのように歩き、アヒルのように鳴くのなら、それはアヒルなんだよ。
454デフォルトの名無しさん:2011/06/07(火) 01:52:03.98
>>452
ああ、俺が避けてるパターンだやっぱりあれは嫌われてるんだな、ありがとう勉強になったよ。
極論すれば、構造体のアクセスで
a.b.c.d.e.f.g = 10;
なんて書く人いるけどせめて
functionB(&a.b,xxxx);
てな感じにしろって事でしょ。

>>451はそれとは違う話だけどね。
こういう感じの話。

MethodA(value)
this.value = value

MethodB()
this.obj.search(this.value)
#searchの中でvalueに対しMethodXが呼ばれる。

MethodAにvalueを渡した方は、obj.searchの中で
エラーが起きるので直接原因がMethodAのvalueだと
気づきにくい。
455デフォルトの名無しさん:2011/06/07(火) 02:32:10.98
俺のように歩き、俺のように話すのなら、それは俺俺詐欺なんだよ。
456デフォルトの名無しさん:2011/06/07(火) 07:28:20.68
>>454
MethodBする前に必ずMethodAするならMethodAとMethodBを分けない
valueが省略可能ならメソッドを分けるのではなくデフォルト引数を使う
457デフォルトの名無しさん:2011/06/07(火) 08:25:46.39
>>454
エラーメッセージって普通、積んでるスタックも書かれてないか?
そのスタックを見て行けばどこで渡されたものに対してメソッドを呼んだか判ると思う。
じゃあその渡されたものの由来はどこか、というのもクラス単位で見れば明らかじゃね。
458デフォルトの名無しさん:2011/06/07(火) 09:01:49.90
>>454
valueの中身がXであるのを見て、それがAに渡したヤツだと判らないというのは、
静的動的以前の問題だと思うが…

つうか、そういう問題をつぶすためのxUnitじゃないのかと。
459デフォルトの名無しさん:2011/06/07(火) 19:52:41.19
>>456
呼び出すタイミングが違うんでそれは無理

>>457
結局classの中身追うしかないのか。
じゃvalueが3つくらいオブジェクトの中を移動してたりって
コードは、面倒くさくて書けんねぇ。

>>458
同じ型のオブジェクトがあるときは、必ずMethodAから渡されたものなのかってのは
難しいねぇ。そりゃオブジェクトの値を見ればそれなりに検討はつくけど。
460デフォルトの名無しさん:2011/06/07(火) 20:05:55.35
>>459
その程度で面倒…か?
スレ的には動的言語と静的言語の差の話になってくると思うけど
それで見ても、静的動的でのあんまり差は感じられないし…
強いて言えば、エラーメッセージが不親切だと判りにくいって程度だが、そんなん静的動的の話じゃないしな。
461デフォルトの名無しさん:2011/06/07(火) 21:26:58.62
簡単な問題では差がつかないから、わざわざ困難なシチュエーションを作ってるだろ。
それで安全が脅かされるのは自業自得じゃないか。
462デフォルトの名無しさん:2011/06/07(火) 23:00:51.31
>>460
静的動的も関係あるかというとあるいみ別なんだ。
interfaceやprotocolのような、引数チェックができる型が有るか無いかってだけの話。
引数でのチェックがあればこれからどんな要求がオブジェクトに課せられるか
すぐに解るけど、そういう仕組みが無いと動かしてみて初めて異常に気づく。

まぁ、大抵動的はそういうもん無いんでここだと、我こそは動的言語使いって人が
なんかいい方法しってるかと思ったんだけど。

ちなみに別にレアケースでもないよ、数値型オブジェクトや、文字列型オブジェクト、
他にもライブラリで用意されている原始的な型は、需要が多い分オブジェクトグラフの中を
右や左へ移動するからね。いざメソッド評価が必要なった段階でオブジェクトの種類が
異なるってとこに何度か遭遇した。
463デフォルトの名無しさん:2011/06/07(火) 23:11:27.31
>>454の内容が良く分からんが、value.MethodXの有無を知りたいのなら、
MethodAの中で、valueに対してis-a関係を調べるか、メソッドを持っているかを調べる。
それだけの話では無いの?
464デフォルトの名無しさん:2011/06/08(水) 00:42:58.85
ひとつの関数でこんなふうになってるのはダサいと思うよ。

void func {
  # ○○の処理
  code
  code
  code

  # △△の処理
  code
  code
  code

  # □□の処理
  code
  code
  code

  # ☆☆の処理
  code
  code
  code
}

コメントでなんとかの処理と名前をつけられるってことは、
それを関数名すべき場所だと思う。
たとえそれがfuncの中から1回しか呼ばれなかったとしても。

関数にしておけばAOPで前後にコードを割りこませられるし
465デフォルトの名無しさん:2011/06/08(水) 01:50:46.88
ま、こういう神々しい関数は静的型付け言語じゃあとても実装出来ないだろうな
万が一言語仕様的に許されていたとしても、これを実装するには相当の胆力が必要な筈だ

http://thedailywtf.com/Articles/Divine-by-Zero.aspx
466デフォルトの名無しさん:2011/06/08(水) 07:19:10.75
PHPを動的型付け言語の代表とするのは
C++を静的型付け言語の代表とするくらい愚行

>>463
たぶんテストは書かない主義なのさ
467デフォルトの名無しさん:2011/06/08(水) 07:24:45.24
ネタには常に全力でマジレスするのがモットーですか
468デフォルトの名無しさん:2011/06/08(水) 07:29:54.86
だってPHPは神すぎるから・・・
469デフォルトの名無しさん:2011/06/08(水) 07:37:10.85
テスト万能主義がはびこってる・・・
470デフォルトの名無しさん:2011/06/08(水) 08:32:27.98
実際はテストなんて書いてないくせになぁ(笑)
471デフォルトの名無しさん:2011/06/08(水) 08:59:55.64
えっ?
472デフォルトの名無しさん:2011/06/08(水) 09:05:45.22
狼少年
473デフォルトの名無しさん:2011/06/08(水) 09:17:34.11
Java土方「実際はテストなんて書いてないくせになぁ(笑)」
他のPG「えっ?」
474デフォルトの名無しさん:2011/06/08(水) 09:20:35.17
狼おっさん
475デフォルトの名無しさん:2011/06/08(水) 22:15:29.02
>>466
テスト以前のコーディング時に問題が発生してるというのに
テストを書かない主義だからとは、これ如何に?
元のコードが無いのにテストなんてできないだろ。
476デフォルトの名無しさん:2011/06/08(水) 22:23:07.70
>>475
煽りじゃなくて、本当に意味が分からん
もう少し詳しく
477デフォルトの名無しさん:2011/06/08(水) 22:24:34.18
テストなんて出来ないってことは、仕様も無いのか?
478デフォルトの名無しさん:2011/06/08(水) 22:48:10.92
>451 を読もうぜ
479デフォルトの名無しさん:2011/06/08(水) 23:06:03.44
451は、静的言語ならグローバル変数を経由しても面倒くさくないみたいな、
誤った印象を与える危険がある。
480デフォルトの名無しさん:2011/06/08(水) 23:33:15.55
>>451の場合、ただ関数引数として渡っていくだけなら
エラー発生時のスタックトレースで一発で分かる

もし>>454のように一度オブジェクトのメンバに代入されるなら
代入する際にvalueがメソッドを持ってるか調べる

それだけのことじゃないの?
481デフォルトの名無しさん:2011/06/09(木) 00:28:47.32
バグがでたら直す

それだけのことだ
482デフォルトの名無しさん:2011/06/09(木) 00:33:54.49
正直いうと、基盤部分以外はオフショアしているから、テストメソッドがあるのかどうか知らない。。
483デフォルトの名無しさん:2011/06/09(木) 00:47:22.53
塔を崩されたらまた石を積む

それだけのことだ
484デフォルトの名無しさん:2011/06/09(木) 01:25:18.83
実行前にチェックをする。

それだけの事だ。
485デフォルトの名無しさん:2011/06/09(木) 08:09:32.98
結局逐次メソッドの入り口でシグニチャを
チェックする処理を用意しとけってことか。
486デフォルトの名無しさん:2011/06/09(木) 08:43:46.63
セッターではチェックすべき
487デフォルトの名無しさん:2011/06/09(木) 13:21:22.64
若い命が真っ赤に萌えて〜
488デフォルトの名無しさん:2011/06/09(木) 13:37:13.03
コードが肥大化して収拾が付かなくなりそうなところで会社が潰れてプロジェクトも終了か
489デフォルトの名無しさん:2011/06/09(木) 16:43:35.24
1. オレオレシグネチャ定義を避けて、既存のメソッド名に合わせる。
2. 渡されたオブジェクトにはできるだけ基本的なシグネチャのみ使う。
3. メンバ変数に代入したり他のオブジェクトに永続的に渡すときには、経路がわかり易いような設計をする。
490デフォルトの名無しさん:2011/06/09(木) 21:22:32.56
>>485
人、それを型という
491デフォルトの名無しさん:2011/06/09(木) 21:36:29.70
プログラマ、嘘つかない
492デフォルトの名無しさん:2011/06/10(金) 00:57:56.29
ま、メソッドの入り口では型(つーかメソッドの有無?)だけじゃなく
数値なら範囲とか、文字ならエンコードとか、いろいろチェックするよね
493デフォルトの名無しさん:2011/06/10(金) 01:30:10.23
メソッドの入り口での整合性チェックってリリース時は、
死荷重だよな。assert見たいに、リリース後は実行経路から
完全に無視されるんならいいけど。
javascriptなんかだとメソッドの有無確認はif(object.method)・・・;
てな感じで実行経路上にあって死荷重になるのは明らかなんで
なかなか実際にはメソッドチェックできない。
494デフォルトの名無しさん:2011/06/10(金) 01:36:50.81
>>493
そんなのは組み方次第じゃん...
テスト用の assert() とリリース用の実質何もしない assert() を作れば良いだけ
495デフォルトの名無しさん:2011/06/10(金) 01:42:30.33
>>493
JavaScriptならClosure Compilerを使えばリリース時には無負荷のassertを利用出来る。

http://closure-library.googlecode.com/svn/docs/closure_goog_asserts_asserts.js.html

これだけ広範囲に使われている言語なら、普通の人間が思い付く様な事は大抵用意されてるもんだな。
496デフォルトの名無しさん:2011/06/10(金) 02:07:38.25
>>495
動的言語のプリプロセスねぇ。やっぱコンパイル式動的言語が最強か。
497デフォルトの名無しさん:2011/06/10(金) 02:57:30.91
JavaScriptはプリプロセッサ必須だよな。

コードに分かりやすくコメント書こうと思ったら
サイズが膨れ上がるから
498デフォルトの名無しさん:2011/06/10(金) 03:11:14.21
トラフィックを減らす事が至上命題だったりするからね。
499デフォルトの名無しさん:2011/06/11(土) 12:24:39.06
うっかりある勉強会に参加したら昔の教授に遭遇。
今何してるのと聞かれたからニートやってますと答えた。
怒られた。
500デフォルトの名無しさん:2011/06/11(土) 12:44:27.74
>>499
Education しているからニートではない!

……勉強会って教育にははいならいよなあ。
501デフォルトの名無しさん:2011/06/11(土) 14:31:07.65
ニートな俺に質問してくる旧友のNTTデータのSE。
「「オブジェクト指向」がよく分からないんだけど、何がスゴイの?」
おいおい、俺の中じゃとっくの昔に終わってるオブジェクト指向なる話をイマドキ質問するのかよ。
そんな話は10年前に済ましとけよ。
ごめんね、おれ仕事しないで最先端の勉強ばっかやってる廃人なの。
502デフォルトの名無しさん:2011/06/11(土) 15:17:33.60
へえ
503デフォルトの名無しさん:2011/06/11(土) 15:39:34.14
オブジェクト指向が終わってる、ねえ…
オブジェクト指向だというだけでやっていける時代は終わったが、
オブジェクト指向は終わってねえよw
504デフォルトの名無しさん:2011/06/11(土) 16:05:12.65
オブジェクト指向は目新しい知識じゃなくて、出版物もネット資料も大量に出されていて、
技術者なら必ずどこかで目にするはずで、知っていて当たり前の知識だろ。
(勉強は)終わっているっていう意味だよ。
505デフォルトの名無しさん:2011/06/11(土) 16:09:52.17
SEはコードなんか書かないからな
506デフォルトの名無しさん:2011/06/11(土) 17:15:43.45
昔というか、若い頃には書いてたんじゃろ?
507デフォルトの名無しさん:2011/06/11(土) 17:56:10.29
>>504
おまえはお勉強ばかりでコード書かないんだな。
だから終わったとか言っていられる。

終わってるのは、おまえのお勉強の仕方だ。
508デフォルトの名無しさん:2011/06/11(土) 18:00:05.75
SEなんて糞職業があるのは日本だけだよ。
509デフォルトの名無しさん:2011/06/11(土) 18:03:17.73
SIerって呼称そのものがSystem Integrat e r
っていう綴り間違いがそのまま広まったものという・・・
510デフォルトの名無しさん:2011/06/11(土) 18:05:00.78
Systems Engineerは普通にいるぜ?まあSEつーよりアーキテクトだけどな。
511デフォルトの名無しさん:2011/06/11(土) 18:45:06.48
ラベルが全然ちがうな
512デフォルトの名無しさん:2011/06/12(日) 01:46:56.25
何でヘンな横文字使いたがるんだろうな。
海外でよく使われる言葉を持ってきたんならともかく、
和製英語→US英語→和製英語とかアホの極みだろ。
513デフォルトの名無しさん:2011/06/12(日) 09:30:35.13
>>510
全然違う。
ただの調整屋。
設計は他のプログラマが行う。
514デフォルトの名無しさん:2011/06/12(日) 09:37:45.64
オブジェクト指向も知らずにどうやってアーキテクトとしてやっていくんだろうかww
515デフォルトの名無しさん:2011/06/12(日) 09:40:02.36
アーキティクトは知らんけど、
ただ基本設計纏めるだけのSEなら、
ソースの中身なんざ見りゃしないんだから関係ないだろ。
516デフォルトの名無しさん:2011/06/12(日) 09:43:06.23
基本設計って何だ?
オブジェクト指向知らない=UMLも読めない、だぞ。
517デフォルトの名無しさん:2011/06/12(日) 09:49:45.44
>>516
>オブジェクト指向知らない=UMLも読めない、だぞ。

また、新説を唱える奴が出てきたよ…

自称SEによくいるタイプだな、自分の知ってる単語適当につなげて語る奴。
518デフォルトの名無しさん:2011/06/12(日) 09:51:19.91
あれ?UMLってオブジェクト指向設計のための図表記法だよね?
519デフォルトの名無しさん:2011/06/12(日) 10:02:58.54
んにゃ。そもそもUMLは基本設計レベルの設計ツールじゃない。
元々は、Languageと付くことからも解るとおり、
プログラムそのものを編集出来る道具。

UML作者のJames Rumbaughも自分のサイトだったかで
「か、かんちがいしないでよね、UMLは、
図を書くためのツールじゃなくプログラミング言語の
ひとつなんだからねっ!!」
って顔を赤らめながらいってた。
ちなみにこの子は栗毛で、ミニスカニーソは似合わない。
520デフォルトの名無しさん:2011/06/12(日) 10:12:44.45
まず、業務アプリ前提とはこれいかに?
521デフォルトの名無しさん:2011/06/12(日) 10:15:17.05
>>513
おまえ、アーキテクトを設計屋だと思ってるの?馬鹿だろ。
522デフォルトの名無しさん:2011/06/12(日) 10:23:23.32
>>518
>UMLってオブジェクト指向設計のための図表記法だよね?

オブジェクト指向設計のための図表記法は UML だけじゃない。

そもそも UML 1.0 が策定されたのが 1996年で、例えば C++ は 1983年。

お前の理論だと、その間 C++ バリバリ使ってた奴は、生まれてもない
UML を読めるエスパーだったことになるぞ。(w
523デフォルトの名無しさん:2011/06/12(日) 10:28:49.91
>>522
誰が生まれて間もないの?
ちょっと、意味分かんない
524デフォルトの名無しさん:2011/06/12(日) 10:31:50.10
>>522
UMLは10年以上前からあった。
1.0が策定されたのがいつなのかはっきり覚えていないが、少なくとも10年前にUMLはあったよ。
525デフォルトの名無しさん:2011/06/12(日) 10:33:17.04
>>523
> 生まれて間もない

書いてないこと読み取るエスパー来た〜〜 (w
526デフォルトの名無しさん:2011/06/12(日) 10:33:26.37
OMTやらBooch法やらヤコブソン式OOA/OODやら乱立していた時代を知らないニワカ>>516が何か言ってるね。
527デフォルトの名無しさん:2011/06/12(日) 10:34:37.35
>>524
オブジェクト指向はそのずっと前からあったって書いてあるつもりなんだが...。
528デフォルトの名無しさん:2011/06/12(日) 10:38:54.29
>>519
GoFの四人をアニメのキャラクターにたとえるとなんですか?
529デフォルトの名無しさん:2011/06/12(日) 10:39:42.45
OMTの頃からそうだが、UMLは静的型の臭いがキツくて駄目だな。
誰かKay流のOOをベースにした設計記法をつくらんかな?
530デフォルトの名無しさん:2011/06/12(日) 10:39:42.59
>>527
オブジェクト指向は確か1950年代の終わりごろには囁かれていたと思うが、
どこかに記録ないかな。
531デフォルトの名無しさん:2011/06/12(日) 10:41:32.35
正直言って、UMLはJavaを想定して策定されたとしか思えない。
てか明らかにそうだろ。
532デフォルトの名無しさん:2011/06/12(日) 10:42:46.47
いや、UMLが想定しているのはC++だろ。
533デフォルトの名無しさん:2011/06/12(日) 10:44:22.32
>>530
ざっくり探したが見つからなかったので、とりあえず C++ で代用した。

>>531
俺にはそうは思えないが、どの辺が Java っぽく思えるの?
534デフォルトの名無しさん:2011/06/12(日) 12:39:19.18
>>529
> UMLは静的型の臭いがキツくて駄目だな。

当たり前だよ。
設計はコードが動くよりも前に出来上がる物。
その本質からして静的にならざるを得ない。

動的、つまり動かしてみるまで決まらない物は
設計にしづらいもの。
535デフォルトの名無しさん:2011/06/12(日) 12:44:41.72
動的言語で書く時は設計なんてしてないということですね、わかります。
536デフォルトの名無しさん:2011/06/12(日) 12:49:30.21
正直、プログラミングをわかってない奴に、まともな設計などできるわけないと思うんだが。
なぜ、プログラミングできないSEなんてのがいるのかさっばりわからない。
537デフォルトの名無しさん:2011/06/12(日) 12:51:41.88
あぁ誤爆った。ま、いいか..
538デフォルトの名無しさん:2011/06/12(日) 13:05:18.82
許さない絶対に
539デフォルトの名無しさん:2011/06/12(日) 13:09:56.72
>>534
ごめんさっぱり理解できない
540デフォルトの名無しさん:2011/06/12(日) 13:10:36.34
>>534: 先輩、この変数の値、動かすまで決まらないんですけど。

先輩: ああ、だったらそこは設計しなくて適用に組んどきゃいいよ。
541デフォルトの名無しさん:2011/06/12(日) 13:12:57.15
プライベートの変数まで責任もてない
542デフォルトの名無しさん:2011/06/12(日) 13:23:42.46
>>540
先輩っ! 「適用に」ってどういう意味ですか?
543デフォルトの名無しさん:2011/06/12(日) 13:35:53.95
設計はプログラムを書いてから決めるもの

これで手戻りを防げます
544デフォルトの名無しさん:2011/06/12(日) 13:37:34.15
意味が分りませんっ,.,:><;
545デフォルトの名無しさん:2011/06/12(日) 13:53:35.32
動的言語陣営が自滅してる。。。
546デフォルトの名無しさん:2011/06/12(日) 13:55:56.82
二項対立が無くなってなんか不思議なスレになってしまった
547デフォルトの名無しさん:2011/06/12(日) 14:08:56.58
ダックタイピングかinterface継承だけでいいのに
実装継承とリフレクションにこだわるから自滅するのだ
548デフォルトの名無しさん:2011/06/12(日) 15:38:07.65
>>534
んなわきゃーない
属性に型をつけなければいいだけ
特定のクラスを前提にしているのはhas-aやis-aで表現できる
549デフォルトの名無しさん:2011/06/12(日) 15:39:06.29
>>545
そう見えるんなら、君は静的型すら理解していない。
550デフォルトの名無しさん:2011/06/12(日) 15:59:29.54
>>549
どう理解できてないかぐらい書けよ。
まあ、書けないから >>549 みたいなこと書くしかないんだろうけど。
551デフォルトの名無しさん:2011/06/12(日) 15:59:37.95
キリッ
552デフォルトの名無しさん:2011/06/12(日) 16:05:22.50
>>550
>>534
> 当たり前だよ。
> 設計はコードが動くよりも前に出来上がる物。
> その本質からして静的にならざるを得ない。

残念ながら静的型言語でも動かさなければわからないことが多い。
その1つが動的型。静的型言語にも動的型があるということすら知らない>>534
静的型すら理解できていない。
553デフォルトの名無しさん:2011/06/12(日) 16:18:17.18
君の批判の対象は >>534 なのか...

そんな当たり前のことをドヤ顔で書いてて恥ずくない?
554デフォルトの名無しさん:2011/06/12(日) 16:24:33.55
ドヤ顔かどうかは分らんだろ
555デフォルトの名無しさん:2011/06/12(日) 16:31:39.43
>>553
そんな当たり前のこともわきまえずにドヤ顔で書き込む>>534をどう思う?
556デフォルトの名無しさん:2011/06/12(日) 16:57:05.24
つか言語を問わずにUMLってメリットよりデメリットの方が多いケースばかり。今まで経験してきたものだとだけど。

図の解釈に差異が出たり、「そもそもUMLとは」とか語りだすやつとか、本見りゃわかることを聞いてくるやつとか、
あと、どうしてもUMLで書くことが適さない事もあるじゃない?そういったことをどうやって書きましょう?的なこと言い出すやつとか。
もうね、おれは早く仕事終わらせて、帰るなり、遊ぶなり、自分の勉強なりをしたいわけよ。思い出したらゲンナリしてきた。
557デフォルトの名無しさん:2011/06/12(日) 17:03:18.06
>>555
>>534 がアホだというのは共通認識だろ。
当たり前すぎて、批判の対象にもならんと思っていたが。

>>556
それ君の職場の問題で、UML のデメリットじゃないだろ。
558デフォルトの名無しさん:2011/06/12(日) 17:21:23.90
>>557
>それ君の職場の問題で
それを言い出したらほとんどの問題は、○○自体の問題じゃなく、使いどころを間違っているだけ。とか、
お前の環境が悪いだけ。になるじゃない。

気を付けないと、導入のメリットより、デメリットの方が多くなるって話。
559デフォルトの名無しさん:2011/06/12(日) 17:29:12.80
UMLでダメだったら、もう何使ってもダメだろ。設計能力が無い奴らは何使わせてもダメ。
猫に小判、豚に真珠、馬の耳に念仏、土方にUML
560デフォルトの名無しさん:2011/06/12(日) 17:37:05.99
そんな万能じゃないだろw
561デフォルトの名無しさん:2011/06/12(日) 17:42:59.96
安全で効率の良い静的言語を使って
CO2を削減し、原発を廃止しよう
562デフォルトの名無しさん:2011/06/12(日) 17:43:09.25
いや、ほぼ万能といってもいいだろう。
何も全て全てを図にする必要はないし、いざとなったら拡張もできる。
欠点らしい欠点といえば、UML2.0になって仕様が肥大化してしまったことぐらいか。
563デフォルトの名無しさん:2011/06/12(日) 17:59:46.21
>>558
> それを言い出したらほとんどの問題は、○○自体の問題じゃなく、
> 使いどころを間違っているだけ。とか、
> お前の環境が悪いだけ。になるじゃない。

いや...

図の解釈に差異が出たり ⇒ UML は各図の解釈ちゃんと定義している。
             差異がでるのはちゃんと理解できてないだけのこと。

「そもそもUMLとは」とか語りだすやつ ⇒ そいつ個人の性格/資質
本見りゃわかることを聞いてくるやつ ⇒ そいつ個人の性格/資質/教育体制

どうしてもUMLで書くことが適さない事もあるじゃない?
そういったことをどうやって書きましょう?的なこと言い出すやつとか。
 ⇒ それこそ、その職場でどうするか決めとけよ。

どうみても UML 自体の問題じゃないだろ。
564デフォルトの名無しさん:2011/06/12(日) 18:03:30.95
>>562
>何も全て全てを図にする必要はないし
この時点で万能では無いよね
565デフォルトの名無しさん:2011/06/12(日) 18:05:41.00
>>562
>いや、ほぼ万能といってもいいだろう。

個人的にはこれが一番欠点だな。

万能すぎて理解しきれない (w

そもそも pdf で 400ページ以上ある仕様書なんて読めるか!!
566デフォルトの名無しさん:2011/06/12(日) 18:08:20.36
UMLの図で説明できないことは、文章なり画像なり映像なり音声なりを加えることも
許可しているから、万能だといえるだろ。つまり縛りがほとんどない。
567デフォルトの名無しさん:2011/06/12(日) 18:10:43.30
正直、クラス図なんてかったるくて書いてられない。
568デフォルトの名無しさん:2011/06/12(日) 18:10:55.01
>>565
大きいプロジェクトだと普通に段ボール数箱の仕様書なんて希によくあるよ?
569デフォルトの名無しさん:2011/06/12(日) 18:13:06.45
>>568
そりゃ各業務の機能はそうなるかもしれないけれど、それは全員がアタマにいれておくべき仕様じゃないでしょう。
565が言ってるのは、全員が共通認識として理解する必要がある仕様が400ページもあったら大変ってことだと思う。
570デフォルトの名無しさん:2011/06/12(日) 18:14:10.56
PlantUMLとかでちゃっちゃっとモックアップ作るぐらいはするよね。
571デフォルトの名無しさん:2011/06/12(日) 18:44:48.74
>>562
ん?万能?
オブジェクト指向専用なのに?
572デフォルトの名無しさん:2011/06/12(日) 18:46:03.46
>>568
まず、紙に印刷している時点でクソ官僚組織じみてウンコ
573デフォルトの名無しさん:2011/06/12(日) 18:53:10.06
そりゃぁいくら電子レンジでも焼き芋は作れないさ。オープン機能のついた奴じゃない限り。
あと、料理するためには、もちろん下ごしらえも必要だし、そのためには、包丁とかまな板
とか、いろいろ必要だよ。味付けもしないといけないしね。
UMLは、モデル記述言語としては、万能だよ。
574デフォルトの名無しさん:2011/06/12(日) 19:12:19.74
>>573
実装言語が関数型言語の場合使えるの?
どうしても図中のメモで対応するしかなくない?
575デフォルトの名無しさん:2011/06/12(日) 19:24:28.00
>>574
関数型でもオブジェクト機能あるじゃん。
それに、
(lambda (x) (+ 10 x y) )
だったら。
---------------
-y:int
---------------
+operator()(x):int
---------------
見たいにオブジェクトとして描ける。

>>572
>>568では無いが、紙に出すってのは結構重要だったりすんのよ。
画面上じゃすぐピクセルが潰れるから、全体を見回せない。
紙なら、全て並べて、似てるクラスを探しだし、物理的に机の上に集め、
集約やら移譲やら考える事が出来る。

俺は面倒だからしないけどね。
576uy ◆yyC0rYWEq2 :2011/06/12(日) 19:31:48.85
動的言語が安全なものを作れないかどうかじゃなくて
チェックする技法がまだ完成をしていないだけ

せめてスクリプト言語からevalさえなくせば型チェック走らせることは今の技術でも可能だろ
安全な物を作りたければevalを禁止


もうひとつの方法は、この○○ってルールにしたがってソースコードをかいて
それを、○○って技法でテストした場合
型エラーは100%発見できますっていう技法を完成させる
たぶんそのエラー発見を100%抽出する式は存在するよ evalさえなければな
577デフォルトの名無しさん:2011/06/12(日) 19:35:03.63
解ってると思うがスルー推奨。
皆、空気を感じるようにやさしくね。
578デフォルトの名無しさん:2011/06/12(日) 19:45:00.73
>>569
(独自の)プロトコル仕様書なめんなよw
579デフォルトの名無しさん:2011/06/12(日) 19:46:42.10
型が無いのにどうやって型チェック走らせんねん!
evalは関係ないやん!
580デフォルトの名無しさん:2011/06/12(日) 19:53:59.86
動的言語の支持者ってみんなこんなに頭悪いの?
581デフォルトの名無しさん:2011/06/12(日) 19:58:45.40
みななではないよ。
582デフォルトの名無しさん:2011/06/12(日) 20:12:04.25
>>579
動的言語にも型は存在するよ。
実行時に決まるだけで。
583デフォルトの名無しさん:2011/06/12(日) 20:17:27.74
>>575
ラムダ限定?関数型には向かないから万能じゃないでしょ?って言いたかっただけ。
584デフォルトの名無しさん:2011/06/12(日) 20:23:00.32
>>583

---------------
sin
---------------
---------------
+operator()(x):int
---------------
ただの関数ならこれでいいだろ。
585デフォルトの名無しさん:2011/06/12(日) 20:44:15.16
>>584
ん〜、UMLで書ききれない部分を、こういうときはこのように書くっていうルールをプロジェクト内で作るって話にみえてしまう。。
つか、「関数型言語を採用しているシステムでも、おれはUMLでクラス図書くよ。」ってことか。おれとは意見が違うなぁ。
586デフォルトの名無しさん:2011/06/12(日) 20:54:34.24
>>585
てか、関数型は関数自体がオブジェクトだからな。
Smalltalkのブロックと同じ扱いにすればいいだけの話なんで。
ブロック知ってる?
[x|^x+10].value 5. ってやつ。
587デフォルトの名無しさん:2011/06/12(日) 20:58:34.10
どうでもいいけどなんでJavaはメソッドをオブジェクトとして実装しなかったんだ。
他の言語が、関数型オブジェクトを標準でサポートし始めてる中、
VMに縛られて1人だけ取り残されてる間抜けだよなぁ。
588デフォルトの名無しさん:2011/06/12(日) 21:08:57.88
>>586
それSmalltalkのブロックじゃないし
589デフォルトの名無しさん:2011/06/12(日) 21:09:22.01
>>586
>Smalltalkのブロック
勉強不足でSmalltalkは全然しらないんだけど、「[x|^x+10].value 5」って書き方と名前から察するに、
groovyとかと一緒で、コードブロックをオブジェクトとして扱えるってことかな。

いずれにしてもUMLは万能で関数型でも全然問題ないんだぜ。ってことかな。ちょっとどうやって書くのか勉強するわ。


>>587
JVMを使う言語でも、クロージャ実装してたりするから、VMに縛られているって訳でもないと思う。
単に、「Javaはそういう方向じゃないよね。」的なところだと思う。
590デフォルトの名無しさん:2011/06/12(日) 21:11:28.81
>>588
ごめんvalueの前のドットは間違いだし、
valueでの呼び出しはgstの方言だっけか。
591デフォルトの名無しさん:2011/06/12(日) 21:15:51.86
>>589
UMLが万能というより関数がオブジェクトのサブセットになだけ。
関数でもなくオブジェクトでも無いものが現れた場合はどうしようもないだろな。
んなもん存在すんのかしらんけど。
592デフォルトの名無しさん:2011/06/12(日) 21:15:55.87
JavaにはInterfaceがあるからね。
593デフォルトの名無しさん:2011/06/12(日) 21:16:19.67
>>590
gstどころか根本的なところでそれSmalltalkじゃないから
594デフォルトの名無しさん:2011/06/12(日) 21:18:59.56
>>591
>関数でもなくオブジェクトでも無いもの

ただの変数とか
595デフォルトの名無しさん:2011/06/12(日) 21:21:39.45
ファーストクラスとして実装されていない概念なんていくらでもある。
たとえば「継承関係」をファーストクラスとして実装している言語を挙げてみ?
Smalltalkですら「継承関係」はファーストクラスじゃねえぞ。
596デフォルトの名無しさん:2011/06/12(日) 21:23:31.74
>>592
別にinterfaceがあってもfor each見たいに、特別扱いして
value(・・・・)メソッドそなえてりゃメソッドとして扱えるように設計しとけばええんちゃうん。
597デフォルトの名無しさん:2011/06/12(日) 21:28:55.85
>>593
あ゛?確かに↓と書こうとして間違えたが、
[:x|^x+10] value: 5.
ブロック自体はsmalltalkの基本機能だぞ。
http://www.h3.dion.ne.jp/~y.ich/Squeak/squeak-qref.html#SyntaxBlocks
598デフォルトの名無しさん:2011/06/12(日) 21:32:19.89
いや。それも微妙だし。

ともあれGNU SmalltalkはSmalltalkとしてはかなり特殊な実装なので、
これを使ってのSmalltalkの勉強や議論は避けた方が良いです。
VisualWorksか、せめてSqueak/Pharoを使いましょう。
599デフォルトの名無しさん:2011/06/12(日) 21:35:04.18
VisualWorksのとこにも書いてある
http://smalltalk.cincom.jp/tutorials/vw7.7/webtoolkit/webtoolkit_j2ee_sessions.ssp

ちなみに>>597はsqueak。smalltalkの直系の処理系だぞ。
600デフォルトの名無しさん:2011/06/12(日) 21:39:21.81
squeakは小学生用言語だろ。
601デフォルトの名無しさん:2011/06/12(日) 21:42:33.86
>>599
まぁ、いいわ。結局意味的には、
「引数を一つ取り、引数+10を返却するロジックがあって、そこに引数として5を入れた。」って意味だよね。
おれは598じゃないんだが。
602デフォルトの名無しさん:2011/06/12(日) 21:45:47.33
smalltalkの団体のトコ。
左上のsmalltalkのロゴがモロにブロック。
本文でもブロックが使われてる。
http://www.smalltalk.org/articles/article_20051122_a1_TheEssenceOfSmalltalk_v7.html

あと、smalltalk-80の言語実装のドキュメント
http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf
603デフォルトの名無しさん:2011/06/12(日) 21:47:36.84
>>598 がSmalltalkで無いと書いた根拠になるソースを見てみたい。
いや別に>>598を責めてる訳じゃないんだよ。ただそういう誤解を生むものの存在を確認したいだけ。
604デフォルトの名無しさん:2011/06/12(日) 21:53:38.64
ま、こんなん書かれたら、「こいつ Smalltalk ほんまに知ってるんか?」
という気になるのは確かだなw

> Smalltalkのブロックと同じ扱いにすればいいだけの話なんで。
> ブロック知ってる?
> [x|^x+10].value 5. ってやつ。
605デフォルトの名無しさん:2011/06/12(日) 22:04:47.32
>>604
5年近くさわってないから覚えてないんだよ。仕事で使わねぇし。
ただお勉強の結果は他で役立ってるけど。

あと、>>586のvalueでの呼び出しだけど別に間違いじゃなかったわ。
言語実装ドキュメントの636ページ 81項にちゃんと書いてある。
どっかでgst固有かもねって聞いた気がしたけど規格通りらしい。
606デフォルトの名無しさん:2011/06/12(日) 22:10:06.68
>>600
マジレスすると、
それはSqueakはSqueakでもEtoysっていうビジュアルプログラミング言語&環境を指して言う場合。
http://squeakland.org/

Squeakは元祖ゼロックス製Smalltalk-80直系のれっきとしたSmalltalk処理系。
http://squeak.org/
http://squeak-ja.sourceforge.jp/

で、Etoys自体はこのSqueak環境を使ってSmalltalk言語で組まれている。
607デフォルトの名無しさん:2011/06/12(日) 22:12:04.57
>>605
微妙って書いたのは、ブロック内でリターンする意図が不明だから。
608デフォルトの名無しさん:2011/06/12(日) 22:15:27.36
微妙以前にお前こう書いたろ。
>gstどころか根本的なところでそれSmalltalkじゃないから
まさか ^ 一つでそんなこと書くわけないよな。
609デフォルトの名無しさん:2011/06/12(日) 22:17:33.95
>>595
まぁ、別にUMLの仕様に入ってるからいいじゃん。
オブジェクトとしてとれないけどさ。
610デフォルトの名無しさん:2011/06/12(日) 22:18:24.90
> ブロック知ってる?
> [x|^x+10].value 5. ってやつ。
611デフォルトの名無しさん:2011/06/12(日) 22:21:13.00
で?
なんか見苦しくなってきたどうでもいいわ。もう。
612デフォルトの名無しさん:2011/06/12(日) 22:27:20.07
関数型言語の設計にほしいのは、そんな代用品じゃなく、ブロック線図だな。
613デフォルトの名無しさん:2011/06/12(日) 22:30:57.57
>>605
俺が持ってる ANSI Smalltalk の規格書の最終ドラフト版は 304 ページしか無いんだけど、
636 ページ目に Block の記載があるドキュメントのタイトル教えて。
614デフォルトの名無しさん:2011/06/12(日) 22:32:25.32
>>586 ワロタwなんか和んだよw
615デフォルトの名無しさん:2011/06/12(日) 22:34:49.12
>>613 お前検索すら出来ないんならプログラマー向いてないわ。
http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf
616デフォルトの名無しさん:2011/06/12(日) 22:40:53.24
>>615
ああ blue book か。さんきゅ。
617デフォルトの名無しさん:2011/06/12(日) 22:40:56.51
結局のところ、ラムダ式やらSmalltalkのブロックやらは
UMLでどう書くのさ?
618デフォルトの名無しさん:2011/06/12(日) 22:43:28.03
UMLでラムダ式とかブロックのレベルまで詳細には落とさないだろ
619デフォルトの名無しさん:2011/06/12(日) 22:44:40.70
UMLに関数型言語のための図がない
620デフォルトの名無しさん:2011/06/12(日) 22:50:33.91
>>617
Smalltalkのブロックなら
--------------
block0
--------------
--------------
+value(x:*):*
--------------
でいいじゃん。

関数なら
--------------
function
--------------
--------------
+evalute(x:*):*
--------------
みたいな感じ。
621デフォルトの名無しさん:2011/06/12(日) 22:51:42.96
てか関数にするならデータメンバー省略すりゃいいじゃん。いらんし。
622デフォルトの名無しさん:2011/06/12(日) 22:55:37.83
>>620
関数はクラスじゃないぞー
623デフォルトの名無しさん:2011/06/12(日) 22:56:41.52
>>620
おいおい、関数型言語でそれやったら一つの巨大なクラスが出来るだけで
全くクラス図が意味を為さないだろ
624デフォルトの名無しさん:2011/06/12(日) 23:03:19.39
>>620
Javaでよくやる、匿名クラスをつかったクロージャもどきのような、無理してる感が否めない。
それにそれやると
function
+evalute(x:*):*
大活躍過ぎだろw
625デフォルトの名無しさん:2011/06/12(日) 23:03:32.42
ああすまんすまん。
こんな感じで1関数1クラスに対応付けるだけな。
別に、Object指向言語より表記量が増えるわけでもないしこんな感じでいいんじゃね。

--------------
function0
--------------
+evalute(x:*):*
--------------

--------------
function1
--------------
+evalute(x:*,y:*):*
--------------

--------------
function2
--------------
+evalute(x:*,z:*):*
--------------
626デフォルトの名無しさん:2011/06/12(日) 23:10:39.66
やっぱC/C++最強
627デフォルトの名無しさん:2011/06/12(日) 23:16:52.80
そうだ、javaのMathライブラリもラムダ化しときゃよかったんだ。

interface Math
{
final static FunctionDoubleDouble abs = new Abs();
}
Math.abs(10);
628デフォルトの名無しさん:2011/06/12(日) 23:19:21.02
まちげぇた。
Math.abs.evalute(10);な。
629デフォルトの名無しさん:2011/06/12(日) 23:21:21.30
まあ素敵なシグネチャ
630デフォルトの名無しさん:2011/06/12(日) 23:25:22.74
人、それをヘッダファイルという
631デフォルトの名無しさん:2011/06/12(日) 23:26:37.03
>>627
数値系のオブジェクトに#absがある方がうれしいな。
632デフォルトの名無しさん:2011/06/13(月) 02:55:33.18
どんだけレベルの低い会話
633デフォルトの名無しさん:2011/06/13(月) 03:59:14.57
あ、分かった。

動的言語でも、型を意識することはある。
たとえば文字とか数字とか、
あるメソッドを持っているとか。

動的言語でもある変数に、想定しているものと
互換性がない値を入れたら正しく動作しない。まあ当たり前。

そういう人間が本来考えている”型” を
コードとして表せないのが動的言語なんだ。

やっと分かったよ。
動的言語がなぜ劣っているかが寝。
634デフォルトの名無しさん:2011/06/13(月) 06:00:52.24
>>608
ためしに、
| plusTen y|
plusTen := [:x|^x+10].
y := plusTen value: 5.
y + 100
これprintItしてみろw
635デフォルトの名無しさん:2011/06/13(月) 06:06:11.52
>>633
表せるけど。
しかも、ほとんどの静的型言語と違って、「型宣言」をファーストクラスとして実装可能だ。
636デフォルトの名無しさん:2011/06/13(月) 06:08:51.29
C出身としてはファーストクラスとかいう幻想はいらね
637デフォルトの名無しさん:2011/06/13(月) 06:13:52.42
>>635
コードを頼む
あんまり型宣言を渡したり返したりした覚えが無い
638デフォルトの名無しさん:2011/06/13(月) 06:44:22.60
>>637
ばか?
639デフォルトの名無しさん:2011/06/13(月) 07:02:34.97
ばかにもわかるように教えてくれ
640デフォルトの名無しさん:2011/06/13(月) 07:21:33.93
>>639
型情報を文字列で表せばいやでも渡したり返したりするだろ

ただし「文字列」と「ファーストクラス」の関係は不明
型を意識するやつはその関係に悩まされる
動的言語なら悩まない
641デフォルトの名無しさん:2011/06/13(月) 07:28:12.34
>>634
なんか知らんけどそれ煽ってる部分以外のトコも間違ってね。
あんちゃん揚げ足取るんなら、自分も揚げ足とられんようせんといかへんで。
642デフォルトの名無しさん:2011/06/13(月) 07:40:23.02
型を意識しないCができない以上意識は必要
643デフォルトの名無しさん:2011/06/13(月) 08:38:22.60
>>640
それじゃ言語処理系が理解出来ない。

人間だけが分かっていて、
型をコンピュータに伝える方法がない。

それが動的言語w
644デフォルトの名無しさん:2011/06/13(月) 09:14:43.49
動的型言語のオブジェクトは、大抵自分が何者かを知ってる。
型を必要とするのなら、訊ねれば良い。
Cの構造体とは違う。
645デフォルトの名無しさん:2011/06/13(月) 10:38:29.16
>>640
いや、>>635が型宣言がファーストクラスって言ってるから
つまりは型宣言を関数/メソッドに渡したり
関数が返したりするのかと思って聞いたんだが

オブジェクトは型を知ってるから
オブジェクトを渡したり返したりすれば型宣言を渡したり返したり
したことになるっていうのなら話は平行線になるからこれで終了だ
646デフォルトの名無しさん:2011/06/13(月) 11:27:30.40
>>645
こんな感じのことが出来るってことだろ

T = type('T', (), {'x':1, 'f':lambda self,y: self.x + y})
a = T()
print a.f(1)
647デフォルトの名無しさん:2011/06/13(月) 12:16:22.12
>>646
ああ、よくわかった。宣言でなく定義だな
それならファーストクラスだ
648デフォルトの名無しさん:2011/06/13(月) 12:27:50.91
>>591
prologとか?
649uy ◆yyC0rYWEq2 :2011/06/13(月) 12:58:38.65
だkら 動的言語の問題は
実行時まで>>633 の、問題が発生するかどうかがわからない点にある
すべての型を想定して想定した型以外がきたら、例外だしてそれでも処理が続行するようなコード
たとえばRubyなら
case kata
when String
when Fixnum
else
p :err
end
といった具合
けど、こんなことは普通やらず

多分動くだろう、っていう曖昧な判断のもの動的言語のソースコードは生成される
めったによばないメソッドに、バグが潜んでいても、気づかない

ようはコンパイラ側が型チェックってのをなくして、型情報をコンパイラに教えずともコンパイル通る( その場所まで実行できる )
のが動的言語
作り手がある程度のポテンシャルないと、規模が大きくなってきた瞬間破綻するわな
それに、バグで動作とまる可能性を少しでも減らしたいような機器に動的言語使うのは流石に怖い
初期リリース時の、バグの総量でいったらおそらく動的言語のほうが多くなるだろう
動的言語じゃコンパイラ時にほぼバグの検出が不可能なんだから・・・
仮にバグが残ってて動作とまろうと、大規模な損害にならないようなアプリケーションにしか未だに使えない現状はあるよ
だからさっさとチェック技法の確立・・・・・・数学者に任せる
650uy ◆yyC0rYWEq2 :2011/06/13(月) 13:00:54.87
やっべえ、すげー怪文章かいてるねむい

>すべての型を想定して想定した型以外がきたら、例外だしてそれでも処理が続行するようなコード
すべての型を想定して想定した型以外がきたら、例外だしてそれでも処理が続行するようなコード をかくのなら

>動的言語じゃコンパイラ時にほぼバグの検出が不可能なんだから・・・
コンパイル時

>多分動くだろう、っていう曖昧な判断のもの
判断のもと
651646:2011/06/13(月) 13:15:58.52
>>647
いや、こっちが勘違いしてた。そうか型宣言か

Pythonには型宣言が無いけど、ctypesだとこんな感じだから
型宣言のある動的言語ならファーストクラスに出来るだろう

from ctypes import *
from ctypes.util import find_library
libpath = find_library('c')
libc = cdll.LoadLibrary(libpath)
fopen = libc.fopen

fopen.argtypes = [c_char_p, c_char_p]
fopen.restype = c_void_p
652デフォルトの名無しさん:2011/06/13(月) 13:47:31.57
>>650
それ単に多態すれば良くね
653デフォルトの名無しさん:2011/06/13(月) 14:35:06.59
>>651
何行もコード書いてもらってすまない

型宣言のある動的言語というとGroovyなんかが該当するのかな
なんにせよ実益もなく用語法に拘泥した気がするんで頭冷やしてくる
654uy ◆yyC0rYWEq2 :2011/06/13(月) 16:28:02.02
>>652
何が多態すればいいのか意味不明
わけがわからないわけがわからない
C言語しか知らないしったかはしんで

横レスはしないでおいてやるけど、動的言語使ったことない奴が好き勝手書きすぎだろ・・・
動的言語で大規模なの作ろうとするポテンシャル要求されるから
やろうって奴少ないというか、実際に成果物が少なくそれが出来るならこんなスレのこんな議論にいまさら参加しにこないか・・・
655デフォルトの名無しさん:2011/06/13(月) 18:13:37.74
>>654
おまえみたいな馬鹿がいると議論の邪魔になるから出てけ
656デフォルトの名無しさん:2011/06/13(月) 18:16:53.90
型宣言しなくても、データフローと別名分析で型推論できるわな。
その上、型宣言したところで動的型検査や実行時例外は残る。
そんぐらいなら動的型で書けたほうがマシだね。
657デフォルトの名無しさん:2011/06/13(月) 18:44:49.22
>>654
いやむしろ俺C言語はいくら勉強しても身に付かねえ
ほぼJavaとJSとPythonとRubyしか書けないんだがマジでそれどういうコードよ
型分岐とかほとんどそれらの言語でやることねえよ
多態と型変換でだいたい書けるだろ
658デフォルトの名無しさん:2011/06/13(月) 19:03:18.68
>>650
おまえんとこの動的言語のコンパイラは構文エラーも吐かないのかよwww
659uy ◆yyC0rYWEq2 :2011/06/13(月) 19:21:26.96
>>657
もういいよお前

>>658
はぁ・・・?


ネタかと思うほどレベルがひくい・・・完全になえた
660デフォルトの名無しさん:2011/06/13(月) 19:22:23.79
>>656
一般的な話。
完璧じゃないなら諦めた方がマシという考え方は
多くの場合間違いだよ。

完璧に安全じゃないなら、安全装置はないほうがいい。と
言い換えれば分かるだろ。

残ってもいいじゃないか。
減らせるんだからさぁ
661uy ◆yyC0rYWEq2 :2011/06/13(月) 19:22:31.63
>>655
そうか
662デフォルトの名無しさん:2011/06/13(月) 19:24:42.03
>>658
実際に実行する行になるまで
構文エラーをはかない言語ならある。
663デフォルトの名無しさん:2011/06/13(月) 19:42:15.05
>>662
ああ、N-BASICとか、実行された時にSYNTAX ERRORとか吐いてたなw
664デフォルトの名無しさん:2011/06/13(月) 19:43:22.91
>>660
でもその安全装置がカバーしてる範囲は
自動化(型推論)で安全確保できるわけだけれども?
665デフォルトの名無しさん:2011/06/13(月) 19:44:31.84
>>660
完璧じゃない安全装置は、いつでも手動に切りかえられるようにするべき
手動に切りかえるノウハウが不十分なら装置はないほうがいい
666デフォルトの名無しさん:2011/06/13(月) 19:50:58.20
>>665
手動でやればいいんじゃね?

静的言語でも、コンパイラがやってくれる方チェックを
手動でやることは可能だよ。

机上デバッグっていうんだ。
667uy ◆yyC0rYWEq2 :2011/06/13(月) 19:52:37.20
一応、ガチの初心者には優しくするのが俺のモットーでもあるのでレスはしてやるよ

>>657
話すべき場所はそこじゃないんだよ
かけるかかけないかじゃなくて、安全性の話、それもかなり高度な話題( に、なるべきだった )
もし動的言語で安全に安全にソースコードを書こうとしたら

class A
attr_accessor :x
end
class B < A ; end
def a c
if c.class != A
return p :err
end
p c.x = 10
end
a A.new
a B.new

こうやっていちいち型チェックしなければ安全とはいえない
どこかのバカが同じメンバ変数を持った別物のクラスBを渡しちゃうかもしれない
その可能性がすべてのライブラリとコードに混ざるのが動的言語、
こんなコードをすべてのメソッドにかくのか? かかない。こんなコードかくくらいなら最初から静的言語使うから。
本来クラスそのものをやたら渡すコードなんて書いちゃいけないのが普通だけど、常識はずれのコード書く奴だっているから
アホがプロジェクトに1人いたら絶対に動的言語での開発無理
静的言語で起こるバグに加え、動的言語ではすべてが「多態」になることによって動的言語特有の問題がプラスされるんだよ
668デフォルトの名無しさん:2011/06/13(月) 19:53:06.65
>>664
wikipediaにはこんなふうに書いてあるのですが、

> 型推論を持つ言語としてはHaskell、ML、Vala、C#、Scala、Objective Caml、
> D言語、Concurrent Cleanなどがある。JavaやC++0xでも導入が検討されている。
> 静的型付け関数型言語のほとんどが型推論の機能を持っている。

つまり静的言語はいいよねって話ですか?
669デフォルトの名無しさん:2011/06/13(月) 19:55:19.26
型推論
型推論(かたすいろん)とはプログラミング言語の機能の1つで、
静的な型付けを持つ言語において、変数や関数の型を宣言しなくても
^^^^^^^^^^^^^^^^^^^
それを導くのに使われた関数の型シグネチャなどから自動的に型を決定する機構のこと。
主に関数型言語で用いられる。

推論に失敗するとその時点でエラーを報告できるため、
少なくとも誤った型を用いる事によるバグは回避できる。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
また、記述をアルゴリズムに集中できるのでプログラムの抽象度が上がるというメリットもある。
670デフォルトの名無しさん:2011/06/13(月) 19:58:01.84
>>668
動的言語に型推論を適用すると、結果として静的言語として扱えるということだが?
671デフォルトの名無しさん:2011/06/13(月) 19:59:01.15
Smalltalkの型推論ってのもあるしw
672デフォルトの名無しさん:2011/06/13(月) 19:59:46.84
だから、静的言語が素晴らしいから
静的言語に向かうってことでしょ?
673デフォルトの名無しさん:2011/06/13(月) 20:00:52.60
動的言語で型推論持ってるやつって何かな?

純粋な動的言語は型を推論しないことが
特徴なのに変なの
674デフォルトの名無しさん:2011/06/13(月) 20:01:49.59
>>667
それ、どっちにしても実行時にしかチェックできないじゃん。 つか、間違った型渡してたら
そんなチェックするまでもなく、大概はエラーになる(文字列の除算はできないし、数値の連結も
できない)し、たまたまエラーにならなかったとしても、それを、型が違うからとエラーにするのか、
想定内とするのかは、呼び出し側の文脈によるでしょ。

静的言語でいう安全性の売りって、動かしてみるまでもなく、コンパイル時にチェックできるってことでしょ。
675デフォルトの名無しさん:2011/06/13(月) 20:02:28.45
型推論って単に型を書くのが面倒だから
書くのを省略できるってだけの機能だから。
676デフォルトの名無しさん:2011/06/13(月) 20:11:46.98
>>672
ちがうよ。
動的言語のほうが静的言語よりも自由度が高く、かつ、
静的言語が主張する安全性も保証することができるんだよ。
677デフォルトの名無しさん:2011/06/13(月) 20:12:35.42
JITコンパイラなんかは大抵型推論もやってるしなあ
動的型か静的型かは本質じゃないよな
678デフォルトの名無しさん:2011/06/13(月) 20:14:21.32
>>676
物は言いようってやつだなw

> 静的言語よりも自由度が高く
論理的に間違っていることでも実行出来るだけ

> 静的言語が主張する安全性も保証することができる
できるできないの話ではない。
簡単にできるかどうかだ。
679デフォルトの名無しさん:2011/06/13(月) 20:15:30.63
>>677
やってるかどうかではなく、
どれだけできるかどうかの問題でしょ。

人間が型を教えることで、
コンパイラはより高度にコードを解釈できる。
680デフォルトの名無しさん:2011/06/13(月) 20:17:51.92
静的言語ならエラーと判断されるようなコードを
動的言語ならエラーにならない!といって実行しても
結局実行したときに、エラーと判断されるだけだからなぁw

動的言語「動かしてみたら動きませんでした!」
静的言語「うん、知ってる」
681デフォルトの名無しさん:2011/06/13(月) 20:20:34.84
そろそろ>>2に戻る流れか
682デフォルトの名無しさん:2011/06/13(月) 20:22:53.81
>>681
俺も思った
683デフォルトの名無しさん:2011/06/13(月) 20:29:51.95
型推論があるから、静的言語でも
コード速くかけるようになったし。
もう動的言語のメリットはない。
684デフォルトの名無しさん:2011/06/13(月) 20:31:07.90
これが料理だったら
試食しなくても味は保証できるとか言う奴は危険だよな
685デフォルトの名無しさん:2011/06/13(月) 20:54:57.31
カロリーや塩分は保証出来る
686携帯:2011/06/13(月) 21:12:33.97
>>674
話がマジで伝わってない

…とりあえず静的言語よりも動的言語のほうが自由度は高いけど
大規模なプログラム開発には向いていないとだけ覚えておけよ
勿論、使い手の采配次第で余裕で突破可能な問題だけどね?
それを説明するとなると20レスくらいにわたって長文をかくことになる
今多くの優秀なプログラマがバカ君たちに動的言語でプログラミングさせても安全性を保つ方法を世界が考えてる段階

補助輪をなくしたほうがスピードはでる自転車
けれどバカ君は補助輪なくすと転ぶから
補助輪つき
つまり静的言語を使わせるしかないっていう話
君はどっちだ?
687デフォルトの名無しさん:2011/06/13(月) 21:21:06.70
俺は補助輪付き電動自転車を選ぶわ。
688デフォルトの名無しさん:2011/06/13(月) 21:24:59.45
俺にとっては、動的型言語は粘土。静的型言語はレゴブロックみたいなイメージだな。
もう完全に感覚の話でしかないが、レゴブロックで組み上げた方がカッチリしたいいものが作れると思ってしまう。
ただ、設計ミスった時の悲惨さも静的型言語の方が上。
689デフォルトの名無しさん:2011/06/13(月) 21:25:26.83
>>686
20レスもいるかよ、

テスト駆動開発にする。

ほら、一行で克服できたw
690デフォルトの名無しさん:2011/06/13(月) 21:31:23.17
>>652の意味が分からなかったが、
パターンマッチを指して言ってるとすると辻褄が合うな。
動的型付けでパターンマッチ出来るのと言えばErlang位かな。使ったことないけど。
691デフォルトの名無しさん:2011/06/13(月) 21:43:38.78
動的型言語もテスト駆動開発すれば
静的型言語と変わらないってこと?
692デフォルトの名無しさん:2011/06/13(月) 21:44:22.50
それは開発者次第だろうな
693デフォルトの名無しさん:2011/06/13(月) 22:01:32.36
開発者次第って
無責任極まりないな
694デフォルトの名無しさん:2011/06/13(月) 22:07:46.69
そりゃぁ、万人に有効な方法なんてないからね。
例えば新人君ばかりを集めて、大規模開発をやるとなったら、
いくら優れた方法論を採用したとしても、品質を保つことは、
困難だと言わざるを得ない。
695デフォルトの名無しさん:2011/06/13(月) 22:10:29.32
てか動的の1番の問題って何だろな。
そもそも動的型付ってなんじゃらほい。

単に型が会わず例外を出すのが危険とか下らない事をいうのなら、
型のミスマッチをしないように動的言語を作ってしまえばいいだけの話。
例えば、どんな型だろうが演算子やメッセージに対する動作が、今の型の動作をするか
もしくは、空の振る舞いをするようにするかそれだけでいい話。

それじゃあ、バグの検知率が下がるというなら別にそれは、静的型で
間違った値を引数に渡したのと同じ話。危険度なんて大差ないだろう。

ただ、こういう実装を作った場合、パフォーマンスの悪さがバカにならんのが問題だけど。
696デフォルトの名無しさん:2011/06/13(月) 22:24:02.55
なぜソフトウェア工学があるのか考えたこともないのか
697デフォルトの名無しさん:2011/06/13(月) 22:27:53.69
なぜソフトウェア工学があるのか考えたこともないと考えたのか
698デフォルトの名無しさん:2011/06/13(月) 22:30:01.10
そうそう。そもそもさ、今の一般的な概念じゃ、型と値は当たり前のように分離してる。
これを一つ統合してやれば違うあり方が見えてくるんじゃないか。
699デフォルトの名無しさん:2011/06/13(月) 22:34:10.09
そういうことは研究成果を見せてください
700デフォルトの名無しさん:2011/06/13(月) 22:35:00.12
>>698
RubyとかPythonは値が型を持ってるから別に分離してないよ
それとももっと高尚な話?

% ruby -e 'p "hoge".class'
String
701デフォルトの名無しさん:2011/06/13(月) 22:38:22.36
>>700
どちらかの所有関係にあるんじゃなく1つだって事。
型がごく普通の演算対象 演算と言ってもinstanceofとかじゃなくてさ。
702デフォルトの名無しさん:2011/06/13(月) 22:43:49.68
lispってさ、処理とデータが同じもんじゃん。
あれと似たようなもんで型とデータを同一な感じでそうさ出来ればいい。
値が変化すると型も変化する。
703デフォルトの名無しさん:2011/06/13(月) 22:53:17.28
Singletonしかつくれない言語か。
OOが根本から否定されるな…
704デフォルトの名無しさん:2011/06/13(月) 22:53:52.77
もうひとつ。型が演算結果によって拡張されるんだから、値を演算する方は、
その値がどういう型という事を考えなくていい。
最終的な演算結果は結果の型(と値が一体化したもの)になるから、間違ってるかどうかは
その型(と値が一体化したもの)全体てき構造をみれば解る。
705デフォルトの名無しさん:2011/06/13(月) 23:09:38.50
ちなみにその型と値の融合した何かはこんな感じか

var value_type := example<10,20>;
706デフォルトの名無しさん:2011/06/13(月) 23:13:54.79
書き忘れたけど。
コンストラクターのように値を引数にとって処理するわけじゃないからね。
707デフォルトの名無しさん:2011/06/14(火) 00:32:27.08
>>667
Javaでもぬるぽ出まくるわけだが、それについての見解は?
708uy ◆yyC0rYWEq2 :2011/06/14(火) 01:25:47.14
JAVAって何
ゴミ言語Hakell以下の更なるゴミ以下の冗談みたいな言語とかってなると
流石に、その言語の存在自体を漏れは認めたくない
ゴミ箱の中にすら入れたくない
漏れのPCには、さまざまな言語環境が入っているけれど
JAVAだけは、Eclipceをインストールして起動した瞬間に全身に鳥肌がたってあと極度の吐き気と嫌悪感に見舞われ
一度起動して、ハローワールドを実行さえする前に意識朦朧とする中どうにかアンインストールして、それっきり触れる事や
JAVAについて考えることさえしないし、したくない

関係のないことをいうと、ぬるぽのように特定のエラーメッセージというか特定の文章を繰り返し繰り返し、人が
見続けたり、読み続けるのは精神によくない、プログラマ全般にその類の精神の汚染はいえるけど、
JAVAプログラマは特にぬるぽ汚染がひどいんだろうな
709デフォルトの名無しさん:2011/06/14(火) 01:54:33.57
つまんねぇ文章だな。
710デフォルトの名無しさん:2011/06/14(火) 02:55:13.78
>>532
Javaなんだが
711デフォルトの名無しさん:2011/06/14(火) 07:22:33.29
>>710
実装の多重継承や、参照じゃないオブジェクトをフィールドに持てないだろ。
712デフォルトの名無しさん:2011/06/14(火) 07:42:59.77
713デフォルトの名無しさん:2011/06/14(火) 09:34:38.37
このスレの奴らってCがstd::string的な文字列型を言語仕様にもたないのは
しょぼいからとか本気で思ってそう
714デフォルトの名無しさん:2011/06/14(火) 10:41:32.11
その思う根拠は?
715デフォルトの名無しさん:2011/06/14(火) 11:09:51.91
>>667
そもそも、その例ならJavaでも型分岐でしか区別できなくね?
BはAのサブクラスだから引数型のチェックには引っかからない
「同じ構成の別物」どころか「同類」なんだから同様の挙動をしなきゃならない場面
716デフォルトの名無しさん:2011/06/14(火) 17:30:34.84
>>715
つ ダブルディスパッチング
717デフォルトの名無しさん:2011/06/14(火) 17:37:29.42
>>716
ダブルディスパッチなら型分岐は使わずに済むが
それはそれで、やっぱり動的静的問わず同じ実装方法になると思うが…
718デフォルトの名無しさん:2011/06/14(火) 17:39:03.60
>>713
しょぼいからというより、当時のしょぼい環境で処理系の移植性が求められたから。
実際、K&RなCはシンプルないい言語だ。
モダンなCは腐臭がするけどな。
719デフォルトの名無しさん:2011/06/14(火) 17:41:29.97
>>717
そりゃそうだろ、
オブジェクトの型つまり動的型で分岐したいのだから、
動的型言語みたいなコードになって当然。
720デフォルトの名無しさん:2011/06/14(火) 20:54:37.49
721デフォルトの名無しさん:2011/06/14(火) 21:27:43.02
722デフォルトの名無しさん:2011/06/14(火) 21:33:11.04
723デフォルトの名無しさん:2011/06/14(火) 22:42:44.19
724デフォルトの名無しさん:2011/06/14(火) 22:43:42.92
>>713
え?しょぼいからだよ?
725デフォルトの名無しさん:2011/06/14(火) 23:48:34.19
しょぼいからだろうなぁw

速度やいろんな理由でcharの配列があるのは分かるだが、
それに加えて文字列型を加えない理由はないからな。
726デフォルトの名無しさん:2011/06/14(火) 23:52:00.99
>>707
> Javaでもぬるぽ出まくるわけだが、それについての見解は?

(笑)

いや、世の中に完璧なものはない。

より良くなっていればそれで良い。
727デフォルトの名無しさん:2011/06/15(水) 00:05:26.68
>>686
>大規模なプログラム開発には向いていないとだけ覚えておけよ

「大規模なプログラム」ってuy君が大好きなRubyで例えるとどれくらいのサイズ?
728デフォルトの名無しさん:2011/06/15(水) 00:13:31.68
>>727
何だこれはw

100Rubyとか答えれば良いのか?www
729デフォルトの名無しさん:2011/06/15(水) 00:17:59.32
100ルビーフイタw
730デフォルトの名無しさん:2011/06/15(水) 00:19:33.05
こういうとき自演乙って言えばいいのかな…
731デフォルトの名無しさん:2011/06/15(水) 00:21:34.03
最近scalaとかF#とか勉強して知ったけどoption型とかいうのでヌルポ激減できるんだね、これって動的型言語じゃ無理だよね。
732デフォルトの名無しさん:2011/06/15(水) 00:24:09.53
>>730
自演じゃ無いけど、こんなネタならいつか自演してみたいなw
733デフォルトの名無しさん:2011/06/15(水) 00:37:50.92
動的言語が排出する過剰な二酸化炭素で苦しむ人たちがいる
地球のことを考えたら動的言語を使うのはやめよう
734デフォルトの名無しさん:2011/06/15(水) 00:49:02.46
>>733
ほら見て!こんなこと書いてるのは静的厨なんです。
いやになったでしょう?
735デフォルトの名無しさん:2011/06/15(水) 00:53:03.04
動的言語を廃止して
原発のないクリーンな世界を実現しよう
736デフォルトの名無しさん:2011/06/15(水) 01:02:20.40
>>734
両方嫌になりますた
動的でも静的でもない無的言語を所望しまつ
737デフォルトの名無しさん:2011/06/15(水) 01:22:17.79
放射能に汚染された野菜は全部
動的厨が食べろよな
738デフォルトの名無しさん:2011/06/15(水) 01:24:55.42
無敵厨が食べます。
739デフォルトの名無しさん:2011/06/15(水) 03:32:49.33
>>731
いや、動的型でも代数データ型は実装可能だが?
ただコンストラクタにグローバルなIDを振る必要があるから、不便なだけ。
740デフォルトの名無しさん:2011/06/15(水) 04:17:06.74
いわゆるnullの有無は静的型/動的型とは関係ないね。
むしろ破壊代入の有無のほうが関連度が高い。
741デフォルトの名無しさん:2011/06/15(水) 06:19:40.19
要するに、全然違う値が同じ変数に入るのがイヤなんだな
値が異なると分岐しないといけないし安全に分岐する自信がない
分岐したくないでござる
742デフォルトの名無しさん:2011/06/15(水) 08:37:31.06
型というのはテストの一種と考えればいいよ
この変数にはこの型しか入らないというテスト
743デフォルトの名無しさん:2011/06/15(水) 10:23:53.12
>>742
オブジェクト実体には型はないのか
表現式には型はないのか
関数には型はないのか
744デフォルトの名無しさん:2011/06/15(水) 10:25:44.64
>>741
「違う」という基準が動的型と静的型で違うだけだって事に気付け
745デフォルトの名無しさん:2011/06/15(水) 10:32:45.47
ずっとC++でゲーム作ってたけどactionscriptで初めて作ったときは戸惑った
いろいろ学んだけどやっぱC++っぽく書いた
746デフォルトの名無しさん:2011/06/15(水) 13:22:22.60
>>725
Haskellだって文字列はCharのリストだがしょぼくない
Cの文字列が不便なのはメモリ管理が不便だから
だからCでもGC付けるとchar*に対してマシなAPIが用意できる
747デフォルトの名無しさん:2011/06/15(水) 13:33:59.66
>>746
Cの文字列の問題はオーバーランだろ。
だからGCつけて境界チェックすればマシになる。
748デフォルトの名無しさん:2011/06/15(水) 13:38:28.81
そんな潤沢なメモリを期待出来るなら今の時代Cの出番はない
749デフォルトの名無しさん:2011/06/15(水) 13:48:10.49
Cはしょぼいんじゃなく使われる場所が違うだけ
750デフォルトの名無しさん:2011/06/15(水) 13:54:55.29
>>747
GCあれば関数に固定長バッファなんて渡す必要が無く、
結果としてオーバーランなんて起こらない
だから不便なのはメモリ管理であって境界チェックは関係無い
境界チェックだけが問題なら strcpy_s とか gets_s でいい
751デフォルトの名無しさん:2011/06/15(水) 16:29:48.71
GCってメモリが増えて1TBくらいになったら
性能落ちたりしないの?
752デフォルトの名無しさん:2011/06/15(水) 17:34:32.96
やべこんなレベルだったのかw
753デフォルトの名無しさん:2011/06/15(水) 17:52:57.73
ポインタ演算をなくさない限りオーバーランなんて
なくならないように思うけどそうでもないの?
754デフォルトの名無しさん:2011/06/15(水) 18:01:24.86
ゼロには出来ないだろうが、設計次第でオーバーランしにくい構成には出来るはず
ただC言語は根本的にそういう考慮が無さ過ぎるのよね
755デフォルトの名無しさん:2011/06/15(水) 18:19:01.10
でも実行時/動的に安全性を高めるのはCの仕事じゃないよね
バッファの境界チェックにしろGCにしろ
そういうのが欲しければ他に任せてしまった方がいいんじゃ
756デフォルトの名無しさん:2011/06/15(水) 18:29:35.70
そういうのが許されないなら他言語使えばいいって言語
757デフォルトの名無しさん:2011/06/15(水) 18:33:04.69
libpngにしろCで書かれたライブラリは脆弱性が多すぎる
C++で書き直せや
758デフォルトの名無しさん:2011/06/15(水) 18:38:28.30
実行時の安全は例外処理
例外を投げればifを書かなくていいし
分岐したくないでござる
759デフォルトの名無しさん:2011/06/15(水) 18:41:06.77
CはうんこだけどC++はABIねーじゃん
760デフォルトの名無しさん:2011/06/15(水) 18:49:59.09
WindowsはCOMがあるし、
LinuxはGCCしか使われてないんだから
その気になればどうにでもなるでしょ
761デフォルトの名無しさん:2011/06/15(水) 19:05:05.12
その気になればやれないことなんてない




                        by 俺
762デフォルトの名無しさん:2011/06/15(水) 20:32:44.26
>>750
ばーか、GCあろうが、ヌル文字潰されたら普通にオーバーランするよ。
763デフォルトの名無しさん:2011/06/15(水) 20:42:06.86
>>762
潰すなよw
764デフォルトの名無しさん:2011/06/15(水) 20:46:32.22
つーか、こんなスレでまでC vs. C++かよw
お前等C/C++好きすぎだろwww
765デフォルトの名無しさん:2011/06/15(水) 20:51:14.22
C++の話題を混ぜて来ようとする人がいただけでしょ
本筋は別
766デフォルトの名無しさん:2011/06/15(水) 20:53:11.90
C ∈ C++
767デフォルトの名無しさん:2011/06/15(水) 20:59:48.13
いやC++はもういいって
次行こうぜ
768デフォルトの名無しさん:2011/06/15(水) 21:07:57.95
C/C++やってないひととは仕事しない
まぁ組み込み出身だからだけど
769デフォルトの名無しさん:2011/06/15(水) 21:09:36.90
C
C+
C++
C+++
C++++
C+++++
C++++++
C+++++++
C++++++++
C+++++++++
C++++++++++
C+++++++++++
C++++++++++++
C+++++++++++++
C++++++++++++++
C+++++++++++++++
C++++++++++++++
C+++++++++++++
C++++++++++++
C+++++++++++
C++++++++++
C+++++++++
C++++++++
C+++++++
C++++++
C+++++
C++++
C+++
C++
C+
C
770デフォルトの名無しさん:2011/06/15(水) 21:22:34.44
いやC++は呼んでないから
次、次
771デフォルトの名無しさん:2011/06/15(水) 21:24:58.72
Rubyスレのflattenネタ眺めてると
動的言語は動的だからではなく単にいい加減だから
セキュアだったり大規模だったりな開発には向かないってきがしてきた。
772デフォルトの名無しさん:2011/06/15(水) 21:29:09.87
ところでスレタイとか>>2で言ってる「安全」って当初はどういう意味だったの?「セキュア」じゃないよね…?
型検査が無いと不安、有ると「安心」ってなら分かるけど。
773デフォルトの名無しさん:2011/06/15(水) 21:31:58.50
type-safe のことを型安全と訳すから
774デフォルトの名無しさん:2011/06/15(水) 21:37:05.81
type safety の話なら、静的でも動的でもどちらでもいい筈
775デフォルトの名無しさん:2011/06/15(水) 21:38:22.75
んなわけない
776デフォルトの名無しさん:2011/06/15(水) 21:38:55.55
動的型付けで型安全な言語なんてない
777デフォルトの名無しさん:2011/06/15(水) 21:58:13.13
778デフォルトの名無しさん:2011/06/15(水) 22:03:15.27
Erlangで書かれたオープンソースの3Dソフト
へぼすぎてワロタわ
779デフォルトの名無しさん:2011/06/15(水) 22:03:26.02
つうか動的静的ってくくりがもう時代遅れだろ。
C#でduck typingできるしな。
780デフォルトの名無しさん:2011/06/15(水) 22:14:46.26
>>777
erlangで

test() -> 1 + "a".

みたいな関数を書くと、コンパイルは通るが、実行時に型エラーで落ちるよ。
781デフォルトの名無しさん:2011/06/15(水) 22:14:53.05
C#でduck typingできると
なぜ動的静的ってくくりが時代遅れになるのか
言っている意味がよくわからんのだが
782デフォルトの名無しさん:2011/06/15(水) 22:22:31.39
>>780
つまり、ちゃんと型エラーを補足できているという訳
783デフォルトの名無しさん:2011/06/15(水) 22:23:53.39
>>780
Erlangは知らんが、お前はtype-safetyを勘違いしてないか?
ちゃんと>>777のリンク先読んだ?
784デフォルトの名無しさん:2011/06/15(水) 22:25:38.62
コンパイル時にエラーを補足できるようになってから来てくれ
785デフォルトの名無しさん:2011/06/15(水) 22:29:41.20
>>781
C#のdynamic変数は動的型付けだから、
ひとつの言語の中で静的/動的両方混ぜられるからだろう

関数型とオブジェクト指向が混ぜられる言語があっても
それらの分類に意味があるように、
静的/動的って分類が時代遅れってことはないと思うけどね
786デフォルトの名無しさん:2011/06/15(水) 22:31:08.23
>>784
それは型安全とは関係無い
無知乙
787デフォルトの名無しさん:2011/06/15(水) 22:35:08.86
Haskellでも
head []
reverse [0 ..]
みたいなエラーがある
788デフォルトの名無しさん:2011/06/15(水) 22:36:14.07
>>786
悪いが、せめてこれくらいは読んでからきてくれ。

http://www.cis.upenn.edu/~bcpierce/tapl/
789デフォルトの名無しさん:2011/06/15(水) 22:38:23.16
>>787
それは型エラーじゃない
790デフォルトの名無しさん:2011/06/15(水) 22:39:03.57
しかし妻乱スレだな
791デフォルトの名無しさん:2011/06/15(水) 22:41:56.40
メルトダウンの定義がなんたらかんたらって奴らと同じだな
792デフォルトの名無しさん:2011/06/15(水) 22:42:19.39
その辺は依存型でも使わないと無理だね
coqの例だとhead_tail : {xs:list a | ~ null xs} -> { y:a & { ys:list a | cons y ys = xs }}
みたいな型によって関数が満たすべき性質を強制することができる
ついでにコメントにもなるし、利点だけみれば静的言語の進化の方向性としては結構理想的だね
もっとも、現状ではこのスタイルで本格的な規模のコード書くとなると博士論文クラスになってしまうけど・・・
793デフォルトの名無しさん:2011/06/15(水) 22:42:26.33
794デフォルトの名無しさん:2011/06/15(水) 22:48:29.11
いわゆる静的言語で、こういうデータ構造ってどう書かれるの?

[1,9,[3,4,7],[5,6],2,8,0]
795デフォルトの名無しさん:2011/06/15(水) 22:50:19.85
>>794
List<Object>
796デフォルトの名無しさん:2011/06/15(水) 22:51:16.59
>>795
ああ、言われてみればそうか
797デフォルトの名無しさん:2011/06/15(水) 22:53:43.18
>>794
それはN木だね
関数型言語とかデータ構造の教科書的には
Tree : * -> *
Tree a = Leaf : Tree a
| Fork : (a,[Tree a]) -> Tree a
ってな感じで再帰的な定義になる
798デフォルトの名無しさん:2011/06/15(水) 22:58:00.32
んじゃあ次に、C++やJavaでmap(型じゃなくて、関数型やスクリプトで使われるアレ)って
実装するとしたらどんな定義になるの?
799デフォルトの名無しさん:2011/06/15(水) 22:59:07.39
>>772
> ところでスレタイとか>>2で言ってる「安全」って当初はどういう意味だったの?「セキュア」じゃないよね…?
> 型検査が無いと不安、有ると「安心」ってなら分かるけど。

一言で言えば、実行前にどれだけ
静的検査が行えるかということ。

その大きな境目が、動的言語と静的言語。

800デフォルトの名無しさん:2011/06/15(水) 22:59:43.66
アカデミックな空気にオラ頭が痛くなってきたぞ

>>792
~ null xs (xs is not nullか)で実際にはどの程度の安全性が保証されるの?
よかったら教えておくれ
801デフォルトの名無しさん:2011/06/15(水) 23:09:02.77
>>788
type-safetyはコンパイル時にエラーで補足できることと
定義されてるなら、ぜひ引用してみてくれ
802デフォルトの名無しさん:2011/06/15(水) 23:09:43.73
>>800
絶対にnullにならない証明付きのxsしか受け取らないっていう保障
head_tailを使う為にxsがnullになら無い証明を使用者に強制できる
逆にこの戻り値はこの関数を使用したときに別の関数で利用できる証明を含んでるから
この証明を使って別の関数が要求する証明を組み立てることに使ったりする
803デフォルトの名無しさん:2011/06/15(水) 23:25:03.85
>>802
サンクス。実効的にはコーディングしてる時点で
関数呼び出しの事前条件を満たすことが保証されることになるのかな

横にそれるけどPerlやRubyのtaintを思い出した
804デフォルトの名無しさん:2011/06/15(水) 23:40:27.87
>>798
> んじゃあ次に、C++やJavaでmap(型じゃなくて、関数型やスクリプトで使われるアレ)って
> 実装するとしたらどんな定義になるの?
しばらくJavaやってないから忘れたけど、これでいいんじじゃね?

class オレオレアルゴリズム集クラス {
 public static<R,P> List<R> map(Function<R,P>, List<P>)) {
 }
}

mapの引数と戻り値の型が同じなら
 public static<T> List<T> map(Function<T>, List<T>))
これでいいと思うけど。
805uy ◆yyC0rYWEq2 :2011/06/16(木) 00:37:07.95
>>727
24時間で設計が完成しないレベル
806デフォルトの名無しさん:2011/06/17(金) 20:03:49.26
で、動的言語での都銀勘定系構築成功事例まだぁ?
807デフォルトの名無しさん:2011/06/17(金) 20:09:42.56
勘定系でJavaやCも使わんだろ。
静的か動的以前の問題があるんだから。
808デフォルトの名無しさん:2011/06/17(金) 20:10:38.66
その手の仕事には全く縁が無いので知らないけど、

"Python Could Become the Language of Finance"
http://www.infoq.com/news/2010/04/Python-ABS

って記事を見つけた
809デフォルトの名無しさん:2011/06/17(金) 20:15:47.54
COBOL「俺の出番か……!」
810デフォルトの名無しさん:2011/06/17(金) 21:31:40.79
Acsessだけしか知らんが、データベースソフトで動的言語って怖いよ

自分は使う側だけど、endifが一個足りないだけっていう単純な文法エラーで半日くらいデータベース使えんかった

vbScript触った事無かったけど、趣味でプログラミングしてたから、開発担当者に「このモジュール(関数)でエラーが出てるみたいなんだけど。。。」と言ったら、プリントアウトして持ってった

結果が上の文法エラー

。。。開発部署のプログラマ、テストしてねーだろ

どっちもどっちなのかも知れんが、静的型の方が、こう言うのはマシだったんじゃないか?と思う
811デフォルトの名無しさん:2011/06/17(金) 21:58:49.01
静的スクリプト言語なんて、マジあり得ねぇから。
812デフォルトの名無しさん:2011/06/17(金) 22:02:13.39
haskellあたりじゃね?静的スクリプト言語って
813デフォルトの名無しさん:2011/06/17(金) 22:02:44.22
VBScriptって、まだ現役なんだな。
814デフォルトの名無しさん:2011/06/17(金) 22:03:01.60
昔のBASICとか
815デフォルトの名無しさん:2011/06/17(金) 22:07:00.46
つか、endif抜けてたら、さすがにわかるだろ、いくら動的言語とはいえ。
テスト以前の問題。
816デフォルトの名無しさん:2011/06/17(金) 22:11:59.47
ん?動的=インタプリタなの?
817デフォルトの名無しさん:2011/06/17(金) 22:16:12.06
文法エラーならそのソフトは実行されていない
実行しなければどうということはない
818デフォルトの名無しさん:2011/06/17(金) 22:38:41.49
動的=静的言語なら実行前に分かるチェックが少ない
819デフォルトの名無しさん:2011/06/17(金) 22:39:21.16
endif 抜けなんて変数の型付け関係ねーだろ
アホか
820デフォルトの名無しさん:2011/06/17(金) 22:45:34.38
>>815, >>819
VB 系の言語で Eval() 使ってるとか
821デフォルトの名無しさん:2011/06/17(金) 22:53:40.89
Parsingの問題なら、静的、動的関係無いな。
822デフォルトの名無しさん:2011/06/17(金) 23:04:19.86
パースに関しては実行前にチェックが出来るのを
有り難がるくせに、なんで型に関しては
実行前のチェックが気にくわないんだろうな。

それともパースも実行時エラーにして欲しいのかい?
実行すればエラーかどうか分かるから不要だろ?w
823デフォルトの名無しさん:2011/06/17(金) 23:06:40.52
実行前にチェック出来ることを
なぜ実行後にチェックするんだよ
824デフォルトの名無しさん:2011/06/17(金) 23:08:13.14
別に有り難がってねーよ
テスト走らすどころか一度も実行してないコードを
コミットするなんざ論外だと言ってる
825デフォルトの名無しさん:2011/06/17(金) 23:14:51.39
コミットしなきゃ誰も修正してくれないだろ?
826デフォルトの名無しさん:2011/06/17(金) 23:17:15.54
それくらい自分で修正しろよwww
827デフォルトの名無しさん:2011/06/17(金) 23:18:14.84
>>822
言語はそのままでサポートが手厚くなるのは有り難い。
サポートしてやるから言語を改変しろみたいなトレードオフは損得を評価しにくい。
828デフォルトの名無しさん:2011/06/17(金) 23:24:17.78
>>816

インタプリター静的型 cint (C/C++が走る)
コンパイル動的型 Objective-C,Lisp
829デフォルトの名無しさん:2011/06/17(金) 23:33:32.62
>>827

メリット:duck typing, monkey patching 可能
デメリット:静的型検査なし
830デフォルトの名無しさん:2011/06/17(金) 23:46:01.45
手が遅い人やコード読めないやつの意見だろ

コミット量見て言えっての
一々確認する時間なんてあるわけねーんだが?
831デフォルトの名無しさん:2011/06/17(金) 23:54:58.99
一体何が言いたいのかよく分からんが、
自分が書いたコードくらいコミット前に自分で確認・テストすべきだし、
手が早いならテスト書く時間くらい簡単に取れるだろ
832デフォルトの名無しさん:2011/06/18(土) 00:10:31.25
動的言語で一度もテストしないでコミットする人は
静的言語でもコンパイルすら通さずコミットすると思う
833デフォルトの名無しさん:2011/06/18(土) 00:12:28.70
一方ロシアは鉛筆を使った

型チェックのテストコード書いて
それを実行して、その結果ついに
どんな状況でも型が違うという問題を解決した。

一方静的言語を使った。
834デフォルトの名無しさん:2011/06/18(土) 00:13:34.64
静的言語で型書くのが面倒だという人は
動的言語で型チェックのテストコードを書かないと思う。
835デフォルトの名無しさん:2011/06/18(土) 00:15:42.52
テストコードって仕様が変わったときのメンテが面倒なんだよね。

型が変わっただけなら、コンパイラが矛盾しているところを
教えてくれって思う。
836デフォルトの名無しさん:2011/06/18(土) 00:17:29.52
動的言語のメリットは>>829みたいな柔軟さであって
型を書くのを省略できるってのはおまけ
837デフォルトの名無しさん:2011/06/18(土) 00:21:19.61
>>815
インデントが汚くて気付かなかったらしい
本職プログラマでそんな奴が混じってんのかよ。。。と呆れたよ
838デフォルトの名無しさん:2011/06/18(土) 00:21:52.81
そして動的言語の柔軟さは
土方使った開発に不向きという話に戻る
839デフォルトの名無しさん:2011/06/18(土) 00:38:40.38
>>838
仕事で利用する側は、マジ笑えない
データベースとかはほぼ全社員の業務に支障きたすから、動かない時の影響大き過ぎ
840デフォルトの名無しさん:2011/06/18(土) 00:40:16.93
書き換える分量と依存関係次第で
手元のテストが当てにならんからな
マージとエラー治してる時間が多くなるから
まとめてしばいちまったほうがはやい
841デフォルトの名無しさん:2011/06/18(土) 00:44:58.72
土方も使いこなせないのに君は何をやるの?
842デフォルトの名無しさん:2011/06/18(土) 00:46:16.18
>>834
Python3ではこんな感じに型チェック(範囲指定付き)を書ける
だからテストコードを書くのは楽だろう

@validate
def myfunc(n:Int(min=1, max=10)) -> Str(maxlen=10):
    return '#'*n

ま、動かしてみるまで分からんのは一緒だけどね
843デフォルトの名無しさん:2011/06/18(土) 00:57:01.98
>>836
> 動的言語のメリットは>>829みたいな柔軟さであって
柔軟というかバグの元になるし、
やろうと思えば同じことはできる。
しかもより安全に。
844デフォルトの名無しさん:2011/06/18(土) 01:00:23.41
しかし冗長に。
845デフォルトの名無しさん:2011/06/18(土) 01:03:48.04
>>843
Javaでもリフレクション使ったら安全さは大差無い
しかも>>844
846デフォルトの名無しさん:2011/06/18(土) 01:15:47.57
いや、危険なことは冗長でいいんだよ。
安全なことは簡単に行え
危険なことはやるのが大変。
それが正しい道だ。
847デフォルトの名無しさん:2011/06/18(土) 01:17:39.52
だいたい本当にduck typingが必要なことってないからなぁ。
インターフェースじゃ駄目で、duck typingじゃないといけない
現実にありそうな例ってまずない。

duck typingはやりたくてやるもんじゃなくて、
危険じゃないよ。duck typingという手法なんだよ!って
言い訳するために作られた言葉。
848デフォルトの名無しさん:2011/06/18(土) 01:18:38.32
>>793を読むと良い
849デフォルトの名無しさん:2011/06/18(土) 01:22:52.41
まあ現実には
アヒルのように歩き、アヒルのように鳴いても
水に浮かべたら沈むおもちゃかもしれないしな。

言い訳にしか聞こえない。
850デフォルトの名無しさん:2011/06/18(土) 01:23:06.41
>>846
haskellですね!!
851デフォルトの名無しさん:2011/06/18(土) 01:27:14.27
>>849
それはinterfaceにもまったく同じことが言えるだろ、アホか
852デフォルトの名無しさん:2011/06/18(土) 01:33:06.00
土方には動的言語は危険だから
補助輪付きのJava使ってれば良いって言ってるのに

なんで他人が使う言語にまで口出ししてるの?
853デフォルトの名無しさん:2011/06/18(土) 01:36:17.90
スレタイ
一人なら勝手に使ってればいい
854デフォルトの名無しさん:2011/06/18(土) 01:37:49.12
動と静をあわせ持った言語って無いの?
855デフォルトの名無しさん:2011/06/18(土) 01:38:00.44
土方はすみっこでIDEでリネームしてればいい
856デフォルトの名無しさん:2011/06/18(土) 01:39:13.40
>>854
C#
理由は>>779>>785
857デフォルトの名無しさん:2011/06/18(土) 01:40:00.90
>>856
C♯以外にありませんか?
858デフォルトの名無しさん:2011/06/18(土) 01:41:02.38
>>853
なんで自分と自分の周りが低能ぞろいだからって
他人まで同じだと思うの?
859デフォルトの名無しさん:2011/06/18(土) 01:41:50.70
>>849
は?

インターフェースのことを、アヒルのように〜なんて
言ったこと無いし。
860デフォルトの名無しさん:2011/06/18(土) 01:42:57.17
>>858
ふーん
そんなにすばらしい人ばかりでコストも安く作れるわけ?
ボランティアだね
861デフォルトの名無しさん:2011/06/18(土) 01:57:26.87
>>854
Common Lisp なら動的・静的どっちでも書けるよ
862デフォルトの名無しさん:2011/06/18(土) 01:58:55.50
>>857
haskellも

863デフォルトの名無しさん:2011/06/18(土) 02:03:00.87
>>852
気になって仕方がないんだろ
なかなかがんばっても使いこなせてる気がしないから
864デフォルトの名無しさん:2011/06/18(土) 02:29:33.15
まぁ、ミッションクリティカル領域の実績が無い事が、全てを物語ってるな。
口先だけなら何とでも言える。
865デフォルトの名無しさん:2011/06/18(土) 03:44:26.82
俺自身にはミッションクリティカルな実績はないが、
実例をあげることならできる。

ちょっとまて今から動的言語で
ミッションクリティカルなこと
やっちまった実例探してくるから
866デフォルトの名無しさん:2011/06/18(土) 03:55:13.22
>>822
君んとこの静的言語ではeval関数の引数の文法チェックまで実行前にチェックしてくれるのか?
867デフォルトの名無しさん:2011/06/18(土) 03:55:41.50
>>865
東京ガスの防災システム
ほぼ全面的にRubyで記述されているらしい
ちゃんと3/11には作動したのだとか
868デフォルトの名無しさん:2011/06/18(土) 04:00:40.95
>>862
haskell以外では?
869デフォルトの名無しさん:2011/06/18(土) 04:11:03.45
>>854
Strongtalk, Gemstone Smalltalk
870デフォルトの名無しさん:2011/06/18(土) 04:12:38.02
FedExのシステムって、Smalltalkじゃなかったか?
あとアメリカの銀行系でもSmalltalkの事例があったような
871デフォルトの名無しさん:2011/06/18(土) 04:18:03.41
Javaってなんで普及したの?
872デフォルトの名無しさん:2011/06/18(土) 04:28:05.60
>>871
初めて現れた、マトモに扱えるオブジェクト指向言語だったからでしょ
(Smalltalkみたいに敷居が高くもなく、C++みたいに言語仕様がぐちゃぐちゃでもなかった)

ホントはSmalltalkが普及してれば、ずっと良かったんだろうけどな
873デフォルトの名無しさん:2011/06/18(土) 04:42:53.58
Smalltalkが流行る訳がない
874デフォルトの名無しさん:2011/06/18(土) 04:57:08.02
SmalltalkよりJavaのほうがずっと敷居が高いと思うが…
875デフォルトの名無しさん:2011/06/18(土) 05:00:59.17
は?
876デフォルトの名無しさん:2011/06/18(土) 06:00:23.03
君子はミッションクリティカルに近寄らず
877デフォルトの名無しさん:2011/06/18(土) 06:17:08.53
動的言語は低性能で過剰に電力を消費するゴミ
動的言語のせいで原発が出来て
日本は放射能に汚染されてしまった
878デフォルトの名無しさん:2011/06/18(土) 06:23:19.62
>>874
同意
879デフォルトの名無しさん:2011/06/18(土) 06:32:30.68
は?
880デフォルトの名無しさん:2011/06/18(土) 06:41:55.18
Smalltalk のほうが覚えることが少なくて、言語の習得は簡単かもね。
実用するにはどっちが楽かはまた別だろうけど。


Smalltalk より Java のほうが、
(製作者や Sun or Oracle に不義理をしたので、)敷居が高い。

881デフォルトの名無しさん:2011/06/18(土) 06:58:41.18
Javaは言語もアレだが、開発環境が腐ってた。
だからSmalltalk由来のVisualAge JavaからEclipseをforkして
デファクトスタンダードなIDEにした。

つまりJavaの開発環境はSmalltalk環境の劣化コピー
882デフォルトの名無しさん:2011/06/18(土) 11:13:07.74
テストって面倒だけど、本当助かる。
883デフォルトの名無しさん:2011/06/18(土) 11:41:44.46
JavaのintefaceよりGoのinterfaceのほうが優れている
884デフォルトの名無しさん:2011/06/18(土) 11:42:03.59
で、SmalltalkのMCシステム(r
885デフォルトの名無しさん:2011/06/18(土) 12:07:14.84
>>891
で、オリジナルのSmalltalk版Visual Ageはどうなったんだ?
この言語はもうだめだと見捨てられたんだろ?
886デフォルトの名無しさん:2011/06/18(土) 12:41:57.39
探せばあるだろうって
大きいところが提供しているから何でもJava、もっと前ではVBとかいう方がおかしいのさ
内部統制とかいってるからこれからもっと酷くなるだろうな
887デフォルトの名無しさん:2011/06/18(土) 12:43:31.54
> この言語はもうだめだと見捨てられた

何にしても、こうやってけなすことにのみ必死なバカに付ける薬はない。
888デフォルトの名無しさん:2011/06/18(土) 13:06:45.27
>>887
けなすとかそういう話じゃなく、
じゃあどうなったのさ?

生き残っていたとして
機能的な点はどうなった?
889デフォルトの名無しさん:2011/06/18(土) 13:16:44.89
ダメかダメじゃないかの二択なのが楽しくていいなw
890デフォルトの名無しさん:2011/06/18(土) 14:08:18.93
あれでIBMのVM屋が育ってj9につながってるのは
基礎知識レベルだと思ってたよ…
それすら知らない君を傷つける結果になってしまい、すまない。
891デフォルトの名無しさん:2011/06/18(土) 14:42:06.39
で、Smalltalkの開発環境の現在の話だが、
ちょっとひどすぎだったんで俺には言えないw
892デフォルトの名無しさん:2011/06/18(土) 14:55:37.23
>>890
どこがどこにどう繋がってるか、詳しく書いてみ。
基礎知識レベルなんだろ?
893デフォルトの名無しさん:2011/06/18(土) 17:01:58.59
>>892
何がわからないのか、具体的に言ってごらん?
おばかですか?
894デフォルトの名無しさん:2011/06/18(土) 17:04:11.60
こんなところでグダグダやってる時点で同じ穴のムジナなんだから
喧嘩しないで仲良くしようぜ
895デフォルトの名無しさん:2011/06/18(土) 18:00:02.13
>>871
1,開発環境がWindowsでサーバーがUNIX系だったから
2.膨大なライブラリが最初から付いてるから
3.インタプリタよりは速度がましだったから
896デフォルトの名無しさん:2011/06/18(土) 18:08:35.71
>>871
C/C++すら覚えられない低能向けにアピール成功
897デフォルトの名無しさん:2011/06/18(土) 18:19:35.13
>>893
>何がわからないのか、具体的に言ってごらん?

「どこがどこにどう繋がってるか」って具体的に書いてあるんだけど、
日本語読めないのか?
898デフォルトの名無しさん:2011/06/18(土) 18:24:54.16
覚えるってw
899デフォルトの名無しさん:2011/06/18(土) 18:38:38.23
>>871

サーバサイドでは
文法がC系列で、プログラマを信用しない言語だったから
(サーバサイドではマルチプラットフォームってあまり意味無いし)

組み込みでは
移植性の高さから
(の、はず。結局プラットフォーム毎にライブラリ違うらしいけど。少なくともCよりは移植性があるんだろう)

デスクトップでは
趣味以外では見る影もない
結局、どのOSもネイティブアプリが主流
マルチプラットフォーム展開もライブラリ単位の展開が主流
(msとの闘争でWinにプリインストールされなくなったのが大きい)


900デフォルトの名無しさん:2011/06/18(土) 18:45:55.05
Sunが宣伝と洗脳がんばってたからな
10年前のjavaは今のHaskellみたいな新技術ってイメージ戦略に成功してたよ
vbやphpはjavaを覚えられない人の使う言語()みたいに見下されてたり

オブジェクト指向が設計をルーチンワーク化して猿仕事にできたり
SunやIBMが絡んでたんで企業にマッチしやすかったんだろうけどな
901デフォルトの名無しさん:2011/06/18(土) 18:50:01.33
C++に文字列があるのないのいってた頃だし
周りの言語が糞すぎた
当時のJavaは実用的なOOPLとしては突出していたね
902デフォルトの名無しさん:2011/06/18(土) 18:50:51.20
>>900
15年くらいまえには、
カネをかけまくったJavaの宣伝と、
カネが全然かかってないPerlの宣伝の凄さは良く言われてたなw

どっちも言語仕様的にちょっと問題があるのに普及しまくった訳で
やっぱり宣伝は重要だ
903デフォルトの名無しさん:2011/06/18(土) 18:57:34.75
JavaとPerlが同格でちょっとかよ
904デフォルトの名無しさん:2011/06/18(土) 19:00:04.83
さすがにPerlさんよりはマシ
土方専用言語は伊達じゃない
905デフォルトの名無しさん:2011/06/18(土) 19:00:32.38
昔のJavaは技術者ですって論調だったからな
底辺の象徴になる時代が来るなんて想像しなかっただろう

宣伝は重要wwwwwwwwwwwwwwwww
906デフォルトの名無しさん:2011/06/18(土) 19:03:43.23
>>900
haskellはイメージ戦略で成功してたっけ?
いや、haskell好きだけどさ

企業がイメージ戦略してた話も聞かないし

javaはGUIライブラリごとマルチプラットフォーム展開したのが流行った理由だろう。とはC++の中の人が言ってた記事を読んだ事あるな
907デフォルトの名無しさん:2011/06/18(土) 19:05:16.54
Javaばかにしてるけど
C系以外で唯一実用的な言語だと思うんだが
C#は基本パクリだし
908デフォルトの名無しさん:2011/06/18(土) 19:09:12.54
>>907
じゃあ、唯一じゃないじゃん
てか、実用性では両方触った限り、C#の方が優秀だよ
909デフォルトの名無しさん:2011/06/18(土) 19:10:06.21
Wondowsしか使わなければそれもあったかもしれないけどね
冷静になろうよw
910デフォルトの名無しさん:2011/06/18(土) 19:12:22.02
C#はWindowsでしか動かないのがねえ・・・
mono?ああそんなのもあったけ
911デフォルトの名無しさん:2011/06/18(土) 19:15:13.51
>>909
うん、冷静になったら、javaもc#もc系だよね
912デフォルトの名無しさん:2011/06/18(土) 19:17:17.82
静的言語のJavaとC#で喧嘩すんなよ
Java土方www
913デフォルトの名無しさん:2011/06/18(土) 19:18:48.40
ここでいうC系は文法じゃなくてネイティブ系かVM系かでしょ
914デフォルトの名無しさん:2011/06/18(土) 19:19:30.24
だって動的言語興味ないんだもん
915デフォルトの名無しさん:2011/06/18(土) 19:20:43.75
>>913
さちこ、それはC系とは言わん
916デフォルトの名無しさん:2011/06/18(土) 19:28:25.79
Winだと
mfc>>Qt>VB6ランタイム(w)>java>.net

の順で開発されたアプリ多い気がする
他のOS気にしてる開発者ってWinには以外と少ないのでは?
逆に、macやlinuxで開発してる人がマルチプラットフォーム意識してるイメージ
917デフォルトの名無しさん:2011/06/18(土) 19:29:01.99
このスレはJava土方がJava以外の言語に対する
憎悪を発露するスレです
実は静的/動的言語という区分は関係ありません

Haskell等が憎悪の対象とならないのは
現状で自分の仕事を脅かすシェアが無いからです
918デフォルトの名無しさん:2011/06/18(土) 20:11:06.84
Java土方はScalaに移行するからHaskellなんて眼中にない
919デフォルトの名無しさん:2011/06/18(土) 20:38:53.30
ようはVBが絶滅したからJava煽ってんのか
正統な後継者はC#なのに
920uy ◆yyC0rYWEq2 :2011/06/18(土) 22:15:23.11
>>877
マジレスすると、
電力が安いからって電力消費気にしないプログラム設計、ハード、
そういうものを沢山作って原発が作られた背景はあると思うけど

原発の問題は、もうそこじゃなくて、核を使うなって人類全部に今更ストップかけられないところまで
世界が科学者が興味持っちゃってるんだよ
あと少し、あと少しってな・・・
さっさと核を人の制御下におけるところまで技術を発展させないとマジで、どこかの国が大きな事故を起こして世界滅びる
レベル7なんてまだまだ・・・

核爆発は起こりえないっていってるけど、
それは計算された核爆発が起こらないだけであって
100年以上冷やし続けても触るとまだ暖かい物質がそこにあるんだよ、太陽をまず見てみれば良い
核エネルギーってあれだぜ
1年間、冷水で冷やし続けてようやく100度以下になるらしいんだよ
マジで1歩間違えば何が起こるか予測不可能、

これはまだ20数年しか生きていないにしろおれの責任でもある
エネルギー方面を完全に何も考えずに、他の奴に委任していたんだからな・・・

世界が貧しければ戦争は起こるし、原発がなければないで戦争は起こってたかもしれず、
技術力のないアホがアホなりに頑張って今日を守る為に考えた結果が核エネルギーだったのかも知れない
世界はずいぶん無理をして豊かさを手に入れているものだよ
・・・世界を覆す力があるにもかかわらず、堕落している自分が少し許せない
921デフォルトの名無しさん:2011/06/18(土) 23:37:54.37
>>919
Java使いが煽りに来てやり返されてる、が正しい
スレタイ読め
922デフォルトの名無しさん:2011/06/19(日) 01:51:35.49
>>871
GUIとスレッドが標準ライブラリについてきて
環境非依存で実行でき、Cから見て天国のように見えたから。
923デフォルトの名無しさん:2011/06/19(日) 03:23:44.77
と言いつつJavaはC/C++からのreplaceは殆ど無くて
COBOLやVBからのreplace組が多い
924デフォルトの名無しさん:2011/06/19(日) 04:54:54.97
「動的言語なら安全じゃない」がtrueなら、SQL使ってるアプリは全滅ですね
925デフォルトの名無しさん:2011/06/19(日) 05:28:41.47
所詮2chの名無しなんて
俺が何を作ろうと、煽り続けるんだろう
相手してるとつかれるんよ
926デフォルトの名無しさん:2011/06/19(日) 09:19:38.74
IBMのVM技術の流れを知らないカスがいるとはねえ…
927デフォルトの名無しさん:2011/06/19(日) 10:31:58.39
928デフォルトの名無しさん:2011/06/19(日) 11:48:43.76
>>923
>と言いつつJavaはC/C++からのreplaceは殆ど無くて

今はサーバサイドは殆ど Java と LL だけど、昔は C/C++ で作ってた。
最近は DB まで Java だったりするんだぜ。
929デフォルトの名無しさん:2011/06/19(日) 11:51:00.58
あー、念のため言っておくと俺 (>>928) は Java 使いじゃないからね
930デフォルトの名無しさん:2011/06/19(日) 13:33:36.07
>>924
> 「動的言語なら安全じゃない」がtrueなら、SQL使ってるアプリは全滅ですね

全滅かどうかは別として、やっぱり使いにくいよな。

SQL文を埋め込んでると、条件が複雑になったとき
実行時にシンタックスエラーでてむかつくし

O/Rマッパーとか使ってSQL文書かない方法もあるけど、
データベースと言語の型の違いで、型変換でエラーでたり
オーバーフローしたりNULLが入る可能性を見逃していたり。

もしデータベースの型と言語の型をコンパイラ側で正しく一致
させてくれたらそんな些細なバグなんてなくなるのにね。
931デフォルトの名無しさん:2011/06/19(日) 13:44:21.68
DB の側からしたら、プログラミング言語ごとのデータ型の制限になんか合わせてられないわな
Integer が 32bit 幅だなんてプログラムの外ではナンセンスな話だし
932デフォルトの名無しさん:2011/06/19(日) 14:45:59.67
>>927
VMの実装がつながってんだよ
知らねえの?
933デフォルトの名無しさん:2011/06/19(日) 16:15:42.75
>>932
「どこがどこにどう繋がってるか」って書いてあるんだから、
とっとと書いたら?
934デフォルトの名無しさん:2011/06/19(日) 16:32:59.94
>>933
VMって何か知らないの?おばか?
935デフォルトの名無しさん:2011/06/19(日) 16:40:39.44
>>934
で、VMのどこがどこにどう繋がってるんだ?
基礎知識なんだろ、早く書けよ。
936デフォルトの名無しさん:2011/06/19(日) 17:26:18.11
はい、ひきわけー
937デフォルトの名無しさん:2011/06/19(日) 17:35:34.87
VMはVMだろw
それ以上何を比較しろと…

まあそれはそうと、
JavaVMベンダーの多くが元Smalltalk関係企業なのは
偶然じゃないだろうなw
938デフォルトの名無しさん:2011/06/19(日) 17:59:24.66
偶然だろうJK
939デフォルトの名無しさん:2011/06/19(日) 18:43:05.75
JavaのHotspotはSelf由来の技術が使われてる
(SelfはSmalltalkに影響を受けた動的言語)という話だね
すでにSmalltalk処理系でJITは使われてたしね
940デフォルトの名無しさん:2011/06/19(日) 18:57:43.85
http://wingolog.org/archives/2011/06/08/what-does-v8-do-with-that-loop

Self(Self) -> Strongtalk(Smalltalk+) -> HotSpot(Java) -> V8(JavaScript) は兄弟みたいなもんだね
941デフォルトの名無しさん:2011/06/19(日) 20:04:24.20
>>899
Javaは別に移植性高くねぇよ。
組み込み関係はメモリー関係で動かなくなるから特に。
むしろ組み込みなら圧倒的にCの方が移植性が高い。
IOを持たないコードはJavaと違って全く変更する必要が無いからな。
アロケータあたりが面倒だけど、それはどの言語だろうと同じ話。
942デフォルトの名無しさん:2011/06/19(日) 20:07:52.12
>>913
Cだってインタプリタで動くし、
最近はVMの使用が台頭してきてるがな。
943デフォルトの名無しさん:2011/06/19(日) 20:12:26.52
下らない揚げ足とり
944デフォルトの名無しさん:2011/06/19(日) 20:14:32.13
>>937
>それ以上何を比較しろと…

はあ? 比較ってなんだよ。

お前は、「あれでIBMのVM屋が育ってj9につながってるのは基礎知識
レベルだと思ってたよ…」って書いたんだよ。

自分の書いたことぐらい覚えとけ。

まあ、結局具体的には何も説明できないという落ちだったわけだな。
945デフォルトの名無しさん:2011/06/19(日) 20:16:26.01
そうやって勝ち誇ることだけが目的だったというわけだなw
946デフォルトの名無しさん:2011/06/19(日) 20:28:33.97
>>944
わけわかんね

昔SmalltalkVM作ってた連中がJavaVMつくったという事実だけで十分だろ
結局おまえは「わからん」と言うだけで、何がわからんのか何1つ説明できなかった

客観的に言って、何も説明できずにいるのは、おまえだ
947デフォルトの名無しさん:2011/06/19(日) 20:44:42.43
>>945
> 昔SmalltalkVM作ってた連中がJavaVMつくったという事実だけで十分だろ

だったら、SmallTalk VM 作ってた誰べえが、Java VM 作ったと書けばいいだけだろ。
もちろんソースつきでな。
基礎知識なんだから、ソースぐらいすぐに出せるよな。

>>944
敗北宣言乙。
948デフォルトの名無しさん:2011/06/19(日) 20:45:49.96
あらゆる事実の中には証明困難な内容が必ず含まれていて、
その部分だけを延々追求していけば議論には負けないでござるな

ただし、延々議論した所で得られる知見は殆ど見込めないし、
時間と体力を消耗するだけだけど
949デフォルトの名無しさん:2011/06/19(日) 20:47:54.27
生産性皆無な煽り合い
950デフォルトの名無しさん:2011/06/19(日) 20:55:58.46
まあ Smalltalk VM から Java VM の流れは、今更議論するまでもない話だよな・・・
ググりたくなくて煽ってるだけ?
951デフォルトの名無しさん:2011/06/19(日) 21:03:05.31
それ以前に>940にリンクされているじゃないか
952デフォルトの名無しさん:2011/06/19(日) 21:09:47.86
つか何が言いたいかまったく伝わらん
953デフォルトの名無しさん:2011/06/19(日) 21:16:03.55
スレタイ的にはどうでもいいね
954デフォルトの名無しさん:2011/06/19(日) 22:00:50.36
SQLもそうだし、JSONなんかのデータも相互運用性の観点から
プログラム言語と緊密には連動しない方向でまとまってるよな。

プログラム言語だけ静的にチェックできたところで「安全」にはならない。
955デフォルトの名無しさん:2011/06/19(日) 22:09:54.29
>>948
>あらゆる事実の中には証明困難な内容が必ず含まれていて、

基礎知識と書いといて、内容聞かれたら証明困難って...。
流石に恥ずかしくないのか?

>>950-951
そのリンク先のどこに、「SmalltalkVM作ってた連中がJavaVM
つくったという事実」が書いてあるんだ?
それともまた違う話なのか?
956うゆ:2011/06/19(日) 22:12:38.12
D言語とか現在の静的言語の中では言語構文だけみた場合は最強なんだけど
それでも動的言語から比べれば色褪せるし
ああやっぱり静的言語なんだなっていう柔軟性とはかけ離れた箇所もある

ゆっくりだけど動的言語で作られた概念が徐々に静的言語にも実装されていくんだけれど
言語処理系の作りやすさの観点から見て静的言語が動的言語の先をいくことはまずない
時代を切り開くのは動的言語側
静的言語使ってるやつって
土方なんでしょ?
957デフォルトの名無しさん:2011/06/19(日) 22:12:52.52
常識の話をしても理解する気無いとか
キーワード書いてもググる気無いとか
リンク張っても読む気無いとか

流石だなw
958デフォルトの名無しさん:2011/06/19(日) 22:31:34.23
>>956
そりゃ当たり前というか、プログラムに求めるものが違うだろうよ
大規模プログラミングでは、ガチガチに仕様も決めて、バグが無いように無いように作るんだから、そもそも柔軟性を必要にして無いんだし

そうおいそれと修正出来ない分野で使われるんだから

火星探査ロボットとか組込みシステムも修正出来ないから静的型なんだし

逆にWebは次々変更する必要があるから、動的型が主流になった

それだけの事
959デフォルトの名無しさん:2011/06/19(日) 22:41:09.88
>>958
ちがうよ
960デフォルトの名無しさん:2011/06/19(日) 22:46:14.48
>>959
違う理由をどぞ
961相変わらず、具体性 "0" なんだな。:2011/06/19(日) 22:49:31.48
>>957
>常識の話をしても理解する気無いとか

理解したいから、内容書いてくれって書いてるんだけど、
相変わらず、証明困難なの? (w

>キーワード書いてもググる気無いとか

キーワードってなに?
具体的に書いてよ。

>リンク張っても読む気無いとか

読んだ上で、「そのリンク先のどこに、「SmalltalkVM
作ってた連中がJavaVM つくったという事実」が書いて
あるんだ?」って、聞いてるんだけど。
で、書いてあるの? あるなら、どこにあるの?
962デフォルトの名無しさん:2011/06/19(日) 22:51:10.41
>>961
もっと丁寧に質問したら教えてあげる
963デフォルトの名無しさん:2011/06/19(日) 22:56:49.70
作ったんだけど。
964デフォルトの名無しさん:2011/06/19(日) 23:02:17.27
おれは第三者なんだが。

結局SmalltalkVMをつくった人間は、JavaVMをつくったの?
それともおそらく作ったという予想?
965デフォルトの名無しさん:2011/06/19(日) 23:04:30.14
作ったんだが。
966デフォルトの名無しさん:2011/06/19(日) 23:13:21.12
・質問は偉そうに行う事
・ググったり、自分から調べるのはスレ住人を甘やかす事になるので禁止
・質問されたら、スレ住人は、噛んで含んで丁寧な解答を作成する事
・質問者が理解できなかったら、それはスレ住人の責任である

みたいな話?
967デフォルトの名無しさん:2011/06/19(日) 23:14:35.07
>>954
> プログラム言語だけ静的にチェックできたところで「安全」にはならない。

発想が極端すぎw

すべてが安全である必要はない。

できるだけ安全ならそれで必要十分なはずだが。


完璧な安全装置がないかぎり、安全じゃないという気かな?
968デフォルトの名無しさん:2011/06/19(日) 23:17:25.83
>>958
http://www.flownet.com/gat/jpl-lisp.html

Common Lispで書かれた宇宙機のプログラムのバグを
リモートデバッグで直したとかいう話
969デフォルトの名無しさん:2011/06/19(日) 23:23:33.91
>>966
>>890 で、
| あれでIBMのVM屋が育ってj9につながってるのは
| 基礎知識レベルだと思ってたよ…

なんて書いてるから、どう繋がってるのか書いてみと書いたら、
具体的な内容は書か (け?) ずに「作ったんだが」と書くのみで、
その作ったという人の名前すら証明困難らしい。(w

まあ、「・質問は偉そうに行う事 」にはちょっと抵触するかもし
れんが、そもそも >>890 が上から目線だったからね。
970デフォルトの名無しさん:2011/06/19(日) 23:24:05.06
動的言語は
0 と ”0” と NULL と 空文字の扱いが
混沌としているよな。

どれが一致して、どれが真かが
言語によってバラバラ。

言語によっては変な演算子が追加されてることがあるし。
971デフォルトの名無しさん:2011/06/19(日) 23:27:04.49
>>968
> Common Lispで書かれた宇宙機のプログラムのバグを
> リモートデバッグで直したとかいう話

すごいね!


Common Lispで書かれたプログラムのバグを
リモートデバッグで直したとかいう話

でも、こっちはすごくないね!

なんだ、自分がすごいと思ったのは、宇宙機って所だけか・・・
972デフォルトの名無しさん:2011/06/19(日) 23:28:08.82
動的かどうかとは無関係

phpの===が糞な点は同意
973デフォルトの名無しさん:2011/06/19(日) 23:28:41.31
>>970
C と Haskell は 0 と "0" と NULL と空文字の扱いは一緒なの?
974デフォルトの名無しさん:2011/06/19(日) 23:30:16.78
>>958
> 逆にWebは次々変更する必要があるから、動的型が主流になった

ウェブサーバーも、メールサーバーも、データベースサーバーも
主要なサーバーは静的型が主流だと思うが?
975デフォルトの名無しさん:2011/06/19(日) 23:30:58.22
Cは
0と'0'が一緒で
0と"0"は一緒じゃない
976デフォルトの名無しさん:2011/06/19(日) 23:31:51.79
>Cは
>0と'0'が一緒で

違うよ
ばーか
977デフォルトの名無しさん:2011/06/19(日) 23:32:54.53
>>972
> phpの===が糞な点は同意
rubyの ===も似たようなもんだw
978デフォルトの名無しさん:2011/06/19(日) 23:34:45.24
そのうち ==== が導入されそうだな。
979デフォルトの名無しさん:2011/06/19(日) 23:37:14.20
動的言語って演算子が増える傾向にあるよね。

基本的に型がないことが売りだから
違う型でも似ていれば同じとみなしちゃう。

でも型が違う時は、違うように判断して欲しいんだよ!って
なるから演算子が増えるのだろう。

== と eq とか
980デフォルトの名無しさん:2011/06/19(日) 23:42:25.48
ねむねむ
981デフォルトの名無しさん:2011/06/19(日) 23:44:21.75
>>976
そんなにカリカリすんなよ
ISOの規格ではソース文字集合は規定してるけどエンコーディングは規定してない
'0'==0になる俺俺エンコーディングもあるかもしれん
982デフォルトの名無しさん:2011/06/20(月) 00:05:02.87
わしゃぁ思うんじゃけぇど、Nullとか0とかゆうのは、
対象が、低水準か、高水準の扱いかゆうことだけで、
動的静的は別に関係ねぇんじゃろうかと思うんじゃけぇど、
どうじゃろうか。
983デフォルトの名無しさん:2011/06/20(月) 00:14:14.53
どうじゃろうかなぁ。
984デフォルトの名無しさん:2011/06/20(月) 00:15:28.59
>>981
俺俺エンコーディングの話なら、
最初に「俺俺エンコーディングでは'0'と0が一緒になるから」って
前置きしてから、'0'と0は一緒!って話せよw
985uy ◆yyC0rYWEq2 :2011/06/20(月) 00:27:00.59
>>958
大規模プログラミングのほうが柔軟性は必要だろうが
むしろ、小規模だったら、仕様変更起きても、そのまま何箇所か手打ちで変えればいい状況
大規模なもので柔軟性皆無なソースかいてたら、数百箇所書き換えなきゃならない事態になるんだろ
結局、過度の仕様変更を受け付ける事ができないって事
986デフォルトの名無しさん:2011/06/20(月) 00:34:19.45
>>985
で、動的言語による大規模ミッションクリティカルシステムの国内事例は?
987デフォルトの名無しさん:2011/06/20(月) 00:35:38.40
あらゆる事実の中には証明困難な内容が必ず含まれていて、
その部分だけを延々追求していけば議論には負けないでござるな
988デフォルトの名無しさん:2011/06/20(月) 00:37:27.87
にんにん
989デフォルトの名無しさん:2011/06/20(月) 00:38:23.11
>>977
PHPはあんまり知らんが、Rubyの===ってcase文のためのメソッドだからなあ、あんまり常用するものじゃない

>>979
あんまり関係ないような…

Perlは確かに言語設計上演算子が多くなるし絶賛増殖中だけど
Lisp系なんて演算子と呼べるものはごく少数しか無くて、関数名に記号が使えるからそれっぽく見えるだけだし
990uy ◆yyC0rYWEq2 :2011/06/20(月) 00:39:37.57
>>986
 自 分 で 調 べ ろ ks
991デフォルトの名無しさん:2011/06/20(月) 00:42:01.39
最早、

静的とか動的とか
安全とか危険とか

関係無い世界に来てしまったな

このスレはもう後少しで落ちるけれど、
また別のスレで同じ様な話が繰り返されるじゃろうて
992デフォルトの名無しさん:2011/06/20(月) 00:42:22.40
993デフォルトの名無しさん:2011/06/20(月) 00:42:52.60
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
994デフォルトの名無しさん:2011/06/20(月) 00:43:14.89
テストで安全性は確保できるのかとか
ダックタイピングって怖くね?とか
そっち方面に次スレでは向かってほしい

だってLLスレがないんですもの
995デフォルトの名無しさん:2011/06/20(月) 00:43:38.29
次スレは要らないでしょw
996デフォルトの名無しさん:2011/06/20(月) 00:43:43.41
動と静が両方そなわり最強に見える
997デフォルトの名無しさん:2011/06/20(月) 00:44:16.29
じゃあ Lisp 最強か
いや Strongtalk が最強かな
998デフォルトの名無しさん:2011/06/20(月) 00:45:26.96
>>991
 ほんまじゃなぁ。結局だれも動的と静的じゃゆうて
ただの型システムの事しか語るもんおらんもんなぁ。
誰も動的言語は実行時メタ機能じゃゆうことを掘り下げようとせんし。
またぐだぐだがつづくんじゃろうな。
999uy ◆yyC0rYWEq2 :2011/06/20(月) 00:45:40.50
1000ならCがLispで置き換えられる
1000デフォルトの名無しさん:2011/06/20(月) 00:45:43.90
1000なら動と静が合体する。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。