「オブジェクト指向」と「関数型」、未来があるのはどっちなの?おしえてプログラマー!

1: 名無しさん@涙目です。(北海道) [US] 2018/08/24(金) 12:46:26.40 ID:GVfwAsYv0 BE:422186189-PLT(12015)

staticおじさんとは、2010年に@ITに「実はオブジェクト指向ってしっくりこないんです!」と投稿して
炎上したおじさんのことである。

2010年ごろはIT土方界隈ではJavaを中心としたオブジェクト指向が主流の時代であり、なんでもかんでも
オブジェクト指向という風潮があった。このためstaticおじさんはボロクソに叩かれる結果となり、
さらにはプログラミングそのものの話を飛び出してオブジェクト指向推進派による学歴差別などに発展、
無事炎上した。

その数年後、staticおじさんの主張に「static変数は使わない」「関数ポインタを多用する」という
コーディング規約を加えた「関数型プログラミング」がJavaScript界隈を中心に爆発的に流行し、
その流れに乗るかたちで半ば強制する仕様の「関数型プログラミング言語」も多数登場した。

ちなみにstaticおじさんの主張と非常に酷似したものが、staticおじさんの登場より遥か昔、
インターネットを支える中核技術である「IP」のRFC(仕様書)にも「階層化の有害性」として書かれていたりする。
また、海外でも同様の主張を面白おかしく書いた「Bjarne Stroustrup インタビュー」なる怪文書が出回り、こちらも大炎上した。

https://monobook.org/wiki/static%E3%8A%E3%98%E3%95%E3%93

2: 名無しさん@涙目です。(茸) [US] 2018/08/24(金) 12:46:43.83 ID:JB+SyB+90
圧倒的に関数型だろ

 

3: 名無しさん@涙目です。(茸) [US] 2018/08/24(金) 12:47:19.30 ID:kg07x1Oa0
GoogleもMicrosoftもAppleも関数型推しだし選択肢ないだろ

 

4: 名無しさん@涙目です。(茸) [DE] 2018/08/24(金) 12:47:55.20 ID:uA7CjQiN0
Javaがある限りオブジェクト指向は不滅だ

 

92: 名無しさん@涙目です。(アメリカ合衆国) [CN] 2018/08/25(土) 00:03:51.42 ID:3twieEP90
>>4
そのJAVAはGoogleが捨てれば一気にすたれるよ

 

147: 名無しさん@涙目です。(禿) [CN] 2018/08/26(日) 04:32:22.09 ID:CzlVirfc0
>>92
既に捨てるの決定してる
Androidは終了させる事が決定済み

 

113: 名無しさん@涙目です。(千葉県) [UA] 2018/08/25(土) 06:39:58.60 ID:PvLRWcdE0
>>4
JavaはOracleが有料化するが決まっているので確実に廃れます。
Kotlinどぞー

 

5: 名無しさん@涙目です。(茸) [ZA] 2018/08/24(金) 12:48:55.49 ID:J09xbmOa0
仕事が多いにはオブジェクト志向

 

7: 名無しさん@涙目です。(神奈川県) [US] 2018/08/24(金) 12:49:19.28 ID:dvgelS3F0

おれはおっさんだから関数型の方が楽
思考もトップダウンになっている

ただオブジェクト指向にしろボトムアップにしろその利点欠点を把握してやることはいいこと

 

9: 名無しさん@涙目です。(茸) [CA] 2018/08/24(金) 12:49:35.13 ID:HGjb4lo+0
未だにオブジェクト指向の意味がわからん?
玄人志向と何がちゃうんや

 

30: 名無しさん@涙目です。(SB-iPhone) [ニダ] 2018/08/24(金) 13:40:55.76 ID:qs7fscXy0
>>9
大差ない 気にするな

 

10: 名無しさん@涙目です。(茸) [TW] 2018/08/24(金) 12:51:42.34 ID:y8R6n4nR0
純粋関数型言語に決まってんだろ

 

11: 名無しさん@涙目です。(禿) [CN] 2018/08/24(金) 12:54:10.49 ID:Em6auXVK0
おじさんもおじさんだけど
おじさんを叩いてた連中も副作用について理解していなかった。
どっちもアホ

 

39: 名無しさん@涙目です。(新疆ウイグル自治区) [SE] 2018/08/24(金) 14:11:38.66 ID:BZlys5JQ0
>>11
staticおじさんが言いたかったことの半分はデータ中心設計なんだよな
本人は概念は知らなかったようだけど
DOAとOOPが相性が悪いのは当然
そのインピーダンスミスマッチ解消を提唱したHibernateに始まるいろんなゴミが結局ゴミにしかならなかったようにOOPは相容れない
エンタープライズ開発ではデータモデル設計が最初に来るのも常識だったので
「オブジェクト指向必要なんですか?」というおじさんの疑問はあり意味マトは外してなかった
大学や独学でお勉強したばかりのにわかプログラマどもはエンタープライズ開発の世界知らないのでOOP万能を信じ込んで発狂
ただおじさんは基礎が無く人間性も屑なんで擁護されなかった

 

12: 名無しさん@涙目です。(大阪府) [ニダ] 2018/08/24(金) 12:54:37.49 ID:SpsvjdRf0
関数てもとはオブジェクト指向だろ
何のために処理をまとめてると思ってるんだよ

 

114: 名無しさん@涙目です。(千葉県) [UA] 2018/08/25(土) 06:42:06.79 ID:PvLRWcdE0
>>12
関数は関数。ただのサブルーチンの集合。
オブジェクト指向は基本概念から違う。

 

13: 名無しさん@涙目です。(茸) [ニダ] 2018/08/24(金) 12:55:51.55 ID:GIxYITbB0
オブジェクト指向も
関数型も
どの会社も理解して設計組んでるようなところ稀だから

 

20: 名無しさん@涙目です。(茸) [GB] 2018/08/24(金) 13:01:41.06 ID:CLH9CN/70
>>13
大体サンプル参考にして動いたらオッケーだからな

 

22: 名無しさん@涙目です。(大阪府) [BR] 2018/08/24(金) 13:03:37.52 ID:2KX4vNdU0
よくわからん
ガンダムで例えてくれ

 

24: 名無しさん@涙目です。(大阪府) [US] 2018/08/24(金) 13:19:18.59 ID:eJIxpioP0
>>22
ベースクラスがモビルスーツのステイメン、
ステイメンを派生、内包したのがデンドロビウム
どちらもベースクラスはモビルスーツ、みたいな?

 

25: 名無しさん@涙目です。(チベット自治区) [US] 2018/08/24(金) 13:20:33.72 ID:wgWDiKwy0
最近プログラマー関係のスレ多いね

 

31: 名無しさん@涙目です。(SB-iPhone) [US] 2018/08/24(金) 13:42:18.15 ID:QFR2A08w0
>>25
同じアホが立ててる

 

32: 名無しさん@涙目です。(空) [US] 2018/08/24(金) 13:49:30.44 ID:gDZdM8Oa0
継承って若い世代に浸透したの?

 

35: 名無しさん@涙目です。(北海道) [US] 2018/08/24(金) 13:57:39.02 ID:mqF5LFUp0
久しぶりにプログラマー板見てきたら凄いギスギスしてたわ
昔はあんなんじゃなくほのぼのしてたのに

 

37: 名無しさん@涙目です。(空) [CA] 2018/08/24(金) 14:03:52.27 ID:hzDkc1P70
>>35
交流サイトもそんな感じ
MSDNコミュニティーも教えてやってるんだからという態度を全面に出し過ぎ
俺が質問に答えると
「そんな態度の奴に教えるから質問者が図に上る」とかもう訳が分からん

 

57: 名無しさん@涙目です。(dion軍) [ニダ] 2018/08/24(金) 15:23:47.29 ID:lxX0RIbp0
>>35
10数年前からたまにマ板のぞいているけど
当時も今と変わらんくらいにギスギスしてたよ

 

60: 名無しさん@涙目です。(北海道) [US] 2018/08/24(金) 16:00:09.97 ID:mqF5LFUp0
>>57
いやいや全然変わっちゃったよ
アロエリーナスレもお前のバグだろゴルァスレも無くなってるし
それに変わるようなスレも無いし煽りスレばっかり

 

157: 名無しさん@涙目です。(庭) [AU] 2018/08/26(日) 17:51:04.85 ID:2s5ohCAb0
>>60
そもそも2chの専門板の書き込み数自体が激減してるじゃん

 

36: 名無しさん@涙目です。(新疆ウイグル自治区) [SE] 2018/08/24(金) 13:59:57.93 ID:BZlys5JQ0
オブジェクト指向プログラミングみたいなメンテナンス性低いやり方で開発したら
要件変更の度に膨大な改修コスト発生して採用した企業葉破綻するぞ?
関数型のほうが改良に向いてる

 

116: 名無しさん@涙目です。(大阪府) [ニダ] 2018/08/25(土) 06:47:31.36 ID:ddJhcblh0
>>36
機能追加し難いソースは問題だけど
仕様変更はそもそも設計の考慮に入ってないからなw

 

43: 名無しさん@涙目です。(芋) [JP] 2018/08/24(金) 14:19:05.66 ID:LKdkeSUB0
動けばいい

 

45: 名無しさん@涙目です。(SB-iPhone) [US] 2018/08/24(金) 14:29:27.13 ID:DYIi00Fv0

>>43
まあ、客の立場からすればトラブルなく動けば良いというのは確かだな。

ただ、中身の仕組みを客側が全くわからないってのもどうかと思うが。
sierなんて日本だけの謎の存在だし。

 

46: 名無しさん@涙目です。(庭) [AU] 2018/08/24(金) 14:33:51.99 ID:r3+YwzGv0
関数ってオブジェクトじゃん。

 

48: 名無しさん@涙目です。(空) [US] 2018/08/24(金) 14:44:31.67 ID:Cj/vksTU0
>>46
オブジェクトとは何かね?
関数でウンコしない美少女が作れるのかい?

 

50: 名無しさん@涙目です。(庭) [NL] 2018/08/24(金) 14:51:32.62 ID:NdVIuOdf0
>>48
関数の方が作りやすいぞ

 

47: 名無しさん@涙目です。(庭) [AU] 2018/08/24(金) 14:34:57.95 ID:r3+YwzGv0
つかオブジェクト指向なんてどの言語でも当たり前じゃん。

 

53: 名無しさん@涙目です。(茸) [US] 2018/08/24(金) 15:07:39.25 ID:zIqrk3qR0
感覚的に分かりやすいのは関数
俺はどっちも、使うけど

 

55: 名無しさん@涙目です。(SB-iPhone) [US] 2018/08/24(金) 15:20:47.01 ID:kkFnUiWj0
オブジェクト指向はデータの扱い方の話、関数型言語かどうかとは関係ない。

 

62: 名無しさん@涙目です。(東京都) [DE] 2018/08/24(金) 16:28:44.04 ID:EsK0rAG10
>>55
まあそうだな
オブジェクト指向で関数をまとめることもできるしな
昔から知らずやってることは多い

 

64: 名無しさん@涙目です。(愛知県) [ニダ] 2018/08/24(金) 16:35:57.66 ID:y1wnyt1y0
「最近多いんだよね――JAVAとかちょっとかじった程度で「俺プログラマーやってます」って顔する子」
「あるある。最初の入り口がオブジェクト指向なんだよね。最近の子って」
「そうそう。そんなんじゃ使いものにならねぇっての」

 

86: 名無しさん@涙目です。(庭) [ニダ] 2018/08/24(金) 21:23:20.08 ID:fIJv08AK0
>>64
なんで入口がオブジェクト指向だと使い物にならないの?

 

77: 名無しさん@涙目です。(空) [IT] 2018/08/24(金) 20:21:07.42 ID:eBIJ4Q980
なあ、昔流行った構造化プログラミングと、今流行りの関数型プログラミングは違うよな?

 

79: 名無しさん@涙目です。(禿) [ニダ] 2018/08/24(金) 21:02:44.28 ID:uCu5GBmK0

>>77
結構違う
でもこのスレのオブジェクト指向おじさん達は関数型プログラミングをよく知らずオブジェクト指向の事だけを語っちゃつてる

オブジェクト指向おじさん「オブジェクト指向では」

 

83: 名無しさん@涙目です。(庭) [RU] 2018/08/24(金) 21:12:28.94 ID:5Vwn+w/Q0
関数型って言語で言うとCとか?

 

84: 名無しさん@涙目です。(catv?) [US] 2018/08/24(金) 21:14:03.55 ID:Mg2d23WI0
>>83
C#だって、Javaだって、perlだって関数型言語だぜ。

 

94: (庭) [US] 2018/08/25(土) 01:54:10.17
>>83
LISPとかHaskellとかだよ
CやC#やJavaやperlは手続き型

 

85: 名無しさん@涙目です。(兵庫県) [DE] 2018/08/24(金) 21:18:48.74 ID:pW6lSPNF0
PHPってどっちでも書けるよな。オブジェクト指向風なのが推奨されてるけど

 

87: 名無しさん@涙目です。(庭) [RU] 2018/08/24(金) 21:30:42.64 ID:5Vwn+w/Q0
>>85
正直PHPでクラスを書くメリットってあんまりないと思うけどね
それよりもコントローラーとビューの分離を徹底してくれと言いたい

 

95: 名無しさん@涙目です。(新疆ウイグル自治区) [SE] 2018/08/25(土) 01:59:26.84 ID:scR4upUb0
>>87
MVCとかWebの世界でやろうとするやつの方が分かってないと思うわ

 

104: 名無しさん@涙目です。(庭) [US] 2018/08/25(土) 05:00:03.60 ID:DfS5O8L70
>>95
Webだからこそじゃん
表示レイアウト部分に複雑な制御ロジックやDB操作などは含めるべきじゃない
前処理で出来上がったデータを列べるだけにするのが望ましいと思うが

 

128: 名無しさん@涙目です。(新疆ウイグル自治区) [SE] 2018/08/25(土) 12:06:52.42 ID:scR4upUb0
>>104
MVCなんて過去の遺物だわ
アクションとステートがリアクティブに反映されるWebの世界と整合性合わない

 

131: 名無しさん@涙目です。(庭) [US] 2018/08/25(土) 16:36:10.78 ID:83GGXQPr0
>>128
お前仕様変更入ったら大騒ぎするタイプだろ?

 

133: 名無しさん@涙目です。(東京都) [CA] 2018/08/25(土) 17:11:00.08 ID:BhHgJLlZ0
>>131
さすがに>>104は擁護出来んやろ

 

135: 名無しさん@涙目です。(新疆ウイグル自治区) [SE] 2018/08/25(土) 17:54:49.40 ID:scR4upUb0

>>133
レス短くて分らんけど>>131はMVC否定=疎結合否定と思い混んでるんじゃね?
MVC以外に疎結合を実現するモデルは無いと信じ込んでるみたいな

MVCなんて40年前のWeb無い時代に考えられたもので
ページ=リクエストの概念が無いからみんなその矛盾の境目で困る訳で
それは言語や実装が悪いんでは無くてMVCという過去のモデルに囚われてることが原因なんだと早く気付くべきだと思います

 

99: 名無しさん@涙目です。(catv?) [US] 2018/08/25(土) 03:28:47.50 ID:hzVCbvyd0
別に相反するアプローチでもないからなあ
どっちとか言ってるやつこそ未来がない
普通に状況に合わせて使い分けろよ

 

112: 名無しさん@涙目です。(東京都) [BR] 2018/08/25(土) 06:33:02.34 ID:L133rR3o0

369 名前:名無しさん@涙目です。(禿) [AU][] 投稿日:2018/08/24(金) 23:28:43.88 ID:c8UO29vP0
>>348
LinuxやGitを産み出したLinusはこう言ってる

つまり、まともで効率的でシステムレベルで移植性のあるC++ってのは、
Cで使える機能だけに制限することだ。
プロジェクトをCに制限すれば、ぶち壊すヤツはでてこない。
それと、多くのプログラマーが低級な問題まで理解できるようになり、
理想主義的な「オブジェクトモデル」のクソとやらでぶっ壊したりしない

移植性と保守性はトレードオフって事か?

 

117: 名無しさん@涙目です。(東日本) [IT] 2018/08/25(土) 06:51:29.42 ID:9LHcXBdi0
>>112
OSとかをツールをつくってる人と業務プログラムを書く人はまた違うと思うのです。

 

120: (庭) [US] 2018/08/25(土) 07:32:45.79
>>112
これ本当にLinusが言ったの?
エイプリルフールかネタで言ったかもしくは全くの嘘じゃないの

 

121: 名無しさん@涙目です。(神奈川県) [PK] 2018/08/25(土) 07:45:36.60 ID:wHP4oJrK0
>>120
カーネルにC++は必要ないからなw

 

122: 名無しさん@涙目です。(奈良県) [US] 2018/08/25(土) 08:01:46.20 ID:Nw6A6qor0

>>120
性能が必要な所にはオブジェクト指向はナンセンスだからな。

一番単純な文字列クラスの演算子ですらコピー回数考えたら目眩するだろ?

 

129: 名無しさん@涙目です。(新疆ウイグル自治区) [SE] 2018/08/25(土) 12:14:00.15 ID:scR4upUb0

>>120
Gitプロジェクトのメーリングリストgit-AT-vger.kernel.org上の発言な

https://lwn.net/Articles/249460/

 

130: (庭) [US] 2018/08/25(土) 14:02:36.47
>>129
中指立てながら言ってそう

 

123: 名無しさん@涙目です。(catv?) [CA] 2018/08/25(土) 08:13:39.66 ID:fpZ3Qq790
>>112
これはその通りだと思う。
C++に限らずオブジェクト指向にも関数型にも言えること。
表現が多すぎるとそのぶん訳が分からないコードを書ける可能性も広がる。
抽象化というのは言葉通り、具体的に何してるのか分からなくなるデメリットを常に含む。

 

119: 名無しさん@涙目です。(東京都) [BR] 2018/08/25(土) 07:29:49.62 ID:KixDLqtp0

JavaScriptでオブジェクト指向の真似事やろうとしたら、スゲェめんどくさい

あれは、関数でなんとかしたほうがええな

 

145: 名無しさん@涙目です。(禿) [CN] 2018/08/26(日) 04:28:00.81 ID:CzlVirfc0
>>119
JavaScriptはオブジェクト指向的な使い方せずに、単にWebシステム構築の為の言語、として使うモノ

 

150: 名無しさん@涙目です。(大阪府) [ニダ] 2018/08/26(日) 15:06:45.92 ID:8Oo9PkCz0
>>119
>>145
ES6以降とかSPAとか知らんのか
クソみたいな技術だけどお前らの感覚もちょっと古い感じがする

 

156: 名無しさん@涙目です。(dion軍) [US] 2018/08/26(日) 17:33:59.32 ID:HmOW7Pth0
どうだっていいだろ、所詮は代入と条件分岐と繰り返しの集合体だ

引用元

http://hayabusa3.2ch.sc/test/read.cgi/news/1535082386/

管理人からひと言

オブジェクト指向がおわることなんてあるの?

 

関連記事

  1. お前ら素人プログラマはオブジェクト指向分かってる振りしてるけど何も分かってないことはばれてるぞ

  2. プログラム言語Juliaの時代キタ━(゚∀゚)━! そのうちPythonも食われそう C++はもうダ…

  3. ぼくくん、Pythonに挑戦しようとするも環境構築が出来ずに泣く(´;ω;`)

  4. 今のプログラマーってプログラム言語、GUI開発技術、絵、DB、ネットワークと理解していて一人前だけど…

  5. 【悲報】ぼくガイジRuby on Railsの授業で環境構築ができずに詰む

  6. Androidアプリ作ってんだけどjavaってクソ言語だわ

  7. 【IT】Python開発者の実態調査、主な用途はデータ分析やWeb開発

  8. 真面目な話、これからプログラマーになる奴はJavaScriptだけ覚えればいいのでは?

  9. プログラミング初心者ワイ「Pythonで副業するンゴ」敵1「JavaScriptやれ」敵2「Ruby…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の人気記事

おすすめ記事

  1. カテゴリ_Cloud

新着記事

  1. Googleフォト、全てのスマホユーザーにAI編集ツール提供へ
  2. 【IT】Apple、レトロゲーム機のエミュレータアプリにApp Storeを開放…
  3. Windowsに「デフォルトのブラウザをMicrosoft Edgeから変更でき…
  4. OpenAI日本法人に「AWSジャパン前社長」が移籍 4月中旬開設の東京オフィス…
  5. ウエスタンデジタル、業界初“4TB”のSDUCカード 2025年に発売予定

ボンブの戯言

  1. 【ボンブの戯言】ITエンジニアがフリーランスになる理由
  2. 【ボンブの戯言】ITエンジニアは、なぜうつ病になるのか
  3. 【ボンブの戯言】はじめました。
  4. 【ボンブの戯言】フリーランスのメリットを全否定してみた
  5. 【ボンブの戯言】中古サーバーの買い方まとめました
PAGE TOP