[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 04/29 11:45 / Filesize : 32 KB / Number-of Response : 122
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【激突】関数型言語 VS オブジェクト指向言語



1 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 06:35:55.71 ]
一般的には、オブジェクト指向型言語が優勢でが
一部には関数型言語を崇拝している人もいます

どちらが上なのか、この際はっきりさせましょう

75 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 12:24:14.70 ]
>>69
>それをエレガントに解決するために使われるのが、
>型推論やジェネリック型(や型クラス)。

C++やJavaのジェネリック型が、エレガントにはとうてい見えない件について.....

76 名前:70 mailto:sage [2012/03/11(日) 12:35:27.17 ]
すまん俺も少しおかしな事を言っていた、
オブジェクト指向においてオーバーライドは多態性そのものだな。
あの一行を除けば>>63の言いいたい事は解るよ。

77 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 12:41:29.15 ]
>>74
> Lisp/Scheme/Logoのように動的型付けな関数型言語も存在しているわけで、
> 型付け(動的と静的)と計算モデル(命令型と適用型)をゴッチャにして
> 理解したつもりになっていまいか?

計算モデルで分類するならLisp/Scheme/Logoは命令型ですよ

78 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 12:48:19.28 ]
関数型言語の一般的な定義からすればLisp/Scheme/Logoも関数型言語だろ
一般的な定義は「関数がファーストオブジェクトである」

79 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 12:51:15.21 ]
さいしょのオブジェクト?

80 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 13:07:48.26 ]
> 一般的な定義は「関数がファーストオブジェクトである」

ファーストオブジェクトって何?
ファーストクラスオブジェクト、ってことなら、PythonとかJavaScriptとか、
最近の言語がみんな関数型言語になっちゃいますけど。

C言語は関数型言語、に類似のデマに惑わされてる人でしょあなたも。

>>75
C++はジェネリックというよりテンプレだから。Javaと一緒にすんな。

81 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 13:33:55.54 ]
よしこれからは依存型のある言語だけを関数型言語と呼ぼう

82 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 13:54:53.49 ]
LLバトスレからコピペ

 82 名前: デフォルトの名無しさん Mail: sage 投稿日: 2012/03/09(金) 12:07:14.32
 実用期を迎えた関数プログラミング 参加レポート
 ttp://sea.jp/?p=937

 > つまり、関数プログラミングを快適に実践するには、関数を変数に格納できるという程度では不十分だということです。
 > 関数プログラミングを支援する言語機能として、以下のようなものが紹介されました。
 >
 > ・関数を変数に格納でき、さらに無名でも定義できること
 > ・関数内部が静的なスコープを持つこと
 > ・関数の引数の一部だけを変数にバインドした別関数を返す部分適用を簡単に利n用できること
 > ・変数は上書きしない。配列、リストの中身も書き換えない
 >
 > これらの機能は、関数を頻繁に定義し、それをいろいろな場所に渡して使用する以上ないと困るし、
 > 変数が上書きされたり副作用があると関数を組み合わせて使用することが難しくなるのだろう、と私は理解しました。
 >
 > 個々の要素、例えば高階関数や部分適用などのみに注目して他言語、JavaScriptやRubyなどを見ていけば、
 > これらの機能を備えた命令型言語はたくさんあると思います。
 >
 > 実際、関数を使ったプログラミングもできると思うのですが、やはり型や変数の取り扱い、
 > 副作用をどのように扱うか、スコープや値の評価方法など、関数型言語としてデザインされた言語でなければ、
 > 関数プログラマーの方々がおっしゃるレベルの関数プログラミングは実現できないのだろうと感じました。

83 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:20:39.31 ]
>>82
高階関数、モジュール指向、ラムダ関数、論理型ってこと?
モジュール指向は当たり前だし論理型は余計な感じもする。




84 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:41:52.30 ]
手段と目的が逆になってる。

関数型言語を使うことが目的になってる。

85 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:43:04.94 ]
関数型言語の本質 = オブジェクト指向と混ぜた時に
絶対実現不可能なこと。

86 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:49:18.00 ]
>>85
絶対って言葉をあんま使わん方がいいぞ。
関数型の典型であるLispのオブジェクト指向
www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/objectOrientedLisp.html

87 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:53:48.47 ]
>>86
プログラム意味論あたりの研究で
関数型とオブジェクト指向は完璧には組み合わせられないって
いう結論が出ている


88 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:57:13.55 ]
>>87
証明は?で君はそれを理解しているの?受け売りはいかんよ。


89 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 15:13:16.22 ]
>>86
最近の関数型言語信者はLispは関数型言語じゃないとか言ってるよ
WEB+DBマガジンに関数型言語についての記事があるけど
Lispを関数型言語から排除していた

90 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 15:15:07.46 ]
関数型言語は処理のリストを簡単に作る事ができる。
[処理,処理,処理,処理]
オブジェクト指向言語はこれを実現できないわけじゃない
Operationクラスを作ってoperationメソッドを作って
Operationを継承するクラスを各処理ごとに作ってoperationメソッドをオーバーライドして
それらをOperationリストに突っ込めばいい。

高階関数もFactoryやリフレクションを駆使してムリクリ作る事はできる。
でも高階関数モドキやラムダ式モドキをわざわざ作らない。あまり必要ないから。

91 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 15:25:31.37 ]
ああ確かに不毛だなこのスレ

92 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 15:52:23.26 ]
関数型っていうのは副作用を許さないから、
どうしても関数型の理論だけで完結することはできない。
だからどの関数型言語も、関数型理論とは外れる機能を搭載している。

世の中に必要とされているシステムってのは絶対に副作用が必要だから、
関数型とそれ以外(たいていはオブジェクト指向)を混ぜた言語が使われる。

昔は、関数型にそれ以外を追加した、関数型ベースの言語が使われていたが
最近はオブジェクト指向に、関数型の機能を追加した、
オブジェクト指向ベースの言語が使われてきている。
また旧来の言語も、関数型の理論を取り入れてきている。

もう、それでいいんじゃね? 関数型ベースなんてもう流行らないよ。

93 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:00:04.51 ]
昔:馬鹿はプログラミングしなかった(だから関数型ベースで問題なかった)
今;馬鹿もプログラミングするようになった



94 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:02:45.17 ]
オブジェクト指向は流行らないよ、と必死にわめいていたバカにそっくりだーw

95 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:09:45.05 ]
>>89
添削
 X: 最近の関数型言語信者はLispは関数型言語じゃないとか言ってるよ
 O: Haskell信者はLispは関数型言語じゃないとか言ってるよ

>WEB+DBマガジンに関数型言語についての記事があるけどLispを関数型言語から排除していた

それは静的型付けな関数型言語に関する記事だからという理由じゃないのかな
その記事で「Lispは関数型言語じゃない」と書いてあるの?


参考として「やっぱり動的型付け言語は大規模開発で効率が悪い 2」スレ(dat落ち)からコピペ

 366 名前: デフォルトの名無しさん Mail: sage 投稿日: 2011/10/26(水) 12:25:43.06
 >>365
 それはハスケラ特有の症例で、心の病の一つ

 ハスケルという言語を使っていると、世の中のあらゆる事柄すべてが
 ハスケルを中心に廻っているように見えるらしい
 従って、あらゆる関数型言語は静的実行かつ静的型付けでなければならないし、
 遅延評価が常識であり、一切の副作用は認めようとしない

 ハスケラにとって関数型言語とはハスケルのことであり、
 その窓から見える世界が彼らのすべて

96 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:14:01.51 ]
こういうスレタイにすべきだったな

Haskell VS その他の関数型言語 VS オブジェクト指向言語
Haskeller VS その他の言語使用者

97 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:20:11.49 ]
>>1 がそもそも関数型言語について全くわかってなかったんだからしょうがない

98 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:55:49.58 ]
実際HaskellとLispは
SmalltalkとJavaくらい違う

99 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 17:11:29.17 ]
Haskellってなんていうか、
人を誑かすのは上手いよね。

100 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 17:14:32.45 ]
正直、副作用問題を放棄してる関数型言語と、最近のLLの機能的な境目が薄くなって来てる感じはする
RubyもPythonもオブジェクト指向言語と言うより、マルチプラットフォーム言語なんじゃないかと

何というか、ちゃんと切り分けていこうぜ
オブジェクト指向の機能と、関数型言語の機能
それらに依存しない機能



101 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 17:23:59.76 ]
マルチプラットフォームっていうとWindows,Linux,Macで動くように聞こえる。

102 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 17:26:09.19 ]
マルチパラダイムって言いたかったんと違うん?

103 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 17:47:22.31 ]
>>102
補足ありがと・・・・
それが言いたかった




104 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 21:17:02.05 ]
>>39
関数型言語の出す例ってその手の toy ばっか。
reverse や length なんていうデフォで提供されてて当たり前な関数を
わざわざ fold から自作してみせて再利用性(キリ
アホかと

再利用唱えてドヤ顔するなら GoF の例を関数型言語で書き下して
コード一桁減りましたくらい言えって

105 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 21:56:07.61 ]
現在の関数型言語に足りないモノ、それは大規模開発に対応できる開発方法論が存在しない点
Haskellerご自慢のモナド/アローはプログラミング(コード設計)レベルの手法であり、
オブジェクト指向言語であれば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で提案されたようなトップダウンな方法論は(今の自分には)無理だと判断しました。

106 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:33:08.81 ]
>>105 の言うエンジニアリングって、要するにM蔵とかいう会社あたりで
あれこれバズワードを振り付けてそれっぽく見せてくれればおk、ってこと?

新技術にあれこれ難癖つけているだけの奴って、結局出遅れて損をして、
後からは損をした損をした、って喚くだけに奴になるよね、たいていw

107 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:39:36.88 ]
>>106
なんでちゃんと詳細なこと書いてあるのに読まないの?

たとえば、Observer パターンを関数型言語ならどう実装するかってことだよ。

108 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 01:36:29.25 ]
インターフェイスクラスを継承しないで何かを開発するなど悪夢だろう。

Cでもできるが保守の手間が尋常じゃなくなるからC++にしておくんだ。

109 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 01:39:39.17 ]
※注意 ここは突っ込むところです。はい、どうぞ。

110 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 07:12:19.93 ]
JavaにはgotoがないからJavaは使えない、みたいな議論だな。
オブジェクト指向で必要となるデザインパターンが実現できないから関数型は使えない、と言われても、というか。

111 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 08:24:35.46 ]
>>110
やっぱりそのレスが来ると思ったw

デザインパターンというのは、問題があって
その問題をオブジェクト指向で解決する場合のやり方。

解決のやり方がオブジェクト指向というだけで
ここで発生した問題は関数型でも発生する。
Observerパターンでいえば、
何かの状態の変化を監視したいという問題。

それを関数型言語で解決してみろ。


112 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 08:52:56.35 ]
純粋関数型言語で、なのか、なんでもかんでも関数型の関数型言語か、
はたしてどっちのことを言っているのだろう?

113 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 08:55:42.78 ]
とりあえずMonadStateとMonadIOのインスタンスにしときゃあいいんだよ!!



114 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 23:05:14.54 ]
Haskellはバカが得意げになるための道具、まで読んだ

115 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 07:34:17.93 ]
このスレは↑のようなバカが得意げになるためのスレです

116 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 13:49:34.45 ]
Haskell は「けいざいがく」と同じにおいがする

現実から目をそらし、夢の世界の幸福に浸る

117 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 15:28:07.46 ]
>>111
関数型言語ではFRPで解決します。

やさしいFunctional reactive programming(概要編) - maoeのブログ
d.hatena.ne.jp/maoe/20100109/1263059731

118 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 15:43:23.40 ]
うむ、リアクティブぷるぐらみんぐは気になる。
でもそのためにわざわざ関数型に切り替えるとなると、う〜む

119 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 21:01:38.10 ]
オブしこのほうが自然だよね。

120 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 01:12:30.99 ]
リアクティブとかこの世の地獄が生まれそうな機能だなおい。

逐次処理否定してなんかいいことあんのかよ。プッシュプルみたいなもんなのか?

121 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 08:53:59.21 ]
否定してないからIOモナドがあるんだろうが。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<32KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef