【激突】関数型言語 VS オブジェクト指向言語
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/03/10(土) 06:35:55.71一部には関数型言語を崇拝している人もいます
どちらが上なのか、この際はっきりさせましょう
0002デフォルトの名無しさん
2012/03/10(土) 06:37:20.10言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0003デフォルトの名無しさん
2012/03/10(土) 06:51:21.07今まであったはずの上と下
なんと!
右と左になってしまったではありませんか
これが、21世紀最大の偉大なる発見です。
上へ上へと鎬を削る時代は終わりました。
これからは、自由自在に方向を変えてみようじゃありませんか。
0004デフォルトの名無しさん
2012/03/10(土) 06:53:37.62関数型とか誰が使ってるんだよ
0005デフォルトの名無しさん
2012/03/10(土) 07:32:24.630006デフォルトの名無しさん
2012/03/10(土) 08:37:40.590007デフォルトの名無しさん
2012/03/10(土) 08:41:56.520008デフォルトの名無しさん
2012/03/10(土) 08:52:00.240009デフォルトの名無しさん
2012/03/10(土) 08:52:48.740010デフォルトの名無しさん
2012/03/10(土) 09:32:00.040011デフォルトの名無しさん
2012/03/10(土) 10:19:34.55関数型言語 ・・・ 学習用言語
0012デフォルトの名無しさん
2012/03/10(土) 10:21:33.68関数型言語・・・馬鹿には無理
0013デフォルトの名無しさん
2012/03/10(土) 10:30:31.33またドカタってうるさいやつが
来たかw
0014デフォルトの名無しさん
2012/03/10(土) 10:32:07.800015デフォルトの名無しさん
2012/03/10(土) 11:52:25.31不毛。削除依頼出しとけよ
0016デフォルトの名無しさん
2012/03/10(土) 11:55:38.30ボロ負け確実の関数型言語厨必死だなwww
0017デフォルトの名無しさん
2012/03/10(土) 11:58:15.23入社試験でバカをふり落とすとき。たとえ入ってから使うのがオブジェクト指向のみであっても。
0018デフォルトの名無しさん
2012/03/10(土) 12:30:46.46はい?オブジェクト指向言語しか使わないけど
0019デフォルトの名無しさん
2012/03/10(土) 13:14:27.41目クソ鼻クソを嗤うの類だな
0020デフォルトの名無しさん
2012/03/10(土) 13:18:43.95一度組んだらその後変更が無いシステムで
絶対にバグを出したくないとき
じゃないかな
0021デフォルトの名無しさん
2012/03/10(土) 13:35:04.93それ、仕様言語とかの方じゃないか?
0022デフォルトの名無しさん
2012/03/10(土) 15:08:53.79ドカタはOOPしか使えないだろ?関数型言語でまともにコード書けないだろ?
だったら悩む必要ないじゃん
0023デフォルトの名無しさん
2012/03/10(土) 15:10:29.86根拠もなく優越感だけ持ってる
0024デフォルトの名無しさん
2012/03/10(土) 15:21:50.67CLOSでオブジェクト指向もサポートしてるから最強じゃん
そもそも、CLOS無しでもオブジェクト指向っぽく書けるから最強じゃん
0025デフォルトの名無しさん
2012/03/10(土) 15:57:23.090026デフォルトの名無しさん
2012/03/10(土) 16:35:37.800027デフォルトの名無しさん
2012/03/10(土) 16:52:31.89関数型に慣れたら副作用を考えなくていいのですごく楽なのに。
0028デフォルトの名無しさん
2012/03/10(土) 18:36:06.04メモリスタとかで状況が変わるかもな。
0029デフォルトの名無しさん
2012/03/10(土) 19:35:35.17003015
2012/03/10(土) 20:00:01.750031デフォルトの名無しさん
2012/03/10(土) 21:01:46.800032デフォルトの名無しさん
2012/03/10(土) 23:57:57.82> 関数型に慣れたら副作用を考えなくていいのですごく楽なのに。
副作用のないアプリはないんだよ。
0033デフォルトの名無しさん
2012/03/11(日) 00:01:44.37http://news.mynavi.jp/news/2012/03/06/060/
0034デフォルトの名無しさん
2012/03/11(日) 00:04:15.080035デフォルトの名無しさん
2012/03/11(日) 01:07:03.970036デフォルトの名無しさん
2012/03/11(日) 01:12:14.530037デフォルトの名無しさん
2012/03/11(日) 01:31:35.12関数型言語 + オブジェクト指向言語 + コンパイラ言語
これでネイティブコードはいて
どのマシンでも動けば完璧なんだが。
0038デフォルトの名無しさん
2012/03/11(日) 02:20:40.960039デフォルトの名無しさん
2012/03/11(日) 03:55:44.89foldl f v (x:xs) = foldl f (f v x) xs
sum = foldl (+) 0
product = foldl (*) 1
reverse = foldl (\ys x -> x:ys) []
length = foldl (\n _ -> n + 1) 0
再利用出来すぎ
LLだって、オブジェクト指向の機能のみではここまで再利用は出来まい
0040デフォルトの名無しさん
2012/03/11(日) 04:38:51.18プログラム意味論あたりの研究で
関数型とオブジェクト指向は完璧には組み合わせられないって
いう結論が出ているらしい
0041デフォルトの名無しさん
2012/03/11(日) 08:10:12.86参照透明性を壊すような副作用がないから、「考えなくていい」ということ。
0042デフォルトの名無しさん
2012/03/11(日) 08:20:12.84Rubyなら再利用できますけど、何か?
def fold(init, xs, &fn)
case xs.length
when 0
init
when 1
fn.call(init, xs[0], &fn)
else
result = fn.call(init, xs[0])
for x in xs[1..(xs.length - 1)]
result = fn.call(result, x, &fn)
end
result
end
end
def sum(ary); fold(0, ary) { |s, x| s + x }; end
def product(ary); fold(1, ary) { |p, x| p * x }; end
def reverse(ary); fold([], ary) { |xs, x| xs.unshift(x) }; end
def length(ary); fold(0, ary) { |n, _| n + 1 }; end
0043デフォルトの名無しさん
2012/03/11(日) 08:33:01.34なるほど。Rubyで書き直すとクソコードになるって事ですね。
004442
2012/03/11(日) 08:35:50.94def fold(init, xs, &fn)
if xs.empty?
init
else
result = fn.call(init, xs[0])
for x in xs[1..(xs.length - 1)]
result = fn.call(result, x, &fn)
end
result
end
end
def sum(ary); fold(0, ary) { |s, x| s + x }; end
def product(ary); fold(1, ary) { |p, x| p * x }; end
def reverse(ary); fold([], ary) { |xs, x| xs.unshift(x) }; end
def length(ary); fold(0, ary) { |n, _| n + 1 }; end
004542
2012/03/11(日) 08:40:16.04def fold(init, xs, &fn); xs.inject(init, &fn); end
def sum(ary); fold(0, ary) { |xs, x| xs + x }; end
def product(ary); fold(1, ary) { |xs, x| xs * x }; end
def reverse(ary); fold([], ary) { |xs, x| xs.unshift(x) }; end
def length(ary); fold(0, ary) { |xs, _| xs + 1 }; end
0046デフォルトの名無しさん
2012/03/11(日) 08:46:41.19簡潔というか、foldの実装をinjectに押し込めただけだよね
foldとinjectは機能的に殆ど同じだから
004742
2012/03/11(日) 08:58:52.21そのとおりだね
ただし、>>44,45のコードは、>>39の
>LLだって、オブジェクト指向の機能のみではここまで再利用は出来まい
という「関数(メソッド)の再利用性」に対する具体的な反論になっているんじゃないかな?
0048デフォルトの名無しさん
2012/03/11(日) 09:10:19.80オブジェクト指向の再利用で典型的なのはGUIコンポーネントなどで、
複数の入力に対して複雑な出力があるものだから比較になってない。
0049デフォルトの名無しさん
2012/03/11(日) 09:16:51.59継承したクラスで関連するメソッドをオーバーライドして修正できるのも再利用性なんだよな。
バグがあるのが悪いというのは論外で、他人が作った資産だったり、すでにオブジェクトファイルに固めてあったり色々な事情がある。
0050デフォルトの名無しさん
2012/03/11(日) 09:23:57.030051デフォルトの名無しさん
2012/03/11(日) 09:26:34.85建設的な議論を妨げてるような気がするんだけど
0052デフォルトの名無しさん
2012/03/11(日) 09:31:15.63じゃあ言い方を変えて猿でもわかるコードならば再利用性があると言える。
0053デフォルトの名無しさん
2012/03/11(日) 09:35:44.85たとえばHaskellのIOモナドみたいな堅牢性はどこにもない。
0054デフォルトの名無しさん
2012/03/11(日) 09:35:51.790055デフォルトの名無しさん
2012/03/11(日) 09:38:11.130056デフォルトの名無しさん
2012/03/11(日) 09:40:38.940057デフォルトの名無しさん
2012/03/11(日) 09:42:17.160058デフォルトの名無しさん
2012/03/11(日) 09:48:13.58"Hello World" って出力しようとしてみればわかるけど、
それすら知らない程の超弩級のバカですねw
0059デフォルトの名無しさん
2012/03/11(日) 10:05:07.74Haskell信者が傲慢で独り善がりな事だけはわかった。
0060デフォルトの名無しさん
2012/03/11(日) 10:10:26.72傲慢で独り善がりってこういう主張のことを言うんですよw
0061デフォルトの名無しさん
2012/03/11(日) 10:10:28.70Haskellerは神の使徒
ML厨やLisp厨は異端
煉獄の火の中に投げ入れられるべき
命令形言語厨は異教徒
豚畜生と変わらない
0062デフォルトの名無しさん
2012/03/11(日) 10:16:06.450063デフォルトの名無しさん
2012/03/11(日) 10:24:33.25ブロックは確かにSmalltalkでもオブジェクトとして有るんだけど、一般的なオブジェクト指向言語には無いのがなぁ・・・
結局、再利用性を高めるためには継承・隠蔽・多態性よりも、関数を値として渡すという関数型言語的な処理の方が有用なんじゃなかろうか
実際、C++やJavaで再利用性に欠かせないテンプレート(ジェネリック)は、オブジェクト指向とは無関係で、どちらかと言うと関数型言語の型推論に近い(これも関数型言語とは無関係と言われればそれまでだが)
そう考えると、型推論的なものと、関数を値として扱える機能が、再利用性向上に寄与してるとも言える
オブジェクト指向の多態性に当たるオーバーライド、オーバーロードはテンプレート(ジェネリック)を使ってなるべく利用しない方向に向かってるのが何よりの証拠とは言えないだろうか
そう考えると、型を意識するオブジェクト指向と関数型のそれぞれの言語を持ち出した方が、より生産性に有用な機能がどれかを浮き彫りにしてくれそうな気がする
0064デフォルトの名無しさん
2012/03/11(日) 10:34:03.01全く意味がわからない。
(バカだからわかんねーんだよwwっていうのはHaskell信者だけにしてほしい)
0065デフォルトの名無しさん
2012/03/11(日) 10:35:23.79使えるから、そのありなしはほとんどどうでもいいと思う。
0066デフォルトの名無しさん
2012/03/11(日) 10:35:44.570067デフォルトの名無しさん
2012/03/11(日) 10:38:28.06なんだよ。俺が無知だったらお前は無知以下じゃないか。
0068デフォルトの名無しさん
2012/03/11(日) 11:21:24.02嫌マジ
Haskell信者じゃなくても、馬鹿だから分からねーんだよって言われて良いレベル
Javaに最初ジェネリックが無かったのに、何で入ったか考えてみ?
継承はともかく、今や、多態性はオブジェクト指向の機能は補助的なものに過ぎない
多態性指向と言うか、テンプレートやジェネリックは別のプラットフォームのものと考えるべきものだろう
関数型とも違うプラットフォームとも言える。と言うか、オブジェクト指向も、関数型も、元は型が無い前提だったんじゃないかと思える
実行速度、安全性などの理由で型も意識した結果がテンプレート(ジェネリック)や型推論に落ち着いたと想像してる
0069デフォルトの名無しさん
2012/03/11(日) 11:34:25.84(型なしラムダ計算があったりするように、どちらにも型なしの世界はある)
安全になることはわかってるけど、
・いちいち型を書くと、無駄に冗長
・配列とかリストとかのコレクションとか、ガチガチをあえて緩めるか
組み合わせの数だけ(整数の配列、浮動小数点のリスト、…)型が必要
という問題があるから、それをエレガントに解決するために使われるのが、
型推論やジェネリック型(や型クラス)。
0070デフォルトの名無しさん
2012/03/11(日) 11:37:37.24相変わらずこれの意味がわからない。
オーバーロードを多態性だってのはわかるけどオーバーライドが多態性かっていうと?だし
テンプレートやジェネリクスでオーバーライド、オーバーロードが制限されることもないし
利用しないようになっているというのもわからないし。
それが何よりの証拠になる理屈もわからない。
0071デフォルトの名無しさん
2012/03/11(日) 11:55:05.570072デフォルトの名無しさん
2012/03/11(日) 12:01:26.09なんだよ〜C++がテンプレートを取り入れた当初から
バリバリつかってた俺は経験的によーく知っているつもりだけどな。
なんか見下す事しか出来ない奴らだなおまえらって。
0073デフォルトの名無しさん
2012/03/11(日) 12:13:16.42そうそう!
それが俺の言いたかった事!
007442
2012/03/11(日) 12:22:10.21>オブジェクト指向の多態性に当たるオーバーライド、
>オーバーロードはテンプレート(ジェネリック)を使ってなるべく利用しない方向に
>向かってるのが何よりの証拠とは言えないだろうか
>>64,70ではないがw、自分も何を言いたいのか分からない
動的型付けなオブジェクト指向言語であるSmalltalk/Rubyでは「(>>63の)都合が悪い」から
話を静的型付けな言語(C++/Java)へ持って行きたい、というのなら分かるのだけれど.....
Lisp/Scheme/Logoのように動的型付けな関数型言語も存在しているわけで、
型付け(動的と静的)と計算モデル(命令型と適用型)をゴッチャにして
理解したつもりになっていまいか?
0075デフォルトの名無しさん
2012/03/11(日) 12:24:14.70>それをエレガントに解決するために使われるのが、
>型推論やジェネリック型(や型クラス)。
C++やJavaのジェネリック型が、エレガントにはとうてい見えない件について.....
007670
2012/03/11(日) 12:35:27.17オブジェクト指向においてオーバーライドは多態性そのものだな。
あの一行を除けば>>63の言いいたい事は解るよ。
0077デフォルトの名無しさん
2012/03/11(日) 12:41:29.15> Lisp/Scheme/Logoのように動的型付けな関数型言語も存在しているわけで、
> 型付け(動的と静的)と計算モデル(命令型と適用型)をゴッチャにして
> 理解したつもりになっていまいか?
計算モデルで分類するならLisp/Scheme/Logoは命令型ですよ
0078デフォルトの名無しさん
2012/03/11(日) 12:48:19.28一般的な定義は「関数がファーストオブジェクトである」
0079デフォルトの名無しさん
2012/03/11(日) 12:51:15.210080デフォルトの名無しさん
2012/03/11(日) 13:07:48.26ファーストオブジェクトって何?
ファーストクラスオブジェクト、ってことなら、PythonとかJavaScriptとか、
最近の言語がみんな関数型言語になっちゃいますけど。
C言語は関数型言語、に類似のデマに惑わされてる人でしょあなたも。
>>75
C++はジェネリックというよりテンプレだから。Javaと一緒にすんな。
0081デフォルトの名無しさん
2012/03/11(日) 13:33:55.540082デフォルトの名無しさん
2012/03/11(日) 13:54:53.4982 名前: デフォルトの名無しさん Mail: sage 投稿日: 2012/03/09(金) 12:07:14.32
実用期を迎えた関数プログラミング 参加レポート
ttp://sea.jp/?p=937
> つまり、関数プログラミングを快適に実践するには、関数を変数に格納できるという程度では不十分だということです。
> 関数プログラミングを支援する言語機能として、以下のようなものが紹介されました。
>
> ・関数を変数に格納でき、さらに無名でも定義できること
> ・関数内部が静的なスコープを持つこと
> ・関数の引数の一部だけを変数にバインドした別関数を返す部分適用を簡単に利n用できること
> ・変数は上書きしない。配列、リストの中身も書き換えない
>
> これらの機能は、関数を頻繁に定義し、それをいろいろな場所に渡して使用する以上ないと困るし、
> 変数が上書きされたり副作用があると関数を組み合わせて使用することが難しくなるのだろう、と私は理解しました。
>
> 個々の要素、例えば高階関数や部分適用などのみに注目して他言語、JavaScriptやRubyなどを見ていけば、
> これらの機能を備えた命令型言語はたくさんあると思います。
>
> 実際、関数を使ったプログラミングもできると思うのですが、やはり型や変数の取り扱い、
> 副作用をどのように扱うか、スコープや値の評価方法など、関数型言語としてデザインされた言語でなければ、
> 関数プログラマーの方々がおっしゃるレベルの関数プログラミングは実現できないのだろうと感じました。
0083デフォルトの名無しさん
2012/03/11(日) 14:20:39.31高階関数、モジュール指向、ラムダ関数、論理型ってこと?
モジュール指向は当たり前だし論理型は余計な感じもする。
0084デフォルトの名無しさん
2012/03/11(日) 14:41:52.30関数型言語を使うことが目的になってる。
0085デフォルトの名無しさん
2012/03/11(日) 14:43:04.94絶対実現不可能なこと。
0086デフォルトの名無しさん
2012/03/11(日) 14:49:18.00絶対って言葉をあんま使わん方がいいぞ。
関数型の典型であるLispのオブジェクト指向
http://www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/objectOrientedLisp.html
0087デフォルトの名無しさん
2012/03/11(日) 14:53:48.47プログラム意味論あたりの研究で
関数型とオブジェクト指向は完璧には組み合わせられないって
いう結論が出ている
0088デフォルトの名無しさん
2012/03/11(日) 14:57:13.55証明は?で君はそれを理解しているの?受け売りはいかんよ。
0089デフォルトの名無しさん
2012/03/11(日) 15:13:16.22最近の関数型言語信者はLispは関数型言語じゃないとか言ってるよ
WEB+DBマガジンに関数型言語についての記事があるけど
Lispを関数型言語から排除していた
0090デフォルトの名無しさん
2012/03/11(日) 15:15:07.46[処理,処理,処理,処理]
オブジェクト指向言語はこれを実現できないわけじゃない
Operationクラスを作ってoperationメソッドを作って
Operationを継承するクラスを各処理ごとに作ってoperationメソッドをオーバーライドして
それらをOperationリストに突っ込めばいい。
高階関数もFactoryやリフレクションを駆使してムリクリ作る事はできる。
でも高階関数モドキやラムダ式モドキをわざわざ作らない。あまり必要ないから。
0091デフォルトの名無しさん
2012/03/11(日) 15:25:31.370092デフォルトの名無しさん
2012/03/11(日) 15:52:23.26どうしても関数型の理論だけで完結することはできない。
だからどの関数型言語も、関数型理論とは外れる機能を搭載している。
世の中に必要とされているシステムってのは絶対に副作用が必要だから、
関数型とそれ以外(たいていはオブジェクト指向)を混ぜた言語が使われる。
昔は、関数型にそれ以外を追加した、関数型ベースの言語が使われていたが
最近はオブジェクト指向に、関数型の機能を追加した、
オブジェクト指向ベースの言語が使われてきている。
また旧来の言語も、関数型の理論を取り入れてきている。
もう、それでいいんじゃね? 関数型ベースなんてもう流行らないよ。
0093デフォルトの名無しさん
2012/03/11(日) 16:00:04.51今;馬鹿もプログラミングするようになった
0094デフォルトの名無しさん
2012/03/11(日) 16:02:45.170095デフォルトの名無しさん
2012/03/11(日) 16:09:45.05添削
X: 最近の関数型言語信者はLispは関数型言語じゃないとか言ってるよ
O: Haskell信者はLispは関数型言語じゃないとか言ってるよ
>WEB+DBマガジンに関数型言語についての記事があるけどLispを関数型言語から排除していた
それは静的型付けな関数型言語に関する記事だからという理由じゃないのかな
その記事で「Lispは関数型言語じゃない」と書いてあるの?
参考として「やっぱり動的型付け言語は大規模開発で効率が悪い 2」スレ(dat落ち)からコピペ
366 名前: デフォルトの名無しさん Mail: sage 投稿日: 2011/10/26(水) 12:25:43.06
>>365
それはハスケラ特有の症例で、心の病の一つ
ハスケルという言語を使っていると、世の中のあらゆる事柄すべてが
ハスケルを中心に廻っているように見えるらしい
従って、あらゆる関数型言語は静的実行かつ静的型付けでなければならないし、
遅延評価が常識であり、一切の副作用は認めようとしない
ハスケラにとって関数型言語とはハスケルのことであり、
その窓から見える世界が彼らのすべて
0096デフォルトの名無しさん
2012/03/11(日) 16:14:01.51Haskell VS その他の関数型言語 VS オブジェクト指向言語
Haskeller VS その他の言語使用者
0097デフォルトの名無しさん
2012/03/11(日) 16:20:11.490098デフォルトの名無しさん
2012/03/11(日) 16:55:49.58SmalltalkとJavaくらい違う
0099デフォルトの名無しさん
2012/03/11(日) 17:11:29.17人を誑かすのは上手いよね。
0100デフォルトの名無しさん
2012/03/11(日) 17:14:32.45RubyもPythonもオブジェクト指向言語と言うより、マルチプラットフォーム言語なんじゃないかと
何というか、ちゃんと切り分けていこうぜ
オブジェクト指向の機能と、関数型言語の機能
それらに依存しない機能
0101デフォルトの名無しさん
2012/03/11(日) 17:23:59.760102デフォルトの名無しさん
2012/03/11(日) 17:26:09.190103デフォルトの名無しさん
2012/03/11(日) 17:47:22.31補足ありがと・・・・
それが言いたかった
0104デフォルトの名無しさん
2012/03/11(日) 21:17:02.05関数型言語の出す例ってその手の toy ばっか。
reverse や length なんていうデフォで提供されてて当たり前な関数を
わざわざ fold から自作してみせて再利用性(キリ
アホかと
再利用唱えてドヤ顔するなら GoF の例を関数型言語で書き下して
コード一桁減りましたくらい言えって
0105デフォルトの名無しさん
2012/03/11(日) 21:56:07.61Haskellerご自慢のモナド/アローはプログラミング(コード設計)レベルの手法であり、
オブジェクト指向言語であればSmalltalk-80が世に知られ始めた1990年代に近い状況
現在のオブジェクト指向言語と比較すれば、関数型言語は少なくとも10年以上の遅れがある
関数型言語には、アート(工芸)やテクニック(技法)からエンジニアリング(工学)への脱皮が必要だろう
参考として「関数型言語Part5」からコピペ
351 名前: 283 Mail: sage 投稿日: 2011/10/01(土) 01:25:14.63
>>347
>という別の切り口の提案についてはどう思ってるの?
まず関数型言語に適したソフトウェア開発方法論というものが、
あれこれ分類を検討できるほど存在していない、という事柄があります。
もちろん>>345の教科書を含めて「数学的な活動としての関数型プログラミング」や、
形式的手法あるいは定理証明といった分野で活発な研究が行われているのは知っています。
ただし自分が求めているのは、現場に提案/適用できる実用的なソフトウェア設計論です。
たとえばOOPLであれば1992年に国内出版された「オブジェクト指向方法論OMT」があります。
当時はOOに対して悲観的な意見者が大半を占めていた時代でしたが、
この本の登場によって、国内でも一気にOOP/OODに関する注目が高まりました。
そして1995年の「デザインパターン」による設計手法のカタログ化(分類)によって一気に普及しました。
これに相当するような具体的な設計論が関数型言語に存在しますか?おそらく現状は No でしょう。
以上のように考えて、>>315で提案されたようなトップダウンな方法論は(今の自分には)無理だと判断しました。
0106デフォルトの名無しさん
2012/03/11(日) 23:33:08.81あれこれバズワードを振り付けてそれっぽく見せてくれればおk、ってこと?
新技術にあれこれ難癖つけているだけの奴って、結局出遅れて損をして、
後からは損をした損をした、って喚くだけに奴になるよね、たいていw
0107デフォルトの名無しさん
2012/03/11(日) 23:39:36.88なんでちゃんと詳細なこと書いてあるのに読まないの?
たとえば、Observer パターンを関数型言語ならどう実装するかってことだよ。
0108デフォルトの名無しさん
2012/03/12(月) 01:36:29.25Cでもできるが保守の手間が尋常じゃなくなるからC++にしておくんだ。
0109デフォルトの名無しさん
2012/03/12(月) 01:39:39.170110デフォルトの名無しさん
2012/03/12(月) 07:12:19.93オブジェクト指向で必要となるデザインパターンが実現できないから関数型は使えない、と言われても、というか。
0111デフォルトの名無しさん
2012/03/12(月) 08:24:35.46やっぱりそのレスが来ると思ったw
デザインパターンというのは、問題があって
その問題をオブジェクト指向で解決する場合のやり方。
解決のやり方がオブジェクト指向というだけで
ここで発生した問題は関数型でも発生する。
Observerパターンでいえば、
何かの状態の変化を監視したいという問題。
それを関数型言語で解決してみろ。
0112デフォルトの名無しさん
2012/03/12(月) 08:52:56.35はたしてどっちのことを言っているのだろう?
0113デフォルトの名無しさん
2012/03/12(月) 08:55:42.780114デフォルトの名無しさん
2012/03/12(月) 23:05:14.540115デフォルトの名無しさん
2012/03/13(火) 07:34:17.930116デフォルトの名無しさん
2012/03/13(火) 13:49:34.45現実から目をそらし、夢の世界の幸福に浸る
0117デフォルトの名無しさん
2012/03/13(火) 15:28:07.46関数型言語ではFRPで解決します。
やさしいFunctional reactive programming(概要編) - maoeのブログ
http://d.hatena.ne.jp/maoe/20100109/1263059731
0118デフォルトの名無しさん
2012/03/13(火) 15:43:23.40でもそのためにわざわざ関数型に切り替えるとなると、う〜む
0119デフォルトの名無しさん
2012/03/13(火) 21:01:38.100120デフォルトの名無しさん
2012/03/14(水) 01:12:30.99逐次処理否定してなんかいいことあんのかよ。プッシュプルみたいなもんなのか?
0121デフォルトの名無しさん
2012/03/14(水) 08:53:59.210122デフォルトの名無しさん
2012/03/14(水) 10:34:01.62GCで不要メモリブロック回収を自動化すると回収漏れが減るように、
FRPで同期処理を自動化すると同期漏れが減ります。
GCに対して「この世の地獄が生まれそう」とは言わないですよね?
0123デフォルトの名無しさん
2012/03/14(水) 13:02:38.580124デフォルトの名無しさん
2012/03/14(水) 14:12:29.33>再利用唱えてドヤ顔するなら GoF の例を関数型言語で書き下して
>コード一桁減りましたくらい言えって
>>111
>関数型言語ではFRPで解決します。
>やさしいFunctional reactive programming(概要編)
これらもう全部解決してるよ。
0125デフォルトの名無しさん
2012/03/14(水) 14:46:02.39GUIアプリやWebアプリの設計は非同期に発生するイベントを処理する必要があるため、
イベント駆動方式と呼ばれるコールバック手法が一般に用いられる
ただし、この手法は処理が「ブツ切り」になるから同期漏れが発生しやすいという問題があった
で、これを解決するのがFRPであると言いたいんだと思うけど、それでいいかな?
FRPが何かはよく知らないけど、この「ブツ切り」問題は継続やスレッドを用いることで解決できる
たとえばRubyならば、継続を実現するメソッド callcc があるし、
ノンプリエンティブな軽量スレッド(コルーチン)を実現するクラス Fiber もRuby1.9で追加された
・[ruby-list:34943] Thread by callcc - callcc で Thread みたいなものを作る話
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/34943
・RubyのFiberを使ってマイクロスレッドでタスクを管理する - Jewel-mmo開発日記
http://dgames.jp/dan/permalink/20110108
==> ゲームプログラミングを題材にして、Fiberを使った同期処理の自動化を解説
別にFRPなんて難解なモノを持ち出さずとも、非関数型言語(なRuby)でも実現できますけど、何か?
0126デフォルトの名無しさん
2012/03/14(水) 15:42:47.66これを使えば、Webアプリのブツ切り問題は解決できる
詳しくは "SeaSide 継続" でググってくれ
たとえば、総括的な解説とJavaでの適用法に関してなら、以下がお薦め
・境界を越える: 継続とWeb開発、そしてJavaプログラミング - IBM dw
http://www.ibm.com/developerworks/jp/java/library/j-cb03216/
0127デフォルトの名無しさん
2012/03/14(水) 18:59:49.860128デフォルトの名無しさん
2012/03/14(水) 19:09:02.040129デフォルトの名無しさん
2012/03/14(水) 20:28:25.76手続き型言語のGOTO文と似ているし、それよりも(使い方を誤れば)凶悪だ
もしC言語のsetjmp/longjmpを知っていれば、直感的に分かるかもしれない
0130デフォルトの名無しさん
2012/03/14(水) 21:16:28.450131デフォルトの名無しさん
2012/03/15(木) 00:08:33.29物事の全体をバランスよく解決することは難しい
0132デフォルトの名無しさん
2012/03/15(木) 01:10:05.80GCが動いてるアプリはいまいち不安定だよ。
富豪プログラミングができる環境に対応したお手軽言語ってことでいいんかね。
0133デフォルトの名無しさん
2012/03/15(木) 07:30:41.110134デフォルトの名無しさん
2012/03/15(木) 08:12:41.22x86も命令セットが酷過ぎる。あんなものの上で動かすから、いまいち不安定なんだ。
0135デフォルトの名無しさん
2012/03/15(木) 12:31:37.820136デフォルトの名無しさん
2012/03/15(木) 18:35:11.76発想の違いに柔軟になれない奴が、別の言語に手を出した所で、
使いこなせるわけがないし、馬鹿げたプログラムを書くだけになるさ。
0137デフォルトの名無しさん
2012/03/15(木) 21:41:14.50どの発言に対して何を言いたいのかいまいち分からん。
もっとはっきり言ってくれんか?いいこと言ってそうだから。
0138デフォルトの名無しさん
2012/03/16(金) 00:24:57.56FRPに対する皮肉でしょ
確かに特定の領域を解決するにはエレガントな方法だが、
だからといって問題の全体を解決できるわけではないという
0139デフォルトの名無しさん
2012/03/16(金) 00:50:41.10開放されるであろうという不確かな前提をもとに動作するプログラムを作りたいのかと。
GCがない言語のほうが作るの楽だろうに。
0140デフォルトの名無しさん
2012/03/16(金) 03:09:45.650141デフォルトの名無しさん
2012/03/16(金) 06:17:29.10この世のアルゴリズムは全て不確かだな。コンピュータ使うのやめたら?
0142デフォルトの名無しさん
2012/03/16(金) 10:33:30.25そうでないプログラムならGCがある方が作るのは楽だね
0143デフォルトの名無しさん
2012/03/16(金) 21:45:11.68メモリを動的に確保することが可能な言語なら
GCとほぼ同じものが搭載されてるから、GCが無くても簡単にならないよ。
例えばC言語やC++。これらの言語で、newやmallocで数十バイトの
小さいメモリを確保した時、OSに要求していると思う?
答え。してない。
そんな小さなメモリの確保でいちいちAPI呼んでたら
パフォーマンスが落ちる。
じゃあどうしているかといえば、言語はそれなりの大きさのメモリを確保して
newやmallocに小分けに与えてる。そしてある一定のサイズ解放されたら
まとめてOSに返してる。
GCはこの作業を別スレッドでやってるだけ。
0144デフォルトの名無しさん
2012/03/16(金) 23:15:19.83> 答え。してない。
しますん。
0145デフォルトの名無しさん
2012/03/17(土) 01:22:45.19全コードを意図したとおりに動作させられる方が安定するっつー話なんだよ。
0146デフォルトの名無しさん
2012/03/17(土) 05:02:01.61何が安定すると言いたいんだろう?
0147デフォルトの名無しさん
2012/03/17(土) 05:16:43.570148デフォルトの名無しさん
2012/03/17(土) 06:03:51.670149デフォルトの名無しさん
2012/03/17(土) 11:57:32.71同じ言語でシームレスに書けるんだよな?
0150デフォルトの名無しさん
2012/03/17(土) 17:24:41.65だったらOSもアウトだろうな
ご苦労さま
0151デフォルトの名無しさん
2012/03/17(土) 18:27:29.910152デフォルトの名無しさん
2012/03/17(土) 22:20:41.321から3までの数字の重複の無い組み合わせは以下のとおり
[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
これをオブジェクト指向式と関数型言語式でコード比較してみようず
出来れば、これの1から4までとか、5までとかバージョンもお願い
0153デフォルトの名無しさん
2012/03/17(土) 22:24:01.370154デフォルトの名無しさん
2012/03/17(土) 22:37:38.40それは関数型言語特有の機能かと言うと違う訳で、最近の言語なら内包表記か、似た機能サポートしてるっしょ
(pythonも内包表記サポートしてるし、C#も似た機能有ったの見かけた)
0155デフォルトの名無しさん
2012/03/17(土) 22:46:21.640156デフォルトの名無しさん
2012/03/17(土) 23:23:34.860157デフォルトの名無しさん
2012/03/17(土) 23:28:51.93多分、コード自体はどっちも大して変わらんはずなのに
0158デフォルトの名無しさん
2012/03/17(土) 23:43:19.86(1..n).to_a.permutation(n){|a|p a}
0159デフォルトの名無しさん
2012/03/17(土) 23:48:37.10おまえのCPUはハードウェアでガベコレしてんのか。
0160デフォルトの名無しさん
2012/03/18(日) 00:08:33.09掃除されると思ってる先輩がいるんだが
どうしたらいい?
0161デフォルトの名無しさん
2012/03/18(日) 00:13:34.62待て待てw
組込みメソッド使ったら意味無いだろ
それを言ったら、Haskellも
import Data.List
parmutations [1..3]
で良いわい
0162デフォルトの名無しさん
2012/03/18(日) 00:17:41.67JavaScriptでは、nullとundefinedがありますが
これと同じ物を関数型言語で実装してください。
0163デフォルトの名無しさん
2012/03/18(日) 00:26:07.90OOPLで書くっつーても、それが単に数値でしかない以上
単なる手続き型のコードが最適解になるからなあ
限りなくOOP的なアプローチを取ると冗長だろうし
0164デフォルトの名無しさん
2012/03/18(日) 00:31:26.19出せばいいんだよ。
たとえば、ドラッグアンドドロップを実装するとかさ。
0165デフォルトの名無しさん
2012/03/18(日) 00:35:30.88組み込みメソッドはプリミティブとして定義されているのだから、
使ってもいいんじゃね?
そのHaskellの例だと、import Data.List はプリミティブではないから、
明らかに反則だけどね
どこで線を引くかで、このスレでローカルルールが必要になると思うけど
0166デフォルトの名無しさん
2012/03/18(日) 00:38:41.98そんなことを言ったら、PHP最強ってことになるぞw
関数型言語で、ウェブサイトから
データを取ってきて表示してください。
<?php echo file_get_contents('http://www.example.com/');
完了w
0167デフォルトの名無しさん
2012/03/18(日) 00:39:30.13手続き型のコードでもいいんじゃね?それが最適解であるのなら....
実際にアンチ関数型スレでは、素数生成についてジェネレータを使った
PythonとSmalltalkのコードが示されていたけど、誰からも文句は出なかったし
0168デフォルトの名無しさん
2012/03/18(日) 00:43:21.47アンカを間違えていまいか?
そういったライブラリ利用があるから使っていいのはプリミティブまでにしようぜ、
というのが>>165の主旨なんだけど
0169デフォルトの名無しさん
2012/03/18(日) 01:01:14.18Cだと文字の表示すら出来んがな
0170デフォルトの名無しさん
2012/03/18(日) 01:18:29.30それどころかHaskellだって、もしリストの畳み込み処理が必要になったら、
組み込み関数のfoldlは使えず、いちいち
foldl _ v [] = v
foldl f v (x:xs) = foldl f (f v x) xs
と書かなければ反則扱いされてしまう(>>39)
だから、プリミティブまでは使ってもいいんじゃね?というのが>>165の主旨
また、ライブラリの利用は禁止とまでは言わないが、減点の対象になるだろうね(>>161)
0171デフォルトの名無しさん
2012/03/18(日) 01:59:34.90Haskell vs. Python の仁義無き闘いはマダー? チン、チン
0172デフォルトの名無しさん
2012/03/18(日) 02:03:26.75んじゃ俺は再帰で…
def perm(ns)
return [] if ns.empty?
return [ns] if ns.size == 1
ns.inject([]){|r,n| r + perm(ns.reject{|x| x == n }).map{|xs| [n] + xs }}
end
n = 3
p perm((1..n).to_a)
0173デフォルトの名無しさん
2012/03/18(日) 02:13:07.05(と言うか、自分が知らんだけで、ruby/pythonでも組み込み機能を再現できるんじゃないの?)
ライブラリ使ったら、誰かの言葉じゃないが、言語間の違いなんぞ簡単に埋められるさね
0174デフォルトの名無しさん
2012/03/18(日) 02:25:27.96Rubyの場合「組み込みクラスを使わない」となると配列はおろか数値や真偽値すら存在しないことになっちゃうし
演算子も大半のものがメソッド扱いなんで、言語としてほとんど成り立たなくなる
逆に大量の機能が言語本体に組み込まれてるから
上に書かれたようなのは全くrequireを行なわなくても実行できちゃう
なので「ライブラリ使用禁止」が「組み込みも禁止」だと無茶だし
「組み込みOK、require禁止」だとpermutation一発じゃん、となるワケで線引きが難しいと思う
0175デフォルトの名無しさん
2012/03/18(日) 02:29:04.34ここのpermutationsの使用例で動作確認した
http://rubyist.g.hatena.ne.jp/edvakf/20090416/1239829830
checkPermu xs = and.concat $ check xs
where
check [] = []
check (x:xs) = map (x/=) xs : check xs
permutations 0 _ = [[]]
permutations _ [] = [[]]
permutations n ns = [x:xs | x <- ns, xs <- permutations (n-1) ns, checkPermu (x:xs)]
意図せず、>>161のライブラリVerより自由度が上がった(ruby版の使用例のお陰?)
>>170
ネイティブ関数に関しては、言語によってネイティブ関数を少なめにするポリシーがあったりするからな・・・
(主に言語仕様の軽量化。ライブラリとして追い出して、言語仕様をスリムにするため。Cとrubyはそれぞれ、その極端な例)
たしか、JavaやPythonもどっちかと言うとライブラリに追い出す主義のはず
0176デフォルトの名無しさん
2012/03/18(日) 02:34:52.73それはrubyが異質なだけ
上でも書いたが、rubyは何でもデフォルトに詰め込みすぎなのよ
どっかで読んだが、JavaやPythonは小クラス主義で、rubyは大クラス主義なんだと
小さなクラスの組み合わせでプログラム作るか、大きなクラスに何でもさせるか
この変はパフォーマンスとの兼ね合いや、自由度とかの兼ね合いになるんだろうけど
0177デフォルトの名無しさん
2012/03/18(日) 03:03:46.85開発効率を比べてみないか?
まあ、さすがに非公開ライブラリとかじゃダメだが。
0178デフォルトの名無しさん
2012/03/18(日) 07:28:55.36allPattern 0 _ = [[]]
allPattern _ [] = [[]]
allPattern n ns = [x:xs | x <- ns, xs <- allPattern (n-1) ns]
permutations n xs = filter checkPermu $ allPattern n xs
各要素(リスト)から先頭要素が偶数のもののみ抽出
filter (\x -> (even.head) x) $ allPattern 3 [1..3]
各要素のリストが昇順になっているもののみ抽出
filter (\(x:y:z:[]) -> x <= y && y <= z) $ allPattern 3 [1..3]
0179デフォルトの名無しさん
2012/03/18(日) 10:12:47.30それなりの規模の内容である必要があるな
0180デフォルトの名無しさん
2012/03/18(日) 11:04:54.77あの程度でいいから関数型言語で作ってみてよ。
0181デフォルトの名無しさん
2012/03/18(日) 11:08:23.440182デフォルトの名無しさん
2012/03/18(日) 11:26:23.79Webドカタ思考は非常にRuby信者らしいじゃん
どうしてRubyアンチ厨だと思ったん?
0183デフォルトの名無しさん
2012/03/18(日) 11:45:35.73自分は、Web系全く触ったこと無いんでパスするが、この辺見ながら、RoRと使い比べてみては?
http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/
0184デフォルトの名無しさん
2012/03/18(日) 12:03:18.74本当に実務レベルのもの要求したって
書けないだろw
だから15分程度でできる課題を用意したのに、
それすらできないのか?
0185デフォルトの名無しさん
2012/03/18(日) 12:07:45.51Rails信者はRuby信者だけど
Ruby信者にはRailsアンチもいる事に注意
0186デフォルトの名無しさん
2012/03/18(日) 12:07:56.84あれはRoRがまだマイナーだった頃、IRCのしかるべきチャンネルに入れば
DHHとかが直接指導してくれた、だなんていう時代の話。
0187デフォルトの名無しさん
2012/03/18(日) 12:12:02.90それなりの”関数”でしかない件。
関数型言語だけではアプリは作れない。
それが関数である宿命。
0188デフォルトの名無しさん
2012/03/18(日) 12:49:16.35英語読みながらだと確実に15分以上かかるじゃないか
おまけに私は全くWebに興味が無い
と言うか、>>175,>>178書いててなんだけど、Haskell入門書もまだ読み終わってない入門中の身なんよ
(正直、>>158見るまで、>>161のライブラリ関数の存在自体知らなかったw)
それなのに、Rubyのコードが>>172のみってのは・・・
今回見たかったのは、プログラミングする際の思考の流れが見たかったんだ
自分の場合は、内包表記で1から3までの重複なしの組み合わせを素直に書くと、こうなる
xs = [1..3]
[[x,y,z] | x <- xs, y <- xs, z <- xs, x /= y, x /= z, y /= z]
んで、1から4の場合はこうなる
xs = [1..4]
[[w,x,y,z] | w <- xs, x <- xs, y <- xs, z <- xs, w /= x, w /= y, w /= z, x /= y, x /=z, y /= z]
ここで、w /= ..., x /= ..., y /= ...に注目する
w /= x, w /= y, w /= z
x /= y, x /= z
y /= z
と、x /= ...と、y /=...については、1から3と共通な事が分かる
1から5や、1から2についても、同様な法則性があるだろう
そう言う思考の流れでcheckPermuは組んでみた
なので、出来れば、>>172書いた人はどういう思考の流れで組んだのかお聞きしたい
0189デフォルトの名無しさん
2012/03/18(日) 12:50:53.340190デフォルトの名無しさん
2012/03/18(日) 12:56:25.47一般のプログラミングで1から3までの重複なしの
組み合わせを書くことなんてまずないよ。
そんな考えることが殆ど無いこと、
思考の流れなんて言われても思考しません。
あえて言うのなら、「重複なしの組み合わせ」を返すメソッドを書いて
それを呼び出すだけだな。ぱっとコードを見て説明(名前)が必要なら関数にする。
xs = get重複なしの組み合わせ(1,3);
すごくわかりやすいよね。
あんた、実戦経験ないんじゃない?
プログラミングのための勉強ばっかしてて
動くアプリを作ったことないでしょ。
0191デフォルトの名無しさん
2012/03/18(日) 12:56:53.80お前のレス見たので5秒w
0192デフォルトの名無しさん
2012/03/18(日) 13:02:12.43ライブラリでサポートされるのも、
違いを感じないな。
とある言語なら、こうやって書ける!と言われても、
たしかにこの言語でそれ書くの大変だけど、
とある言語では、そうやって書ける構文を言語開発者が
作ってくれてるだけだよね。
作ってくれてるから楽だ。という話なら
それがライブラリでも、作ってくれてれば楽だよね。
言語仕様も、ライブラリも大差ないんじゃない?
この考え、否定出来ないな。
0193デフォルトの名無しさん
2012/03/18(日) 13:05:19.48日本のIT業界が世界に勝てない理由が分かった気がする・・・
0194デフォルトの名無しさん
2012/03/18(日) 13:07:04.68うん。開発力の差だよ。
やつらは、まずとりあえず動くものを作る。
そしてあとで直す。こういうやり方。
0195デフォルトの名無しさん
2012/03/18(日) 13:09:08.78まず、動くものが出来るスピードが大事。
興味がないと言ってる場合じゃないよ。
0196デフォルトの名無しさん
2012/03/18(日) 13:31:31.34それもあるが、考える力が全般的に負けてるんじゃないか?
(自分も人の事言えないが、壁にぶち当たったときの突破力みたいなのがRubyじゃ身につかなさそうな意見だ)
素人のコードに付き合う余裕も無いとは・・・
実践じゃ、ありもののコード使えばいいけど、頭の体操も実践風にするのはどうなの
0197デフォルトの名無しさん
2012/03/18(日) 13:36:25.08既存ライブラリの成熟、過去との互換性、新技術見極め、開発者集め、
どちらも自分が頑張っただけじゃ解決しない
もっと面倒な問題だ。
0198デフォルトの名無しさん
2012/03/18(日) 13:38:44.540199デフォルトの名無しさん
2012/03/18(日) 13:40:51.49使われてないからか。
0200デフォルトの名無しさん
2012/03/18(日) 13:44:34.99Haskellと同じ長さ/時間でプログラムを書けたとしても
同等じゃないんだよ
全ての変数にkind_of?でチェックを入れても、
所詮は実行時チェックにすぎないから
まだ同等じゃない
0201デフォルトの名無しさん
2012/03/18(日) 13:51:50.56> 同等じゃないんだよ
いや、速く作れる。
0202デフォルトの名無しさん
2012/03/18(日) 13:54:33.14これって、割と有名なサービスだと思うけど・・・
http://tanakh.jp/pub/unisys-tech-2011-11-09.html#7
0203デフォルトの名無しさん
2012/03/18(日) 13:56:42.59daemontoolsの再実装のことですか?
仮想ドライブじゃない方の
daemontoolsですよね?
0204デフォルトの名無しさん
2012/03/18(日) 13:59:43.03それは、(ウェブ)サービスではなく
UNIXのサービス管理ツールだ。マヌケめ。
0205デフォルトの名無しさん
2012/03/18(日) 14:00:39.82data Expr a =
TRUE
| FALSE
| And (Expr a) (Expr a)
| Or (Expr a) (Expr a)
| Not (Expr a)
| Base a
eval :: (t -> Bool) -> Expr t -> Bool
eval evalBase expr =
case expr of
TRUE -> True
FALSE -> False
Base base -> evalBase base
And x y -> eval' x && eval' y
Or x y -> eval' x || eval' y
Not x -> not $ eval' x
where eval' = eval evalBase
0206デフォルトの名無しさん
2012/03/18(日) 14:02:37.01なんでいつも関数レベルの話しかせんのだ?
設計レベルの話しろよ。
デザインパターンを関数型言語で実装するとか
0207デフォルトの名無しさん
2012/03/18(日) 14:11:32.23宣言を明示するパラダイムとは全く逆のことをしている。
0208デフォルトの名無しさん
2012/03/18(日) 14:16:12.84拡張性のある関数。
なぜこの言葉に違和感があるのだろうか?
0209172
2012/03/18(日) 14:24:18.89俺は手続き的に、最初に自分が手でその作業をやる場合の手順を考えた
1〜nのカードを用意して、手から順番に机の左から置いてくイメージ
そのイメージをする中で、1枚置いたら、その残りで同じことを繰り返す…つまり再帰であると気付いたって感じ
0210デフォルトの名無しさん
2012/03/18(日) 14:27:20.702.関数型って言えば再帰だよねwww
3.やってみた。
こんな感じ。
0211デフォルトの名無しさん
2012/03/18(日) 14:52:30.30コンビネータを知らないから
0212デフォルトの名無しさん
2012/03/18(日) 14:56:49.54うん。それで?
0213デフォルトの名無しさん
2012/03/18(日) 15:00:56.350214デフォルトの名無しさん
2012/03/18(日) 21:37:40.20GoFに実装する価値のあるもん在ったっけ?
0215デフォルトの名無しさん
2012/03/18(日) 21:42:49.62デザパタを勘違いしてないか?
最初に何かしたいというお題があって
それをオブジェクト指向で実装したのが
デザインパターンね。
最初の何かしたいというお題は
別にオブジェクト指向に限ったものじゃないよ。
0216デフォルトの名無しさん
2012/03/18(日) 22:21:20.65どうして抽象化して再利用できるようにしないのか?
それはつまりデザパタが行える抽象化は
関数プログラミングでは取るに足らないばかりなので
一瞥の価値もないからだ。
と密かに思ってるんだけどどうだろう
0217デフォルトの名無しさん
2012/03/18(日) 22:29:29.87デザインパターンは抽象化して
再利用できるようにしたものだよ。
だから、あんたの結論は逆
0218デフォルトの名無しさん
2012/03/18(日) 22:57:07.07実装できず、「パターン」とするしかないものもある。Smalltalkでは確か
そういうパターンのいくつかは具体的に実装できるとかいう話があったはず。
0219デフォルトの名無しさん
2012/03/18(日) 23:15:13.21実装が違っても、パターンと呼ばれる概念は存在する。
0220デフォルトの名無しさん
2012/03/18(日) 23:58:41.53コードは何も変わらなくても、概念が有名になれば説明しやすくなって可読性は向上する
0221デフォルトの名無しさん
2012/03/19(月) 00:25:35.48パターンを抽象化したのなら元の記述より短くならないと
書き写すのは抽象化とは言わないでしょ
でも何となくわかったよ
javaでは抽象化はできないんだね
だからパターンってもので凌ぐわけだよ
でやっぱり関数型で行える抽象化からすると
デザパタはおもちゃにしか見えないというか
だからパターンってもので凌ぐわけだよ
でやっぱりデザパタは関数型で行われる抽象化からすると
0222221
2012/03/19(月) 00:29:00.390223デフォルトの名無しさん
2012/03/19(月) 00:33:12.350224デフォルトの名無しさん
2012/03/19(月) 00:56:24.28元々は建築家がいかに住人参加型の街づくりが出来るかを考えたものだからな。
数学的な抽象化とはまるで意味合いが違う。
違うものを同列に語るのは間違っているし、優劣を付けるのも同様。
0225デフォルトの名無しさん
2012/03/19(月) 00:58:15.820226デフォルトの名無しさん
2012/03/19(月) 01:57:44.05オブジェクトは書き写すとは言わないでしょ
書き写すのはstringだが、stringは関係ないな
0227デフォルトの名無しさん
2012/03/19(月) 02:47:22.22class undefinedObject;
全部共通のポインタにいれたいなら、shared_ptr<void>で解決
0228デフォルトの名無しさん
2012/03/19(月) 07:17:56.65Interpreterパターンも使ってる
0229デフォルトの名無しさん
2012/03/19(月) 07:31:17.070230デフォルトの名無しさん
2012/03/19(月) 10:12:40.12書き方が下手だとかそういう瑣末な話ではなく論理的な無駄が多い。
エレガントさに目覚めたHaskell厨には頑張って欲しい。
しかしこういう論理的にガチガチなのは平均的なプログラマーには受け入れられないだろうな。
0231デフォルトの名無しさん
2012/03/19(月) 11:06:48.16参照やポインタありきなデータ構造をピュアにすんのが辛い。
何かこの構造はこう書けるとか、代わりにこれ使えとかいう指針はないの
0232デフォルトの名無しさん
2012/03/19(月) 11:51:36.72何も勉強しなくても自然にエレガントな構造になってたって話だろ
0233デフォルトの名無しさん
2012/03/19(月) 13:25:25.680234デフォルトの名無しさん
2012/03/19(月) 13:28:55.61再帰とか高階関数とか、dataで独自データ型作るとかで大体対応出来る
0235デフォルトの名無しさん
2012/03/19(月) 14:13:18.29プロの棋士じゃないんだから
「たった一手悪手を指しただけで敗北」
みたいなのはいらない
0236デフォルトの名無しさん
2012/03/19(月) 14:59:32.850237デフォルトの名無しさん
2012/03/19(月) 18:53:35.57博士論文版(PDF)の方はSMLコードしか載っていませんが、
本の方はHaskellコードが巻末に載っているそうです。
英語が苦手でもHaskellが得意なら活用できるかもしれません。
PFDS読書会が進行中なので議事録が参考になると思います。
Purely Functional Data Structures
http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf
Purely Functional Data Structures
http://www.amazon.co.jp/dp/0521663504
Purely Functional Data Structures読書会議事録
http://wiki.haskell.jp/Workshop/ReadPFDS/
20分でわかる Purely Functional Data Structures
http://www.kmonos.net/pub/Presen/PFDS.pdf
0238デフォルトの名無しさん
2012/03/19(月) 21:18:01.23mallocに関して他の板でも同じ事をいってたヤツがいたな。
どっから出たガセねたなんだろ。
glib使ってるgccは、mallocつかうと毎回mmap呼ぶし、
Windows上のgccとcl.exeは、Platform SDKにある同じ
malloc関数を使う。そのmalloc関数のコールスタックを追うと
毎回HeapAllocを内部で呼んでる。
なんでそういう仕組みになってるか多少考えればすぐ解るはずなんだけどな。
OSのメモリ関数は、呼ばれても実際にはメモリーを割り当てない。
仮に複数のアプリが同時に2GBの領域を要求しても実際にメモリーを
割り当てないことでスライシングに陥るという最悪の事態を緩和してる。
個々のソフトでメモリー管理なんかしてたらシステム全体として遅くなんだよね。
0239デフォルトの名無しさん
2012/03/19(月) 21:20:41.77メモリアロケータとか
newの実装を勉強してから
またおいで。
0240デフォルトの名無しさん
2012/03/19(月) 21:23:34.66newも毎回呼び出してる。
アロケーターとはそもそも書いてなかったろ。
余談がアロケーターはちっさいオブジェクト作るときやたらと重いし
学が無いなら黙っとけよ
0241デフォルトの名無しさん
2012/03/19(月) 21:24:13.71呼び出してませんよ。
0242デフォルトの名無しさん
2012/03/19(月) 21:25:17.66ソース。
0243デフォルトの名無しさん
2012/03/19(月) 21:37:59.73いずれかに定義しているoperator new呼んでて、そんなかで毎回
HeapAlloc呼んでたわ
0244デフォルトの名無しさん
2012/03/19(月) 21:50:53.53こういうのがあって、結局newしてるだけ。
例えばgccはnew_allocator.hってのに定義してある。
pointer
allocate(size_type __n, const void* = 0)
{
if (__builtin_expect(__n > this->max_size(), false))
std::__throw_bad_alloc();
return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
}
0245デフォルトの名無しさん
2012/03/19(月) 21:52:12.74>おまえらpermutationはsortの逆関数だと気付くまでに何分かかった?
30分たったがまだ分からん。
0246デフォルトの名無しさん
2012/03/19(月) 21:54:08.38>>241
さー苦しくなって参りました
そーすっ! そーすぅ! 早よ出せ そーす!
0247デフォルトの名無しさん
2012/03/19(月) 21:57:08.54実装の一つでも挙げてみろよw
0248デフォルトの名無しさん
2012/03/19(月) 21:57:35.05デザパタは抽象化なんかじゃない。
しかし(だから)取るに足らないものであるのはその通りだ。
まだ分からん奴が多いらしい。
0249デフォルトの名無しさん
2012/03/19(月) 21:59:06.59glibcじゃなくてglib?
0250デフォルトの名無しさん
2012/03/19(月) 22:01:41.48cがあろうが無かろうがそんな揚げ足どうでもいいだろ
mingw-w64-crtとソレが呼び出してるライブラリだ
0251デフォルトの名無しさん
2012/03/19(月) 22:06:17.98なんだWindowsべったりの話か。どうでもいいや
0252デフォルトの名無しさん
2012/03/19(月) 22:07:58.36だからWindows以外でいいから実装一つでも出してみろよ
linuxだと毎回確実にmmap呼び出してるぞ
俺のPC Linuxだし
0253デフォルトの名無しさん
2012/03/19(月) 22:23:40.72存在しねぇんだろ素直に認めろよ
0254デフォルトの名無しさん
2012/03/19(月) 22:29:20.12#include <stdlib.h>
int main(void) {
int i;
for (i = 0; i < 100; i++) malloc(1);
return 0;
}
% gcc malloctest.c
% strace ./a.out 2>&1 | grep mmap | wc -l
8
0255デフォルトの名無しさん
2012/03/19(月) 22:38:20.08#include<cstdlib>
#include<cstdio>
int main()
{
char *array = static_cast<char*>( malloc( 10 ) );
for( int i = 0; i < 10; ++i )array[i] = 'a';
array[10] = 0;
puts( array );
free( array );
return 0;
}
[admin@service test]$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 58 vars */]) = 0
brk(0) = 0x1985000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fef2ddbc000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=219526, ...}) = 0
mmap(NULL, 219526, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fef2dd86000
close(3) = 0
open("/usr/lib64/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360cEH>\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=989840, ...}) = 0
mmap(0x3e48400000, 3166648, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3e48400000
mprotect(0x3e484e8000, 2097152, PROT_NONE) = 0
mmap(0x3e486e8000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x3e486e8000
mmap(0x3e486f1000, 82360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3e486f1000
0256デフォルトの名無しさん
2012/03/19(月) 22:43:39.95[admin@service test]$ cat memory.cpp
#include<cstdlib>
int main()
{
char *array = static_cast<char*>( malloc( 10 ) );
int result = 0;
for( int i = 0; i < 10; ++i ) array[i] = i;
for( int i = 0; i < 10; ++i ) result += array[i];
free( array );
return result;
}
[admin@service test]$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 58 vars */]) = 0
brk(0) = 0x20e7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc6fc8e2000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=219526, ...}) = 0
mmap(NULL, 219526, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fc6fc8ac000
close(3) = 0
0257デフォルトの名無しさん
2012/03/19(月) 23:26:22.50まともなライブラリ実装ならあるわけないだろw
0258デフォルトの名無しさん
2012/03/19(月) 23:32:35.880259デフォルトの名無しさん
2012/03/19(月) 23:36:53.280260デフォルトの名無しさん
2012/03/19(月) 23:39:31.22実際やると100回越えるが?
自分の実機でやってみろよ
0261デフォルトの名無しさん
2012/03/19(月) 23:41:33.821回の呼び出しで16回mmapしたりするし。
0262デフォルトの名無しさん
2012/03/19(月) 23:44:41.60実際やったのを貼ってみて
0263デフォルトの名無しさん
2012/03/19(月) 23:51:07.28嘘か本当かわからんだろ
% strace ./a.out 2>&1 | grep mmap | wc -l
148
0264デフォルトの名無しさん
2012/03/19(月) 23:51:20.90hoge@huga:~$ strace ./malloctest
execve("./malloctest", ["./malloctest"], [/* 16 vars */]) = 0
brk(0) = 0x10011000
uname({sys="Linux", node="foo", ...}) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3001f000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=28153, ...}) = 0
mmap(NULL, 28153, PROT_READ, MAP_PRIVATE, 3, 0) = 0x30020000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\1\351\240\0\0\0004\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1458348, ...}) = 0
mmap(0xfe7a000, 1528408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfe7a000
mprotect(0xffd8000, 65536, PROT_NONE) = 0
mmap(0xffe8000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15e000) = 0xffe8000
mmap(0xffed000, 8792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffed000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30027000
mprotect(0xffe8000, 4096, PROT_READ) = 0
munmap(0x30020000, 28153) = 0
brk(0) = 0x10011000
brk(0x10032000) = 0x10032000
brk(0x10053000) = 0x10053000
exit_group(0) = ?
0265デフォルトの名無しさん
2012/03/19(月) 23:57:50.88実際それ以上出るよなどうせ行数オーバーで貼れんだろうけど
0266デフォルトの名無しさん
2012/03/20(火) 00:05:58.43あなたが試して*その結果が出たのなら*それ以上追求しないよ
0267デフォルトの名無しさん
2012/03/20(火) 00:06:29.690268デフォルトの名無しさん
2012/03/20(火) 00:10:26.520269デフォルトの名無しさん
2012/03/20(火) 00:45:16.30関数型言語って、チャーチ数見たいに
関数自体をデータとして扱えるってのは必須要件なのかね?
template<class> struct F;
template<class> struct Count;
template<class type> struct Count< F<type> >
{
enum{ value = Count< type >::value + 1 };
}
template<> struct Count< void >
{
enum{ value = 0 };
};
Count< F< F< F< F<void> > > >::value == 4;
0270デフォルトの名無しさん
2012/03/20(火) 01:58:19.240271デフォルトの名無しさん
2012/03/20(火) 03:22:55.69newの中でmmapしてる? そりゃしてるだろうなw
ただ、それが毎回じゃないってこと。
0272デフォルトの名無しさん
2012/03/20(火) 03:29:02.26必須じゃないと高階関数書けない
Prelude> map head ["Hyper","eternal","love","less","only"]
"Hello"
Prelude> fun [sum,product,length] [1..5]
[15,120,5]
fun [] _ = []
fun _ [] = []
fun (x:xs) ns = x ns : fun xs ns
0273デフォルトの名無しさん
2012/03/20(火) 04:09:39.15式自体を値として扱えるためには、実行時に式を解釈するのが必須要件。
数学の世界はコンパイラがない。
0274デフォルトの名無しさん
2012/03/20(火) 04:23:06.29実行時に式を解釈できるよ。
0275デフォルトの名無しさん
2012/03/20(火) 09:18:34.110276デフォルトの名無しさん
2012/03/20(火) 12:06:22.98システムコールであるmmapと違って、WinのHeapAllocはmallocから毎回呼んでいても
不思議じゃないよ。実際どうかはしらんけどな
0277デフォルトの名無しさん
2012/03/20(火) 13:14:45.26どの言語を使おうが書く時間はボトルネックにならない
言語の選択によって重大な差が生まれるのは
ファイル入出力だったりデータベースアクセスだったりWeb連携だったり
ネットワーク通信だったり。論理とはかけ離れたゴミのような部分
プログラマはそのことを知っているので、言語を選ぶときにそんなところは見ない。
「枝葉末節」をどれだけ簡単に書けるかという視点でサポートライブラリの豊富さを見る。
そっちの篩で先に「使えない言語」が落とされて、
残った言語の中ではじめて「スマートさ」が比較される。
言語屋と現場ではフィルタの順序が逆なんだ。
0278デフォルトの名無しさん
2012/03/20(火) 13:25:47.58プログラムという世界においてロジックを考える時間はゴミのように少ない。
デバッグなどの己の脳の欠陥探しが大半だったりする。
いや実生活においてもそうだ。
論理なんてのはカオス世界の事象のうちのごく一部しか占めていない。
0279デフォルトの名無しさん
2012/03/20(火) 13:30:35.36世界は論理的協調ではなく合理的な競争や敵対によって足を引っ張りあっており
総和としての発展はカメより遅い。
0280デフォルトの名無しさん
2012/03/20(火) 14:52:38.460281デフォルトの名無しさん
2012/03/20(火) 15:36:33.74まったくその通り
まあ俺には関係ないけど
0282デフォルトの名無しさん
2012/03/20(火) 16:07:38.44俺は土方と違うんだ!みたいな感じか?w
お前こそが土方だよ。
0283デフォルトの名無しさん
2012/03/20(火) 16:19:03.51プププwww
0284デフォルトの名無しさん
2012/03/20(火) 16:24:40.50派遣・受注奴隷でいいじゃないか。
0285デフォルトの名無しさん
2012/03/20(火) 16:27:01.22つーことは、素人がコンプレックス持ってるってことだな。
なんでソフトウェア開発を仕事に出来なかったの?力不足?
0286デフォルトの名無しさん
2012/03/20(火) 16:28:44.29隷属根性が染み付きすぎて自社開発って選択肢は脳内に無いんだね
0287デフォルトの名無しさん
2012/03/20(火) 16:32:30.960288デフォルトの名無しさん
2012/03/20(火) 16:32:55.83さすがwww
0289デフォルトの名無しさん
2012/03/20(火) 16:33:42.81製品開発できるよな頭が無いからだしな
与えられた環境、与えられた道具しか使えない
いろいろとお察しくださいだろ
0290デフォルトの名無しさん
2012/03/20(火) 16:35:13.01いつも思い込みで自分の理想の仮想的作って戦ってるな。
まさに、一体何と戦っているんだ?
0291デフォルトの名無しさん
2012/03/20(火) 16:35:51.600292デフォルトの名無しさん
2012/03/20(火) 16:36:46.16無関係なんだろ?
0293デフォルトの名無しさん
2012/03/20(火) 16:39:31.28このスレじゃなくて、ずっと気にして頭から離れない用語だから
また書き込んじゃったんだろ?
0294デフォルトの名無しさん
2012/03/20(火) 16:40:58.57年収400万とかの薄給で頑張ってる人達を馬鹿にすんなwww
0295デフォルトの名無しさん
2012/03/20(火) 16:42:19.200296デフォルトの名無しさん
2012/03/20(火) 16:43:35.800297デフォルトの名無しさん
2012/03/20(火) 16:45:13.55俺が言ったんだが。ドカタじゃなく派遣・受注奴隷と。
0298デフォルトの名無しさん
2012/03/20(火) 16:47:16.680299デフォルトの名無しさん
2012/03/20(火) 16:48:34.26親でも殺されたか?
0300デフォルトの名無しさん
2012/03/20(火) 16:50:11.60,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;;
{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;;
ヾ;;;ハ ノ .::!lリ;;r゙
`Z;i 〈.,_..,. ノ;;;;;;;;>
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f.
~''戈ヽ `二´ r'´:::. `!
0301デフォルトの名無しさん
2012/03/20(火) 16:52:14.83だから言語間の優劣を論じる意味も無い
せいぜい「あの葡萄は酸っぱい」といって自分を慰めるだけ
0302デフォルトの名無しさん
2012/03/20(火) 16:54:39.77それを選んだ奴は、派遣・受注奴隷じゃないだろう?
何を言っているんだ?
0303デフォルトの名無しさん
2012/03/20(火) 16:56:03.490304デフォルトの名無しさん
2012/03/20(火) 16:56:38.30な?居ないよな?www
0305デフォルトの名無しさん
2012/03/20(火) 16:56:42.02自社開発だったら調査検討にかなり時間掛けられるし
マイナーだろうと必要に応じて道具は選べる
0306デフォルトの名無しさん
2012/03/20(火) 16:57:21.84お前ん中ではなってやつ?
勝手に決め付けんな。
0307デフォルトの名無しさん
2012/03/20(火) 16:59:03.23ghcのFFIでCで書かれたコード資産を問題なく使える事を確認したり
そういう時間はあるだろうね、自社開発なら
0308デフォルトの名無しさん
2012/03/20(火) 17:00:32.02どういう理屈なんだろう?
> マイナーだろうと必要に応じて道具は選べる
自社にはマイナーなものを使える人がたくさんいると?
単に、お前一人で作ってる小さなプロジェクトで
過去の資産がないような歴史が浅い小企業だから
自由に選べるってだけじゃないのか?
0309デフォルトの名無しさん
2012/03/20(火) 17:00:54.95ニート?
0310デフォルトの名無しさん
2012/03/20(火) 17:07:28.15調査検討に時間使うのを承認されないって
どんなブラック企業だよ
あ、派遣・受注奴隷さんでしたかwww
0311デフォルトの名無しさん
2012/03/20(火) 17:09:17.56ドカタって呼ぼうぜ
0312デフォルトの名無しさん
2012/03/20(火) 17:13:05.04うちなんかメインの資産はC++だが他のマイナー言語の資産も散在してるぞ。
依存関係的に、メインの資産にぶら下がってるんなら問題しされない。
うちはだれも速度必要ないところをC++で書きたがらないし
0313デフォルトの名無しさん
2012/03/20(火) 17:16:21.33発売予定日なんて出さない企業なら、残業も殆ど無いぞ
0314デフォルトの名無しさん
2012/03/20(火) 17:19:05.84どっちの鎖が綺麗か自慢しあってりゃいい
0315デフォルトの名無しさん
2012/03/20(火) 17:24:05.13だからJavaドカタは>>277みたいなこと言ってJavaにしがみつく奴が多い
0316デフォルトの名無しさん
2012/03/20(火) 17:28:08.67言語は社内で教育してるし、そもそも前提知識が無しで
1月以内でぐらいで関数言語すら覚えられん様なヤツは社内にいない
どこの馬の骨か知らん派遣の寄せ集めじゃないからな
0317デフォルトの名無しさん
2012/03/20(火) 17:34:44.24必然的に派遣や請負には、教育しなくて済む案件ばかりが集まる
0318デフォルトの名無しさん
2012/03/20(火) 18:25:18.69派遣に頼らざるを得ないということ。
雇えばいいのにねw
0319デフォルトの名無しさん
2012/03/20(火) 18:31:47.620320デフォルトの名無しさん
2012/03/20(火) 18:35:56.590321デフォルトの名無しさん
2012/03/20(火) 18:36:21.16教育が必要な時点でダメだろw
俺の会社は、最初から使える人間しか雇っていない。
だから最初から即戦力で
バリバリアプリケーションを量産できる。
今月は10個ぐらいつくったな。
0322デフォルトの名無しさん
2012/03/20(火) 18:41:14.770323デフォルトの名無しさん
2012/03/20(火) 18:44:22.08入社した社員は、世の中に存在するライブラリすべてを知り尽くしてんのか?
ライブラリ覚えるのと新しい言語習得なんて大差ない
0324デフォルトの名無しさん
2012/03/20(火) 18:58:38.27社員ではなく派遣。
0325デフォルトの名無しさん
2012/03/20(火) 19:08:25.310326デフォルトの名無しさん
2012/03/20(火) 19:12:01.52どうせ後でメンテするのはお前だろう?
0327デフォルトの名無しさん
2012/03/20(火) 19:23:49.79契約社員やら派遣社員が正社員と同じ事やってるのになんていってるけど
実際正社員は管理業務やってて違う理由だし
0328デフォルトの名無しさん
2012/03/20(火) 19:26:20.23技術力がないからバカにされてる人種。
0329デフォルトの名無しさん
2012/03/20(火) 19:28:25.180330デフォルトの名無しさん
2012/03/20(火) 19:29:34.140331デフォルトの名無しさん
2012/03/20(火) 19:30:49.610332デフォルトの名無しさん
2012/03/20(火) 19:36:52.61ライン工も技術なんていらんけどな
0333デフォルトの名無しさん
2012/03/20(火) 19:38:15.69同じ物を何度も繰り返し作ってるのか
お前の会社は。
0334デフォルトの名無しさん
2012/03/20(火) 19:40:52.34プログラミング=詳細設計なんだよね。
生産に当たるのはコンパイラ。
0335デフォルトの名無しさん
2012/03/20(火) 19:45:57.06入力画面つくってDBに問い合わせて画面に出力するだけの単純労働なら
派遣にまかせられるよ
0336デフォルトの名無しさん
2012/03/20(火) 19:48:09.90効率が悪いことやってんな。
そんなの自動生成だろ。
0337デフォルトの名無しさん
2012/03/20(火) 19:48:13.980338デフォルトの名無しさん
2012/03/20(火) 19:51:18.35わざわざ機械化せずライン工使ってる理由考えろよ
0339デフォルトの名無しさん
2012/03/20(火) 19:56:38.53言語を選んでいます。
0340デフォルトの名無しさん
2012/03/20(火) 19:58:16.93結局自社で作っていても
言語を選ぶ権利はない。
0341デフォルトの名無しさん
2012/03/20(火) 19:59:51.92お前もライン工レベルだから?
0342デフォルトの名無しさん
2012/03/20(火) 19:59:58.77かわいそうな環境だな
0343デフォルトの名無しさん
2012/03/20(火) 20:00:43.22ドカタ乙
0344デフォルトの名無しさん
2012/03/20(火) 20:00:53.50ライン工でも出来るようなつまらない
仕事を自分らでやるか、
ライン工雇うかわりに、ライン工に言語を合わせるか。
0345デフォルトの名無しさん
2012/03/20(火) 20:01:29.16自社開発でJavaとか.Net系使うこと殆どないだろ
VBやDelphiなんかも使わん。
0346デフォルトの名無しさん
2012/03/20(火) 20:05:12.92せいぜい僕ちんこんな複雑なSQL組んだよ〜♪ってことぐらいしか
職人技を発揮する場所がないよ
0347デフォルトの名無しさん
2012/03/20(火) 20:05:43.35ライン工がする仕事は、ライン工だけがすればいいんであって
こちらが管理以上に踏み入る必要はない。
0348デフォルトの名無しさん
2012/03/20(火) 20:12:06.440349デフォルトの名無しさん
2012/03/20(火) 23:06:05.88その程度も知らないのはドシロウトかガキの可能性が非常に高い。
0350デフォルトの名無しさん
2012/03/20(火) 23:46:00.740351デフォルトの名無しさん
2012/03/21(水) 00:31:04.570352デフォルトの名無しさん
2012/03/21(水) 06:15:20.44どうでも良い仕事だから派遣に投げるわけで
0353デフォルトの名無しさん
2012/03/21(水) 10:27:53.53スレチな話題で盛りがってんなよ
0354デフォルトの名無しさん
2012/03/21(水) 17:09:58.770355デフォルトの名無しさん
2012/03/21(水) 17:34:41.270356デフォルトの名無しさん
2012/03/21(水) 20:04:56.050357デフォルトの名無しさん
2012/03/21(水) 20:35:23.870358デフォルトの名無しさん
2012/03/21(水) 23:46:29.250359デフォルトの名無しさん
2012/03/21(水) 23:53:30.69その内、両方こなせる言語が流行るんじゃねーか?
0360デフォルトの名無しさん
2012/03/22(木) 01:56:04.170361デフォルトの名無しさん
2012/03/22(木) 06:56:08.77オブジェクト指向言語は動的型付けに、
関数型言語は静的型付けに行き着く
本質的には水と油
0362デフォルトの名無しさん
2012/03/22(木) 10:51:20.87オブジェクト指向は (静的言語に) 動的な性質を
関数型は (動的言語に) 静的な性質を持ち込む
0363デフォルトの名無しさん
2012/03/22(木) 11:04:25.450364デフォルトの名無しさん
2012/03/22(木) 14:26:10.300365デフォルトの名無しさん
2012/03/22(木) 14:41:38.200366営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 02:33:47.55smalltalkのような純粋オブジェクト指向(?)となると関数型言語のようにニッチ。
0367営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 12:39:44.480368営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 21:43:38.54順次だけは違うんだよね。
どうせなら徹底すれば良かったと思うが、理由はあるのかな?
0369営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 00:30:49.910370営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 00:41:05.57使ってる人間にもあんまり好かれてなくね?
ttp://attractivechaos.github.com/HN-prog-lang-poll.png
0371営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 01:21:53.400372営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 01:31:51.04VBとCOBOLが酷いwww
0373営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 04:56:35.300374営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 11:22:39.921位: Python (マルチパラダイム)
2位: Clojure (関数型)
3位: C (手続き型)
4位: Haskell (関数型)
5位: Lua (マルチパラダイム)
6位: Lisp (関数型)
7位: Erlang (関数型)
8位: Ruby (オブジェクト指向)
9位: C# (オブジェクト指向)
10位: Scheme (関数型)
ハッカーには関数型言語の方が好まれてる
0375営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 11:44:10.62どこがマルチパラダイムとオブジェクト指向の境目なの?
0376営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 11:54:46.43最初からそれを前提に設計されていた言語かどうか、じゃね?
0377営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 13:36:21.81純粋なOOPであるSmalltalkは10位圏外...
0378営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 13:44:21.93日本人の派遣・請負がシランだけで今でも導入事例は多い
http://smalltalk.cincom.jp/main/successes/
しかも、Pharoとか新しい実行環境まで登場してる
ただ派遣・請負が使えないのと言語が普及率を一緒にすんな
0379営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 13:46:20.96それ自称Hacker向けだろ
教育現場とか開発現場とか実状とはまったく関係ない
0380営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 13:49:04.030381営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 13:51:37.04好き/嫌いの比率で負けてちゃ話にならんな
0382営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 14:28:58.16今ではRubyやPythonを使ってるってのは良く在る話
Smalltalkは構文がダサくて読み難いし
Squeak/Pharoは玩具過ぎるし
Visual Worksはまるで古いVBみたいだし
0383営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 14:35:27.71大概プログラマー辞めて他の事してる
0384営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 14:40:17.01Smalltalkはそもそも実行環境+それを操作する専用スクリプト
メインは実行環境で作って必要な所だけスクリプトで補完するから
読みづらくなることがまず無い
0385営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 14:46:12.19クラスの設定はクラスのウィンドウ。手続き(メソッド)の記述は手続きのウィンドウに記述するから。
C形式の先入観を持たないならはるかに合理的に見える。英語圏の人なら小学生でも使えるしね。
0386営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:00:07.070387営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:03:59.590388営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:06:51.490389営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:08:11.29VB ← MS
C# ← MS
Java ← Sun, IBM
javascript ← Google
Python ← Google
Objective-C ← NeXT, Apple
0390営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:10:06.36そうだな。だからCは相変わらず需要が減らないし、
関数型が持ち上げられるし、Smalltalkは移植環境が常に増えてるな。
0391営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:21:49.410392営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:32:29.610393営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:41:43.29手順道理に動けば十分
0394営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:44:35.47その肝心の手順がワケ分からん事になるけどな
0395営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:46:49.050396営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:52:25.95Smalltalk型開発方式 vs 言語型開発方式 ぐらいの差がある
0397営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:53:43.59あ、いま最もホットな処理系はScratchだからお子様向けで良いんだったね
0398営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 15:55:32.10Smalltalk型開発方式はハッキリと流行ってないね
どの言語でもその気になれば可能なのに
0399営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 16:07:08.830400営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 16:43:09.07VBやらDelphiやらC#やらどれも近づこうとして中途半端だしね
0401営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 16:48:10.61既に有るSmalltalkの実行環境日本語化すりゃ安く上がるのに
【文部科学省】プログラミン【おえかき】
http://hibari.2ch.net/test/read.cgi/tech/1282208963/
0402営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 16:57:28.01トイプログラムって何が悪の?
0403営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:18:51.090404営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:54:19.240405営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:55:11.300406営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:56:12.210407営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 18:01:35.43Pythoner=蛇人間=廃損菜 rubiest=類賭 C++er=恣意ブラジャー
0408営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 19:27:40.620409営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 22:21:34.130410営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 10:13:42.98OOP部分が邪魔なゴミ扱いされて関数型スタイルのライブラリが持て囃されてるわけで
やっぱりオブジェクト指向は要らない子だな
0411営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 10:43:38.22構文レベルでサポートするようなもんじゃねーよ
そんなミクロなレベルで使ってどうするって感じ
数にtimesメッセージを送る、とか馬鹿じゃネーのマジで
0412営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 10:46:26.560413営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 10:47:08.78メインでは言語なに使ってるの?
0414営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 11:33:34.51全体をモノリシックなシステムとして設計するのは不可能で
オブジェクトがメッセージをやりとりするというデザインにする必要がある
でも、モノリシックに書ける規模までそういうデザインにするのは
単にコードの見通しが悪くなり、処理速度も遅くなるだけ
0415営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 11:36:29.10トイプログラマーが「自分も大きいプログラムを作ってる」と錯覚できる
だからトイプログラマーには大人気
0416営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 11:41:27.04オブジェクト指向でフレームワークを作って
その中で呼ばれる関数で使うもの。
0417営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 12:22:35.99OOPのクラスが無くてもフレームワークくらい作れますよ?
0418営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 12:34:40.090419営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 12:38:43.88それ自体が関数型言語の機能と特徴に
反しているわけだがw
0420営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 12:51:31.57全然反していないよ?
良く知らない話題に無理して首突っ込まない方が良いんじゃない?
0421営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 12:57:23.560422営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 13:00:02.800423営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 13:12:29.26反論するならちゃんと説明しないと逆効果だよw
0424営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 13:24:09.06まずお前が「関数型言語の機能と特徴」について説明するのが先じゃね?
0425営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 14:02:27.63関数型言語の機能や特徴に反してると言われてもな……
お前のいう関数型言語って何よ?という話になるわな
0426営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 15:28:18.90クラスが無いと大規模プログラミング出来ないと
錯覚するらしいよ、Javaとかの
0427営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 22:52:00.51揚げ足だがFrameworkの定義が不明。
そもそも英語圏じゃFrameworkなんて要綱・格子案・骨組み
といった意味を表す形容詞でしかない。
何かを作り、誰かがFrameworkと形容してしまえば全て
FrameworkなんだからFrameworkを作れるという表現は意味が無い。
0428営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:10:49.74デスクトップフレームワーク、もしくは
ウェブフレームワークの話をしようよ。
MVCモデルを採用したもの有る?
0429営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:27:18.21あっちではこういうものもFrameworkと言ったりする。
0430営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:29:02.650431営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:31:24.87MVCなんてまともに実装してんのOOPLでも
Smalltalk派生環境ぐらいでしょ。
Web用のなんちゃってMVCはModelをControler同士でまともに共有できないし、
ModelのためのFrameworkも無い。
0432営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:37:52.69重要なのはそれに変わるものがあるのですか?ってことですよ。
0433営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:38:38.980434営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:46:33.18http://e-arrows.sakura.ne.jp/lisp/common-lisp/
0435営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:47:54.41Common Lispを関数型言語 VS OOPLの文脈で関数型としていいのか疑問。
0436営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:50:57.79それって要するに関数型言語 VS OOPLという図式自体が成り立たないことの証左じゃ…
0437営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:58:43.41Framework系
・kpax
・cl-weblocks
・cl-terrace(MVC型)
Framework補助
・lisp-on-lines(宣言的に関数らしく構築できる)
CMS/VMS系
・cl-eshop(商業ページ用)
・CLEWS(教育環境構築用)
・ALIW(情報共有ページ作成用)
・CL-WIKI
・CLiki(WebのAutoringができる)
Blog系
・blogsym
・cl-blog
・ext-blog(WordPressと互換性のあるやつ)
他
・cl-amazonproduct(Amazonの広告操作)
(Amazon系は、Amazonが昔Lispを使っていただけに種類が多いので省略)
0438営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:59:34.92関数型言語を使うか手続き型を使うかの
違いでしか無い。
0439営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:59:40.06関数型の上にOOが乗っかってるって図式は理解できないのか?
0440営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 00:08:30.98対立したり相反したり排他的な関係じゃないんだよ
むしろ相互に補完し合う関係だと思う、vsなんて成り立たない
0441営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 00:09:49.13例えば、C++のtemplateは無名関数の無い関数型(curry化は最近できるようになった)。
templateを評価した結果としてclassを返す。
OOと関数型が違う階(Rank)で存在するというのは割と身近にある。
0442営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 00:10:08.95関数型言語の機能を取り入れだした。
0443営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 00:11:59.52ただ関数型言語だけで作るのは
オブジェクト指向言語だけで作るよりも
はるかに面倒で大規模アプリは作りにくくなる。
0444営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 00:15:04.82ぶっちゃけ無名関数は関数型必須要素じゃない
だから無名関数持ってる程度で関数型を取り入れるのは違和感がある
関数型の特徴はパターンマッチ・再帰でしょ
0445営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 00:18:05.490446営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 00:24:47.12言語なんて有るのか?w
0447営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 01:00:33.71C系統の言語は、スタックオーバーするから100万回とか
メッセージループをひたすら回すといった完全な再帰は出来ない
それからパターンマッチってのは正規表現とかの文字列に対するパターンマッチじゃない
リストに対するパターンマッチ。これができる言語はC系ならC++のtemplateぐらい
身近な関数型だとXSLTでよくみる。ちなみにXSLTやC++のtemplateに副作用は存在しない
0448営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 01:39:54.87そこらへんが実践と研究の違いだろうね。
実践だと物量(既存ライブラリや人的リソース)で押しきれる問題を
ちまちまと解決しようとするのが研究
0449営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 01:45:08.29OOも関数型もライブラリ上で構築できるしな
0450営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 01:51:14.52国内じゃHTML至上主義があるのか、ほとんど見かけないけど
Web作るんだったらjspやphp使うよりXML+XSLTで構築した方が断然作りやすい
海外じゃ割とみる。実際のところただ使いこなせないだけだろ。
0451営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 01:57:46.80それ苦痛なだけだよw
デザイン重視や使いかっての良いUIを作るのはほぼ不可能
せいぜい、何かのリストを整形するのが関の山。
0452営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 01:58:25.84どこ? アップル? マイクロソフト?
0453営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 04:56:16.08提供されるソフトウェアからユーザの作成したコードを呼び出すものがフレームワーク
ユーザのコードから提供されるソフトウェアを呼び出す場合はライブラリ
0454営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 05:51:33.83そういうのを人的リソースで押し切ろうとするのがドカタなんだ
0455営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 06:24:09.420456営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 06:30:42.18んな定義主張してんの極一部だけだろ
0457営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 06:38:19.52アプリを作れるようにしたものがフレームワーク
0458営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 07:24:40.98どんな定義が一般的なの?
まさか>>457?
0459営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 07:31:23.85要綱・格子案・骨組みという形容詞
形容されれば全部Framework
0460営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 07:43:18.81http://en.wikipedia.org/wiki/Software_framework
0461営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:19:44.91Haskell, OCaml, Lisp : C/C++
F# : .Net
(関数型言語 : 利用できるコードベース)
こんな感じで、既存のコードベースを一切捨てずに
関数型言語を使い始める事ができるのが、
最近の関数型言語の流行に一躍買ってる気がする
上に書いた以外でも、Thriftとか使えば大抵の言語間ではRPCできるし
だからライブラリやフレームワークの不足は全然ハンデにならない
実際不足してないから
0462営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:20:21.93何でDevelopperなんだよ、jspで書かれたMSのサイトがあるか?aspで書かれたAppleのサイトがあるか?
引き合いに出すならBloombergとかだろ。
で、肝心のXSLで作成されたページだが 7,190,000 件ある。
http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=filetype%3Axsl
filetype:xslで引っかかるヤツはサーバーサイドXSL。大体FileMakerベースだ。
ただ、サーバーサイドXSLは、jspだろうがaspだろうが、どっちをベースにしても作れるんで
実際内部で使用してるのを含めたらこれ以上になる。Javaも.netもXSLでページを作るための
支援機能もってるからな。
>>451
デザインに凝ったページだって楽に作れる
http://www.harpercollins.co.nz/fmi/xsl/nz/book_details.xsl?isbn13=9780062083692
どーせベースのXMLをデータ構造じゃなく人間の見やすさで作って
リレーション組めず挫折したオチだろ。DBの仕組みとか再勉強しろよ
0463営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:29:45.09Task Parallelism in a High Performance Fortran Framework (1994)
Java Collection Framework.
.Net Framework.
Spring Framework.
Frameworkたる共通点を述べよ。と言っても
実際バズワード扱いされてるから無理だと思うが。
http://www.buzzwordhell.com/framework/
日本語版Wikipediaでも下の方に関連バズワードって皮肉られてるでしょ。
0464営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:58:19.310465営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:02:55.63どうせ数年後はWeb2.0と同じ運命だ
バズワードと言われたくないなら正確な定義を作れ
0466営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:05:23.21正体が不明だろうがなんだろうが、分かる範囲でなんとかするのが工学。
厳密な定義を巡って侃々諤々したいなら500年昔に行って神学でもやってろ。
0467営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:05:59.130468営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:08:33.57フレームワークに比べりゃ段違いにはっきりしてる
フレームワークはバズワード
HTMLはバズワードじゃない
完全に意味を使い分けできる
0469営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:09:11.75理由が書いてないから、そのレスは無効
0470営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:10:16.37不確定なものを人間が作り出す必要はないし
技術者がありがたるのはマイナスイオンの信奉者以上にマヌケ
0471営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:12:50.74理由 >>463 の様に定義が未定である = バズワード
規格書や厳密な定義がある != バズワード
バズワード = 定義が無いのに巷にあふれてる言葉
0472営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:15:01.58根拠の無い言葉が許されるのは、ガキと主婦と営業と政治家ぐらいだろうが。
0473営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:17:48.280474営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:22:33.81あきねぇよなぁ
0475営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:24:34.97このスレ全否定だなwww
0476営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:29:57.83> 日本語版Wikipediaでも下の方に関連バズワードって皮肉られてるでしょ。
えーと、どこに書いてあるか引用してみてくれる?
http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF
0477営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:32:42.66定義を作ってしまえば、バズワードではないということだな。
0478営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:33:10.85関数型言語はバズワードでは?
0479営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:33:54.920480営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:43:21.88http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF
このページは曖昧さ回避のためのページです。一つの言葉や名前が二つ以上の意味や物に用いられている場合の
水先案内のために、異なる用法を一覧にしてあります。お探しの用語に一番近い記事を選んで下さい。このページへ
リンクしているページを見つけたら、リンクを適切な項目に張り替えて下さい。
カテゴリ:バズワード曖昧さ回避
0481営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:44:30.33当たり前
0482営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:45:40.77プログラミング言語なんてどれだけあるよ
Standard MLは良いとして、オブジェクト指向言語で何かひとつでも在ったっけ?
0483営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:47:13.58Conception, evolution, and application of functional programming languages
で提唱されてる内容だろ。
0484営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:49:31.67このスレでフレームワークと呼んでるのはsoftware frameworkのことに決まってるだろ
そっちはバズワードにカテゴライズされてない
0485営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:58:52.27提唱は、定義ではない。
定義でないから、提唱してるんだよ。
0486営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 22:02:53.07どういう言語が正しいかなら。
規格ないし、規格が無ければ言語の処理系で動く言語だろ至極明解じゃん。
そもそもフレームワークと違ってこっちは線引きをはっきり
させないと仕事にならんしな。
0487営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 22:04:01.03だからそれを目指してる言語だろ。
それを無視してる言語は関数型とは呼ばん。
0488営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 22:07:09.51Wikipediaでフレームワーク全体がバズ扱いなんだから知らんがな。
大体Wikipedia自体宛にならんし、既に出てるページの様に英語圏じゃバズワード扱いするヤツも多い。
英語版Wikipediaの会話見てみろ、意見がまとまってねーじゃねぇか。
http://en.wikipedia.org/wiki/Talk:Software_framework
0489営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 22:16:03.20無理矢理規格化してるけど?
0490営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 22:19:44.13言い出したの>>416なんだよね
フレームワークがバズワードでも良いけど
「オブジェクト指向でフレームワークを作って
その中で呼ばれる関数で使うもの(キリッ」って言い出した
>>416がアホみたいで可哀想
0491営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 22:58:38.94それがどうした?規格化されたら、その規格が言語の定義だろ。
Wikipediaでの議論が規格や定義に影響するんか?
WikipediaでCのページ作ったら、Cの処理系作るのにWikipediaにあわせにゃならんのか?
0492営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:24:50.87https://www.google.com/#hl=en&q=%22functional+programming%22
About 13,600,000 results
"functional programming" buzzword
https://www.google.com/#hl=en&q=%22functional+programming%22+buzzword
About 66,100 results
比率:0.486%
framework
https://www.google.com/#hl=en&q=framework
About 150,000,000 results
framework buzzword
https://www.google.com/#hl=en&q=framework+buzzword
About 957,000 results
比率:0.638%
"object oriented programming"
https://www.google.com/#hl=en&q=%22object+oriented+programming%22
About 10,500,000 results
"object oriented programming" buzzword
https://www.google.com/#hl=en&q=%22object+oriented+programming%22+buzzword
About 500,000 results
比率:4.762%
0493営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:38:53.04結局堂々巡りするだけだろバカバカしい
0494営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:40:24.27wikipediaも大概あてにならんが、お前さんが>>463で引用したサイト
(超マイナーな上にReferencesすら無い)よりは100倍マシだぜ
0495営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:42:24.65オブジェクト指向はもっとバズワード
以上
0496営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:43:01.52実用上フレームワークという言葉をつかうとマーケティング以外で何に使えるんだ?
0497営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:51:03.57フレーム問題を超えられない人工無能レベルの
コミュ障でなければ意思疎通に使えるよ
0498営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:58:32.36ネイティブの人間ですら合意の取れてない言葉をよ
0499営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:00:57.050500営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:04:54.680501営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:05:27.82Task Parallelism in a High Performance Fortran Framework (1994)
Java Collection Framework.
.Net Framework.
この辺のFrameworkってどういう意味よ?
0502営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:07:39.42何語の話をしてるのか知らんが
0503営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:09:28.850504営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:14:16.25分割して書いてもframeworkは名詞だからね
大体>>501の"a High Performance Fortran Framework"を見て
「あれ?形容詞って言っちゃったけどおかしいな?」って思わないのかよ
0505504
2012/04/03(火) 00:16:46.410506営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:21:40.35形容してると形容詞の違い解りますか?
0507営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:24:52.46???
>>427
> そもそも英語圏じゃFrameworkなんて要綱・格子案・骨組み
> といった意味を表す形容詞でしかない。
>>459
> 要綱・格子案・骨組みという形容詞
0508営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:26:49.16そうか名詞なのか。で、名詞のFrameworkがついてると他とどう違うんだ。
0509営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:32:56.67品詞上どうかはどうでもいいんだつうの
0510営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:35:07.270511営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:35:52.38自分の発言には大雑把なんだな
0512営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:38:16.44一人カッコつけてFrameworkとか書いてた人が
実は全然英語分かりませんでした、とかマジうけるじゃん
0513営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:40:25.410514営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:42:48.57厳密な定義ねぇ〜
0515営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 00:43:18.88一番目はFortranを形容してて、二番目はCollectionを形容してて、
三番目は.Netを形容してるんだよ
「骨組みなFortran」ぷぷぷwww
0516営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 01:00:39.490517営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 01:09:24.24ともあれこのFrameworkって用語は他の2つとどうつながってるんだろうなぁ
0518営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 01:26:35.96> 形容してると形容詞の違い解りますか?
「違い分かりますか?(キリッ」じゃねーっつーのww
どっちでもオカシ過ぎるだろーがwww
0519営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 01:35:15.090520営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 01:40:16.860521営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 01:54:44.420522営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 01:59:23.460523営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 02:27:41.05OOPLより明解だよな
0524営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 03:13:03.67必須なのか?
0525営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 07:41:08.76LispやMLを仲間に入れようとするから「目指す」なんて物言いになってるが
純粋関数型言語ならまさにその通りだし、
LispやMLでも殆どのコードは純粋な関数として書いて副作用は注意深く一部に制限する
逆に聞くけど、オブジェクト指向言語の定義って何よ?
ちまたのオブジェクト指向言語と呼ばれるものを特徴づける共通の性質は?
0526営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 08:35:07.08オブジェクト指向:オブジェクトを実装するのに適した仕様を持っている言語
0527営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 08:39:10.80表現の幅を小さくしたもの
オブジェクト指向言語というのは
表現の幅を大きくしたもの
だから全体の設計(アーキテクチャ)は
表現能力が高いオブジェクト指向を使い、
その中の小さな一部分に関数型言語を使用するのが
一番適している。
0528営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 09:56:24.27>オブジェクト指向言語というのは
>表現の幅を大きくしたもの
はおかしい
0529営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 10:54:26.32ポリモフィズム:対象に応じてメッセージやメソッド呼び出しによる処理が選択される
インヘリタンス:あるオブジェクトの性質を受け継いだ別の性質のオブジェクトを作成することができる
アクセス制御・カプセル化:一部の性質を外部に対して隠ぺいすることができる
この辺を備えたのがOOPLじゃないかな、OOPLを名乗っててこれらを備えてない言語って何がある?
L(言語)を外して「OOP」にすると若干曖昧になるが
0530営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:37:58.75>逆に聞くけど、オブジェクト指向言語の定義って何よ?
CTMCP(Concepts, Techniques, and Models of Computer Programming)では、
抽象データ型を何度もコピーしないで済むように、継承・カプセル化・クラスの概念を加えたもの、となってる。
従来型のCなどでのstatefulプログラミングだけでは扱いにくい問題、
例えば都市交通シミュレーションで交差点を表現するとかに有効。
・他モジュールの処理の大半を引き継ぎたい → 継承で解決
・継承だけでは、グローバル変数だらけと大差無くなる → カプセル化で解決
・同一ロジックで、内部データだけ微妙に違うものを沢山生成したい → クラスで解決
0531営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:41:00.56>関数型:全ての操作を関数だけで行う(ラムダ計算)ことを目指した言語
ラムダ以外にも、パイ計算、シーケント計算など色々ある。
0532営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:41:29.450533営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:42:12.420534営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:53:54.250535営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:55:50.45ライブラリベースを含めれば増えるが言語に限ればこんな感じか
アクセス制限が全くない
Javascript( 出来なくもないが )
Perl
Python
Self
Go(カプセル化してしまえばあんまり関係ない?)
AppleScript
Groovy
Io
他プロトタイプベース系
メンバー関数もしくは、メッセージに制限が無い
Smalltalk
Objective-C
JADE
実装継承が無い
PL/SQL
VB6.0以前
Go
Emerald
構築子の継承が無い
Io
Javascript
0536営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:57:22.30メッセージを受け取ってメソッドを起動したり、メッセージ転送を行えるもの。
0537営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 15:58:27.15メッセージに制限が無いってどういうこと?
0538営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 16:00:24.02だね。
ただ究極的には関数だけで演算や処理する言語ってのはあってんじゃね。
0539営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 16:02:30.40メソッドを実装してなくてもメッセージは受けられる
ただし構文エラーにはならないが実行エラーになったりする
0540営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 16:05:26.42メッセージに対し呼び出せるメソッドを限定できずprivateメソッドが存在しないんだ
0541営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 16:12:38.16良く分からん、アホの子にも分かるように説明して
メッセージに対する実行時メソッド探索の話なんだよね?
0542営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 16:53:56.18privateなメンバー関数を作れない
0543営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 17:06:08.57それは>>535の「アクセス制限が全くない」言語は全部当てはまると思うけど、
その理解で良いの?
0544営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 17:10:11.48あってるよ。
0545営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 18:36:34.56JSにはあるし、Pythonは擬似的なアクセス制限があるじゃない
SelfやGo、Ioは知らんが、PerlやAppleScriptってOOPL名乗ってたっけ…?
あと「メンバ関数もしくはメッセージに制限が無い」「構築子の継承が無い」ってどゆこと?
JSは継承自体は存在するけど、構築子?
0546営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 18:46:14.900547営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 18:48:30.26JSのアクセス制限とは具体的に何?
function Type()
{
var member = 10;
this.method = function(){ return member; };
}
こんなんとか出きるには出きるけど。
0548営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 18:57:46.81それのことだよ
0549営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 19:04:20.32実際にこのやり方すると関数の継承出来なくなるし
パフォーマンスがっつり落ちるからメンバーさらすのが普通でしょ。
0550営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 19:23:18.82Haskellも全部備えてね?HaskellもOOPLってこと?
0551営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 19:31:17.96メッセージ送信を体現できりゃOOPLだろうが関数型だろうがどうでもいい
問題は何が出来るかであって、どういう概念をもってるかじゃないだろうし
そんなんやってたらいつまでも道具に使われるだけ
0552営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 20:12:17.29もしかしたらそう言えたとして何も問題はないと思うよ
0553営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 21:10:44.94ポリモーフィズムできればメッセージ送信なんて体現してなかろうがどうでもいい
そんなのに拘ってるのキモイSmalltalk使いだけ
0554営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 21:26:59.42今北んですがへー、面白そうじゃん、てんで流れも読まず、また今さらですが…
use 5.12.0;
use Data::Dump qw(dump);
my @a = 1..4;
sub fn {
my ($le, $pv, @ri) = @_;
defined $pv ? map {[$pv, @$_]} fn([], @$le, @ri) : ([])
,
@ri ? fn([@$le, $pv], @ri) : ()
}
say dump(fn [], @a);
こんなのすぐ出来たよ…てのは嘘で恥ずかしながらうまく行くまで半日ほど考えましたw
ガベージの生成を抑制する、よりperlらしい書き方もあるだろうけど、読みやすさ優先でそこは目をつぶりました。
0555営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 22:09:34.43最初っからMPI搭載してるようなもんだから通信が楽だねぇ
もっとメッセージサポートする言語が増えたらいいのにな
0556営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:30:25.47method(object, params) ってさ
書き方が違うだけでほぼ同じだよね。
で、違いがあるとすればさ、
object->method()は、objectのprivate変数にアクセスできるけど、
method(object)だと、アクセスできない。
と言うことは、オブジェクト指向というのは、
objectのprivate変数へのアクセス制限があることが重要だと思うんだけど。
0557営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:36:59.20・データドリブンな記法
と
・パッケージまたはクラススコープ
必ずしも一致でないのでは?
private(インスタンス)変数に相当する変数のスコープをどこにどうもつかでしょ
オブジェクト指向ってのはほんと誤解されてるし言葉が一人歩きして色々な意味に尽かされてるなあと思う
0558営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:38:06.390559営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:38:41.660560営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 00:02:51.27FILE *に関して言えば、中のデータ構造とテーブル管理の仕様を丁寧に設計すれば
データドリブンなオブジェクト指向風との差は、呼び出し方の記法および
内部データの管理のためのコードを多少省けるくらいでは?
0561営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 00:56:51.81method(object, params)
lispとか、Pythonとかちょうどそんな感じでよびだす
0562営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 00:59:27.93アクセス制限の無いOOPLなら8以上はある
アクセス制限は、ミスを減らすためのものであってOOの要件じゃない
情報隠蔽機能がなくてもユーザーがカプセル化に
気を遣ってれば再利用性は下がらないからね
0563554
2012/04/04(水) 01:08:44.06この問題は、オブジェクト指向+手続型言語的にclassもうけてifだのforだのflagインスタンス変数だの使って
チマチマグチャグチャ書いたらめんどくさいだろうなってんで再帰を使ってみたけれど、
問題を細分化して再帰するならば、だれか高階関数使って書いてみてよ
できれば匿名関数の自己末尾再帰で(ハート
いやま時間があればオレもやってみるけれどもさ…
0564営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 02:11:57.16そうなんだよね。
オブジェクト指向というのは結局のところ
”指向”という言葉の通りで、考え方。
どちらかというと全体の設計思想のことなんだよね。
どういうふうにコンポーネントを分けて
どのように組み合わせるか。
それに対して関数型言語はコードの書き方。
小さい範囲(関数)をこのように書けば
テストが容易になりますよとか。
0565営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 06:00:30.09データ構造とアルゴリズムは分離したほうが良いんだが
オブジェクト指向って基本的に逆だよね
0566営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 06:52:06.61> 小さい範囲(関数)をこのように書けば
> テストが容易になりますよとか。
関数型言語においては「関数 = 小さい範囲」という図式は成り立たない
0567営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 08:41:19.30オブジェクト指向だと、クラス(関数の集まり)とか
さらにそのクラス間の関係、差分プログラミングといった話は
普通に出てくるんだけど、関数型言語の場合、
再帰とか副作用とかラムダとか、一つの処理で
完結する話しか出てこないよね。
0568営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 08:50:24.770569554
2012/04/04(水) 19:12:39.36細かい粒度でclassを使う必用が低減され、objectを主にモジュラレィティーの向上
など必要に応じて使えば良くなるメリットは大きいと思うよ。
これはCLOSとかECMAとか関数型でカツオブジェクト指向も備えた言語の場合だけれど。
0570554
2012/04/04(水) 19:26:11.67使わない手はない。
しかし幅広い処理にも有効かは、オレにはまだわからない。
オブジェクト指向は…型推論の弱い型付き言語でclassベース、継承で共有する(mixinやtreitでない)タイプ
のものは有効性に個人的に疑問を持つことがあるし、使い方によって害もあると感じている。
入門テキストも含めその害まで含め誤解や拡大解釈が幅広く流布している、それが現状だと感じている。
0571営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 19:54:11.55False = function( Then ){ return function( Else ){ return Else; }; };
bool = True;
println( bool( "true" )( "false" ) );
bool = False;
println( bool( "true" )( "false" ) );
おもしれぇなぁ。あと、IsZeroを関数だけで実装できりゃ最高なんだけど。
0572営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 23:54:03.01OOPLではオブジェクト(またはクラス)だけで
多態や静的スコープや名前空間や差分プログラミングなどの
多くの機能を提供するけど、関数型言語では
それぞれが直交する言語機能として提供される(ことが多い)
逆に言えばその程度の違いなので、OOPでちゃんと設計できる人なら
関数型言語でも設計レベルでは困らないと思う
0573営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 23:56:26.350574営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 23:59:18.97なぜ?
0575営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 00:24:33.80誰しも”物”という単位で物事を考えている。
メソッドとプロパティは本質的には同じものなんだけど、
人間の思考では、動詞と形容詞は違うものとして考える。
だから優れてる云々ではなく、より人間の思考的なオブジェクト指向を
基本的な設計として使い、関数型言語の便利なものを、ちょこちょこ
取り入れるという方法が受け入れられやすい。
おまけで、受け入れられやすいと人が多く集まり、
それが力となって、便利なライブラリなどが量産される。
結果的に生産性も上がることになる。
0576営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 02:19:01.38C系列手続き型の系譜かどうかで決まってて
オブジェクト指向は無関係に見えるが
0577営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 06:54:48.06Go は拒絶するが PHP は受け入れる、とかそんな感じ。
0578営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 07:58:40.26言語がヘボすぎて洗練されたAPIをデザインできず
同じ目的の使い勝手の悪いライブラリが沢山あるという切ない状況になってる
ある程度は言語も重要
0579営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 12:53:23.26goスレも無くなってるようだけど、どうなったん?
GOOGLEさんちのひろみくんは余り普及してないの?
0580営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 14:31:26.230581営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 16:51:42.980582営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 20:13:25.21ISO化すらされてないJavaの開発開始は1990年
Goが流行るかどうかは知らんがまだ見限る時期でもないだろうに
0583営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 20:48:32.78「goスレが無い→流行ってないの?」というパターンは
2chで世界が判った気になってる奴に多いけどな。
0584営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:18:01.04> 現在までのところ、多数のユーザを獲得できるか否かは
> C系列手続き型の系譜かどうかで決まってて
違うと思うけど。VBとかCOBOLの例があるし。
多数のユーザーを獲得するのは特定の分野で適していたからだよ。
今は別の選択肢ができたかもしれないが、普及した当時ね。
たとえば
C言語だと、速度が早い(昔は特に重要)、組み込みに適している。
VB、Windowsで簡単なGUIを作るのがすごく楽だった。
C#、〃 (時代の違い)
C++、C言語+オブジェクト指向。
COBOL、金融関係で強い
JavaScript、ブラウザでそのまま動く
PHP、レンタルサーバーでもほぼデフォルトで組み込まれている
Java、専有サーバーに限定されるが、高速なウェブアプリを作る場合
Objective-C、iPhone、iPadアプリを作るのに必須だから。当然最近増えてきた
> オブジェクト指向は無関係に見えるが
一見オブジェクト指向かどうかは無関係に見えるけど
比較的最近普及した言語は全部オブジェクト指向だよ。
オブジェクト指向じゃないのは時代的な理由のため。(普及した当時は技術もスペックも足りなかった)
0585営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:18:53.87言語名間違ってるぞ。
ただしくは、
Perlは
言語がヘボすぎて洗練されたAPIをデザインできず
同じ目的の使い勝手の悪いライブラリが沢山あるという切ない状況になってる
ある程度は言語も重要
Javaで同じ目的のライブラリがたくさんあるなんて
聞いたこと無いな。
0586営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:32:41.76CとCOBOL以外単にベンダーのゴリ押しだろ
COBOLについては、その当時COBOLぐらいしか
金融に使える言語はなかった。
その後他の言語に移行しようとしても資産が多すぎて
移行出来なかったのが実状。
0587営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:34:16.10ユーザー数1位はbatか、VBAだろ
次いでjavascript、C。どっかにグラフが有ったぞ。
0588営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:38:18.53普及した理由が違うだけで、
C系列手続き型の系譜かどうかは関係ない
ってのは、同じですね?
0589営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 23:42:58.98Javaも2003年ぐらいは死んだ言語と言われてたが、Sunがサーバーサイドを強調して
ゴリ押しした結果復活した。IBMの力技Eclipseの影響も大きい。
JavascriptはGoogleのAjaxのおかげ。
.Net系はVisual Studioの.Net移行と.Netライブラリ群のおかげ。
Rubyなんか一見仕事で見かけるから流行ってるように見えるが、
世界的にはPythonに負けて流行ってない。
PythonはGoogleやRedHatがバックに居る。
0590営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 23:47:09.41そして全てオブジェクト指向である。
0591営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 00:47:12.49純粋に近いもの程流行らない
0592営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 06:27:13.920593営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 07:53:34.71・手続き型であること(ドカタが理解できる)
・企業のゴリ押し(ドカタが仕事にありつける)
0594営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 08:09:17.61ぜんぜん違うだろw
・オブジェクト指向であること(手続き型で流行ったのはオブジェクト指向自体が普及してない時代の話)
・特定の分野で優れた言語であること
言い方を変えてもこのことは否定出来ないぞw
0595営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 08:17:08.690596営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 08:20:25.29ドカタってそうやって自分を慰めてるんだwww
おもしろーい
0597営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 10:14:35.88どっちでもいいんじゃない?
流行ってるかどうかを気にしてるうちは三流だし。
0598営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 10:25:20.69関数型もオブジェクト指向も直感的と言うには引き算されすぎててさ。
0599営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 11:27:45.30>人間の思考に近いのがオブジェクト指向なんだよね。
アホか
0600営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 11:47:20.920601営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 11:57:39.240602営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 12:46:38.070603営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 13:09:27.16もの以外は関数型言語の方が直感的だ
そして、プログラミングの大半はもの以外を対象とする事が多い
0604営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 14:24:39.16その狭い環境の中で流行り廃りを気にするのは何でだろう?
0605営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 14:34:45.750606営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 14:35:36.380607営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 15:13:44.60昔から流行ってて、今も使われてるんだから。
0608営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 15:21:17.20その言語が流行れば言語環境が整備されると期待できる
だから流行り廃りを気にする
そういう人にC使っとけってのはピントがずれてると思うの
0609営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 15:27:40.660610営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 15:36:27.49それは子供の考え方だよ。厨って言われるよ。
自分の選択に起因した不利益の対処は、
選択を変えるか、趣向と受け止めるか、
しか認められてないよ。
周りを気にするぐらいなら、乗り換えろってのが世間の目。
0611営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:02:08.91→ファンと呼ばれる。積極的で普及の為の手間を惜しまない。
流行ってる奴を教えてくれ、流行ってないのをやるのは嫌だ。
→依存型。消極的で、他のものの成果だけ欲しいが、自分が貢献する気はない。
0612営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:21:21.760613営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 17:49:46.05依存型も今風で良いと思うんよ。
常に流行をチェックして、最善の選択に勤める、つーんだから。
ただ、>>608の発言は、その努力すら怠ってるっつーか。
しいて言えば、ゲハみたいな。
0614営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 18:09:13.020615営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 20:25:43.670616営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:45:22.69オブジェクト指向支援機構はついてても、
ライブラリ使用するのに使ってるだけで
全然オブジェクト指向な開発してないだろ。
所詮クラスライブラリ使ってるだけの手続き。
本当にOO使ってるというなら、OO強制する言語でも普及するだろ。
0617営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:45:49.02オブジェクト指向なら素直に表現できるよね?
材料から道具まで。
0618営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:46:52.94そりゃ、すでにライブラリが存在してるんだから使うだろ?
0619営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:53:07.90オーバーライドして使用してんの大概スレッドか
リスナークラスぐらいだろ。
OOだっつうなら、イテレーターやら、バッファーやら
オーバーライドですむものはオーバーライドするだろ。
でも大概、既にあるオブジェクトに一旦詰め込んでgetterの
戻り値で受けとってんのばっか。
0620営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:53:40.85うん。お前の所はな。
0621営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:56:34.84そもそも論で言えば、
ライブラリとかフレームワークは
自分が作ってもいいところだよ。
すでに誰かが作ったものってのは
もしかしたら社内で作っていたかもしれないもの。
で、それがオブジェクト指向で作られてるだろう?
社内でやるか、社外でやるかの違いであって
オブジェクト指向の開発であることに違いはないよ。
0622営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:59:06.47違う。インターフェースの再利用ができてないってこと。
社内でオレオレインターフェース定義してもそれじゃ、
クラスライブラリの恩恵は手続きと同じだけしか受けられない。
0623営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 21:59:57.19自分で作れないから流行り廃りを気にする
0624営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:01:10.01お前の会社特有の話なんかしらんよ。
単にお前の所とお前の知ってる狭い範囲が技術力低いだけだろ。
0625営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:01:39.92じゃあお前はどの言語を作ってるんだい?(苦笑)
0626営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:04:40.75インターフェースを再利用する意味を理解してないだろ。
0627営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:06:33.50俺はお前の使ってる言語分かるよ。ドカタの定番Javaだろ?
0628営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:11:50.30なんでそういうレスが来るのかわからんのだが?
俺はインターフェースの話なんかしていなくて、
>>622の会社がおかしいだけって言ってるだけなんだが?
0629営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:12:18.31質問の答になっていない。
0630営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:15:11.07そのレス自体にレスしたつもりじゃなかった。
お前自身に言いたかっただけ。すまんな食い違って。
0631営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:21:40.190632営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:24:42.510633営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:27:45.02その上でオブジェクト指向言語の優位性を説いてるなら良いんだが
そうじゃないのが見え見えなんだよな、
流行り廃りを気にしてるヤツは(>>608とか)
自分が新しい言語を覚えない言い訳に
流行り廃りを持ち出してるだけ
0634営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:28:12.06それでどこがずれてるかの指摘は?
0635営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:29:39.81いや、関数型は使える前提で
オブジェクト指向のほうがより自然だよねって言ってる。
だって、ケーキを作るという問題があったとして
材料から道具までオブジェクト指向なら素直に表現できるよね?
0636営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:33:35.69え?お前関数型使えんの?嘘でしょ?
0637営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:34:09.530638営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:34:37.26自分より上であることを認めたくない。
だから、思い込みで言いがかりをつけて
満足感を得るという戦略に出る。
少しは相手ができることを前提に
話をしろよ。
0640営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:36:26.18よし。じゃあ木に対するfilterを書いてみて
好きな関数型言語を使って良いよ
0641営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:37:19.68>すでに誰かが作ったものってのは
>もしかしたら社内で作っていたかもしれないもの。
>で、それがオブジェクト指向で作られてるだろう?
>社内でやるか、社外でやるかの違いであって
>オブジェクト指向の開発であることに違いはないよ。
社外か社内かなんて初めからどうでもいい話だったのに
こんなレスがきたからズレてると感じた。
既に有るものをどう再利用するかが問題なんだが
その事が解らなかったように見えた。
0642営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:37:37.11すでにオブジェクトなんだが・・・。
0643営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:38:35.25非常に興味が有る。オブジェクト指向でケーキを作ってくれ。
0644営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:39:47.47じゃあ、代わりにケーキの作り方を
関数型言語とオブジェクト指向の両方で
書いてみてくれ。
0645営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:40:40.45材料(オブジェクト)があって
その中に作業(関数)ができるだろうね。
あとは頑張って。
0646営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:49:10.00プログラム自体はケーキ製造機を制御してケーキを作るってことか?
それとも論理ケーキをメモリ空間上に生成するのか?
例えば舐める操作をすると、甘いが返ってくるとか。
0647営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:53:21.28パラメータは材料とかケーキのプロパティは色とか形とか。
0648営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:53:53.53それで答えたつもり?
馬鹿馬鹿しいケーキの例え話と違って
>>640は実際にプログラム書ける話だよ?
ま、そうやって誤摩化す時点でお前が
関数型言語を使えないのは良く分かったよ
オブジェクト指向言語が使えるかも怪しいけどw
0649営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:55:25.71ホール製造機とか
クリームコーディング機とか
イチゴ載せ機を内包しているとか?
0650営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:55:36.140651営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:57:17.10内蔵してるってのはOOとしてあんまりよくないだろ。
構造的に集約しておくべきだ。
0652営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:57:24.86そんなのはどうでもいい。
フィルタと言ってるんだから
一般的にはデコレータパターンだろう。
0653営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:58:24.63お前がオブジェクト指向を知らんってことはよく分かったw
内蔵じゃなくて内包だ。
0654営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:00:42.27これだけの情報だと
擬似関数型言語で書いたとして
filter(木)
ぐらいしか書き用がないよな。
0655営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:01:24.23> (func '1+ '(1 2 (10 11) 3))
(2 3 (11 12) 4)
みたいなやつかと思った
0656営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:02:59.00用語なんてどうでもいいじゃん。実際どうなってんのかがもんだいでしょ。
オブジェクトを深く内蔵しすぎるとオブジェクトレベルでの交換が効かない。
オブジェクトの集約してるオブジェクトを差し替えることでより
振る舞いを変えられる方がオブジェクトらしい。
0657営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:03:51.35関数・・・実装コード
やっぱりこういう感じだよな。
関数型言語における設計の話を聞きたいのに、
実装コードの話しかでてこない。なんで?
0658営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:03:56.71擬似じゃなく本物でかけよ。
0659営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:04:18.00本当に関数型言語使ってたらピンと来るはず
0660営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:05:54.77それは木に対するmapだね
0661営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:06:02.50演算子や制御構文を使わず関数だけでプログラムを書くのが関数言語で
それ以上のものじゃないから。ときたい数式とかあるなら、そのまま関数に落とせばいいし、
処理したい事象があるならなんとか関数に落とせばいい。
設計もクソもない。
0662営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:07:07.23やっぱり関数型言語は設計がないんだ。
0663営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:07:08.50効果じゃなく濾しとる処理か。
0664営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:07:11.95え?関数型言語を使えもしないのに
使えると嘯いてるアホをいぶり出してるだけでしょ?
0665営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:08:24.45だよねえ
もし木に対するfilterがどういうものか知ってたら呼びだし例書いてみて
0666営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:08:36.30ケーキとか木とか作ってどうすんだよ。
俺らは目的の機能が欲しいだけなのに。
何でケーキ作ることが目的みたくなってるの?
0667営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:09:58.65やっぱり関数型言語は考え方がミクロなんだよね。
処理したい事象とか、そんな小さなものじゃなくて
作り上げるシステム全体のコンポーネントを
どう組み合わせるかというマクロな視点は
関数型にはないのかい?
0668営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:11:52.35ほしいのは機能じゃなくて
機能とデータの集合体とその変化を
どうシステム化するかじゃないのか?
ま、単純な関数がほしいってだけのこともあるだろうけどさ。
0669営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:13:40.00そりゃ思想というより関数型な道具だもの。
感覚としちゃCOBOLよりCのコードの方が見やすいわ〜ぐらいの話だし。
0670営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:14:41.72戦略と戦術みたいなもんかね?
オブジェクト指向という大きな戦略があって
その中で使う戦術に関数型言語を使う。みたいな。
0671営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:15:13.06ネタ?何言ってるのかわかんねーよ。
最終的なアウトプットとして欲しいのは、要求仕様を満たした機能、に決まってるだろ。
0672営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:16:46.53戦術よりまだ小さい
アサルトライフルつかうかサブマシンガン
つかうか程度の道具を選ぶ話
0673営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:17:02.33アウトプットとして欲しいのは要求仕様を満たした ”システム” だろw
機能が顧客の要求になることはまず無いよ。
0674営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:20:00.20システムってなんよ。
機能っつうと y = f( x ) でのfに当たるものだけど。
0675営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:22:25.63もう勘弁してくれ。
システムは、目的機能を実現するための手段だろーが。
なんでシステムが先に出てくるんだよ。
目的の機能を実現するために、さて、どういったシステムを組もうか、ってのが普通の思考回路だろ。
これだからOO脳は困る。
0676営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:22:48.33システムっていうのはブログとかだよ。
ブログというシステムには一覧表示機能があって
投稿機能があってカレンダー機能があって。
その個々のコンポーネントをどう組み合わせて
作り上げるかという設計の話。
関数型言語だと、そこらへん全部終わっていることが
前提で、その後の関数をどう実装するかの話になってるでしょ。
だから設計どうすんの?って聞いてる。
0677営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:23:25.83機能っつうと y = f( x ) でのfに当たるものだけど。
0678営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:24:22.700679営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:24:55.40システムの定義を聞いてるんだけど。
自己循環系の体系でどうのとかそういう話。
0680営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:26:25.34まあ仕方ないか。
学生さんにとって、課題とは○○をする関数を作れという
問題であって、それが必要になった理由までは考えなくていいからね。
0681営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:27:14.42どれはシステムでどれはシステムじゃないか
はっきりいえるヤツは多くない
0682営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:28:08.68「システム開発 事例」
で調べてたくさん出てくるものだよ
ググって出てきたものの中から
君が気に入ったシステム開発の事例持っておいで。
0683営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:29:11.57感覚でしか使えん言葉だったら明確な
意味を持つ言葉である機能の方がましだろ
0684営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:29:28.33ご冗談を。生きるために飯食う、ぐらい簡単な道理だぞ。
0685営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:29:47.81あれはなんとなく付けてるだけでシステムの定義無視してるだろ
0686営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:30:25.64システム設計と機能設計
どちらを先にやるかわかる?
0687営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:31:28.63たくさん出てくるものが無視してる?
今話してるのは、たくさん出てくる一般的な意味の
システムの話をしてるんだが?
0688営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:33:06.41普通は「〜をする」システムを作って欲しいと言われるはず。
だったら、その「〜をする」ってのが最終目的だし、顧客が欲しい最終的な機能だ。
0689営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:35:02.57お前の文章、
システムを作って欲しいといっているだけで
機能を作ってくれとは言ってないないじゃんw
0690営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:36:35.12そしてテレビ番組を録画するシステムには
時間になったら起動する機能とか
記憶デバイスを操作する機能とかが含まれている。
システム > 機能
0691営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:37:16.22残念だけど、「顧客の要求仕様」が、一番大きな括りでの機能設計そのものなんだよ。
0692営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:37:28.12具体的な意味が無いんだからしかたない
システム屋って看板にかいたり〜システムって売れば営業として顧客に
アピールできるから言ってるだけ
国外でSystemというと、Operation Systemといった体系に使い
WindowsやLinuxの様に具体的な実装をLinux Systemとか言ったりしない
国内だと実装その物を〜Systemと言って売ったりするが
学問的な意味からすると狂ってる
0693営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:38:21.31うん。でもまあそれは大雑把すぎて、
システムの下にサブシステムがきてサブのサブシステムがきて
最終的に機能(関数)になるだろうけどね。
0694営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:39:16.53だからその「テレビ番組を録画するシステム」は、
テレビ番組を録画する機能を満たした一実装ってことだろ。
頭わるいな。
0695営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:39:44.94いろんな機能が含まれます。
あってるよね?
0696営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:41:17.67重要なのは、そのテレビ番組を録画するシステムを
表現するのに、オブジェクト指向なら
時間になったら(略)というコンポーネントなり
オブジェクトなりといった設計をするわけだよ。
0697営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:42:59.39こんな感じ
> filter (< 2) [0, [1, 2], [3]]
[0, [1]]
0698営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:43:27.84話がミクロすぎだw
0699営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:44:26.73関数型=数学(Haskell)
おれはSimulaのほうがいい
0700営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:44:27.64決まった時間に録画予約する人間を雇い
安定的に管理すればこれで録画システムが完成する。
0701営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:46:03.84>>638>>664
0702営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:46:19.71それをどう組み合わせるかの話には一向にならないんだよね。
オブジェクト指向では、機能の組み合わせ型の話が主になる。
この点を戦略と戦術と表現したのさ。
0703営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:50:06.690704営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:53:22.83自分で、「Operating」 System って言ってるとおり、
コンピュータのオペレーション機能のためのシステム。
>>696
自分で言ってる通り、
目的の機能を持ったコンポーネントなりシステムなりを開発したり使ったりするわけでしょ。
機能 > システム ってことにならないか?
0705営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:55:40.10お前さんが関数型言語は使えないってことは良く分かったよ
0706営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:56:07.84反論できなくなったかw
0707営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:56:57.370708営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:58:48.95俺は、彼はむしろOOPを上手く使えてないように思うんだが。OOの毒にやられているというか。
0709営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:01:17.55量子力学とか誰もイメージしなくなったよね。
計算物理では状態の時間発展としてイメージ可能にする。
時間発展ルールにしか焦点を当てない関数型より
状態とその発展を表現できるオブジェクト指向のほうが好き。
0710営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:02:58.65えー、反論も糞も
自称「関数型言語が使えるOOP使い」君は
関数型言語の基本中の基本filterすら
満足に書けないって事実が露呈しただけだよ
君がこれに反論する方法はただ一つ、コードを書いてみせるだけ
0711営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:06:42.211/5以下の長さでfilterは書けるから
そんなにタイピングの負担は無いはずなんだけどな
0712営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:07:05.44それは、手続き型ってだけで、OOPとはまったく関係ないんだよ。
関数型を扱き下ろすには十分なのかもしれないが、
OOPを擁護したことにはならない。だって、それはC言語でも十分だろ。
0713営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:09:27.88関数型は状態を持つぞ引数として
見た目が関数の引数なだけだ
( new-state '( name (+ age 1) ) )
0714営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:10:17.96それにLazy Kじゃあるまいし、普通の関数型言語は
状態を表すデータ型くらい定義できるしな
>>709は妄想で語ってるから批判の焦点がズレてる
0715営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:13:40.48ほんとやんなっちゃうよね
filterすら書けないのに関数型言語について語るなんてどうかしてるよまったく
ELISP> (defun my-filter (fun tree)
(if (null tree) nil
(if (listp (car tree))
(cons (my-filter fun (car tree))
(my-filter fun (cdr tree)))
(if (fun (car tree)) (cdr tree)
(my-filter (cdr tree))))))
my-filter
ELISP> (my-filter (lambda f (n) (> n 1)) '(1 (10 20) 2))
*** Eval error *** Symbol's function definition is void: fun
さて寝るか
0716営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:15:07.06それが圧倒的に不自然なんだよ
0717営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:15:46.73都合のいいときだけ非純粋型を持ってくるねw
0718営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:17:14.73Haskellでも出来るぞ
0719営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:18:02.09できると扱いやすいは別ですが
0720営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:19:13.440721営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:20:32.490722営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:21:28.23純粋・非純粋は全く関係が無い
むしろ>>717が>>714を読んで非純粋型を連想した理由を聞きたい
0723営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:23:34.72関数型が人間の思考回路に近いから。数学をみても分かるとおりね。
ただ、コンピュータ的には副作用ありきな手続き型の方がネイティブだから、
コンピュータ言語となれば関数型よりも手続き型の方が自然に感じたりもする。
でも、無味乾燥な手続き型言語よりも、人間の思考形態により近い関数型言語によりロマンを感じる。
車で言えば、オートマ=関数型、マニュアル=手続き型 って感じ。
0724営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:29:45.98状態を表す
0725営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:32:40.41メッシュ状の状態の差分方程式じゃどっちが分りやすいか
0726営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:39:10.62関数だけでプログラムを書けるから。
言語上如何にも機械的なループ構文も分岐構文も存在しない。
存在する制御はただ関数を呼び出すだけ。
コンピューターの実装から極度に抽象化され
言語上はコンピューターを意識する必要は無い。
0727営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:40:43.22破壊的代入が無くても状態は表せるよな
0728営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:40:57.88抽象化するメリットがない。
ループを再帰にする必然性がない。
直観性を喪失させているだけ。
0729営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:42:24.97モナドで?
なんのためにわざわざ?
0730営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:45:00.15これを表すのに iterate f x0 は直感的
0731営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:46:00.09反復も分岐も数学からみれば直感的じゃない
数学でしょっちゅう分岐だの反復だの見るか?
Σや∫といった関数で表現できる。
数式上制御構文はノイズ。
0732営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:46:48.57何度も出てるが引数で
0733営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:48:44.900734営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:50:12.68数学に馴染みの無いヤツは好きな言語使えばええ
0735営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:50:29.360736営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:52:08.940737営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:53:15.94今の利用法は可能性のごく一部でしか無い。
0738営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:55:13.960739営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 00:56:27.700741営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 01:00:03.65鶴と亀がメッセージングして
足の数を求めるの想像して笑た
0742554
2012/04/07(土) 01:01:52.93システムレベルの構成要素はもっと大きいグレインとなるのではないかな。
しかもシステムをコンポーネントに細分化って、問題を解く関数を細分化…にアナロジーだし。
両方使いこなした上でこそ身をもってわかる善し悪しの意見を述べるのがよい。
わからないこと知らないことは知らないと言う方が潔い。
0743554
2012/04/07(土) 01:06:51.15これは実感だぜ。知恵使うからカナ?
0744営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 01:07:40.080745営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 01:24:56.62( defun example ( a b ) ( subample a b ( mod a b ) ) )
単なるGCMの計算でも見通しがいい
0746営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 01:33:41.960747営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 01:36:03.70コンポーネントっつーか、OO用語で言うところのクラスだな。
データ構造の切れ目と制御や関数の切れ目が必ず一致する訳ではないからなぁ。
そういった場合、OOPではデータ構造を優先して制御をぶった切って、
接着は多態で誤魔化すのが主流だけど、
あまり小さい粒度でそれやられると、ねぇ。
大きい粒度でOOするんなら、特別、言語のサポートが必要とも感じんし、
結局C言語withC++テンプレートで良いような。
C言語はノイマン型コンピュータのネイティブとも言えるような言語だし、
人間が機械に合わせる必要性があるとはいえ、不思議と変なストレスはナイノヨネー。
0748営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 01:37:06.960749554
2012/04/07(土) 02:07:53.62小さいグレインをクラス切ってgetter,setterもうけて継承で絡めるオブジェクト指向ってしばしば害あると思う、同意。
ソフトウェアは封雑になると単純な入れ子の木構造では表現できないグラフのような構成になることが多いから
下位の小グレインは多少共有できる余地があっても細かく関連付けず、具体的なコードを展開して書いた方が
依存を減らせてよろしいことも多いと思う。
逆に、ある程度大きいグレインでの中上位機能のモジュラリティーのためのオブジェクト思考は有益な場合も多いと思う。
Cについては癖のなさ、コンピュータの上で直接稼働するプログラムとしての表現の素直さ、
あとポピュラーで目が慣れているってこともあるんじゃないかな。
0750営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 06:42:21.52テキストファイル読み込んで、行番号つけて表示せよ
0751営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 08:07:05.01import Control.Monad
numbering = unlines . map (\(x,y) -> show x ++ y) . zip [1..] . lines
main = mapM_ (putStr . numbering <=< readFile) =<< getArgs
0752営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 09:14:33.95BEGIN {
for(i = 1; i < ARGC; i++) {
for(n = 1; (getline x < ARGV[i]) > 0; n++) {
print n, x
}
}
}
0753営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 09:30:56.02Pythonのenumerateとはi,eの順番が逆だということを学習した
0754営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 09:32:23.950755営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:11:06.93短いし十分読みやすい
0756営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:17:28.770757営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:19:05.92そして同じくらい読みやすいなら短いほうが良い
0758営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:26:36.66haskellはむしろdo表記の方が読みやすいんじゃ。。。
0759営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:30:58.31Haskellでもforの方が読みやすい?
import System
import Control.Monad
main = do
argf <- mapM readFile =<< getArgs
forM_ argf $ \f -> do
forM_ (zip [1..] $ lines f) $ \(i,x) -> do
putStrLn $ show i ++ x
0760営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:51:28.930761営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:55:37.780762営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:02:39.57人間の考え方、物の認識という自然な行動に
近いんだよね。
0763営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:04:50.580764営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:06:33.180765営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:26:31.59なんか間違ってた?
君の机の周りにあるものの名前を言ってみてよ。
0766営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:31:58.02いま比較されてるのは手続き型と関数型だろ
0767営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:36:20.22得意な言語で>>750書いてみて。
0768営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:36:53.29class ReadArgs {
public static void main(String args[]) {
try {
for (String filename : args) {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"));
for (int i = 1; ; i++) {
String x = br.readLine();
if (x == null) break;
System.out.println(String.format("%d %s", i, x));
}
}
} catch (Exception e) {
}
}
}
0769営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:39:53.47、
今はファイルから読み込んだが、
そこに「ファイル読み込みオブジェクト」すなわち
FileInputStreamを使っているから
それを入れ替えることでファイル以外からも読み込めるだろう。
ということをごく自然に表現できている所。
0770768!=765
2012/04/07(土) 11:40:42.76これぞオブジェクト指向って感じのやつ
0771営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:47:23.67OOの機能を有効活用してねーじゃん。
これじゃ「関数型vs手続き型」だよ。
OOらしく、多態やオーバーロード使って、
スマートに問題を解決して欲しいね。
0772営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:53:11.85でも実際はファイル以外から読み込むシチュエーションは訪れないんですよね、分かります。
0773営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:53:37.83え? 問題がそうなってるだけだからでしょ。
問題が”関数を作りましょう”なら関数になるのは当たり前。
問題が小さすぎるの。
オブジェクト指向というのは、関数はできてることが前提といってもよく、
その関数の集まりをどう組み合わせていくかという
もっと上流のプロセスなんだから。
オブジェクト指向を活かせる問題であれば、そんな○○する関数ではなく、
例えばGUIシステムの設計みたいな問題にしてくれ。
丸い形のボタン、四角い形のボタン、押したら光るボタン、
ボタンという機能はそのまままで基本のボタンに何かを追加できる設計の場合
どのようにするか。みたいな。
0774営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:02:31.26誰か相手してやれ。
0775営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:04:08.97ボタンをレンダリングする関数にshow()関数の配列を渡すんだけど、
show()関数は、別の関数、show(color)とか、show(shape)とか
そういう引数がある関数をカリー化して引数のないshow()関数を作る。
という設計をするのです。俺関数型のプロだからこの回答に自身あるよ。
0776営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:04:32.68誰も反論ないから、これ以上いうことがない。
0777営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:05:29.25ヤバイのがお前には見えるんだったら、
お前が相手してやれよw
0778営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:07:20.66それデコレータパターン?
0779営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:10:26.09正解。
オブジェクト指向の例といえば
有名なものの一つが、デザインパターンだけど、
そのデザインパターンでも紹介されている
OOの機能を有効活用した有名な例の一つ
オブジェクト指向を有効活用するってことはこういうことなんだから
こういう粒度の話になるのは当然なんだ。
○○する処理書けとか、まったくわかってないとしか思えないね。
0780営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:15:59.18「アセンブラで言うANDニーモニックを関数型言語で実装してみて」
↓
and文一個書く
↓
「それ、関数型言語の機能有効活用してないじゃん」
みたいに感じるよね。
問題が悪いとしか。
0781営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:24:00.75かなり探さなきゃ、OOPと関数型で共通の御題は見つからないって時点で
元々競合してないんだからさー。
関数型言語もOO言語も、最終的には適当な手続き型言語の一部として吸収されて、
それで終わり。
0782554
2012/04/07(土) 12:24:19.15一行野郎で十分ちゃ十分なんだろうけど…
perl -nle 'print "$.:$_"' 入力ファイル
これだと複数ファイル指定した場合に、行番号が通しになっちまうから減点かw
0783営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:28:37.07うん。問題が小さすぎるからそうなるんだよね。
もう少し、ウェブアプリとかデスクトップアプリとかさ
普通に仕事で作ってる規模レベルで話すればいいのに。
0784営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:30:04.95関数型言語は手続き型言語の一部として吸収されるかもしれないが、
オブジェクト指向言語は競合してないなら吸収されないだろw
0785営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:31:55.69上で出ていた戦術と戦略の話ですね?
オブジェクト指向が戦略で、
戦術として、関数型言語や手続き型言語がある。
大きな開発なら戦略が重要だけど
小さな開発なら戦術だけでもどうにかなる。
0786営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:39:28.64(1)行番号を付ける、
(2)改行記号の代わりにカンマで改行する、
(3)何もしない、
の三種類を「コマンドライン引数のファイル名を読み込んで、変換して表示する」
というメインのロジックを変更しないで
切り替えられるようにしようぜ
DecoratorパターンやStrategyパターンを使う余地あるだろ
0787営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:40:36.52ほとんどの手続き型言語はOOの機能を持つようになってきたし、
競合しない分、関数型よりも吸収が早いようですが。
>>785
また分けの分からん。戦略とか戦術とか。俺定義で用語つかって、したり顔されても困る。
なんとなく分かってもらえませんかねぇ?は止めてくれ。
そんな狂った思考は、こっちは分かりたくもないだから。
何でお前のデバッグをしなきゃいけないんだってはなしになる。
0788営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:43:35.63最初からそういう問題にしておかないとダメだよね。
でも三種類だけじゃなくて、それ以外の変更にも
耐えられるようにして、ソースコードを修正すること無く
切り替えられるようにしないいけないな。
コード書き換えて変更できます!じゃ意味ないからw
途端に関数型言語じゃ作りにくくなったw
0789営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:44:03.61話がくどい
0790営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:44:34.35それ、オブジェクト指向言語に成長しただけだよ。
0791営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:46:16.57関数型言語で関数レベルの処理を書いて
オブジェクト指向部分で設計を行う。
0792営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:47:10.74convPrint f = mapM_ (putStr . f <=< readFile) =<< getArgs
0793営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:49:45.08行番号とカンマはどこいったんだい?
0794営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:53:07.21なんていうか>>786と>>788でこのスレがどういう所か理解できたわ
0795554
2012/04/07(土) 12:53:22.50チャチャっと書いてもいいけれど、引数optionで出力フォーマット切り替えるのにパターン出すほどのものかという稀ガス。
そういうちょっとしたところで話が大仰になる点が「いま流行りの」OOにおいてオレがいまいち好きになれない一面かな
0796営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:54:19.590797営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:54:32.06convPrint f = mapM_ (putStr . f <=< readFile) =<< getArgs
numbering = unlines . map (\(x,y) -> show x ++ y) . zip [1..] . lines
splitBy _ [] = []
splitBy p xs = a : (splitBy p $ drop 1 b) where (a, b) = break p xs
numberingPrint = convPrint numbering
splitCommaPrint = convPrint $ concat . splitBy (== ',')
normalPrint = id
0798554
2012/04/07(土) 12:56:15.56言語ごとの字句・構文解析フレームワーク競争に陥りガチだしな…
0799797
2012/04/07(土) 12:57:37.72normalPrint = convPrint id
0800797
2012/04/07(土) 13:01:51.54訂正
splitCommaPrint = convPrint $ unlines . splitBy (== ',')
0801営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:02:53.72少なくともこの規模じゃないと
オブジェクト指向の機能を有効活用することはできない。
さっきのは問題が小さいってことの意味がよくわかったでしょ?
0802営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:07:41.780803営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:10:16.960804営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:10:21.45彼らは結合度を下げろ下げろって言うけど、二項以上の演算は相手あっての話だからなぁ。
結合度を下げたりカプセル化を進めることと、演算して処理をすることが、方法論として相反してるっていうか。
機能の切れ目とデータ構造の切れ目と処理の切れ目が丁度一致して、
クラスとしてスッポリ抜き取れるかといわれるとねぇ。上手く抜き取れた場合は単に運が良かったとしか。
C++のfriend指定とか見る度にお腹痛い。
0805営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:11:29.69どうぞどうぞ
0806営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:15:24.66でもまあ、全部friendよりはマシでしょw
0807営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:17:20.85> 彼らは結合度を下げろ下げろって言うけど、二項以上の演算は相手あっての話だからなぁ。
なんかまだまだ理解してないって感じだね。
確かに二項以上の演算は相手が必要だが、その相手をインターフェースにすることによって
相手を自由に変えられるってことが、結合度を下げるってことなんだよ。
0808営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:18:00.00個人的にはソースファイル単位のカプセル化で十分だと思う。
0809営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:22:01.03ソースごとに機能を分けて作っておいて
friend的なことをしたくなったら、
同じソースファイルに入れるようにするってこと?
0810営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:23:47.25後半嫁
0811営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:28:09.08で?
0812営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:29:04.870813554
2012/04/07(土) 13:29:51.86> 少なくともこの規模じゃないと
> オブジェクト指向の機能を有効活用することはできない。
んじゃまぁ、あしからず完全に手続き型にてちょっと書いてみたけれど…
use Getopt::Std;
my %opt = ();
getopts "nj", \%opt; # -n:行番号表示, -j:','で行を連結
for my $file (@ARGV) {
open FILE, $file or die "Couldn't read open file `$file': $!\n";
#for (<FILE>) { # forは最適化されて一気に読み込まれ、最終的な行番号が印字されてしまう
while ($_ = <FILE>) {
chomp;
print "$.: " if $opt{n};
print;
print $opt{j} ? ',' : "\n";
}
close FILE;
}
このお題で、オブジェクト指向の機能を有効活用って…
申し訳ないが、おれには謎だよ。
0814営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:30:50.76おい、拡張性がないぞw
0815営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:32:08.36プラグインみたいな機構を持って
他の誰かが勝手に、オプションを追加できるような
仕組みを搭載しないと、条件を満たさないぞ。
0816554
2012/04/07(土) 13:34:27.090817営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:35:49.19完全に仕様見落とし。
行番号やカンマってのはあくまで一例であって
それ以外にも対応できるような仕組みを作れというのが本題。
0818554
2012/04/07(土) 13:36:22.10> の三種類を「コマンドライン引数のファイル名を読み込んで、変換して表示する」
> というメインのロジックを変更しないで
> 切り替えられるようにしようぜ
この要件か?optionで切り替えるっていみと違ったのか?
0819営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:38:00.68行を反転するかもしれないし、
行に対してどんな加工をするかは決まっていない。
0820営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:38:51.55>>788が続き
0821営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:40:16.73行に対する処理を関数にまとめてlinesにmapするとかでいいんじゃないか
0822営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:42:50.59どうやって、「現在行」を保持するつもり?
0823営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:43:12.50○どうやって「現在行番号」を保持するつもり?
0824営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:44:28.55オブジェクトにまとめてlinesにmapするとかでいいんじゃないか
オブジェクトの処理が呼び出されるごとに、
プライベート変数を+1していけば良い。
0825554
2012/04/07(土) 14:08:48.27sub odai2(&) {
my $filter = shift;
for my $file (@ARGV) {
open FILE, $file or die "Couldn't read open file `$file': $!\n";
map {print $_} map $filter <FILE>;
close FILE;
}
}
use Getopt::Std;
my %opt = ();
getopts "nj", \%opt; # -n:行番号表示, -j:','で行を連結
if ($opt{n}) {
odai2 {"$.:$_"};
} elsif ($opt{j}) {
odai2 {chomp; ","};
} else {
odai2 {"$_"}
}
こんなイメージになると思うが、なにか間違えている。動いたら又upする(汗
0826営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 14:17:11.610827営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 14:23:16.730828554
2012/04/07(土) 14:23:44.25sub odai2(&) {
my $filter = shift;
for my $file (@ARGV) {
open FILE, $file or die "Couldn't read open file `$file': $!\n";
while (my $line = <FILE>) {
print $filter->($line);
}
close FILE;
}
}
use Getopt::Std;
my %opt = ();
getopts "nj", \%opt; # -n:行番号表示, -j:','で行を連結
if ($opt{n}) {
odai2 sub {"$.:$_[0]"};
} elsif ($opt{j}) {
odai2 sub {chomp $_[0]; "$_[0],"};
} else {
odai2 sub {$_[0]}
}
mapのコードblockを切り替えるかっちょいい方法はチョット勉強しとく
0829554
2012/04/07(土) 14:33:23.75if ($opt{n}) {
odai2 {"$.:$_[0]"};
} elsif ($opt{j}) {
odai2 {chomp $_[0]; "$_[0],"};
} else {
odai2 {$_[0]}
}
これでいいんだった。でも_[0]の記述が今一だな…まぁいいや。
0830営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 14:45:09.36読みづらい
0831営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 14:47:22.77OOらしくないし最高に汚いな
やってることが手続きとまるでかわらん
0832554
2012/04/07(土) 14:51:23.75オレみたいに恥をさらしてみれば?w
どうせ名無しなんだし
0833営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 14:59:08.94物理単位でカプセル化しても意味ないだろ
情報隠蔽じゃあるまいし
インターフェース(境界)で区切ってカプセル化しなきゃ
0834営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:01:39.41物理単位にオブジェクト分ければそれなりに意味あるとかいわれ始める。
0835営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:09:21.23どうやって物理単位にオブジェクト分けるんだ?
0836営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:14:37.59無理だよSmalltalkにはファイルなんて存在しないし
実行引数も存在しない
入出力は存在するが全てオブジェクト
0837営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:16:25.35COOLとか読んで来い
0838営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:18:38.390839営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:20:13.80クラス分割の事でも言いたいんじゃねぇの?
0840営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:22:36.17かなり大きな粒度で問題ないし、WinのCOMなんかみても分かるとおり、言語の支援も言うほど必要か?
単なる型スイッチ相当のものに良くそこまで期待できるよなぁ。
0841営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:26:11.64粒度が小さいところでは手続きが有効だけど大きいところではOOが有効だから。
では関数型はどこにあたるのだろう。
ヒントはすでにあってC/C++は関数と呼ばれるものがある。そのスケール。
実際D言語でpureキーワードあるし。
0842営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:29:46.48演算子、ループ文使った時点で関数型じゃなくなる。
0843営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:30:50.61やり杉って話です。
0844営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:32:04.80とトイプログラムしか書かないHaskellerが申しております。
0845営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:35:08.47実際、main関数の頭で、オブジェクトの初期化コード走らすんでしょ。パーツを作ってるわけよ。
だから一番大きな外枠は手続き型言語。
C++はOOを過信しすぎてこの辺の師弟関係を誤って、
「グローバルオブジェクトの初期化順が不定」っていう痛い仕様になってしまった。
0846営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:37:21.93C++はCとの互換性を維持してるからグローバルオブジェクトという概念を許容してる。
整理したのがJava。
0847営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:39:33.51boost::functionは手続き型の領域だろ
関数型ならテンプレートだ
template<class left, class right> struct Cell;
template<class cell> struct Car;
template<class car, class cdr> struct Car< Cell< car, cdr > >
{
typedef car Result;
};
template<class cell> struct Cdr;
template<class car, class cdr> struct Cdr< Cell< car, cdr > >
{
typedef cdr Result;
};
0848営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:40:36.410849営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:41:10.73Smalltalkを始め大概のOOPLはグローバルオブジェクトを持ってる。
もってない方が異端。
0850営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:41:29.320851営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:42:50.63で?
0852営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:44:13.00大抵クラスはグローバルオブジェクト
グローバルオブジェクトであるクラスを操作できないってのは
整理したというより劣化してるだけ
0853営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:45:03.16は?意味不明。
0854営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:45:12.17>歴史的に一番外側だけって証明されてるじゃん。
大嘘
0855営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:45:49.79>>801が書いてくれるのを待ってるんだけど
0856営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:47:35.30Java
0857営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:48:04.10お前にゃ理解できんだろうなw
0858営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:48:29.24理解してるのお前だけだなw
0859営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:49:15.93batファイル、VBA、javascript,C以下の普及率言語がどうかしたか
0860営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:49:52.18反論にはなって無いね
0861営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:52:02.54Javaってレス自体が正銘になってねぇよ
0862営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:53:17.77Javaしらないの?static mainから起動してるでしょ。
0863営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:53:32.86そう思っても、実際には手続きでオブジェクトを操作しているのが実際なのよ。
典型的なOOPの構文が、オブジェクトありきな、あんな調子だから、勘違いしてしまうのは無理も無いが。
OOPといってもそれが手続き型言語なら、「手続き」がとても強い個性で、
逆にOOなんて、単なる型スイッチ用の構文だろ。人によっちゃ構文砂糖。
ノイマン型コンピュータが手続き的に動いているから、
どうしても手続きに関する性質は、時の流れのごとく強烈になる。
0864営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:56:00.02おまえが勘違いし続けてるだけだと思うけどw
0865営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:00:54.81といってるように見えるw
0866営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:03:26.57>>768の時点で殆ど手続き型と言われても仕方ないよね
0867営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:04:30.63var type = Type;
var object = new type();
Ruby:
type = Type
object = type.new
Python:
type = Type
object = type()
Squeak:
|type. object|
type := Type.
object := type new.
0868営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:04:44.27おまえ手続き型の拡大解釈してるよw
0869営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:05:54.91そんな言語C#、Java、VB.netしかねぇじゃねぇか
0870営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:06:57.97じゃイテレーターなり使えよ
0871営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:08:06.89http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
しかないって便利な言葉だなw
0872営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:08:14.53動的型ならほとんどグローバルオブジェクトだなw
0873営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:08:59.41おまえが何を憎んでるかはわかった気がするけどそれお前の中のOOPだからw
0874営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:09:40.780875営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:11:26.60batファイルやVBAがはいっとらん時点であてにならんわ
0876営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:13:05.63そこをプログラミング言語と呼んでる層は相手にして無いんだろうなw
0877営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:17:31.36Source Forge の上位アクティブプロジェクト集計した方がまだ信憑せいがあるわw
0878営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:20:09.32スタックだろ。
つかスタック変数で束縛すりゃグローバル変数で無くなるのか
int *value = &::value;
こう書いてば、グローバル変数使ってませーんって言い張れる理由だ
便利だなぁ
0879554
2012/04/07(土) 16:21:45.66package FilterCat;
sub new {bless $_[0], __PACKAGE__};
sub file_read_filter_print {
my ($this, $file) = @_;
open FILE, $file or die "Couldn't read open file `$file': $!\n";
while (my $line = <FILE>) { print $this->($line); }
close FILE;
}
1;
package main;
use Getopt::Std;
my %opt = ();
getopts "nj", \%opt; # -n:行番号表示, -j:','で行を連結
my $filter;
if ($opt{n}) {
$filter = sub {"$.:$_[0]"}
} elsif ($opt{j}) {
$filter = sub {chomp $_[0]; "$_[0],"}
} else {
$filter = sub {$_[0]}
}
my $obj = FilterCat::new($filter);
for my $file (@ARGV) {
$obj->file_read_filter_print($file);
}
0880営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:23:23.97それで反論した気になっているのが間違っている。
・初期化の順番は自前に生成順番書くようにすれば問題が無くなる
・変数にスコープがあればあらゆるところからのアクセスはできなくなる
主張の論拠としては十分
その例では::valueがそれを満たしてない。
0881554
2012/04/07(土) 16:23:34.730882営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:24:33.80実際Windowsでプログラム作ってるヤツの8割ぐらいは使ってるはずだよな
0883営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:25:18.180884営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:27:30.270885営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:28:40.66え?まじで?
おれもおまえがなんでわからないかわからんw
0886営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:30:03.38ダブルクリックして起動すれば自動でコンパイルしてくれる
バッチファイルアプリケーション作ってるやつはいっぱいいるだろうなw
0887営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:31:20.84で?
0888554
2012/04/07(土) 16:43:33.25package FilterCatSkt;
sub new { bless {}, shift }
1;
package main;
use Getopt::Std;
my %opt = ();
getopts "nj", \%opt; # -n:行番号表示, -j:','で行を連結
my $filter;
if ($opt{n}) {
$filter = sub {"$.:$_[0]"} }
elsif ($opt{j}) {
$filter = sub {chomp $_[0]; "$_[0],"} }
else {
$filter = sub {$_[0]} }
my $obj = new FilterCatSkt;
$obj->{func} = sub {
my ($file, $filter) = @_;
open FILE, $file or die "Couldn't read open file `$file': $!\n";
while (my $line = <FILE>) { print $filter->($line); }
close FILE;
};
for my $file (@ARGV) {
$obj->{func}->($file, $filter);
}
0889営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:47:30.25おれもお前がグローバルオブジェクトとグローバル変数の初期化を混同させてて
何が言いたいのかわからんわ
0890営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:50:33.11なろほど。
グローバル変数の初期化が>>845ででてるから
グローバルオブジェクトの問題と絡めてる。
これはいい?
0891営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:51:11.63ヒープに乗っててもグローバルオブジェクトはグローバルオブジェクトじゃないか?
全スコープからアクセスできりゃグローバルオブジェクトだろ
0892営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:54:31.76バッチだけでアプリケーション作ってる奴が8割ぐらいいるだろうなって話
0893営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 16:57:10.19そんなアメリカンジョークわからんわw
でも1割いないと思うぞそれw
0894営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 17:00:37.81このスレは口ばっかりでコード書けないヤカラばかりだから
無駄ですよ?
実際に動くコードはPerlしか出てこないという...
関数型もオブジェクト指向もどっちも終わってる
0895554
2012/04/07(土) 17:05:17.230896554
2012/04/07(土) 17:38:48.98package FilterCatBase;
sub new {
my ($class, $file) = @_;
bless \$file, $class
}
sub _filter {$_[1]} # デフォのfilter:スルーして流す
sub file_print {
my $this = shift;
open FILE, $$this or die "Couldn't read open file `$$this': $!\n";
while (my $line = <FILE>) {
print $this->_filter($line);
}
close FILE;
}
1;
package FilterCatLineNum;
use base qw(FilterCatBase);
sub _filter { "$.:$_[1]" } # ←ここを好きなfilterに書き換えた派生クラスを増設すればおk
1;
package main;
for my $file (@ARGV) {
my $obj = new FilterCatLineNum($file);
$obj->file_print;
}
↓ハゲばっか!
0897営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 17:56:25.15まず本体で行をグルグル回すでしょ?
で、フィルタ側で処理をするでしょ?
いわば、awkと一緒なわけだけど、
awkにあるよね。BEGINとEND
これと同じ物をさ、オブジェクト指向なら
class Filter {
begin(){...}
filter(){...}
end() {...}
}
って感じで作って、適用させるじゃない?
関数型言語だったら、beginとfilterとendを別々に分離しなきゃいけないの?
0898営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:03:37.41import System.Console.GetOpt
import Control.Monad
convPrint f = mapM_ (putStr . f <=< readFile)
numbering = unlines . map (\(x,y) -> show x ++ y) . zip [1..] . lines
splitBy _ [] = []
splitBy p xs = a : (splitBy p $ drop 1 b) where (a, b) = break p xs
splitByComma = unlines . splitBy (== ',') . concat . lines
data Mode = Numbering | SplitByComma
options = [ Option ['n'] ["numbering"] (NoArg Numbering) ""
, Option ['s'] ["splitByComma"] (NoArg SplitByComma) ""]
main = do
args <- getArgs
case getOpt RequireOrder options args of
(opts, fs, []) -> print (foldl (\_ x -> Just x) Nothing opts) fs
(_, _, errs) -> error $ concat errs ++ usageInfo header options
where
print (Just Numbering) = convPrint numbering
print (Just SplitByComma) = convPrint splitByComma
print Nothing = convPrint id
header = "Usage: program [OPTION...]"
0899営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:05:57.51> まず本体で行をグルグル回すでしょ?
本体で行をグルグル回さなかった
0900営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:12:42.99トンチやってるんじゃないよ。
0901営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:13:52.39その1
template<class Functor> class LineConvertor
{
Functor format;
public:
LineConvertor( Functor format ):
format( format ){}
void opeartor( std::string &file_name ) const
{
std::ifstream in( file_name, std::io::in );
for( std::string line; std::getline( in, line ) ; ) format( std::getline( line ) );
}
};
class SimpleFormat
{
int count;
std::ostream *out;
public:
SimpleFormat( std::ostream *out ):
count( 0 ),
out( out ){}
void operator( const std::string &line )
{
*out << ( ++count ) << ":" << line << std::endl;
}
};
0902営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:14:45.70int main( int argc, const char *argv )
{
SimpleFormat ormat( &std::cin );
--argc;
++argv;
std::for_each( argv, argv + argc, LineConvertor<SimpleFormat&>( format ) );
return 0;
}
0903営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:17:07.13「複数のメソッドをひとかたまりにして扱える」
という性質は便利だよね。
0904営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:19:27.47ボトルネックで便利じゃねぇよ。
便利だと思うならC++にマルチディスパッチ導入しようとか
Pythonにマルチディスパッチライブラリ導入とかそんな話でてこないだろ
0905営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:19:49.59・オブジェクトという概念を明示する
という性質が気に入ってる。
次にOOPLでは大抵ついてくるカプセル化かな。
0906営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:21:10.16事実だからしょうがない
0907営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:21:16.73そこを自分の手柄にしようといろんな解釈持ち出してる連中がうざい。
0908営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:22:36.95ボトルネック?
なにが?
マルチディスパッチは全く関係ない話だけど?
0909営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:24:06.31じゃ「複数のメソッドをひとかたまりにして扱える」ってどういう意味だよ
0910営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:25:11.20普通本体側でループを回すだろ。
入力がネットワークからだったりしたらどうするんだ?
すべてのフィルタにネットワーク処理でもさせるのか?
それとも全部データ読み終わらないと
フィルタ処理開始できないのか?
0911営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:26:13.40awkの例みたいに、
フィルタオブジェクトが
begin、filter、endメソッドを持っているということ。
一つの”物”に複数の関数やデータをまとめられること。
0912営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:26:59.66遅延ストリームも知らんのか
0913営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:27:51.800914営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:28:33.97じゃマルチディスパッチで成立しなくなるのは有ってるじゃねぇか。
Message( object1, object2, object3 ); // awkとは全然違う
0915営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:29:04.10ない場合はどうするんだ?
0916914
2012/04/07(土) 18:29:24.190917営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:29:26.03関数型言語にはあるよ
0918営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:29:41.56だから関係ない話だろ。
頭悪いな。
0919営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:30:43.710920営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:31:04.02ない場合の話をしてる。
ストリーム以外だとどうなる
0921営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:31:51.75持つ必要なくね?
'( 事前処理 間の処理 終了処理 ) ってリストに関数入れりゃいいだけだし
0922営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:32:02.600923営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:32:33.09ま、パフォーマンスを求めないのが関数型言語使う上での
トレードオフなんだけどさ。
0924営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:33:02.30これは関数型堅固の本質を突いてると思う
だからおれは関数型よりOOのほうが包括的であるべきだと思う
0925営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:33:18.93だから、複数のオブジェクトがメソッドを共有してて、
どこかのオブジェクトにまとまってる理由じゃないだろ
何が言いたいんだよ
0926営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:34:51.72> '( 事前処理 間の処理 終了処理 ) ってリストに関数入れりゃいいだけだし
それだと「間の処理」で計測したデータを
「終了処理」で表示しようと思ったら無理だよね。
0928営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:37:40.87何だ。ストリームじゃ都合が悪くなったから御題を変えるのか?
だったら>>897と違う御題を出せば?
0929営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:37:47.02これらが密接な関係にあるのなら、
これらは一つのオブジェクトにするのが自然なんだよね。
0930営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:38:12.46だからラムダ計算が優れている
こんな話もう嫌
0931営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:39:26.37上位の概念で関数間の関連を表すものなんだろう。
0932営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:40:39.13なぜ?リストをこう展開して実行すりゃできるじゃん。
(終了処理 (間の処理反復実行 間の処理関数 (事前処理 値 ) ) )
0933営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:40:43.15根拠が人間的じゃないよねw
人間がよくある認識方法に近づける
高級言語ってのはそういうものなわけで。
0934営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:42:45.59(filter_object)
それ、これで全て片付くのとは大違いだよね。
0935営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:43:47.162行目の推論は証明できていない
0936営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:45:04.04(defun filter-object () '( 事前処理 間の処理 終了処理 ) )
(filter-object) って事か?
0937554
2012/04/07(土) 18:47:39.63無理矢理ファンクショナルなお遊びとして行の読み込みの繰り返しに再帰を使ってもいいけど、この言語は末尾再帰の最適化がないから止めとく。
sub cat_with_filter {
my ($file, $filter) = @_;
open FILE, $file or die "Couldn't read open file `$file': $!\n";
while (my $line = <FILE>) {
print $filter->($line);
}
close FILE;
}
my $filter = sub {$_[0]}; # default
my $filt_number = sub {"$.:$_[0]"};
my $filt_comma = sub {chomp $_[0]; "$_[0],"};
use Getopt::Long;
GetOptions('number' => sub {$filter = $filt_number}, # 行番号表示
'comma' => sub {$filter = $filt_comma }); # ','で行を連結
for my $file (@ARGV) {
cat_with_filter($file, $filter);
}
再帰が生きない例題だから、ファンクショナルには向かないお題だし。
かといってこう言うところにオブジェクト指向とか持ち出す物ではないと思うよ。
0938営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:49:29.98ミクロのスケールでいちいちOOしてるメリットが無い。
C++はあれだけ難解にしても実用レベルでそれなりに使われてるか。
おれはやはり大規模ではOOPLがあったほうが分かりやすいからだと思う。
で関数型はやっぱり中間スケールだと思うんだよね。
メリットは副作用の整頓での並列処理への応用や局所的な品質の保証だと思う。
0939営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:49:44.68beginとfilterとendのメソッドを順番に呼び出す処理は
どこに書いてあるんだ?
そこを誤摩化してるだけだろ
0940営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:49:47.63run(任意のフィルタ型)という関数があって、
その関数の処理が、以下のような場合の時
run(filter) {
ぐるぐる回す {
filter.process();
}
}
↓ 最初と最後にコールバックできるようになった。
filter.begin();
ぐるぐる回す {
filter.process();
}
filter.end();
↓ 一定毎にprogressが呼ばれるようになった。
filter.begin();
ぐるぐる回す {
filter.process();
if((i % 100)==0) {filter.progress();}
}
filter.end();
↓ 途中でキャンセルできるようになった。
略
でも、フィルタ自体のコードは修正する必要がないし、この処理を呼び出し方も修正する必要がない。
こういうのは大規模で複数の人が参加する開発では無くてはならない機能なんだ。
0941営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:52:42.65?awkの例にも書いてないんだから書く必要ないだろ
だったらawkの例の方も全部書けよ。
0942営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:54:46.89>run(任意のフィルタ型)という関数があって
はじめて聞いた
0943営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:55:14.01お前の使ってる言語は自動的に実行されるのか?
0944営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:56:52.13なんか勘違いしてないか?
任意のフィルタ型っていうのは、
フィルタインタフェースを実装している型という意味だよ。
0945営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:57:46.78話をちゃかすなよ。
元々、awkと同じ処理をOOPLで書いたらこうなるにレスしたんだろ。
awkで書いたらどうなるかなんて聞いちゃいない
0946営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:58:11.35begin -> filter -> end って処理を作りたくなったらどうすんの?
0947554
2012/04/07(土) 19:02:50.99my $filter = sub {$_[0]}; # default
my $filt_number = sub {"$.:$_[0]"};
my $filt_comma = sub {chomp $_[0]; "$_[0],"};
use Getopt::Long;
GetOptions('number' => sub {$filter = $filt_number}, # 行番号表示
'comma' => sub {$filter = $filt_comma}); # ','で行を連結
for my $file (@ARGV) {
open FILE, $file or die "Couldn't read open file `$file': $!\n";
while (my $line = <FILE>) {
print $filter->($line);
}
close FILE;
}
0948営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:02:52.30揚げ足だがセンスない。
filter.begin():
filter.process();
filter.end();
こう並べるんなら、filterオブジェクト自体にプログレス持たせればいいだろ。
stream.run( ProgressFilter.new( MainFilter.new() ) )
0949営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:02:53.30例えば>>786はどうなったんだよ
この御題でbeginとendとfilterを一纏めにできるメリットを
「ちゃんと動くコードで」示せばすむ話だろ
0950営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:04:47.76コード出さずにレスすると煽り合いで終止する。
おまえらそろそろ2ちゃんを理解しろ。
0951営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:05:13.32再利用性考えず短く書くだけなら馬鹿でもできるしOOなんて必要ないんだけどな
オセロだってこんなに短くかける。
#include <stdio.h>
#define R(x,v,w,y,z) r(i,c,x,(v>w?w:v))|r(i,c,-x,(y>z?z:y))
char n[]=" \\MD[REJQZBCIUY:<;A@^XP5]=`8cdkVbmFNWelGO9?_gf32>4on0H1i67jha";int
i,c,p,s[8],m[64],y,z;d(){for(c=0;c<64;c++){printf("%s%s","┼\0●\0○"+m[c]*3,(
2-(c%8==7)-(c==63))+"\n\n");}}r(int i,int c,int d,int e){p=0;while(e-->0&&(c+=
d,m[c]))if(m[c]-i)s[p++]=c;else{d=p;while(p)m[s[--p]]=i;return d;}return 0;}q(
int i,int c){y=c%8,z=c/8;if(R(1,7-y,7,y,7)|R(7,y,7-z,7-y,z)|R(8,7,7-z,7,z)|R(9
,7-y,7-z,y,z)){m[c]=i;d();}else q(3-i,c);}main(){m[28]=m[35]=1;m[27]=m[36]=2;d
();while(i++<60){q(2-i%2,n[i]-48);}}
0952949
2012/04/07(土) 19:06:37.21だから動作するコードで比べるしかねーの
あの三種のフィルタだけではメリットを示せないなら
別のフィルタを足しても良いからさ、とにかく動くコードだせ、な?
0953554
2012/04/07(土) 19:07:22.82それみにくいこーどこんてすのじゃん。
見やすさ意識し、filter切り替えられるようにした>>947と一緒くたにしてどうすんのよ。
なにかんがえてんだか
0954営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:07:51.71これ処理方法の変更って外部からどうやって指定するんだ?
そこの仕様はっきりせんと作れんぞ
0955営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:08:29.800956営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:09:58.70Perlのやつと同じで良いだろ
適当にコマンドラインオプションをパースして切り替えろ
0957営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:14:53.780958営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:17:04.88単にカオスでしかない
0959営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:21:13.58> この御題でbeginとendとfilterを一纏めにできるメリットを
> 「ちゃんと動くコードで」示せばすむ話だろ
class Filter {
private i = 0;
private m = 0;
begin() {}
filter(line) {i++; m = max(m, line.length()); }
end() {print "最大文字数は"+m+"文字でした"}
}
こんなんでいいか?
0960営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:22:34.30オブジェクト指向だけなんだよ>>786のコードが出てないの
0961営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:24:58.78だめに決まってんじゃん、馬鹿なの?
それともオブジェクト指向言語は冗長でうんこだから
ちゃんと動くコードを書くと長くなりすぎるの?
0962959
2012/04/07(土) 19:25:42.64endで最大の文字数の、行番号をだそうとしてたんだった。
0963営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:26:42.07ん? メリットは示せてるよね?
もしかして長くなるという批判がしたいの?
メリットへの反論は?
0964営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:27:32.48問題への回答であるなら、>>959は何の問題もない。
0965554
2012/04/07(土) 19:28:48.57あれは今議論の対象としているオブジェクトの範疇外なのかな…
プロパティーベスだったからなのかな…
0966営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:38:41.29それ以前に関数型でもリストで出切るって話だから
ここで言い争うことではないわな
0967営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:39:43.75それなら、ちゃんとくっつけて一つのオブジェクトにしたほうが
わかりやすいよねって流れだよ。
0968営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:42:06.440969営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:43:07.96みんなオブジェクトである世界に生きてるんだから
理解しやすいんだよ。
0970営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:45:50.99ちょっと前、ケーキ作るとかなんとか変な話しが出てたけど、
現実世界のケーキは計算しないでしょ。
0971営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:46:16.11ペットボトル 関数 が何をするのかさっぱりわからない。
0972営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:47:02.48ただループ回して全行読むところまで含んでるので
比較するならそこんとこ宜しく
begin = Nothing
body p = maximum . map length . lines
end p = putStrLn $ "最大文字数は" ++ show p ++ "文字でした"
awkLike (begin, body, end) = end . body begin
0973営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:48:37.23ケーキを関数で表現すると計算でもしてくれるのかい?
計算しないからこそ、処理がない属性だけの
オブジェクトが必要なんだ。
0974営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:48:50.31>ペットボトル 関数 が何をするのかさっぱりわからない。
OO脳すぎるだろ。物でしか何も考えられないのかよ。
関数は動作や述語だろ。「飲む」とか「買う」とか。
0975営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:52:18.81それさ、bodyがpを返すことが前提で、
endはpを引数にすることが前提だよね?
たとえばbodyの戻りを変えれば、endの引数も変えないといけない
つまり、bodyとendの仕様は密接に結合されている状態。
それなら一つにするのが正しい姿だよ。
それに内部で使用しているだけのpは外に公開しないほうが良い
そうやって複雑性を減らすのがカプセル化という物。
0976営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:52:56.74> 現実世界のケーキは計算しないでしょ。
OO脳すぎるだろ。物でしか何も考えられないのかよ。
関数は動作や述語だろ。「飲む」とか「買う」とか。
0977営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:53:48.09人間オブジェクトが飲むわけですよね?
主語はちゃんと書きましょう。
0978営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:54:39.54だから、なんでそうやってすぐ「物」に飛びつくんだ?
人間の要求ってのはまずもって動作で現れるんだぞ。
先の例だったら、ケーキじゃなくて、その前に「食べたい」ってのがあるわけ。
ケーキを食べるプログラムを作れ、ってんならわかるが、
ケーキのプログラムを作れ、は、ねーんだよ。
意味わかんねーからな。
0979営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:55:42.90主語は人間ですね?
0980営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:57:33.58違う、「コンピュータ」が「人間」に飲ますんだ。
0981営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:58:38.97処理と考えてるからわからないのかな?
ケーキに切るというメッセージを投げると、
ケーキは半分になる。
切るというメッセージを受けて、
オブジェクトがどうなるかは、
オブジェクトにしかわからないからね。
0982営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:59:13.50家畜乙w
0983営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:00:13.51pは多相で任意の型を取れるから何の問題も無い
アクセス制御については処理中のpの値に外からアクセスする事は出来ない
ついでに関数をまとめてみた
ここまでくると関数型言語でOOPって雰囲気になってくるか
{-# LANGUAGE RecordWildCards #-}
data Filter a b = Filter {begin :: a, body :: a -> String -> b, end :: b -> IO () }
countFilter = Filter {
begin = Nothing,
body = \_ -> maximum . map length . lines,
end = \p -> putStrLn $ "最大文字数は" ++ show p ++ "文字でした"}
awkLike Filter{..} = end . body begin
0984営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:01:55.50コンピュータとかランタイムとかコンパイラとか、その手の類だぞ。
かりに、人間モデルとかあったとしても、あくまでそれはオブジェクト=処理の対象でしかないぞ。
0985営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:02:48.42どの文献を参考にしましたか?
0986営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:08:25.68ケーキを切るのはコンピュータやランタイムだ。
ケーキが自発的に半分になる。そんなのは現実世界でもコンピュータの世界でもありえない話。
適せつなモデルとは言えない。
そんでその例だと後の展開は絶対こうなる->包丁の種類で切れ方は変わらないのかって。
そんで、cake.cut( knife ); か knife.cut( cake ) かって話になる。
だから初めから、cut( knife, cake ); が適切だと俺は言ってるわけで。
で、さっきもマルチメソッドの話が出てたのはこのため。
0987営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:11:27.260988営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:13:37.39最終的には、cutメッセージを受けた
cakeがどうなるかはcakeしかわからんので
cakeにcutメソッド付けるだろ。
くだらねぇ。
0989営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:17:53.84オブジェクトのメソッドっていうのは
実はメッセージハンドラであることが多いよね。
ってだけの話かと。
0990営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:26:49.91そんなのわからねーだろ。
ナイフが知ってるかもしれないだろ。
両方知ってるかもしれないだろ。
しかもこの会話、ケーキが知っているとかナイフが知っているとか、
見ず知らずの人に喫茶店で聞かれたら明らかにキチガイに思われる会話だろ。
OOPは現実世界と似てるから自然だとか主張してたが、それはないってことだ。
>ケーキに切るというメッセージを投げると、
>ケーキは半分になる。
↑冷静になってみ、キチガイの会話でしかないだろ?
0991554
2012/04/07(土) 20:29:54.60いまだそれに気が付かず脱皮できないタイプ?
0992営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:31:54.34OOPは特にキモい信者がいるからな
0993営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:38:10.19アヴェレージ・ホワイト・バンドでカット・ザ・ケイク
http://www.youtube.com/watch?v=GklyDmvT9wI
0994営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:41:01.28こうかも?
(defun filter-object ()
(let (変数を設定)
(list
(defun 事前処理 ())
(defun 間の処理 ())
(defun 終了処理 ()))))
0995554
2012/04/07(土) 20:56:20.81その有効性を説得力を持って、あるいは具体的になんか示せないものかね
0996営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 21:05:52.43関数型に神話性のあるグラフィカルな記述方法ってあんの?
0997営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 21:12:50.87拡張性で>>983に劣ってる
差分プログラミングで変更した例(splitByは>>898)
countFilterSplitBy sep = countFilter {
body = \_ -> maximum . map length . splitBy (== sep)
}
0998営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 21:14:59.94みなすもなにも
Smalltalkとかでは
メッセージとして扱われてるじゃん。
0999554
2012/04/07(土) 21:16:08.22でもダイヤグラムベースではないし、主にプロトタイピング目的のUMLとは対比される関係かな
1000営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 21:17:09.01> >>959は改行のセパレータをfilterで変更できないから
当たり前。フィルタで改行のセパレータを変更するもんじゃない。
awkだって引数で指定するだろ。
もっとも、BEGINなんかで変更する手もあるにはあるが、
それならそれでFILTERでも変更できるインターフェースを付け加えればいいだけ。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。