X



関数型言語とオブジェクト指向型言語って
0001デフォルトの名無しさん垢版2021/01/10(日) 00:21:41.15ID:dzQMColf
どっちが優れてるんですか?
親切な人教えて下さい
0002デフォルトの名無しさん垢版2021/01/10(日) 00:23:25.30ID:8NmrobQc
うーん
どっちかって言うと千と千尋のほうが好きかな
0003デフォルトの名無しさん垢版2021/01/10(日) 00:38:09.64ID:pzwk9NYM
自動的に並列化するのでマルチコア時代には関数型が優れているとHaskellの紹介サイトに書いてあったな。
ベンチも載ってたけど、平均してC/C++の10倍ほど速いみたい。
0004デフォルトの名無しさん垢版2021/01/10(日) 05:46:15.75ID:39vDGnyn
何を持って優れているとするかによるけど僕は関数型の方が好き.
0005デフォルトの名無しさん垢版2021/01/10(日) 09:56:30.90ID:luDzYgac
>>1
単純にどっちかが優れてるなんて言えるわけないだろう
ドラゴンボールのだれそれのどっちが強いってのと同じ程度に不毛な話
0006デフォルトの名無しさん垢版2021/01/10(日) 11:16:51.27ID:7q9UaFF7
副作用を排除するっていうのは、どの言語でもできるだけ真似たほうがいいと思う
並列コレクション使うだけで並列化できるってのも、関数型言語だからじゃなく副作用がないからできることだし
0010デフォルトの名無しさん垢版2021/01/12(火) 23:04:31.66ID:X0EWuMM2
外から見て同値であれば同一と見做すのが関数型。同値であっても異なる存在である場合があるのがオブジェクト。
0011デフォルトの名無しさん垢版2021/01/12(火) 23:13:09.60ID:/WJ9ShSR
背反ではないかもしれないけど、少なくともFPをちゃんとサポートした関数型言語においてはOOP的特徴は蛇足でしかない
オブジェクト指向言語でマルチパラダイムを謳っている言語でまともにFPできてる例もあんま知らない
オブジェクト指向言語は変に関数型を取り入れたりしないで素直にOOPを極めた方がいいと思うし、関数型言語はFPだけに特化した方がいいと思っている
0012デフォルトの名無しさん垢版2021/01/13(水) 14:23:45.53ID:tLUt5qTN
>>6
言語で束縛しなくても書き手が理解していたら出来ない事ないんだけどな
アルゴリズム中の読みやすくするための値を一時格納する変数は必要としても

全体処理の中にある散乱してる副作用はなんでこれで良いと思った?っていつも思う
副作用無しにするコードが書けてなくて、どのクラスもメソッドも万遍なく副作用を持ってるとか…
OOPにおいてもゴミだわ
0013デフォルトの名無しさん垢版2021/01/15(金) 02:23:50.45ID:Hai3vgIl
forthなんかは逆に副作用しか無い言語だけどコードの見通しはいいよな
環境という一つの値をパイプライン処理する
OOPってのは真ん中あたりかな?
0014デフォルトの名無しさん垢版2021/01/15(金) 02:32:51.03ID:Hai3vgIl
forthなど連鎖性言語と純粋関数型言語は主と副を入れ替えただけの同等物な気がしてきた
0015デフォルトの名無しさん垢版2021/01/15(金) 02:50:41.40ID:Hai3vgIl
パラダイムが違うから関数型用語で言い換えてる、念のため
演算は全て破壊的でなければいけないという教義の言語だけど、そのおかげでソース上ではその前後だけ見れば良い
預かり知らぬところで変なことが起きる事はない
0016デフォルトの名無しさん垢版2021/01/15(金) 03:04:41.52ID:mwLxITR0
何を指向しようがそれでコンシステントに書けば混乱は起きない
関数型だからとかは関係なくて、ただの一般論
0017デフォルトの名無しさん垢版2021/02/09(火) 16:49:18.04ID:Ab8vhkWR
全部イミュータブルにしとけば関数型もオブジェクト指向も同じことでは?

x.f()はf(x)と同じ
x = new X(p); x.f()はf(X(p))と同じ

ただ書き方が違うだけ

ただイミュータブルな前提ならオブジェクト指向のほうが業務的な意味合いをわかりやすく表現しやすい
なので関数型よりイミュータブルオブジェクト指向のほうが優れている
0018デフォルトの名無しさん垢版2021/02/09(火) 16:51:35.66ID:Ab8vhkWR
それに関数型言語は現実世界に対応できない
副作用がない、は理想だけどそれはあくまでも理想だ
理想現実は違う
0019デフォルトの名無しさん垢版2021/02/09(火) 22:27:58.86ID:Rh87rJZX
オブジェクトってのはデータとメソッドをカプセル化したものであって、
レシーバを書けばオブジェクト指向ってわけじゃなかろう。
0020デフォルトの名無しさん垢版2021/04/08(木) 00:15:32.66ID:vNjTkeHz
オブジェクト指向のほうが業務的な意味合いをわかりやすく表現しやすい←嘘
0021デフォルトの名無しさん垢版2021/04/08(木) 00:16:42.49ID:vNjTkeHz
関数型言語=副作用がない って言ってる時点で関数型をちまたの注意をひくためだけの文言しかなぞってなくて
ちゃんと関数型言語を使ってないって自白してるのと同義だから、OOPしか使わない人の関数型ディスは読む価値がない
0022デフォルトの名無しさん垢版2021/04/08(木) 01:15:04.53ID:U1NM3H1Y
関数型にハマったバカとオブジェクト指向にハマった馬鹿を比べた場合、
関数型にハマったバカのがまだ話が通じる。
0023デフォルトの名無しさん垢版2021/04/16(金) 02:32:21.76ID:uUb2kLFv
変数なんてまやかし、あるのはグローバル状態のみ
型もまやかし、キャストも甘え、あるのはビット列だけど、それも本質ではなく添字付けられる整数を表しているだけだ
Forthを感じろ
0024デフォルトの名無しさん垢版2021/04/16(金) 11:34:05.33ID:KoVFUOYi
OOPは駄目技術の烙印押された感は同意するけど、純粋関数型もコンパイラの最適化に頼りすぎてイマイチだろ
再帰はデメリットが目立ちすぎる。総てを無理やり賄おうとするより命令型のループで済ませ方が自然で可読性も高い
そもそも手続きの最適化を考えて書く行為が関数型の思想じゃないけど、これは組み込みとかで必須だし、これからも無くならない
0025デフォルトの名無しさん垢版2021/04/16(金) 18:46:37.56ID:f9bM7YoK
最近、面白そうだと思って関数型勉強してるけど、正直

「記憶のスタックにいろいろプッシュしながら読ん
でいって、適宜それをポップする」って作業が
かなりつらい…。

わかると、ものすごい納得感があるんだけど、これって
一般的なのかなと。
0027デフォルトの名無しさん垢版2021/04/17(土) 13:28:57.05ID:ohP60UMx
>>24
だめとは言わんけど変な押し付けする奴はかなり出回った。
関数型も同じ道をある程度進むと思われるが、OOPほど主張として広がりは見せてないところは
まだ悪影響は少ないと感じる。
0029デフォルトの名無しさん垢版2021/06/15(火) 12:37:15.20ID:vhbon9Jn
テクニックを積極的にサポートするかしないかの違いだろ?
引数を取る機構とポインタさえ存在すれば常に関数型プログラミングはできるし、名前空間と継承&インスタンス関係を示すデータ構造があればクラスベースオブジェクト志向プログラミングはできる
後者のスタンス取ってるのはpythonだな、全てユーザー定義用と同じ辞書で実装してる(丸見え)
0030デフォルトの名無しさん垢版2021/06/15(火) 12:47:16.58ID:vhbon9Jn
引数や名前空間機構すらないpsやforthでOOPや関数型プログラミングする為の小さいスクリプト落ちてるし、変に言語仕様で縛らない方がいいと思う
仕様で縛られない限り誰かがどこかで書いてるから、適宜自分の好きなスタイルに書き換えて使え
0031デフォルトの名無しさん垢版2022/01/19(水) 22:36:36.87ID:mGakhJ8G
仕組みが用意されてるかどうかの違い
もともとは関数型言語の構造体を使って各自が実装していただけで、やってることは同じ
0034デフォルトの名無しさん垢版2022/09/25(日) 20:37:51.35ID:cTy3tMOx
最近のプログラミング言語の多くはマルチパラダイム言語だから
手続き・命令型、オブジェクト指向型、関数型などの宣言型プログラミングに
その言語なりのやり方で対応していたりする。

特定のプログラミングポリシーに特化された言語もあるけれども、
プログラマーの好みや用途に応じて臨機応変に使い分けられるんじゃないかな。
レスを投稿する


ニューススポーツなんでも実況