すごいんだよ?
カプセル化(英語: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
■ このスレッドは過去ログ倉庫に格納されています
2018/10/18(木) 23:20:41.34ID:/ofNkRJS
367デフォルトの名無しさん
2018/10/27(土) 21:08:20.34ID:4RrrP6U6368デフォルトの名無しさん
2018/10/27(土) 21:16:06.32ID:9XazvJsa >>367
そもそもバグコード生成や不具合発生が避けられないものであるという前提で話が出来ないのかな?
そもそもバグコード生成や不具合発生が避けられないものであるという前提で話が出来ないのかな?
369デフォルトの名無しさん
2018/10/27(土) 21:51:44.06ID:r8YaGOoY370デフォルトの名無しさん
2018/10/27(土) 21:54:09.25ID:JpRu0mgz371デフォルトの名無しさん
2018/10/27(土) 22:13:20.04ID:p3Z91K38 どっちもどっち。
大元のクラスライブラリにバグがある事もあるし、100%バグの無いコードは事実上不可能だから、バグが無い前提は流石にあかん。
然りとてバグコード含んだクラスを継承というのも行き過ぎで、十分なデバッグやテストを通してから継承するもの。
理想と現実の狭間で最善尽くすだけ。
上でも何度も言われてるが、オブジェクト指向は銀の弾丸では無い。
大元のクラスライブラリにバグがある事もあるし、100%バグの無いコードは事実上不可能だから、バグが無い前提は流石にあかん。
然りとてバグコード含んだクラスを継承というのも行き過ぎで、十分なデバッグやテストを通してから継承するもの。
理想と現実の狭間で最善尽くすだけ。
上でも何度も言われてるが、オブジェクト指向は銀の弾丸では無い。
372デフォルトの名無しさん
2018/10/27(土) 22:33:52.71ID:7e4UH6L0 >>371
みたいなしょーもないシッタカ意見を排除することからはじめたい
みたいなしょーもないシッタカ意見を排除することからはじめたい
373デフォルトの名無しさん
2018/10/27(土) 22:37:37.79ID:Eqi8BIlY >十分なデバッグやテストを通してから継承するもの
?????????????????????????????
?????????????????????????????
374デフォルトの名無しさん
2018/10/28(日) 01:14:01.05ID:qArEjd5e そもそも関数で組んでれば依存がないものを
メソッドにすることでメソッド同士でメンバ変数を共有することになるのだが
これはいいことなのか?
メソッドにすることでメソッド同士でメンバ変数を共有することになるのだが
これはいいことなのか?
375デフォルトの名無しさん
2018/10/28(日) 02:00:49.16ID:PnJQ4LJT376デフォルトの名無しさん
2018/10/28(日) 02:01:43.41ID:PnJQ4LJT377デフォルトの名無しさん
2018/10/28(日) 03:32:02.39ID:heugqVbH378デフォルトの名無しさん
2018/10/28(日) 04:19:38.38ID:ntMMh/Va 中身のないことを議論とは言わない
379デフォルトの名無しさん
2018/10/28(日) 04:43:07.45ID:heugqVbH それはオブジェクト指向の有効性の議論は
中身はなかったと同義だぞ
中身はなかったと同義だぞ
380デフォルトの名無しさん
2018/10/28(日) 04:52:49.27ID:vBzuIBdi381デフォルトの名無しさん
2018/10/28(日) 04:53:59.71ID:vBzuIBdi382デフォルトの名無しさん
2018/10/28(日) 07:12:49.71ID:PnJQ4LJT383デフォルトの名無しさん
2018/10/28(日) 07:36:23.63ID:MrnoigLK チンポがシコシコするぜ!
384デフォルトの名無しさん
2018/10/28(日) 07:47:13.80ID:9S8iKrwU >>374
そこに疑問を持たないチンカスばっかりなんだよね
そこに疑問を持たないチンカスばっかりなんだよね
385デフォルトの名無しさん
2018/10/28(日) 07:53:29.84ID:JSYSCVAX 共有できるメソッドが制限できているので・・・カプセル化全否定?
副作用副作用言うならimmutableにでもすれば?
副作用副作用言うならimmutableにでもすれば?
386デフォルトの名無しさん
2018/10/28(日) 08:31:13.63ID:q5KpZg+C >>374
フィールドの共有がなかったら全てのフィールドを引数でバケツリレーするようなプログラムになる
引数の数が大爆発して意味不明になるぜ
そもそもフィールドを共有してるから依存があるというのは正しくない
片方のメソッドを消去してももう片方のメソッドは独立に使用し続けられる
なのでそこには依存はないんだぜ
フィールドの共有がなかったら全てのフィールドを引数でバケツリレーするようなプログラムになる
引数の数が大爆発して意味不明になるぜ
そもそもフィールドを共有してるから依存があるというのは正しくない
片方のメソッドを消去してももう片方のメソッドは独立に使用し続けられる
なのでそこには依存はないんだぜ
387デフォルトの名無しさん
2018/10/28(日) 08:38:18.12ID:A1A18Cj4 オブジェクトに対しての作用としてメソッドが存在するのに、メソッドが同じ変数を共有するって発想自体が意味不明だよな。
388デフォルトの名無しさん
2018/10/28(日) 08:47:35.25ID:q5KpZg+C フィールドの共有で依存が発生すると主張するのは
引数の共有で依存が発生すると主張するようなものだな
引数の共有で依存が発生すると主張するようなものだな
389デフォルトの名無しさん
2018/10/28(日) 09:04:48.97ID:A1A18Cj4 相手のメソッド記述するって結合度気にするなら、全部メッセージでやりとりすれば良い。
宛先と送受信の共通の関数さえあれば結合度気にする必要が無いぞ。
宛先と送受信の共通の関数さえあれば結合度気にする必要が無いぞ。
390デフォルトの名無しさん
2018/10/28(日) 09:58:02.87ID:q5KpZg+C 案外、難しく考えない方がいいのかもしれないね
なんか同じこと何度も書いとるなー👉関数
同じ組み合わせの引数ばかりわたしとるなー👉構造体
構造体と関数の組み合わせっていつも同じだなー👉クラス
フィールド直接弄るとバグ出やすいなー👉カプセル化
これでも十分なメリットを享受できる
まずは体感としてこれらのメリットを感じれるまでコードを書く
それから本格的な議論に参加すればいい
逆にこれらのメリットに体感的にすら気付いてないレベルで議論しても時間の無駄だろう
なんか同じこと何度も書いとるなー👉関数
同じ組み合わせの引数ばかりわたしとるなー👉構造体
構造体と関数の組み合わせっていつも同じだなー👉クラス
フィールド直接弄るとバグ出やすいなー👉カプセル化
これでも十分なメリットを享受できる
まずは体感としてこれらのメリットを感じれるまでコードを書く
それから本格的な議論に参加すればいい
逆にこれらのメリットに体感的にすら気付いてないレベルで議論しても時間の無駄だろう
391デフォルトの名無しさん
2018/10/28(日) 10:07:49.72ID:9S8iKrwU >>390
そっか、お前らサルってメリットがどういうものか知らないんだな
メリットってのはお金を産まなきゃ意味がないんだぞ
具体的には工数削減と品質向上だ
工数削減はわかると思うが、さらに品質向上には基準が必要だ
これらの数字を具体的に変更して初めてメリット足りうる
おk?
そっか、お前らサルってメリットがどういうものか知らないんだな
メリットってのはお金を産まなきゃ意味がないんだぞ
具体的には工数削減と品質向上だ
工数削減はわかると思うが、さらに品質向上には基準が必要だ
これらの数字を具体的に変更して初めてメリット足りうる
おk?
392デフォルトの名無しさん
2018/10/28(日) 10:08:23.71ID:9S8iKrwU このスレにいるのは
俺にはサルしか見えない
メリットも見えない技術を使って悦にいってるような雑魚は
そもそも技術者でもプログラマでもなくてサルだろ
俺にはサルしか見えない
メリットも見えない技術を使って悦にいってるような雑魚は
そもそも技術者でもプログラマでもなくてサルだろ
393デフォルトの名無しさん
2018/10/28(日) 10:15:58.76ID:PnJQ4LJT >>391
> 工数削減はわかると思うが、さらに品質向上には基準が必要だ
> これらの数字を具体的に変更して初めてメリット足りうる
> おk?
結論を言ってしまうと、コードメトリクスだね。
ツールを使って客観的に計測できる
> 工数削減はわかると思うが、さらに品質向上には基準が必要だ
> これらの数字を具体的に変更して初めてメリット足りうる
> おk?
結論を言ってしまうと、コードメトリクスだね。
ツールを使って客観的に計測できる
394デフォルトの名無しさん
2018/10/28(日) 10:22:50.11ID:q5KpZg+C >>391
計測すればわかるけど俺が書いたことをやればスコア普通に良くなるよ
誰とは言わないけど感情が全てのサルには理解できないかもしれない
けど計測手段を持ってる人間にとってはオブジェクト指向のメリットは明白なんだよね
計測すればわかるけど俺が書いたことをやればスコア普通に良くなるよ
誰とは言わないけど感情が全てのサルには理解できないかもしれない
けど計測手段を持ってる人間にとってはオブジェクト指向のメリットは明白なんだよね
395デフォルトの名無しさん
2018/10/28(日) 10:27:04.29ID:9S8iKrwU >>394
じゃあ、具体的に何がどういう理由でそうなるの?
じゃあ、具体的に何がどういう理由でそうなるの?
396デフォルトの名無しさん
2018/10/28(日) 10:31:53.41ID:q5KpZg+C397デフォルトの名無しさん
2018/10/28(日) 10:40:16.34ID:9S8iKrwU398デフォルトの名無しさん
2018/10/28(日) 10:46:09.61ID:9S8iKrwU 局所的なグローバル変数を使ってるに過ぎないのにメリットなんかねーよ
バカって結論を俺は持ってるけどね
オブジェクト指向のデメリットはグローバル変数のデメリットと同じなんだよ
バカって結論を俺は持ってるけどね
オブジェクト指向のデメリットはグローバル変数のデメリットと同じなんだよ
399デフォルトの名無しさん
2018/10/28(日) 10:49:54.17ID:PnJQ4LJT >>398
お前が言ってるのは、グローバル関数のデメリットのことだろ?
お前が言ってるのは、グローバル関数のデメリットのことだろ?
400デフォルトの名無しさん
2018/10/28(日) 10:52:05.99ID:PnJQ4LJT グローバル変数が悪だからって
グローバルクラスも、同じグローバルがついてる
悪に違いない!って考えるのは単なる短絡思考
グローバルクラスも、同じグローバルがついてる
悪に違いない!って考えるのは単なる短絡思考
401デフォルトの名無しさん
2018/10/28(日) 10:53:27.65ID:oBRWPPCT グローバル変数は丸出しでかつ一個じゃん?
メンバ変数は隠すこともできてかつ複数じゃん?
あと、まとめて隠しとくメリットもでかくね?
int cap = 32, size = 0, data[cap]; // こーいうのより
vector<int> v; // こっちがスッキリじゃね
メンバ変数は隠すこともできてかつ複数じゃん?
あと、まとめて隠しとくメリットもでかくね?
int cap = 32, size = 0, data[cap]; // こーいうのより
vector<int> v; // こっちがスッキリじゃね
402デフォルトの名無しさん
2018/10/28(日) 10:56:23.17ID:q5KpZg+C 局所的なグローバル変数で爆笑した
コメディアンの才能あるんじゃないか?
コメディアンの才能あるんじゃないか?
403デフォルトの名無しさん
2018/10/28(日) 11:01:33.11ID:oBRWPPCT というよりもよく考えたら
> 局所的なグローバル変数
というのが単に誤解なんだよな
struct data {int value;}
void method(struct data *this) {}
っていう単なるパラメータなんだから
> 局所的なグローバル変数
というのが単に誤解なんだよな
struct data {int value;}
void method(struct data *this) {}
っていう単なるパラメータなんだから
404デフォルトの名無しさん
2018/10/28(日) 11:03:35.69ID:A1A18Cj4 おまえら、オブジェクトの意味を知ってて言ってるのか?
知ってりゃグローバル変数なんて意味不明な話しないかw
知ってりゃグローバル変数なんて意味不明な話しないかw
405デフォルトの名無しさん
2018/10/28(日) 11:13:27.53ID:B8FJbCxl ここだけ30年前かよ
ぽっくんの業務では当てはまりませんでしたー
ってCOBOLでも書いていたらいいよ
別に困ってないだろ?
ぽっくんの業務では当てはまりませんでしたー
ってCOBOLでも書いていたらいいよ
別に困ってないだろ?
406デフォルトの名無しさん
2018/10/28(日) 11:46:39.03ID:WEhY2ED3407デフォルトの名無しさん
2018/10/28(日) 12:58:44.66ID:9S8iKrwU >>386
それで爆発するならメンバ変数の把握できない状態爆発のが問題
状態を複数持つオブジェクトをクラス内に内包すると単純に乗算でその数が増えていく
状態を10個持つクラスと状態を5個持つクラスがあるだけで取りうる状態数は
50個
ウォーズマンの超人パワー波に状態が増えていく
グローバル変数のまずさはこの把握できない状態爆発が本当の問題
問題の本質もわからないサルがオブジェクト指向なんてありがたがってるだけ
それで爆発するならメンバ変数の把握できない状態爆発のが問題
状態を複数持つオブジェクトをクラス内に内包すると単純に乗算でその数が増えていく
状態を10個持つクラスと状態を5個持つクラスがあるだけで取りうる状態数は
50個
ウォーズマンの超人パワー波に状態が増えていく
グローバル変数のまずさはこの把握できない状態爆発が本当の問題
問題の本質もわからないサルがオブジェクト指向なんてありがたがってるだけ
408デフォルトの名無しさん
2018/10/28(日) 13:07:28.41ID:Ok+RtHZ3 ローカル・グローバル・ヴァリアブルwwwwwww
409デフォルトの名無しさん
2018/10/28(日) 13:33:22.60ID:+hej1rjz >>386
それは別に構造体定義して引数で渡せばいいだけだね。
>片方のメソッドを消去してももう片方のメソッドは独立に使用し続けられる
>なのでそこには依存はないんだぜ
メソッドを消去したらみたいな静的なことは問題にしていない。
メソッドの呼び出し順で動作が異なる点について言及している。
つまり状態を共有しているってことについて。
コードベースで見れば確かに構造体の型とそれにひもづく関数を結びつけとくのは
管理しやすいってのはそうだが上記のデメリットをどれだけ上回っているか。
それは別に構造体定義して引数で渡せばいいだけだね。
>片方のメソッドを消去してももう片方のメソッドは独立に使用し続けられる
>なのでそこには依存はないんだぜ
メソッドを消去したらみたいな静的なことは問題にしていない。
メソッドの呼び出し順で動作が異なる点について言及している。
つまり状態を共有しているってことについて。
コードベースで見れば確かに構造体の型とそれにひもづく関数を結びつけとくのは
管理しやすいってのはそうだが上記のデメリットをどれだけ上回っているか。
410デフォルトの名無しさん
2018/10/28(日) 13:58:58.05ID:Ok+RtHZ3 >>409
そうそう
第一段階: 構造体にして渡せばいいだけじゃん(クラス的発想のスタート地点)
第二段階: っていうか構造体と関数っていつもセットだから一緒に管理しよ(メソッド)
第三段界: 管理されたメソッド以外から弄るとバグでやすいから禁止しよ(カプセル化)
キミが言うように「〜すればいいだけだよね」ってのを素直に実践するとOOPに到達するんだよ
キミも後少しで議論のスタート地点にたてるかもね
キミの考え方だと
funcA(pState);
funcB(pState);
これはfuncAとfuncBが状態を共有しているということになるネ
そうそう
第一段階: 構造体にして渡せばいいだけじゃん(クラス的発想のスタート地点)
第二段階: っていうか構造体と関数っていつもセットだから一緒に管理しよ(メソッド)
第三段界: 管理されたメソッド以外から弄るとバグでやすいから禁止しよ(カプセル化)
キミが言うように「〜すればいいだけだよね」ってのを素直に実践するとOOPに到達するんだよ
キミも後少しで議論のスタート地点にたてるかもね
キミの考え方だと
funcA(pState);
funcB(pState);
これはfuncAとfuncBが状態を共有しているということになるネ
411デフォルトの名無しさん
2018/10/28(日) 14:03:43.02ID:9S8iKrwU412デフォルトの名無しさん
2018/10/28(日) 14:06:00.57ID:+hej1rjz >キミの考え方だと
>funcA(pState);
>funcB(pState);
>これはfuncAとfuncBが状態を共有しているということになるネ
ならねーよ。
普通に見ればpStateが状態を共有してるってことになるだろ。
どんな馬鹿な見方をするとこんな考え方になるんだろうか。。
>funcA(pState);
>funcB(pState);
>これはfuncAとfuncBが状態を共有しているということになるネ
ならねーよ。
普通に見ればpStateが状態を共有してるってことになるだろ。
どんな馬鹿な見方をするとこんな考え方になるんだろうか。。
413デフォルトの名無しさん
2018/10/28(日) 14:06:10.12ID:Ok+RtHZ3 補足すると
funcB(pState);
funcA(pState);
にかえると動作が異なるからキミの言い分だと常態を共有しているということだね
さらに最悪なことにカプセル化されてない場合
funcB(pState);
pState->x = 10;
funcA(pState);
みたいなアドホックなコードから状態を変更されるリスクがあるから
事実上プログラム全体で状態を共有しているようなものだね
funcB(pState);
funcA(pState);
にかえると動作が異なるからキミの言い分だと常態を共有しているということだね
さらに最悪なことにカプセル化されてない場合
funcB(pState);
pState->x = 10;
funcA(pState);
みたいなアドホックなコードから状態を変更されるリスクがあるから
事実上プログラム全体で状態を共有しているようなものだね
414デフォルトの名無しさん
2018/10/28(日) 14:07:31.98ID:Ok+RtHZ3415デフォルトの名無しさん
2018/10/28(日) 14:13:50.08ID:9S8iKrwU416デフォルトの名無しさん
2018/10/28(日) 14:25:39.53ID:9S8iKrwU funcA(pState)「僕が変更したのはpStateだけです、グローバル変数なんて使ってませんよ」
pState.funcA()「あああああ!!!!!!!!
(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)」
pState.funcA()「あああああ!!!!!!!!
(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)」
417デフォルトの名無しさん
2018/10/28(日) 14:29:45.55ID:i0t9ojwl オブジェクト指向でも副作用って無くすべきだよなぁ
こういうのって手続きかオブジェクト指向しか触ってこなかった人は気づかないもんかな
こういうのって手続きかオブジェクト指向しか触ってこなかった人は気づかないもんかな
418デフォルトの名無しさん
2018/10/28(日) 14:37:41.79ID:JSYSCVAX pState.func()、funcA(pState)
どちらもpStateを渡して呼び出しているし、pStateを変更しただけです!と言えるのでは
副作用が嫌ならimmutable objectにすれば?
どちらもpStateを渡して呼び出しているし、pStateを変更しただけです!と言えるのでは
副作用が嫌ならimmutable objectにすれば?
419デフォルトの名無しさん
2018/10/28(日) 14:39:53.29ID:86INTnoC >>418
nimではどっちも同じ意味だな…
nimではどっちも同じ意味だな…
420デフォルトの名無しさん
2018/10/28(日) 14:43:01.09ID:WEhY2ED3 もうしっちゃかめっちゃかだな
ホント都市伝説なオブジェクト指向
ホント都市伝説なオブジェクト指向
421デフォルトの名無しさん
2018/10/28(日) 14:47:10.20ID:9S8iKrwU >>418
private無ければな
private無ければな
422デフォルトの名無しさん
2018/10/28(日) 15:03:12.30ID:JSYSCVAX423デフォルトの名無しさん
2018/10/28(日) 15:42:48.94ID:q5KpZg+C >>417
ValueObjectからAggregate Rootまで全部イミュータブルにする派閥もあるよ
ValueObjectからAggregate Rootまで全部イミュータブルにする派閥もあるよ
424デフォルトの名無しさん
2018/10/28(日) 16:02:29.47ID:1gIkUjQ9 あるメソッドがどのスーパークラスで定義されてて、
それがどのスーパークラスでオーバーライドされてて、
結果的にいま自クラスで呼んでるこのメソッドはどこで定義されたものなのかが
わかりにくいのが非常にイライラすることがあるけどお前らどうしてんの?
真面目にクラスライブラリのリファレンスを愚直に辿ってんの?
それがどのスーパークラスでオーバーライドされてて、
結果的にいま自クラスで呼んでるこのメソッドはどこで定義されたものなのかが
わかりにくいのが非常にイライラすることがあるけどお前らどうしてんの?
真面目にクラスライブラリのリファレンスを愚直に辿ってんの?
425デフォルトの名無しさん
2018/10/28(日) 16:09:00.49ID:q5KpZg+C >>424
どれが呼ばれて何をやってるかを気にしなくていいように作るのが正解
どれが呼ばれて何をやってるかを気にしなくていいように作るのが正解
426デフォルトの名無しさん
2018/10/28(日) 16:15:39.00ID:1gIkUjQ9 >>425
そもそも一つ上のスーパークラスで定義されてないメソッドを呼んでるコードを見た時
そのメソッドってどのクラスで定義されてるのかがわからないと、どういう機能のメソッド
なのかわからなくね?
スーパークラスから継承したメソッドはオーバーライドしていなくても全て下位のサブクラスの
リファレンスマニュアルに書いてくれるならいいんだがそうなってないのがイラつくって話
そもそも一つ上のスーパークラスで定義されてないメソッドを呼んでるコードを見た時
そのメソッドってどのクラスで定義されてるのかがわからないと、どういう機能のメソッド
なのかわからなくね?
スーパークラスから継承したメソッドはオーバーライドしていなくても全て下位のサブクラスの
リファレンスマニュアルに書いてくれるならいいんだがそうなってないのがイラつくって話
427デフォルトの名無しさん
2018/10/28(日) 16:25:39.62ID:vBzuIBdi オブジェクト指向と関係あるか不明だけど、一時期関数型言語に嵌って、オブジェクト指向よりも依存性を抑えられて保守性が上がって良いとは思ったんだが、そればかりだとCPUパワーが発揮出来ないんだよね。
(ほぼキャッシュに収まらず、メモリアクセスが増える)
んで、対極のCやアセンブラに手を出した。
今度はグローバル変数が多くなる。
(逆に如何に変数(メモリアドレス)へのアクセス減らしてレジスタ使い回すかで速さが違ってくるから、それはそれで楽しい。ただし8/16ビットに限る。それ以上はハードが複雑になり過ぎる)
結局オブジェクト指向って、その間をとったんじゃ無いかと思うんだよね。(メモリアクセス減らしつつグローバル変数減らす苦肉の策+責任分担)
実際、CからC++への移行期はまだCPUも遅くて、オブジェクト指向にすると遅くなると言う意見が多かった。
(C++やJava、C#、Delphiで一応オブジェクト指向も勉強したけど、効率と言うより保守性や多人数での開発が前提な気がする。コードは全体じゃ増えるけど、このクラスはお前ね。みたいに割り振り易い)
(特にC#は1つのクラスを複数ファイルに分けられるので、メソッド単位で人に任せ易い。個人では逆に分かりにくくて迷惑な機能)
tcl/tkとかある通り、必ずしもGUIはオブジェクト指向じゃ無いと使い難いって事はない。
Haskellだって(関数的じゃないから気持ち悪いだけで)向いてないとは思わなかった。
ただ既にIDEの整っているのがオブジェクト指向ってだけだが、それだけで十分オブジェクト指向を勧める価値はあるんじゃないかな。
(ほぼキャッシュに収まらず、メモリアクセスが増える)
んで、対極のCやアセンブラに手を出した。
今度はグローバル変数が多くなる。
(逆に如何に変数(メモリアドレス)へのアクセス減らしてレジスタ使い回すかで速さが違ってくるから、それはそれで楽しい。ただし8/16ビットに限る。それ以上はハードが複雑になり過ぎる)
結局オブジェクト指向って、その間をとったんじゃ無いかと思うんだよね。(メモリアクセス減らしつつグローバル変数減らす苦肉の策+責任分担)
実際、CからC++への移行期はまだCPUも遅くて、オブジェクト指向にすると遅くなると言う意見が多かった。
(C++やJava、C#、Delphiで一応オブジェクト指向も勉強したけど、効率と言うより保守性や多人数での開発が前提な気がする。コードは全体じゃ増えるけど、このクラスはお前ね。みたいに割り振り易い)
(特にC#は1つのクラスを複数ファイルに分けられるので、メソッド単位で人に任せ易い。個人では逆に分かりにくくて迷惑な機能)
tcl/tkとかある通り、必ずしもGUIはオブジェクト指向じゃ無いと使い難いって事はない。
Haskellだって(関数的じゃないから気持ち悪いだけで)向いてないとは思わなかった。
ただ既にIDEの整っているのがオブジェクト指向ってだけだが、それだけで十分オブジェクト指向を勧める価値はあるんじゃないかな。
428デフォルトの名無しさん
2018/10/28(日) 16:31:22.24ID:q5KpZg+C C#のpatialは分業のためじゃない
コード生成のためだ
コード生成のためだ
429デフォルトの名無しさん
2018/10/28(日) 16:39:33.30ID:WEhY2ED3 >>427
スピードをとても重視するなら不便でも強い最適化のかかる言語を選ぶしかないだろ
突き詰めればCかFortranかアセンブラしかなくなる
逆にvm上やインタプリタでもスピード敵に問題なければ生産性、保守性、可読性、
依存抑制、独立性、局所性、階層化構造、拡張性を重視していいだろ
ほとんどは後者
スピードをとても重視するなら不便でも強い最適化のかかる言語を選ぶしかないだろ
突き詰めればCかFortranかアセンブラしかなくなる
逆にvm上やインタプリタでもスピード敵に問題なければ生産性、保守性、可読性、
依存抑制、独立性、局所性、階層化構造、拡張性を重視していいだろ
ほとんどは後者
430デフォルトの名無しさん
2018/10/28(日) 16:40:53.22ID:9S8iKrwU >>422
値が見えないから
値が見えないから
431デフォルトの名無しさん
2018/10/28(日) 16:42:51.19ID:JSYSCVAX >>430
getterとかプロパティ作って
getterとかプロパティ作って
432デフォルトの名無しさん
2018/10/28(日) 16:44:46.79ID:WEhY2ED3 そうやってwebみたいにくもの巣状態になるんだよな
433デフォルトの名無しさん
2018/10/28(日) 16:45:09.74ID:9S8iKrwU >>431
publicでええよ
publicでええよ
434デフォルトの名無しさん
2018/10/28(日) 16:46:44.13ID:WEhY2ED3 いやいっそclassの外に出せよw
435デフォルトの名無しさん
2018/10/28(日) 16:51:06.47ID:vBzuIBdi436デフォルトの名無しさん
2018/10/28(日) 16:56:20.42ID:oLhbCszz チンポがシコシコするぜ!
437デフォルトの名無しさん
2018/10/28(日) 16:57:12.44ID:WEhY2ED3 >>435
結果として性能的にそういう位置づけに当たることがあるかもしれないが
スピードのための折衷案を目指して作り出された物ではなく
あくまでソフトウエアの構造を表現する新しいパラダイムを目指していたと思うよ。
少なくとも1990年代初期ころまでは。
あとhaskelやMLの生成するnativeコードは結構早い(といわれている
結果として性能的にそういう位置づけに当たることがあるかもしれないが
スピードのための折衷案を目指して作り出された物ではなく
あくまでソフトウエアの構造を表現する新しいパラダイムを目指していたと思うよ。
少なくとも1990年代初期ころまでは。
あとhaskelやMLの生成するnativeコードは結構早い(といわれている
438デフォルトの名無しさん
2018/10/28(日) 17:01:57.75ID:JSYSCVAX439デフォルトの名無しさん
2018/10/28(日) 17:08:22.93ID:Ok+RtHZ3 ネットワークとデータアクセスがあるからパフォーマンス上げるなら水平スケールするように設計する
スケール前提だと細かい最適化は非効率的だし最適化のためにメンテナンス性が悪くなって設計ミスってスケールしなくなったら最悪
スケール前提だと細かい最適化は非効率的だし最適化のためにメンテナンス性が悪くなって設計ミスってスケールしなくなったら最悪
440デフォルトの名無しさん
2018/10/28(日) 17:13:06.13ID:vBzuIBdi >>437
うい。
折衷案を目指したのではなく、悪魔で手続き型言語(構造化プログラミング)の延長として保守性を高めた結果だと思う。
代入が(殆ど)無い関数型言語と違って、代入前提で保守性高めた結果。
因みにMLとOcamlはC並みだと言われるが、少なくともHaskellはLL並みよ?
(C並みにするには先行評価しまくるしか無いので、遅延評価のHaskellは「速くできるけど面倒臭い」)
それでも大規模開発に強いから良いんだろうけど、結局どこぞの銀行にはOcamlが採用されてたね。
Haskell好きだけど、現実はそうだよねーって思うよ。
割と前から言ってるけど、関数型言語はアルゴリズムを読むだけで分かる言語なので学習には向く。
アルゴリズムが分からなかったら関数型言語で理解して、オブジェクト指向言語で書くのが現実的じゃ無いかな。
うい。
折衷案を目指したのではなく、悪魔で手続き型言語(構造化プログラミング)の延長として保守性を高めた結果だと思う。
代入が(殆ど)無い関数型言語と違って、代入前提で保守性高めた結果。
因みにMLとOcamlはC並みだと言われるが、少なくともHaskellはLL並みよ?
(C並みにするには先行評価しまくるしか無いので、遅延評価のHaskellは「速くできるけど面倒臭い」)
それでも大規模開発に強いから良いんだろうけど、結局どこぞの銀行にはOcamlが採用されてたね。
Haskell好きだけど、現実はそうだよねーって思うよ。
割と前から言ってるけど、関数型言語はアルゴリズムを読むだけで分かる言語なので学習には向く。
アルゴリズムが分からなかったら関数型言語で理解して、オブジェクト指向言語で書くのが現実的じゃ無いかな。
441デフォルトの名無しさん
2018/10/28(日) 17:17:31.62ID:WEhY2ED3 >>440
haskelの生成コードの性能については俺の記憶違いかな。
そうなんだよねC++やjavaは基本的には構造化の延長でstructの
instanceのscopeにmethodを結びつけるscopeingで
ソフトウエアを表現しようとして、非階層的extent, scopeの依存の
ネットワークのわなにはまるんだよ
haskelの生成コードの性能については俺の記憶違いかな。
そうなんだよねC++やjavaは基本的には構造化の延長でstructの
instanceのscopeにmethodを結びつけるscopeingで
ソフトウエアを表現しようとして、非階層的extent, scopeの依存の
ネットワークのわなにはまるんだよ
442デフォルトの名無しさん
2018/10/28(日) 17:30:27.68ID:vBzuIBdi >>441
いあ、記憶違いでは無いと思う。
Haskellも実行速度ランキングで一時期一位取ってた。
ただ、それはソースを読むとゴリゴリに最適化したもので、一般には普通に書くとLL並み。
ランキングは言語の速さだけでなく、信者の意地も含めての結果だと思った。
いあ、記憶違いでは無いと思う。
Haskellも実行速度ランキングで一時期一位取ってた。
ただ、それはソースを読むとゴリゴリに最適化したもので、一般には普通に書くとLL並み。
ランキングは言語の速さだけでなく、信者の意地も含めての結果だと思った。
443デフォルトの名無しさん
2018/10/28(日) 17:31:12.68ID:rXYAu0j5 クギと板がある
クギをうち込んで板と板をくっつける
板と板をくっつけるだけの単純なオブジェクトの依存関係でも
それが増えるにつれ、その単純な依存関係ですら低学歴知恵遅れの手にかかると
だれも手に負えないシロモノになってる
オブジェクト指向でも構造化プログラミングでも、低学歴知恵遅れの手にかかれば結果は同じ
ありえないデータ構造になってるというより規格化された構造の痕跡すらない状態になってる
構造化プログラミングでも要求されるまともなデータ構造の設計ができるという前提条件がなければ
当然オブジェクト指向でクラスの設計なんかそもそもムリだからな
ペンギンが空飛ぶとか飛ばないとかまずどうでもいいワケ
それ以前の問題だからな
クギをうち込んで板と板をくっつける
板と板をくっつけるだけの単純なオブジェクトの依存関係でも
それが増えるにつれ、その単純な依存関係ですら低学歴知恵遅れの手にかかると
だれも手に負えないシロモノになってる
オブジェクト指向でも構造化プログラミングでも、低学歴知恵遅れの手にかかれば結果は同じ
ありえないデータ構造になってるというより規格化された構造の痕跡すらない状態になってる
構造化プログラミングでも要求されるまともなデータ構造の設計ができるという前提条件がなければ
当然オブジェクト指向でクラスの設計なんかそもそもムリだからな
ペンギンが空飛ぶとか飛ばないとかまずどうでもいいワケ
それ以前の問題だからな
444デフォルトの名無しさん
2018/10/28(日) 17:35:35.29ID:WEhY2ED3 半角ちゃん、たとえ話がくどいよ
人のことをどうこうじゃなく
オブジェクト指向がどうか なぜそういう話をできないんだあんたは
人のことをどうこうじゃなく
オブジェクト指向がどうか なぜそういう話をできないんだあんたは
445デフォルトの名無しさん
2018/10/28(日) 17:36:35.53ID:86INTnoC いやペンギンが空飛んだら大事件だろ。
世界中でトップニュースになるぞ。
世界中でトップニュースになるぞ。
446デフォルトの名無しさん
2018/10/28(日) 17:44:43.42ID:rXYAu0j5 オレは明確なコタエを一貫して書き込んでる
オレの言説の正しさを補強したレスにちゃんとなってるからな
一切ムダがない
低学歴知恵遅れにオブジェクト指向は
キチガイに刃物
低学歴知恵遅れにオブジェクト指向はムリ
当然、この板にいるような低学歴知恵遅れにオブジェクト指向はムリ
わかった?
低学歴知恵遅れには分かんないか、やっぱり
オレの言説の正しさを補強したレスにちゃんとなってるからな
一切ムダがない
低学歴知恵遅れにオブジェクト指向は
キチガイに刃物
低学歴知恵遅れにオブジェクト指向はムリ
当然、この板にいるような低学歴知恵遅れにオブジェクト指向はムリ
わかった?
低学歴知恵遅れには分かんないか、やっぱり
447デフォルトの名無しさん
2018/10/28(日) 17:59:29.84ID:vBzuIBdi >>446
半分合ってて半分間違い。
知恵遅れに刃物は合ってるけど、だからこそオブジェクト指向でその影響を局所化してる。
構造化プログラミングとかだとグローバル変数が多い分、全体まで影響しかねない。
オブジェクト指向でも構造化プログラミングでも知恵遅れにまともなプログラミングは出来ないのは同意。
だが、周りにかける迷惑の範囲が違う。
半分合ってて半分間違い。
知恵遅れに刃物は合ってるけど、だからこそオブジェクト指向でその影響を局所化してる。
構造化プログラミングとかだとグローバル変数が多い分、全体まで影響しかねない。
オブジェクト指向でも構造化プログラミングでも知恵遅れにまともなプログラミングは出来ないのは同意。
だが、周りにかける迷惑の範囲が違う。
448デフォルトの名無しさん
2018/10/28(日) 18:03:38.75ID:rXYAu0j5 低学歴知恵遅れの理解では
構造化プログラミングはグローバル変数を使うことになるのか
オブジェクト指向なら使わないですむと
やっぱり低学歴知恵遅れがいうことは
一味違うわ
構造化プログラミングはグローバル変数を使うことになるのか
オブジェクト指向なら使わないですむと
やっぱり低学歴知恵遅れがいうことは
一味違うわ
449デフォルトの名無しさん
2018/10/28(日) 18:11:37.14ID:vBzuIBdi450デフォルトの名無しさん
2018/10/28(日) 18:13:14.02ID:rXYAu0j5 こんどは程度とな。。。。
クラスを全部構造体にかえてみ
なにが違うわけ?
クラスを全部構造体にかえてみ
なにが違うわけ?
451デフォルトの名無しさん
2018/10/28(日) 18:18:05.08ID:Ok+RtHZ3 構造体にデータと関数ポインタを持たせてOOPってのはC言語でも昔から知ってる人はやってた
言語でサポートしてミスできないようにしただけで中身は同じなんだよな
ということはアンチOOPの人たちも実質OOPを使っていたと言えなくもないな
言語でサポートしてミスできないようにしただけで中身は同じなんだよな
ということはアンチOOPの人たちも実質OOPを使っていたと言えなくもないな
452デフォルトの名無しさん
2018/10/28(日) 18:45:19.42ID:oLhbCszz でも俺はパソコンに向かって独り言ブツブツ言って、チンポがシコシコしてるだけだ!!!
453デフォルトの名無しさん
2018/10/28(日) 19:02:09.50ID:vBzuIBdi >>450
馬鹿なの?
全部構造体にしたらどこからでも参照し放題でしょ?
全部じゃないが、ある程度の変数がクラス内のメソッドでしか使われないから影響が構造化プログラミングよりはマシなんだよ。
自分の作った構造体を知恵遅れに弄られたいの?
次関数呼んだら、弄られてて予定してた値と違うとかあるんだよ?
(そして、それが自分のせいじゃないとか)
関数型言語は代入が基本的に無いから、同じグローバル変数を使っても、そっちはそっちで勝手にバグ作っててもこっちに影響が無いってだけ。
変数を書き換えることが基本だからオブジェクト指向は生まれたんじゃないかと思うし、それはそれで一つの正解だとは思うよ。
馬鹿なの?
全部構造体にしたらどこからでも参照し放題でしょ?
全部じゃないが、ある程度の変数がクラス内のメソッドでしか使われないから影響が構造化プログラミングよりはマシなんだよ。
自分の作った構造体を知恵遅れに弄られたいの?
次関数呼んだら、弄られてて予定してた値と違うとかあるんだよ?
(そして、それが自分のせいじゃないとか)
関数型言語は代入が基本的に無いから、同じグローバル変数を使っても、そっちはそっちで勝手にバグ作っててもこっちに影響が無いってだけ。
変数を書き換えることが基本だからオブジェクト指向は生まれたんじゃないかと思うし、それはそれで一つの正解だとは思うよ。
454デフォルトの名無しさん
2018/10/28(日) 19:09:04.54ID:vBzuIBdi と言うか最初から関数型言語ほど徹底するとメモリアクセスが増えて遅くなるし、最適化目指すと大規模開発に対応出来ないって書いてる通り、
最初から程度問題の話しかしてないよ。
最初から程度問題の話しかしてないよ。
455デフォルトの名無しさん
2018/10/28(日) 19:27:29.98ID:MrnoigLK チンポがシコシコするぜ!
456デフォルトの名無しさん
2018/10/28(日) 19:27:32.77ID:rXYAu0j5 いじられたくないなら
構造体のポインタにconstつけて入力の引数でわたせばおしまい
いじられたくないのに
なんでグローバルスコープでなんでもありでわたそうとすんの?
どうしてそんなに低学歴知恵遅れは頭ワルイの?
もしかして低学歴知恵遅れは
引数の入力となる状態が変更されないクラスのインスタンスにconstつけたり
クラスのインスタンスが変更されないメソッドにconstをちゃんとつけたりもしないの?
どうしてもグローバルスコープにおきたいなら
最低でもconstの構造体ポインタでアクセスできるようにでもしとけば
知恵遅れが想定外の記述をしないかぎり変更されることはないからな
やっぱりな低学歴知恵遅れにオブジェクト指向はムリ
構造体のポインタにconstつけて入力の引数でわたせばおしまい
いじられたくないのに
なんでグローバルスコープでなんでもありでわたそうとすんの?
どうしてそんなに低学歴知恵遅れは頭ワルイの?
もしかして低学歴知恵遅れは
引数の入力となる状態が変更されないクラスのインスタンスにconstつけたり
クラスのインスタンスが変更されないメソッドにconstをちゃんとつけたりもしないの?
どうしてもグローバルスコープにおきたいなら
最低でもconstの構造体ポインタでアクセスできるようにでもしとけば
知恵遅れが想定外の記述をしないかぎり変更されることはないからな
やっぱりな低学歴知恵遅れにオブジェクト指向はムリ
457デフォルトの名無しさん
2018/10/28(日) 19:34:00.47ID:vBzuIBdi >>456
お前、Win32APIでプログラミングしたこと無いだろ。
お前、Win32APIでプログラミングしたこと無いだろ。
458デフォルトの名無しさん
2018/10/28(日) 19:38:58.32ID:rXYAu0j5 こんどはwin32APIとな。。。
win32APIってmicrosoftがmicrosoft windowsで提供するただのアプリケーションインターフェースのことだが
それがどうかしたのか。。。
ホントなこんなのがオブジェクト指向()とかなんとかいっちゃってるワケだからな
win32APIってmicrosoftがmicrosoft windowsで提供するただのアプリケーションインターフェースのことだが
それがどうかしたのか。。。
ホントなこんなのがオブジェクト指向()とかなんとかいっちゃってるワケだからな
459デフォルトの名無しさん
2018/10/28(日) 19:41:44.86ID:Niq+/yqY どういう問題を示唆されてるかわからなければ半角は黙ったほうが良いよ。
また恥晒すの?
低スペだから?
また恥晒すの?
低スペだから?
460デフォルトの名無しさん
2018/10/28(日) 19:43:54.73ID:rXYAu0j5 また低学歴知恵遅れがしゃしゃりでてきてるわ
大体分かるwindowsでイベントの処理でデータをうまく渡すことが
低学歴知恵遅れのオツムではまともにできない
大体分かるwindowsでイベントの処理でデータをうまく渡すことが
低学歴知恵遅れのオツムではまともにできない
461デフォルトの名無しさん
2018/10/28(日) 19:45:20.34ID:1gIkUjQ9 自分だけはバカじゃないという前提
462デフォルトの名無しさん
2018/10/28(日) 19:45:50.75ID:rXYAu0j5 それが低学歴知恵遅れの程度
463デフォルトの名無しさん
2018/10/28(日) 19:46:34.49ID:rXYAu0j5 マジでキミラって低学歴知恵遅れ自覚がないの?
464デフォルトの名無しさん
2018/10/28(日) 19:49:16.31ID:rXYAu0j5 こんなのが偉そうに講釈たれてんのがこの板だからな
相当に低学歴で
相当に知能が低い
まずコイツラをこの板から排除しないと板が正常化しない
相当に低学歴で
相当に知能が低い
まずコイツラをこの板から排除しないと板が正常化しない
465デフォルトの名無しさん
2018/10/28(日) 19:53:41.93ID:MrnoigLK 米国で上位1%が富の独占をしている大きな理由は、労働者をスキルや成果で大きく選別しているからだ。
しかしながらそうでもしないと、ドラクエ10の下請けのように、コードの質が大きく落ちてしまう。
俺はドラクエ一筋なんてのはむしろゴミなコードを入れてしまう『有害な』働き者なのだ。
それは中小企業のデスクワークによくありがちな、要らない書類ばかり作って俺は仕事ができるみたいなものだ。
提案広場でよく『そう思わない』される理由
http://dragon-quest.me/dq10/27646/
このゲームすぐ持ち物いっぱいになるな
http://dragon-quest.me/dq10/28435/
【ドルボードGP】おいwデスルーラ作戦晒すなやwwwww
http://dragon-quest.me/dq10/28002/
でも月額千円では、下請けプログラマーの選別なんて出来っこないだろう?
>このゲームすぐ持ち物いっぱいになるな
ゲームの仕様について意見を出すと、必ずといっていいほどに『そう思わない』で真っ青。
つまり準廃プレイヤー=下請けプログラマーには、ゲームの仕様を変える能力が欠如しているのだ。
アルバイトの賃金が低いのはスキルを必要としない単純作業だからで、労働者にスキルを求めるのであれば、
アルバイトよりも高い賃金を上乗せして払わなければならず、更に成果に応じた報酬も必要となる。
しかしながらそうでもしないと、ドラクエ10の下請けのように、コードの質が大きく落ちてしまう。
俺はドラクエ一筋なんてのはむしろゴミなコードを入れてしまう『有害な』働き者なのだ。
それは中小企業のデスクワークによくありがちな、要らない書類ばかり作って俺は仕事ができるみたいなものだ。
提案広場でよく『そう思わない』される理由
http://dragon-quest.me/dq10/27646/
このゲームすぐ持ち物いっぱいになるな
http://dragon-quest.me/dq10/28435/
【ドルボードGP】おいwデスルーラ作戦晒すなやwwwww
http://dragon-quest.me/dq10/28002/
でも月額千円では、下請けプログラマーの選別なんて出来っこないだろう?
>このゲームすぐ持ち物いっぱいになるな
ゲームの仕様について意見を出すと、必ずといっていいほどに『そう思わない』で真っ青。
つまり準廃プレイヤー=下請けプログラマーには、ゲームの仕様を変える能力が欠如しているのだ。
アルバイトの賃金が低いのはスキルを必要としない単純作業だからで、労働者にスキルを求めるのであれば、
アルバイトよりも高い賃金を上乗せして払わなければならず、更に成果に応じた報酬も必要となる。
466デフォルトの名無しさん
2018/10/28(日) 19:56:46.74ID:vBzuIBdi constとか書いてるからさ。
作ってみりゃわかるけど、const付けて〜とか事実上無理。
子Windowの値を親Windowに反映させる時点でグローバル変数が出て来るし、代入不可避。
(別々のコールバック関数が必要)
const〜で済んでりゃMFCや.netは出てない。
作ってみりゃわかるけど、const付けて〜とか事実上無理。
子Windowの値を親Windowに反映させる時点でグローバル変数が出て来るし、代入不可避。
(別々のコールバック関数が必要)
const〜で済んでりゃMFCや.netは出てない。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 ★3 [少考さん★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★3 [Hitzeschleier★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★2 [Hitzeschleier★]
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 ★4 [少考さん★]
- 「ヒートテックに寿命があります」ユニクロが明かした“3年劣化”の理由 暖かさが落ちる意外な原因とは [ぐれ★]
- 三谷幸喜氏 温泉嫌いの理由を熱弁「知らない人の股間を素通りしたお湯なんですよ」「おじさんの肛門を通り過ぎたお湯が自分の前に」 [Ailuropoda melanoleuca★]
- 胡蝶しのぶ(鬼滅の刃)の肩ズンFig.フィギュアキタ━━━━(゚∀゚)━━━━!! [723839345]
- 【悲報】すまん何で日本ってこんなに反『中国』が増えたんだ?ネトウヨどころかそこらの一般人レベルでもゴロゴロいる [483447288]
- あ、出ちゃう、イクッ😫💦🏡
- 【実況】博衣こよりのえちえちドラクエ1&4リメイク🧪★2
- ホロライブ百鬼あやめさん、純粋なファンをXでブロックしてしまう
- 拓殖大学教授(小野田母校)「日中対立が立憲の仕掛けで発生したのなら立憲が中国と抗議して問題を解決しろ」高市 [931948549]
