オブジェクト指向ってクソじゃねぇかよPart4

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/04/28(日) 23:38:35.09ID:URSBxRTf
無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。


カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96

前前前スレ
オブジェクト指向ってクソじゃね?
https://mevius.5ch.net/test/read.cgi/tech/1535085129/

前前スレ
オブジェクト指向ってクソじゃねぇよ? Part2
https://mevius.5ch.net/test/read.cgi/tech/1539872441/

前スレ
オブジェクト指向ってクソじゃねぇかよPart3
https://mevius.5ch.net/test/read.cgi/tech/1542884872/
543デフォルトの名無しさん
垢版 |
2019/07/27(土) 10:41:31.30ID:drim5j76
>>534
10年後の未来にこんなブログ記事を見つけたとしても、何ら驚きはない

> 関数型プログラミング -- 10兆ドル規模の大失敗
>
> なぜ、FPから移行する時なのか
>
> FPは、多くの人にコンピューターサイエンスの重要資産と考えられています。
> コード構成(code organization)に対する究極のソリューション。
> すべての問題の終焉。私たちのプログラムを書くための唯一の本当の方法。
> 自分自身をプログラムするという真なる唯一神から私たちに授けられました…

こういった人たちは「銀の弾丸」と言う古典を知らないんでしょうね
2019/07/27(土) 10:59:57.61ID:AlHzfK1T
>>542
GOFはイカサマ
Javaだとクラス1つしか継承できないのにデザパタ用のクラスが親になっちゃって使い物にならない
標準JREのObserverだかObservableだとかですらそのありさま
2019/07/27(土) 12:18:39.87ID:9bbXd+da
FizzBuzzEnterpriseEditionがアップを始めたようです
2019/07/27(土) 22:26:17.26ID:AlHzfK1T
https://www.reddit.com/r/programming/comments/1mbd3s/fizzbuzz_enterprise_edition/
まともに考察してくそダメだしされててわろた
商用なのにログがないとかw

改善したんかな
547デフォルトの名無しさん
垢版 |
2019/07/31(水) 11:38:08.63ID:zQ7B0Gg2
レプティリアンによる陰謀だったのか
さすが人間の飼い主だな
2019/07/31(水) 12:58:34.08ID:1TNs6Ty9
>>544
継承が一つなのは当然として、そういう物はクラス内にオブジェクト取り込めばいいのだよ。
2019/07/31(水) 13:40:47.79ID:JpBmxHct
オブジェクト指向を批判してる人って、代替コードを出さないよね(笑)

関数型プログラミングなら、関数型プログラミングなら!
って言ってるだけで、代替コードは出さない。

関数型プログラミングのコードを出せって言ってるんじゃないんだ
「オブジェクト指向で書かれたコード」の代替コードだよ
同じことをする関数型プログラミングのコード
2019/07/31(水) 13:43:15.65ID:JpBmxHct
>>542
> 実践でデザパタって本当に有効なの?

有効だな。例えばWindowsは、
すべてのGUI部品をウインドウとして扱ってる。
それによって柔軟な拡張性を得ている
2019/07/31(水) 14:38:11.20ID:YOJEMdlw
>>549
Rustが出てきた
関数型っぽくないからノーカンみたいなくだらないルールは批判されて当然
2019/07/31(水) 15:39:50.83ID:JpBmxHct
「関数型っぽくないからノーカン」ではなくて
「オブジェクト指向プログラミングを含んでいるからノーカン」
https://ja.wikipedia.org/wiki/Rust_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)

> パラダイム
> コンパイラ型言語、システムプログラミング言語、
> マルチパラダイムプログラミング、関数型言語、
> オブジェクト指向プログラミング

> Rustはマルチパラダイムプログラミング言語であり、手続き型プログラミング、
> オブジェクト指向プログラミング、関数型プログラミングなどの実装手法をサポートしている。

オブジェクト指向プログラミングは重要ってことの証明だし
そもそも関数型プログラミングのメリットを言えばいいわけで、
それにはどのオブジェクト指向言語も理解していて、オブジェクト指向に関数型を取り入れてる。

つまりは、オブジェクト指向推進はの意見は、オブジェクト指向+関数型推奨であり、
関数型プログラミングのメリットをいわず
オブジェクト指向のデメリットのみを言って、
じゃあ関数型では「同じ問題」をどう解決するのかを言わない輩よりも
何歩も先を進んでいる。
2019/07/31(水) 17:10:48.75ID:YOJEMdlw
どう解決するのかを言う人はパラダイムではなく言語を定義するだろう
言語を定義してしまえばパラダイムの定義を言う必要はない

言語をどれにするのかを言わない輩は信用できない
2019/07/31(水) 19:03:15.86ID:JpBmxHct
言語はオブジェクト指向でもあるRustが一番!
2019/07/31(水) 20:01:32.38ID:XOboOphH
>>550
それパターンのどれ?
2019/07/31(水) 20:06:20.03ID:JpBmxHct
>>555
パターンの数なんてたかが知れてるんだから
思いついた名前を言ってみな。
これも勉強だ。
2019/07/31(水) 20:09:47.68ID:XOboOphH
コンポーネント…
558デフォルトの名無しさん
垢版 |
2019/08/01(木) 01:00:59.00ID:V8KEdfZv
お前ら何と闘ってるんだ…
現実問題としてオブジェクト指向だけだとコードが複雑化しがちだから関数型の要素を各言語が取り込んで行ってるのが現状だろ
それぞれの良いところを利用すればええんや
2019/08/01(木) 01:51:56.19ID:lebmTg1V
オブジェクト指向を標榜して
コード構造をぐちゃぐちゃにするのを止めれさえすれば
それが関数型であろうが別のパラダイムであろうが良いのであって、

オブジェクト指向 対 関数型の対立軸に論点を移してしまうと、
工学的根拠のない都市伝説みたいな屁理屈の応酬に陥ってしまうので、
オブジェクト指向の問題点を議論する際には関数型の話を前面に出さない方が良い
2019/08/01(木) 01:58:02.87ID:lebmTg1V
ただ淡々とオブジェクト指向はクソなんだと
問題点を指摘してさえすればよい
561デフォルトの名無しさん
垢版 |
2019/08/01(木) 08:07:45.88ID:xGy0TEOb
オブジェクト指向が向いてるモジュールとそうでないモジュールがあるだけだろ
何でもかんでもオブジェクト指向で設計する、とか
オブジェクト指向を全面否定するから、話がおかしくなる
2019/08/01(木) 11:24:12.58ID:czAE5CE0
>>558
そうなんだよ。

時代は、オブジェクト指向 + 関数型 で、
オブジェクト指向言語は関数型の考えを取り入れていってるんだが、

時代錯誤な人間が、未だに、オブジェクト指向 VS 関数型だと思っていて、
オブジェクト指向はだめだ、これからは関数型プログラミングだ!なんて言ってるんだよ。

で、そういう輩は決まって、オブジェクト指向の問題点を指摘するが、
その指摘した部分を関数型プログラミングでどうやるのか?という答えを言わない。
解決すべき問題そのものを関数型プログラミングではなかったことにしている。
563デフォルトの名無しさん
垢版 |
2019/08/01(木) 11:49:10.23ID:Bt1EfjAH
クラスベースオブジェクト指向3本柱のうち継承についてだけはオブジェクト指向を標榜するモダン言語でも軒並み冷飯喰らわせてるな
2019/08/01(木) 12:31:10.10ID:czAE5CE0
関数型言語でフレームワークなしにウェブアプリやゲームやシステム作れたりするものあったっけ?
結局実用的な何かを作るためにはフレームワークは必須で、オブジェクト指向ではない
(例えば継承が使われていない)フレームワークなんてあるの?
565デフォルトの名無しさん
垢版 |
2019/08/01(木) 12:40:02.99ID:H3TkYXy8
つまりバッドプラクティスとしてクラスベースオブジェクト指向としての継承を制限している言語にフレームワークは無いと言うことだねw

バカ「goにフレームワークは無い!!」
2019/08/01(木) 12:43:57.81ID:czAE5CE0
頭が悪い人は黙っていて。ここでいう継承というのはオブジェクト指向の考え方でいう継承のこと
言語で継承が実装されなくても、結局「オブジェクト指向のやり方」を使うわけじゃんっていうのが
言いたいことだから。
567デフォルトの名無しさん
垢版 |
2019/08/01(木) 12:45:13.96ID:Bt1EfjAH
オブジェクト指向デザインパターン原則
変わるものを変わらないものから分離する
インターフェイスに対してプログラミングし、実装に対して行わない
継承より集約
委譲、委譲、委譲
必要になるまで作るな

フレームワーク()はアンチパターンだった?!
(いや>>564が継承が使われてないフレームワークなんてないって言うから…)
2019/08/01(木) 12:54:39.43ID:KG4xWQJs
バカジャね
2019/08/01(木) 15:15:06.70ID:evCmGGoy
継承が一つだけって、当たり前な話だよな。
同じ動詞に違う意味が被ってしまったらどっちだよってなるじゃん。
2019/08/01(木) 15:22:10.67ID:bR99qXsR
>>569
インターフェースの場合、複数あるけど、
どっちのインターフェースだよってならないの?
2019/08/01(木) 15:57:20.06ID:evCmGGoy
>>570
インターフェースを継承するならそりゃあ同じ問題が起こるだろ。
2019/08/01(木) 16:23:47.98ID:bR99qXsR
複数の親クラス(またはインターフェース)を継承したときに名前がかぶる可能性があるという
問題を優れた発想でうまく解決していたのがVB6で、
同じ動詞がどのインターフェースのメソッドなのか判別するために、
継承した場合は、継承元のクラス名をプリフィックスとしてつけるようにしたんだよ。

例えば、fooインターフェースのメソッドを実装するときは、foo_methodという名前で
barインターフェースのメソッドを実装するときは、bar_methodという名前で実装する。
こうすることで意味がかぶることがなくなるというわけ

また呼び出すときは、foo_methodを呼び出すんじゃなくて、fooクラスにキャストする
キャストと言っても、fooインターフェース型の変数に入れるだけだけど

fooとして扱いたいのだから、foo型の変数に入れるのは自然な発想
巧妙な手段で名前がかぶる問題を解決していたんだがこの発想に追いつける言語はまだ現れてないね
2019/08/01(木) 16:25:06.77ID:evCmGGoy
>>572
それって集約であって継承じゃ無いんじゃね?
2019/08/01(木) 16:33:40.23ID:bR99qXsR
>>573
不思議なことを言うな。
集約のうち(ほぼ)すべての処理を親に委譲するパターンが継承だろう
集約と継承は別々のものではなく、集約の形の特殊なパターンを継承と呼ぶだけの話だよ
2019/08/01(木) 16:47:00.16ID:evCmGGoy
>>574
継承は文字通り親から全て継承するから継承だろ?
集約は内包するだけだからな。
むしろ内包してるクラスのオブジェクト名を省略するのが言語仕様として許されてるだけなんじゃね?
2019/08/01(木) 16:50:52.50ID:bR99qXsR
内包するだけで、内包したものを使わないわけ無いだろ?
多かれ少なかれ、内包したオブジェクトを使用する

その時、内包したオブジェクトのほぼ全てをそのまま使用する
特殊なパターンが継承と呼ばれるだけの話
2019/08/01(木) 17:19:45.56ID:RVz/0g1E
SQLみたいにオブジェクト指向を取り入れないので継承ができないものはある
その継承できないものをそのまま使用するオブジェクトもある
継承で解決していた問題を謎のブラックボックスで解決
ブラックボックスの中身はどうなっているのか?という答えは言わない
2019/08/01(木) 18:41:52.50ID:nahgC0Tw
MFCは基本的な継承の親は1つだけど、シリアライズは多重継承してて、
それによってどんなクラスのインスタンスもバイト列で渡せただろ?

要はデザインセンスの問題で、凡人が手を出すところじゃないんだよ

凡人には凡人の仕事があるだろ?
背伸びすんなよ
2019/08/01(木) 21:37:57.56ID:evCmGGoy
アホな言語固有の話をされても噛み合わないのは当然だよな。
2019/08/01(木) 23:48:25.51ID:RVz/0g1E
固有のバグを発見する固有のテストコードを出すのは実用的だよ
代替パラダイムの代替コードを出すよりよっぽど役に立つ
2019/08/02(金) 06:32:40.37ID:q1tjbcbc
言語特性を踏まえてのデザインと汎用的なデザインがあっても、継承は言語によって仕様が違うんだから、ある言語で例えなきゃ意味ないだろ?

Javaだったらクラスは単一の継承だけどインタフェースは多重継承だし
2019/08/02(金) 11:10:29.17ID:kHuLuSZb
ならどの言語での話か、きっちり明確にして語らないとな。
583デフォルトの名無しさん
垢版 |
2019/08/02(金) 20:36:03.50ID:T1FFAKuC
最近のオブジェクト指向では継承は冷遇されてるな。
管理がなってない機能だから、ホワイト除外だww
2019/08/02(金) 20:47:56.12ID:Bh2VReQA
昔から継承より委譲と言っていた
2019/08/02(金) 20:58:08.80ID:6Oyu5dZl
正方形が長方形の一種という現実のオブジェクト指向との矛盾を解消できずに発狂しそうになった過去

オブジェクトを更新できるから話がおかしくなる
2019/08/03(土) 01:57:22.76ID:hrrtZ8qY
長方形を継承するコストが高いだけだから
富豪的スクリプト言語なら問題ない
ゼロコスト抽象化言語も正解
どっちも否定するネガティブで中途半端なやつだけがおかしくなる
587デフォルトの名無しさん
垢版 |
2019/08/03(土) 10:17:20.42ID:37D8ZUar
確かにrustでも継承ないな。
trait、impl組み合わせて頑張ればそれっぽいことできるけどアンチパターンだろうな。
2019/08/03(土) 12:06:59.36ID:aqiFUikh
インターフェイスをそんなに気にするならユニットテストももちろん書くよね。
それでほとんど解決だよ。
机上で考えてる奴はわからんだろうが。
2019/08/03(土) 12:12:21.88ID:eOXqQaf9
ユニットテスト書くから解決ってなにが?

下手なやつのユニットテストはひどい。
ユニットテストじゃなくて、取りあえず動くコードを書く
何をテストしてるのかわからない。とりあえず動けばOKというテストコードを書くから
レビュー不可能なものになる。

それを解決するのが、適切なインターフェースなんだが
2019/08/03(土) 19:03:52.95ID:aqiFUikh
>とりあえず動けばOKというテストコードを書くからレビュー不可能なものになる。
こんな奴がまともにインターフェイスを使えるわけねーだろ。
レビュー不可能になる前に一言言えや。
それでダメならプログラムかかせる方が間違ってる。
591デフォルトの名無しさん
垢版 |
2019/08/07(水) 19:12:26.40ID:KLdMrW7u
>>534
関数型プログラミング?迷惑かけんな。そんなのは愚かなオモチャだ!
生産性が急落する!
https://medium.com/better-programming/fp-toy-7f52ea0a947e
2019/08/07(水) 19:17:16.57ID:WK8NJ3/V
>>591
それ皮肉記事?どっちかよくわからんし、面倒くさいから要点だけ書いて
2019/08/07(水) 21:30:40.25ID:xw2EzjWO
関数型をやらない自由があったから関数型の損失は出なかった
対案を出す義務を植えつけようとしても対案が全然出てこないのも自由だからだな
2019/08/11(日) 13:24:29.24ID:3kg0dm9I
FP is great! Invest some time into learning functional programming,
and you will be ahead of most of your peers.
2019/08/11(日) 17:38:01.23ID:zhYrYZpf
リンク先見たけど
関数型なら直ぐに大丈夫みたいに
最初に思わせる様に書いて有るけど
結局どうすればいいのか?
という点に全く答えてない

ただオブジェクト指向プログラミングの現在の問題点は上手く突いているとは思う
動物の例えも
本来知らなければいけない要素とは関係無い物を持ち出して来て
混乱している
というのは確かにそうだ

オブジェクト指向プログラミングは
上手く使えるとかなり効果的だけど
その効果的を得る為に必要な
手法
方法論
教育教科課程
これ等が無いのが現状一番問題でそれを
生涯学習だ
等と言っている様だね
オブジェクト指向プログラミングを活用する説明が何らかの形でそのうち出てくるだろう
と思っていたけど
現状ですら出てこないのが一番の問題で
各種言語がオブジェクト指向プログラミングから離れていっている

関数プログラミングについては知らないけど
感覚的には多くの人(プログラムする人の8割くらい)にはオブジェクト指向プログラミングより更に
使う事は出来ない
と思うな
オブジェクト思考プログラミングは活用方法の習得方法が開発されれば多くの人が使えるようになると思う
関数型とオブジェクト指向型の差はそこにあると自分は見ている
596デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:42:04.59ID:OmcsUJLa
>>595
リまで読んだ
2019/08/12(月) 13:18:21.11ID:SaWlZ+Bn
ダメなヤツはmainだけで書かれたコードを関数に分割することもできない
C言語でそれすら出来ないヤツは思った以上にいる
構造体の使いどころも分からんやつもいる

ベースの脳みそがそんなのなんだから教育方法の有無は幻想だ
598デフォルトの名無しさん
垢版 |
2019/08/12(月) 13:51:24.42ID:DZttgA6c
>>596
ごくろう。
「る」まで読みたまえ。
2019/08/12(月) 15:54:01.17ID:zKyxPE13
その「る」は未定義だ。
2019/08/17(土) 01:34:52.52ID:o3SCeig4
オブジェクト指向って作りやすいクラス設計と使いやすいクラス設計が対立しない?
両立させようとすると泥沼にはまる
2019/08/17(土) 08:18:00.38ID:7v59WmZe
いいえ、対立しません。
2019/08/17(土) 12:48:55.33ID:4bG7i51/
作りやすいが何を意味して言ってるのか分からないよな。
コピペで乱立出来るから作りやすいのか、コード量が少なくて済むから作りやすいのか。はたまた
603デフォルトの名無しさん
垢版 |
2019/08/17(土) 14:22:45.34ID:QDup2OUo
作りやすいクラスは、抽象クラスのことを言っているのかな?

他人が作ったものをあれこれ言っても仕方ない。
2019/08/17(土) 18:58:53.08ID:PVerLNX2
作りやすいクラスなんかくそくらえ
使いやすいクラスを作ってこそのオブジェクト指向

そのためのコストは安くない
2019/08/17(土) 20:35:53.17ID:PVerLNX2
オブジェクト指向はユーザーに機能の実現以上のことを提供する
データを保護し抽象依存を押し付け
ユーザー、つまりオブジェクト利用者の誤りを防ぐんだ

だが一度きりの使い捨てプログラムや時間に追われた日々の開発で
そんなこと考えてる暇が、テストしてる暇があるか?
2019/08/17(土) 20:45:37.32ID:9WAlKegR
その結果が 7pay である。
2019/08/17(土) 21:02:59.46ID:PVerLNX2
オブジェクト指向が防ぐのはプログラマの誤りだ
悪意からシステムを守る力はそんなにない
2019/08/17(土) 21:43:02.97ID:0hT5zrAG
それもほとんど防げちゃいないがな。
2019/08/17(土) 21:46:31.20ID:PVerLNX2
配列と一緒に長さを別引数で渡さなきゃいけなかった時代のことを忘れない
610デフォルトの名無しさん
垢版 |
2019/08/17(土) 22:01:15.42ID:XkqCHL4r
今思えば0ターミネートよりマシだったのかもしれない
2019/08/17(土) 22:06:30.35ID:g4f/iCif
そら、配列に0入れることもあるんだから
0ターミネートなんてできるわけないやろ
612デフォルトの名無しさん
垢版 |
2019/08/17(土) 22:20:11.14ID:XkqCHL4r
ごめん間違えたわ
2019/08/18(日) 01:03:18.50ID:zcvAoSag
また髪の話してる…
2019/08/18(日) 06:51:17.86ID:t6n5brFa
ゼロに意味があるバイナリデータが正しく扱えない仕様はいかがなものかと。
2019/08/18(日) 07:06:47.98ID:KK6bG3/n
>>614
シェルスクリプト「さーせんwww」
2019/08/18(日) 10:47:50.36ID:HocKQVfh
クライアントサーバの業務アプリをよく受託するけど、
15年前にVB6で作っていた頃の生産性と
今のVB.NETの生産性を比べても
実際よくなってはないというかむしろ生産性落ちてる気がする

優秀な人がたくさん集まれば生産性上がるのかねえ?
617デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:37:53.97ID:2ruw0Xhy
>>616
マイクロソフトの.NET Frameworkはクラスを継承して作るというより、ライブラリを使用して作るものになっているからね。
2019/08/18(日) 11:46:36.91ID:zvOpWkeB
>>616
生産性が上がらないって…どんな環境で作ってるわけ?
2019/08/18(日) 11:49:37.88ID:XCKtcmfj
>>610
そりゃ単なるqueueとかstackなら使い方間違うことないだろうが、
オブジェクト指向マンセー厨がやると変に恣意的かつ複雑なインターフェイスを
やり始める。
オブジェクト指向の問題ってのはそういう詰め込みすぎなクラスを作る傾向が強くなる点だな。
620デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:49:50.78ID:2ruw0Xhy
>>618
どちらもやりなれていれば同じということだと思うよ。VB6.0は止まっているからやりやすい部分もある。
2019/08/18(日) 11:50:36.51ID:KK6bG3/n
> オブジェクト指向マンセー厨がやると変に恣意的かつ複雑なインターフェイスを
> やり始める。

そうか?ちょっとRubyかJavaScriptで例を見せてよ
2019/08/18(日) 11:54:41.01ID:XCKtcmfj
>>621
一般に出回ってる枯れたコードはそういう部分は少ない。
まあそれでもpythonのpandasとかでも十分インターフェイスの統一感はないし、
結果が副作用なのか戻り値なのかわかりにくい。
オブジェクト指向信者が考えるほどこの辺のAPI設計てのは楽じゃない。
2019/08/18(日) 12:21:38.25ID:HocKQVfh
業務アプリ屋さんにとっては、同じことをやるにしても
VB.NETになってコードが膨らんだだけだもんな

.NET Frameworkが出たころはセンセーショナルに宣伝されたり、
したり顔の人がマンセー記事書いたり、そんなに凄いのかと思ったよ

でも、VB6.0の参照設定やポトペタで十分だったよ、平均的な開発者にとっては

あくまでもライブラリ「利用者側」の意見だけど
2019/08/18(日) 12:24:03.47ID:EYkGcDWG
>>618
今も昔もVisual Studioでしょ?違うの?
2019/08/18(日) 12:33:43.15ID:HocKQVfh
優秀じゃない人にかぎって、オブジェクト指向言語を変に持ち上げるんだよね

職業でやってるんだから、同じことが簡単にできればそれでいいんだよ

できないのに、さもエレガントに開発できるよ、できないのは勉強不足だとか
いいだすバカがたくさん沸いて困るよな
そいつが有名なライブラリでも開発してるんならともかく
2019/08/18(日) 12:54:31.50ID:KK6bG3/n
>>622
オブジェクト指向は素晴らしい。

作る時間がない人は、使うだけでもいい。
使うだけなら作る問題は一切関係ない。
使うだけでオブジェクト指向はのすばらしさが分かるだろう。
2019/08/18(日) 12:55:36.10ID:KK6bG3/n
>>625
> 優秀じゃない人にかぎって、オブジェクト指向言語を変に持ち上げるんだよね

罠かな?w

(優秀な人 + 優秀じゃない人)=すべての人がオブジェクト指向言語を持ち上げてる
っていうのが正解だろ?
2019/08/18(日) 13:03:50.16ID:KK6bG3/n
>>616
> 実際よくなってはないというかむしろ生産性落ちてる気がする

生産性が上がらないっていうのはこういうことだよ。

例えば、パソコンを使えば電卓よりも遥かに生産性が上がるだろ?
だがパソコンを使えない人にとってはどうか?電卓のほうが速いだろう?

生産性っていうのは単に道具を入れたら、それだけであがるってものじゃない。
生産性を上げるには使う側の能力もあげなければいけない。

電卓でもなんとか検定があるように使う側が能力を上げれば生産性はあがるが
限界ってのが存在する。どんなに頑張っても限界以上あがらない。
優れた道具はその限界を引き上げる。ただし限界を引き上げるだけなので
使ってる人間が頑張らなければ、今と変わらない。

だから能力があるプロ集団の生産性は著しく向上し、
能力がない素人集団は道具を使えずに生産性が落ちることになる。
出来るところと出来ない所で差がどんどん広がってるんだよ。
2019/08/18(日) 14:09:04.96ID:i3jUiaGe
責任を人が無能なせいしにして
生産性が上がらないという事実に目をつぶろうとする究極無能

この手の無能は本当に厄介
自分だけ破綻すればいいのに周囲を道連れにする
2019/08/18(日) 15:31:43.72ID:KK6bG3/n
生産性を上げるにはどうするかの話やで?
道具を入れたら生産性が上がると勘違いしてるのは誰や?
2019/08/18(日) 17:16:26.08ID:zvOpWkeB
>>624
その機能が違う
2019/08/18(日) 17:38:49.42ID:KK6bG3/n
どんだけVSに良い機能が追加されたとしても、
それを使わないなら、なんの生産性も上がらないのは当たり前だな
2019/08/18(日) 17:45:52.31ID:HocKQVfh
具体的にどの機能が良いの?

個人的には非接続型のADO.NETとか、メリットがよくわからないわ
昔のADOでも非接続が必要なら手段はあったし

日本の平均的なプログラマーには高度でメリットが享受できないんじゃね?
欧米は知らんけど
2019/08/18(日) 18:06:24.72ID:ug0GecaB
ちょっとは調べろよ…
635デフォルトの名無しさん
垢版 |
2019/08/19(月) 20:24:40.67ID:lyoyHZhH
                                                               
 .              ,                   ャ  ィE5!..             
 ..           ,,.e;〆            .、   w===|====!.     π .e、x&             
 ..          ^~ !      ``=    π     ,, カ. _    _ ̄オ⌒|! `ヘ                  
 .         fラ⌒ ̄l「~~~^.        ,.タ.     .ル .ll ~\_   〃 〃.  ^..                  
 .             .オ..      ,...__,xf~.      ^  f!  、               
 .            '^´         ̄ ̄..                                         
          ..                   l|..       r=キ'⌒..           
 .         `!、        ~~~~~~⌒...    l}                        
           ⌒heィ~.     .+s_、_e.     .^+--w=f   `ヲse、._ _、...     ′          
636デフォルトの名無しさん
垢版 |
2019/08/19(月) 21:20:36.58ID:lyoyHZhH
チンポがシコシコするのは、チンポ自身が独立した生き物であり、チンポ自身の意思であり自己決定である。
2019/08/19(月) 21:41:01.59ID:P/EkLDB+
復活しなくていいよちんぽ
638デフォルトの名無しさん
垢版 |
2019/08/21(水) 12:52:57.62ID:S8oWI2wd
機械語やアセンブリ言語から副作用はあれど式を導入して(x = x + 1)手続き型言語が誕生したと考えると、
手続き型言語も機械語から数学に寄ってきた言語で、関数型言語はそれを推し進めた言語とも言える。
(手続き型言語やOOP言語は式と命令が混ざっていると考えれば、純粋手続き型言語はアセンブリ言語?)

ただ、無限ループに関しては遅延評価を取り入れた言語(Haskellなど)がさらに数学に寄った極端な例で、
OCamlやSMLみたいな先行評価な関数型言語は無限ループに関しては手続き型言語と大差無い。

以下のHaskellコードはcycleのみが無限ループの構造だが、他のコードは線形。
(先行評価では無限ループの局所化は無理)


import Data.List
import System

main = mapM_ put $ zip hellos marks

hellos = (cycle.tails) "Hello World!!"

marks = cycle ["/","|","\\","--"]

put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"

cyycleは組込だが、定義はこんな感じ。

cycle xs = xs ++ mycycle xs
2019/08/21(水) 12:59:12.68ID:tOxptV2F
そして関数型言語に足りないのは構造の記述力
手続き的なものはかけるが、それを分割構成するための
構造の記述力が欠けている。

だから大型アプリには適さない。
そして構造の技術力に強いオブジェクト指向言語は
その内部の手続の記述に矛盾なく関数型言語を
取り入れることが出来ている。
640デフォルトの名無しさん
垢版 |
2019/08/21(水) 14:21:32.40ID:S8oWI2wd
Haskellが基にした圏論はまさしく構造を記述する為に生まれた数学だが。。。

大規模開発とかはimportとかのパッケージの話じゃ無いかな?
だったら、別に言語に差異は感じないが。。。
2019/08/21(水) 19:10:28.30ID:kPWPr9E1
無職が開発を語るのはやめよう
2019/08/21(水) 20:09:12.59ID:vrRBM7oH
推し進めたんじゃあなくて関数型のラムダ計算が一番最初に出来上がったんじゃあないの?
■ このスレッドは過去ログ倉庫に格納されています