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

レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/10/18(木) 23:20:41.34ID:/ofNkRJS
すごいんだよ?


カプセル化(英語: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/
880デフォルトの名無しさん
垢版 |
2018/11/20(火) 23:18:47.68ID:Vm2a6rBd
なんちゃってって何や?
2018/11/20(火) 23:24:06.45ID:l2byaKpo
裸の王様って童話知ってる?
882デフォルトの名無しさん
垢版 |
2018/11/20(火) 23:25:31.52ID:Vm2a6rBd
童話って何や?
2018/11/20(火) 23:26:50.47ID:l2byaKpo
その中で、沿道にいた一人の小さな子供が、
「だけど、なんにも着てないよ!」と叫び、群衆はざわめいた。
「なんにも着ていらっしゃらないのか?」と、ざわめきは広がり、
ついに皆が「なんにも着ていらっしゃらない!」と叫びだすなか、
皇帝のパレードは続くのだった。
2018/11/20(火) 23:29:45.37ID:l2byaKpo
皇帝はうろたえるが、家来たちにはオブジェクト指向がわからないとは言えず、
オブジェクト指向のメリットを大声で賞賛し、
周囲のプログラマも調子を合わせてオブジェクト指向を褒める
2018/11/20(火) 23:32:41.60ID:l2byaKpo
まんまお前らだなw

staticおじさんと五十歩百歩w
2018/11/20(火) 23:57:53.01ID:1npKfTne
じゃあ上でOOPの弱点を指摘するレスをかいてたオレは
差し詰めその小さな子供見たいに無垢で正直なんだな
2018/11/21(水) 00:13:49.18ID:RC26/6OQ
constおじさん大暴れ
2018/11/21(水) 00:18:05.20ID:zIpdinjM
それは、オレではないww
残念でしたー
2018/11/21(水) 00:36:54.68ID:8MyYCmiU
流れを読まずに持論を書く

オブジェクト指向とはデータ構造と それに作用するメソッドを結びつけること
逆に言えば、そのデータに結びつかない作用や参照を排除するアクセス機構を持つ
つまりはカプセル化こそが本質

実際、これはオブジェクト指向という言葉がメジャーになる前から使われていて
Cの標準ライブラリにあるFILE構造体はその典型と言える
FILE構造体にはアクセス制限はかけられていない、というかCではかけられないけど
直接アクセスしなくてもファイル操作には困らない
FILE構造体というデータ構造に対する必要十分なメソッドは用意されてる

継承や多態性などはオブジェクト指向を便利に使うためのユーティリティに過ぎない
これらは節度ある使い方をすれば便利だけど、やり過ぎると確かに副作用はある
2018/11/21(水) 00:38:45.87ID:zIpdinjM
>>889
それと構造体のインスタンスとの違いは何だと思う?
2018/11/21(水) 00:52:09.02ID:8MyYCmiU
>>890
質問の意味を取り違えてるかも知れないけど
構造体が使えるならオブジェクト指向は要らないのでは、という意味かな

問題は使い方にある
オブジェクト指向言語とはオブジェクト指向的な作りをサポートする言語
2018/11/21(水) 01:04:22.97ID:zIpdinjM
>>891
違いはあります。それは何だと思うのか聞いたのが>>890

使い方は書き方次第なんだけど…

それはさておき
「オブジェクト指向的な作りをサポート」
って何
2018/11/21(水) 01:06:57.00ID:zIpdinjM
ま、今夜は寝るわ。
あう機会があったら
またねノシ
2018/11/21(水) 01:19:24.31ID:8MyYCmiU
>>892
すまんね
>>890 の文の先頭にある「それ」が何を指してるのか不明確だったので

Cの構造体とC++のクラスの違いという意味かな
それは >>889 に書いた通りカプセル化されているかどうかということだろ
Cの構造体ではデータにアクセスするメソッドを制限できないが
オブジェクト指向言語なら出来る
サポートとはそういうこと
2018/11/21(水) 01:20:25.70ID:ILAAUKO6
「スマンがお前らがガタガタ抜かすよか遥か昔に『オブジェクト』っつう計算機科学用語生み出したの俺なんだわw
黙ってようと思ったけどさ、あんまりお前らが的外れなこと偉そうにグダグダ言ってるもんで。しかも枝葉ww
一番大切なことは何か教えといてやろうか?
それは『メッセージング』だよ」
──アラン・ケイ(俺私訳)
2018/11/21(水) 01:33:17.63ID:ILAAUKO6
「俺様にとってOOPとは、メッセージング、状態プロセスを隠蔽しローカルに保持・保護すること(薬中:カプセル化のこと)、そしてすべてに対する遅延バインディングの徹底、これに尽きる」
──アラン・ケイ(俺私訳)
2018/11/21(水) 01:47:09.00ID:ILAAUKO6
アラン・ケイの言うOOPに必須の要素:
・カプセル化
・メッセージパッシング
・動的バインディング(実行時に於けるプログラムの進化・適応能力)
必須ではない要素:
・クラス
・クラス継承
・オブジェクト・関数・データの特別扱い
・newキーワード
・多態(ポリモーフィズム)
・静的型
・クラスを「型」として認識すること
2018/11/21(水) 01:59:47.29ID:ILAAUKO6
「『オブジェクト指向』っつう用語は俺が造ったが、C++とやらにはそれについて語ることがなんにもない」
──アラン・ケイ(俺私訳)(C++が引き合いに出されてるがこの発言は97年。もっと遅ければJavaになったのだろうか…?)
2018/11/21(水) 02:13:11.72ID:8MyYCmiU
>>898
こういうこと言うから初心者は混乱するのでは
ケイにしたって先行するSimulaがなければオブジェクト指向を発想出来なかったし
Smalltakも作れなかったと思う
2018/11/21(水) 02:15:17.92ID:8MyYCmiU
>>899
スペルミス
Smalltalk
2018/11/21(水) 02:20:09.41ID:zIpdinjM
>>898
そんなやり方でで
大規模で複雑化するソフトウエアが表現できないから
問題が顕在化してるのに
まぁ寝るわ
2018/11/21(水) 02:37:44.49ID:SfkVXijR
>>901
何だその言い訳
ラーメンの出前頼んだ人に「ラーメンだと冷めるし伸びちゃうでしょ?だから寿司を持ってきたよ。君にはラーメンじゃなくてコレが必要なんだ!だからコレを今日からラーメンではなくて寿司と呼ぶよ!」と言ってるようなもん。意味不明。

ラーメンの冷める、伸びるといった問題が顕在化してきて、寿司がそれを解決できるからといって、寿司こそが真のラーメンであるということにはならない。
2018/11/21(水) 02:38:44.44ID:SfkVXijR
寿司ではなくラーメンと呼ぶ、だった
2018/11/21(水) 07:08:50.55ID:ziJlPcJv
ここまでオブジェクト指向の数値的なメリットなし
2018/11/21(水) 07:10:32.88ID:ziJlPcJv
議論してる奴等は全員使ってる技術のメリットもあげられないサル
2018/11/21(水) 07:39:32.60ID:NVAWjNTH
>>904
だから早く答えて

>>801
> オブジェクト指向のメリットを数字をあげて一つも説明できないわけでしょ?

数字? オブジェクト指向が使われてる
プロジェクト数とかでいい?

なんの数字がでればいいかいってみて 
2018/11/21(水) 07:59:06.79ID:ziJlPcJv
>>906
それは君が思うオブジェクト指向のメリット次第じゃない?
その説明に必要な数字を出せばいい
2018/11/21(水) 08:02:19.92ID:AzUCjiVS
>>904
デメリットのもなし。
目糞鼻糞
2018/11/21(水) 08:03:11.06ID:1y5iZMYL
メリットくん、半角くん、チンポくん

ウォッチしてんなーw
2018/11/21(水) 08:07:49.07ID:HZRf7c2A
nodeやり始めたときに関数型やイベントでどうやってプログラムを組み上げていいかわからず
結局オブジェクト指向の書き方になってしまった
2018/11/21(水) 08:09:42.68ID:K8VHhpBv
jsは関数型でも非同期が最大のメリットだからまた一味違うんだよな
Goやれ
2018/11/21(水) 08:24:22.62ID:ruXLd7u/
メリットくんも言語の素養がないしな

まず自分から定量化のための指標を提示しなさいよ
2018/11/21(水) 08:24:46.50ID:NVAWjNTH
>>907
> それは君が思うオブジェクト指向のメリット次第じゃない?
> その説明に必要な数字を出せばいい

どんな数字を出しても納得しないっていうのだから
聞くしか無いでしょう?
2018/11/21(水) 09:33:50.45ID:No2NMZ8g
- Simulaはクラスとオブジェクトという言語機能は与えたけど「オブジェクト指向」は(当初は)考えられていない
- (ごく初期の)Smalltalkはメッセージングによる「決定の遅延」の徹底とそのサポートをもって「オブジェクト指向」と呼んだ
- C++は、ユーザーによるデータ型定義(抽象データ型、データ抽象)をSimulaのクラスを使ってやるアイデアを「オブジェクト指向」と呼んだ
2018/11/21(水) 09:41:46.92ID:No2NMZ8g
だから、「オブジェクト指向」のメリットというのは

- Smalltalk(ケイの主張)の「オブジェクト指向」なら、実装中、実装完了後、必要なら実行中も決定を変えられる柔軟性。
- C++(ストラウストラップの主張)では継承を活用した差分プログラミングと自在に定義可能な型を用いた安全なプログラミング

ということになる。ただし、

前者のメッセージングは主に効率の面からスケールしないことが早々に分かって、Smalltalkを含め
単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

後者も「差分プログラミング」については、「型安全なプログラミング」が保証できない場合があることが早々に指摘され
その用途でのクラスの欠点を補うことを目的に「インターフェース」が考案され現在はこちらが広く用いられている。

とまあ紆余曲折はあったが、前述のメリット(目指す先)はその後も大きくは変わっていない
2018/11/21(水) 11:13:01.71ID:VgS6VJyN
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

ナンチャッテメッセージングスタイルになることによってプログラミング言語が失ってしまったものは何だったのでしょうか?
2018/11/21(水) 12:19:22.25ID:ZdAecqpt
>>913
それは君がメリットを明確にしないからじゃん
2018/11/21(水) 12:39:53.31ID:No2NMZ8g
>>916
単純に並行並列・分散というような処理におけるスケーラビリティでしょうね

ヒューイットのアクターはSmalltalk-72(初期のSmalltalk処理系で、非同期ではないながらも
トークン列をメッセージとして一応処理していました)をヒントに、ケイのメッセージングのアイデアを並列処理に応用し
定式化を試みた理論で、今、このアクター理論に基づく言語機能やライブラリを備えた言語が各所で重宝されています

アクター理論こそ真の(ケイの目指した)「オブジェクト指向」だと言う人もいますが、これはちょっと言い過ぎですね
両者はメッセージングという共通項は持ちますが、かたや並列並行処理、かたや決定の遅延と、問題にしている領域が違うので…
2018/11/21(水) 12:45:55.83ID:UM5ff+tU
> - Smalltalk(ケイの主張)の「オブジェクト指向」なら、実装中、実装完了後、必要なら実行中も決定を変えられる柔軟性。

この「実行中」の定義が今と常識とぜんぜん違うんでしょ?
Smalltalkは実行環境でOSみたいなもんだから、
「実行中も決定を変えられる」っていうのは
今で言うOS起動中にプロセスを再起動できる程度の意味でしょう

今はプロセスは通常は複数のオブジェクトの集まりでできているけど
アランケイの時代は1プロセスが1オブジェクトレベル程度の小さなものだった
そういう想定だから1オブジェクトを入れ替えるという発想も理解できるが、
今だと複数のオブジェクトを同時に入れ替えないと正しく動作しないので
そんな1オブジェクトずつちまちまと動作を変えていくなんてありえない

そもそもアランケイの言う「実行中」は「起動中」であって
「使用中」じゃないんだろう。マルチユーザーで誰かが使用している最中に
入れ替えるとか怖くてできない。入れ替えるにしても保存したら即反映じゃなくて
ユーザーが誰も使用してない状態にして入れ替えないとだめだろうしな。

つまりアランケイが求めていた柔軟性は、OSとプロセスの概念によって
もっと実用的な形で実現されてしまった。だから誰も言語にそんな物を求めていない
2018/11/21(水) 13:24:30.02ID:No2NMZ8g
>>919
なんでこの流れでそこまで徹底的に否定しないと気が済まないのか分からないけど(Smalltalkに親でも殺された?)
「オブジェクト指向」とは何かを説明したまでで、それに対する批判や感想は勝手にやってもらったらいいと思うよ

ただ

> 今で言うOS起動中にプロセスを再起動できる程度の意味

というのはちょっと現状の制約に合わせて矮小化しすぎのような気がする

アラン・ケイが目指したのはたぶん通常は手を入れない((セキュリティや安全面から当然だが)枠組みそれ自体
(たとえば言語処理系)における決定事項も変更可能なほどの柔軟性(メタ機能)なので
http://squab.no-ip.com/collab/uploads/61/IsSoftwareEngineeringAnOxymoron.pdf

関連して、(繰り返しになるけどその善し悪しは別にして)自身の枠組みに手を入れられること以外にも
デフォで永続化可能っていうのも今のOS(における仮想化したそれ自体やプロセスの再起動)には考慮されないファクターだよね
2018/11/21(水) 17:04:46.25ID:bLoKnUqC
>>919
いや、今も昔も、Smalltalkではメソッドを実行中のオブジェクトについてもクラス定義やメソッドを変更することができる。
Smalltalk-80が失ったのは、メッセージ自体が持つオブジェクトらしさ。メッセージセレクタはオブジェクトではあるが、ソースコード上はあまりオブジェクトらしい扱いになっていない。
2018/11/21(水) 17:44:11.51ID:No2NMZ8g
>>921
細かいことで恐縮ですが

> Smalltalk-80が失ったのは

ナンチャッテメッセージングスタイルになったのはSmalltalk-76からなので正確には「Smalltalkが-76以後失ったのは」かと…

> ソースコード上はあまりオブジェクトらしい扱いになっていない。

「ソースコード上でのオブジェクトらしい扱い」って具体的にはどういった感じでしょうか?
メッセージセレクタはメッセージを構成するトークンとして現れていますし、オブジェクトらしい扱いは一応受けているとおもうのですが

「(メソッドコールの)処理上、(セレクタではなく)メッセージが」
(既存メソッドのコールであればVM内で完結することもあって、メッセージっぽい扱いをされていない)、ではなく?
2018/11/21(水) 18:19:44.20ID:UM5ff+tU
>>921
> いや、今も昔も、Smalltalkではメソッドを実行中のオブジェクトについてもクラス定義やメソッドを変更することができる。

「変更することが出来る」っていうことはわかってるんだよ
そこは重要じゃない。重要なのは変更してもシステムは
エラーなく続行し続けられるか?でしょ?

関数型言語なら状態を持たないからわかるけど
Smalltalkはオブジェクト指向なんだから状態を持っている
状態を持っているまま処理内容だけを変更したら
(データに互換性がない場合)エラー出るでしょ?

クラス定義を変えるならば、インターフェースが変わることだってある
その場合、クラス定義だけじゃなくて、クラスを使っている方も
同時に変更しなければいけない。

もちろんリファクタリングとデータのマイグレーション(変換)を駆使すれば
プログラムを走らせながら、変更するのは可能かもしれないけど、
そんなアクロバットプログラミングなんて誰も求めてない
サービスの一時停止やプロセスの再起動で許されることのほうが多いでしょって話
924デフォルトの名無しさん
垢版 |
2018/11/21(水) 18:30:17.93ID:BbP/iGml
オブジェクト指向とオブジェクト指向プログラミング言語とは、方向性が真逆。
むしろオブジェクト指向を意識しなくてもオブジェクト指向プログラミングできるのが、
Rubyのような『いわゆる』オブジェクト指向プログラミング言語。

627 デフォルトの名無しさん 2018/11/01(木) 04:32:24.08 ID:PmS8KjrS
一回こっきりの家庭用ソロゲーを作成するなら、オブジェクト指向がチンポがうんたらは必要無い。

──オブジェクト指向の言語を書こうというのに、オブジェクト指向でないCで書かれているというのは意外な気もします。
まつもと「CでRubyのオブジェクト指向を作ってて、その機能はCからも使えるんですよ。
だからRubyのC実装って、Cで書かれているんだけどRubyのオブジェクト指向で書ける。
僕はこれが好みなんですが、違う人も多いみたいですね」
http://ascii.jp/elem/000/001/228/1228027/

しかしながら将来的に改変したり削除したり拡張したりする場合、『チンポ』のような多態性が不可欠。
925デフォルトの名無しさん
垢版 |
2018/11/21(水) 18:36:07.42ID:8Yc2p7H1
>>919
>そもそもアランケイの言う「実行中」は「起動中」であって
>「使用中」じゃないんだろう。マルチユーザーで誰かが使用している最中に

チンポがシコシコしている間、俺はそれでも俺なのかと尋ねた。

829 デフォルトの名無しさん 2018/11/11(日) 09:52:59.70 ID:y84pWKv0
(第1章 はじめに 2頁)
たとえば、CycはFredという名前の男が朝にひげをそるという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には電気の部品がないことは知っているが、
Fredが電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」
には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、
Fredはそれでも人間なのかと尋ねた。

『深層学習』
著者:
Ian Goodfellow, イアングッドフェロー,
Yoshua Bengio, ヨシュアベンジオ,
Aaron Courville, アーロンカービル
2018/11/21(水) 18:37:29.28ID:UM5ff+tU
>>925
たとえば、CycはFredという名前の男がドナルドダックのモノマネをするという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には羽がないことは知っているが、
アヒルのように歩き、アヒルのように鳴くものはアヒルに違いないと考えた。
したがって、CycはFredがドナルドダックのモノマネしている間、
Fredはそれでも人間なのかと尋ねた。
927デフォルトの名無しさん
垢版 |
2018/11/21(水) 18:53:28.93ID:8Yc2p7H1
>>919
>この「実行中」の定義が今と常識とぜんぜん違うんでしょ?

『オブジェクト指向』なる『概念』そのものはずっと前から俺の股間に付いているんだけど、
『オブジェクト指向プログラミング言語』はごく最近、これまでに無かった『機能』が追加されたんだろう?
928デフォルトの名無しさん
垢版 |
2018/11/21(水) 18:59:11.61ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。
929デフォルトの名無しさん
垢版 |
2018/11/21(水) 19:07:17.83ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
2018/11/21(水) 19:36:14.36ID:bLoKnUqC
>>922
レシーバ セレクタ 引数
これらのうちレシーバと引数は表現式(オブジェクト)ですが、セレクタはそれ単独では表現式(オブジェクト)ではないですね。もちろんメソッド内のリテラルにセレクタがシンボルオブジェクトとして格納されているので実体としてはオブジェクトですが。
2018/11/21(水) 21:55:34.70ID:Xc/Hc18Z
オブジェクト指向を語るお前らがクソ
2018/11/21(水) 22:07:53.22ID:ZgksAXKX
オブジェクト指向のメリット

型を持ってる変数が最初にくるから
書くときIDEのインテリセンスが使いやすくて便利
2018/11/21(水) 22:09:43.33ID:LAJ52fwT
型はオブジェクト指向の要素じゃない。次!
2018/11/21(水) 22:11:59.32ID:ZgksAXKX
でも大抵型ついてるし変数が最初にくるからそれが使いやすいんだ
オブジェクト指向以外でそんなのあるか?
2018/11/21(水) 22:20:32.18ID:Poi4aHpr
>>930
なるほど

ただ、Smalltalk-72でも(セレクタ同様、トークナイズ後にシンボル様オブジェクトとして扱われるとは言え)
リテラルでないトークンをメッセージに混ぜられますよね?

例えばSmalltalk-72のウィンドウを生成するメッセージ式は

👉dp ← dispframe 100 75 100 120 string 200.!

のように記述するのですが(念のため、dispframeがレシーバ、100 75 100 120 string 200 がメッセージです)
http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/parc/techReports/Smalltalk-72_Instruction_Manual_Mar76.pdf p.30

最後から二番目の「string」は続く引数がバッファサイズであることをパターン認識により見分けられるよう添えらます

リテラルではないこともあわせ、このstringはセレクタ(の特にキーワード)に近い役割&扱いだと言うことができそうなので
Smalltalk-76以降の文法で失われた…とするのはちょっと弱いように思いました

あくまで個人の感想ですが
2018/11/21(水) 22:35:28.94ID:UM5ff+tU
オブジェクト指向言語のメリット
オブジェクト指向がやりやすい
2018/11/21(水) 22:39:18.12ID:DBPerFhf
とことん手段指向
身もフタもないな
2018/11/21(水) 23:18:04.82ID:UM5ff+tU
オブジェクト指向のメリットは?とよく聞かれますが、
そもそも、オブジェクト指向以外のやり方にメリットが
ないってのが答えなんですよね

オブジェクト指向以外のメリットを書くスレ
https://mevius.5ch.net/test/read.cgi/tech/1542808008/
939デフォルトの名無しさん
垢版 |
2018/11/21(水) 23:19:44.65ID:JM/nMfDs
>>938
つまりオブジェクト指向にもメリットがないと言いたいのかstaticおじさん
2018/11/21(水) 23:19:48.93ID:QCzQZ2rP
オブジェクト単位に分ける工程が無駄
ハイ、論破
2018/11/21(水) 23:52:34.04ID:UM5ff+tU
それを数値で示していない。はい論破返し
2018/11/22(木) 00:02:06.85ID:SJlwfHl4
ガウディ本読んでる奴が居ない件の
2018/11/22(木) 00:06:13.73ID:WA/+SJn9
                  ハヽ/::::ヽ.ヘ===ァ       
                  {::{/≧===≦V:/、       
               / >:´:::::::::::::::::::::::::`ヽ\_     
                |iγ:::::::::::::::::::::::::::::::::::::::::ヽi|     カ
               〈/::::::::::::::::::::::::::::::::::::::::::::::ハ_》      バ
                !:::::::l::::/|ハ::::::::∧::::i:::::::::::i      デ
                 |::::::i∨ ト-:::::/ ,X:j:::/:::::l       ィ
            r⌒ ヽ ヽ::::| ≧z !V z≦ i/:::::/ ./'⌒ゝ 
        .   ヽと  ヽ ゝ:} “        “ {:::::/ っ丿 
                \  \::ゝ、 _ ( ) _ イ::/  /`  
               \              /::::\  
               /::::/`ヽ          r'´  \:::\
             /::::/   |        _ _」     }ノノ
               {:::/     |        "  ヽ          
             ヽ    |           丿
                    |    /'⌒ } " }
                      |   {   ゝ,,ノ
                   |   {      
                        |   i
                   ゝ__,,ノ
2018/11/22(木) 00:06:56.04ID:YC9N9M8Q
>>943
っω
945デフォルトの名無しさん
垢版 |
2018/11/22(木) 00:16:53.46ID:HONMAAM4
>>941
staticおじさんは黙っとけw
2018/11/22(木) 00:19:35.78ID:WA/+SJn9
>>945
staticおじさんではないので黙らないw
947デフォルトの名無しさん
垢版 |
2018/11/22(木) 00:20:36.62ID:HONMAAM4
>>946
でもオブジェクト指向しらんのやろwそれstaticおじさんやからw
2018/11/22(木) 00:25:38.32ID:WA/+SJn9
>>947
オブジェクト指向知ってるのでstaticおじさんでないことは証明された
2018/11/22(木) 00:54:40.06ID:AcqNnxh2
>>923
> Smalltalkはオブジェクト指向なんだから状態を持っている
> 状態を持っているまま処理内容だけを変更したら
(データに互換性がない場合)エラー出るでしょ?

そのエラーが出てからの対処が容易であることがすなわちケイのOOPの肝たる「決定の遅延」(のサポート)なんですよ

おそらくとうてい許容できない行為だろうとは思いますが、Smalltalkでは日常のこちらを参考まで
https://youtu.be/ymITEeAOtEA
https://youtu.be/xfLhXb1K4Uk
950デフォルトの名無しさん
垢版 |
2018/11/22(木) 00:56:50.72ID:ROOr0q+m
×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く

>俺.オシッコを止める

『指でチンポをつまんでオシッコを止める』

>俺.オシッコを出す

『尿モレ』『尿シッキン』どうする?
2018/11/22(木) 01:27:10.12ID:pXjB8XIH
>>941
でもこの場合
オブジェクト単位に分ける工程が完全に削除できるんだからメリットってわかるでしょ?
オブジェクト単位に分ける工程が0より大きいので
それが削除できる以上メリットとなる

証明完了
952デフォルトの名無しさん
垢版 |
2018/11/22(木) 01:38:10.58ID:ROOr0q+m
>>951
>オブジェクト単位に分ける工程

人工知能は『物の意味』を『区別』することから始まるのでは?

776 Mr.Moto sage 2018/09/08(土) 08:57:47.30 ID:Hj3WpMqo
「もの」という言葉が出たついでに言っておくと、
ここでいう「もの」は“individual”、すなわち「不可分なもの。
個人、個体、個物」を意味する。れっきとした哲学用語だ。
ただし、これは「物理的な存在」ではなく、「概念」を
指していて、しかも「具体的な意味」「内包的な意味」を
持たない。その意味で、individual は「意味を引っ掛ける釘」の
ようなもので、「こっちの釘とあっちの釘は、どこがどう違うと
言われても説明できない。ただ、引っかかっている意味が違うし、
比較によって区別できる」ものである。
同じような性質をもった存在として、Codd のデータベース理論における
データベース・キーというものがある。
953デフォルトの名無しさん
垢版 |
2018/11/22(木) 01:41:49.54ID:ROOr0q+m
自然言語処理スレッド その5
http://mevius.5ch.net/test/read.cgi/tech/1537152490/

そもそも人工知能とは、『オブジェクト指向の果てなき追求』ではないのか?

違うか?

違うというなら、その理由を50字以内で述べろ!
2018/11/22(木) 01:47:25.03ID:YC9N9M8Q
>>953
違うという理由を人に聞く前に
そうだという理由を述べるのが筋だろ
955デフォルトの名無しさん
垢版 |
2018/11/22(木) 01:49:36.77ID:ROOr0q+m
>>954
>違うという理由を人に聞く前に
>そうだという理由を述べるのが筋だろ

ならばシステムをオブジェクト単位に分ける必要性について答えておこうか。

>>951
>オブジェクト単位に分ける工程が完全に削除できるんだから

戦神のベルトが倉庫を圧迫。仕分けましょう【DQ10】
http://okirakudq10.com/archives/53537205.html
2018/11/22(木) 02:01:56.48ID:YC9N9M8Q
>>955
科学とか工学にはるかに至らない
迷信とか思い込みのレベルだな
2018/11/22(木) 04:49:22.53ID:sPtmfb/w
>>935
そんな風に、セレクタ(的なシンボル)とオブジェクトが一緒くたにして扱われるところが、Smalltalk-72の良いところだと思っていて、76や80のメッセージセレクタはちょっと味付けが違っていて、オブジェクトと一線を画しているというのが、私の個人の感想です。
2018/11/22(木) 06:01:15.58ID:WA/+SJn9
>>949
> そのエラーが出てからの対処が容易であることがすなわちケイのOOPの肝たる「決定の遅延」(のサポート)なんですよ
エラーが出る時点で駄目でしょ?

> おそらくとうてい許容できない行為だろうとは思いますが、Smalltalkでは日常のこちらを参考まで
許容してはいけないことだね。

エラーが出て止まるならまだいいけど、間違った結果で実行されてしまったら取り返しがつかないもの

アクロバットプログラミングはやめよう
2018/11/22(木) 06:33:08.70ID:WA/+SJn9
Smalltalkの実行しながら修正できるっていうのは、
「最初から再実行しなくても修正できるよ」程度のものなんだろう

最初から再実行すればいいじゃん?
それが今の時代の感覚。

テストコードはあるしプロセスを終了して最初から再実行すればいい
無の状態から再実行するから同じ状態が何度でも作れる

ユニットテストはSmalltalkで一番最初に実装されたが、
これにによって「最初から再実行しなくても修正できるよ」の
価値が大きく下がったのだろう

もちろんSmalltalk開発の初期はコンピュータの性能が低く
Smalltalkの場合、実行環境そのものという設計だったから
再実行できたとしても、再実行するのに時間がかかった

それも今はプロセス単位で再実行できるし、コンピュータの性能の
向上で再実行すれば十分になってしまった。

昔はデバッガを使って実行中にブレークポイントで止めて実行しつつ状態を
確認していたのだが、今はそんなことをすることは殆どなくなった。
なぜなら関数レベルで単体で実行することが簡単になったからだ。
2018/11/22(木) 07:54:59.11ID:AcqNnxh2
>>957
おっしゃるとおり、今のキーワードに相当するトークンをメッセージ内に適当に混ぜられる自由度は失われていますね
感覚はわかりましたありがとうございます
2018/11/22(木) 08:07:58.62ID:y7NAvoby
>>951
頭からダラダラ書くことしかできないお前にはそうなんだろうな w
2018/11/22(木) 08:11:04.06ID:AcqNnxh2
>>959
> ユニットテストはSmalltalkで一番最初に実装されたが、
> これにによって「最初から再実行しなくても修正できるよ」の
> 価値が大きく下がった

注目する部分の粒度というかタイミング(あるいはリズム感)みたいなものが互いに食い違っているんだよね
動画にもあるように、たとえTDDであっても再実行せずに直せるのは別にアクロバティックでも何でもなく
むしろ(TDDとしても)自然な流れなんだけどなぁ

決定の遅延派と早期結合派とは一生わかりあえないんだろうねきっと
2018/11/22(木) 10:06:11.05ID:WA/+SJn9
>>962
TDDではまず実行してテストが失敗する状態にしないといけない
実行し終わって結果が出てるんだよ
つまり二回目以降の実行っていうのは「再実行」

この再実行が簡単に行えるわけだが、それに対する
Smalltalkのメリットは未実装の直前まで実行できるってことでしかない
それで一体どんな価値があるというのか?

> 決定の遅延派と早期結合派とは一生わかりあえないんだろうねきっと
価値の話をしてないからな。

決定を遅延できるから素晴らしいんだ!(何が?)
そう、何が素晴らしいのかが書かれていない

過去においては素晴らしいなにかがあったかもしれないが、
それは今は別の技術によって解決されてしまってるということ
別の技術というのは早期結合のことじゃない
別の技術による決定の遅延という意味。決定の遅延自体は行っている。
Smalltalkの言語機能を使っていないだけ

それとも今の時代においても、何か価値があるのか?
なくなってしまってるから書けないはずだ
2018/11/22(木) 11:19:38.02ID:DWgniQ0o
>>963
> Smalltalkのメリットは未実装の直前まで実行できるってことでしかない
> それで一体どんな価値があるというのか?

未実装の直前まで他の準備に煩わされることなく作業をスムーズに進められるのはあきらかに価値あることだろう

未実装でエラーを出した後、仮実装のためのメソッドを追加し1回目のテスト実行を終えられる
この流れを妨げないスピード感はとにかくコンパイルを通すためにいろいろ手続きを踏まないといけない早期決定畑の人には分からないと思う

あと、レッド(→イエロー)→グリーン→リファクタリング→…のサイクルを回すのはたしかにそれぞれは再実行だけど
レッド、イエロー、グリーン、リファクタリングそれぞれの工程で実行中に書き換えられることのメリットは生きてくる

なんか、批判的に指摘してくることの粒度というかレイヤーというかがいちいち外れているんだよね
当たり前なことをしたり顔で主張されても「そうですね。で?」ってなるだけ
たとえばこれもそう↓

> 決定を遅延できるから素晴らしいんだ!(何が?)

アラン・ケイも書いているとおり(念のため再掲)→http://squab.no-ip.com/collab/uploads/61/IsSoftwareEngineeringAnOxymoron.pdf
使い捨てではない長期運用を想定したソフトウエアの開発において、知見というのはあとからついてくることは誰もが経験済みだろうし
それを開発中、運用中のシステムに適用しようと思ったとき(まあ早期決定脳では思いもよらないことだが…)に役立つのは明らかだよ

たぶん思慮の及ぶダイナミックレンジがずれていてすごく狭い範囲のことしか頭にないんじゃないかな
繰り返し指摘されているような限定された局面での問題であれば今の技術で十分対応できているしそれを否定する気はさらさらないよ

あと、あくまで暫定実装に過ぎないSmalltalkの実装やその欠陥にとらわれすぎでは?
本来であればアラン・ケイの「オブジェクト指向」とそれが目指す「決定の遅延」のために必要な要素は何かや
ストラウストラップらの型をクラス様エンティティでやるアイデアの「オブジェクト指向」との違いが何かが論じられるべきだろう
なんでそんなにSmalltalk(をやっつけること)にこだわるのかね(ほんと親でも殺されたか?)
2018/11/22(木) 11:23:08.96ID:WA/+SJn9
>>964
> 未実装の直前まで他の準備に煩わされることなく作業をスムーズに進められるのはあきらかに価値あることだろう

再実行しても0.1ミリ秒ぐらいの差しかないけど?
2018/11/22(木) 11:24:22.26ID:WA/+SJn9
>>964
> アラン・ケイも書いている 〜略 〜 親でも殺されたか?)

そいう長文言い訳はいらないんで、
どんな価値があるか書いてよw
ホント言い訳だけだな。長いのは
2018/11/22(木) 12:00:14.14ID:P9tUkoXd
15行以上のカキコはたいていクソなので無条件にNGにしてる。
(.*\n){15}でNG word登録。
968デフォルトの名無しさん
垢版 |
2018/11/22(木) 12:05:29.43ID:ROOr0q+m
>>961
>頭からダラダラ書くことしかできないお前にはそうなんだろうな w

チンポがシコシコするぜ!!
2018/11/22(木) 12:19:57.68ID:DWgniQ0o
>>965
> 再実行しても0.1ミリ秒ぐらいの差

未実装メソッドを実装するときににコンテキストが分かれば(つまり実行中なら)実装もしやすいだろうとそういうメリットだよ
再実行する前の話

>>966
> どんな価値があるか書いてよw

書いたけど読んでないの?

> 使い捨てではない長期運用を想定したソフトウエアの開発において、知見というのはあとからついてくることは誰もが経験済みだろうし
> それを開発中、運用中のシステムに適用しようと思ったとき(まあ早期決定脳では思いもよらないことだが…)に役立つのは明らか
2018/11/22(木) 12:26:03.13ID:f4Y3NhdZ
ここまでオブジェクト指向のメリットなし
971デフォルトの名無しさん
垢版 |
2018/11/22(木) 12:29:23.68ID:ElVxNvlT
>>961
>頭からダラダラ書くことしかできないお前にはそうなんだろうな w

ドラえもん ぼくたち地球人
https://youtu.be/UYdfmyd2vD4

僕たち地球人〜今日も明日もあさっても〜チンポがシコシコ〜するんだよー!

 バ バ ア が 潮 吹 い た ぁ !
http://egg.5ch.net/test/read.cgi/welfare/1539337979/
972デフォルトの名無しさん
垢版 |
2018/11/22(木) 12:53:30.19ID:ElVxNvlT
611 名無し三等兵 (ワッチョイ 7fe7-t9Bb) sage 2018/11/22(木) 12:46:59.97 ID:vFEoyYoC0
>>587
「ちんちん」の語源の1つの説に、
支那の娼婦が幼児語で「入れて入れて」と言った言葉を
当時の出羽守が有難がって日本に広めたという
かなり眉唾物な故事がある。

その説に依るなら「チンポかシコシコする。」は
当然のように入れた側の所感とその転用じゃな。

591 名無し三等兵 (スッップ Sd1f-hEn1) sage 2018/11/22(木) 12:26:55.61 ID:9IvK1JXqd
>>587
シコシコするは他動詞なので、所有者の意思とは無関係にチンポが自立行動するのであれば「イライラする」「ムラムラする」という自動詞を用いるのが正しい
2018/11/22(木) 14:13:32.13ID:WA/+SJn9
>>969

> 未実装メソッドを実装するときににコンテキストが分かれば(つまり実行中なら)実装もしやすいだろうとそういうメリットだよ

それは実行しなくてもコンテキストがわかるなら
もっとメリットが有るってことかな?
974デフォルトの名無しさん
垢版 |
2018/11/22(木) 14:14:27.19ID:ElVxNvlT
>>966
>そいう長文言い訳はいらないんで、

チンポがシコシコするぜ!!
2018/11/22(木) 14:28:15.43ID:WA/+SJn9
結局Smalltalkの実行中に編集ができるっていうのは単なる
未実装メソッドを実装するときににコンテキストが分かれば
(つまり実行中なら)実装もしやすいだろう程度のことでしかなかったということだ

要するに、テキストエディタの補完機能でなんとかなるし、
型があればもっと実行しなくてももっと正確にコンテキストがわかるということ

大したメリットじゃないんだよね
2018/11/22(木) 14:40:49.98ID:DWgniQ0o
>>973
> それは実行しなくてもコンテキストがわかるなら
> もっとメリットが有るってことかな?

もとより、コンテキストの関係ない関数型ならいらない機能だけどそれはさておき
それなりの深さを持つコールスタックと状態を持つオブジェクト指向を使い続けるならそういうことになるだろうね

でもホットスワップだとかインクリメンタルコンパイルとか無茶しやがって…って技術をこれまでも早期結合派は編み出してきたわけだから
(君は無理っぽいが)その便利さが分かる人がいれば、いつかコンテキストを実行せずに知る技術もひねり出されるんじゃないかな
2018/11/22(木) 14:42:50.30ID:WA/+SJn9
>>976
そんなにコンテキスト(=型情報)を知ること重要?w
2018/11/22(木) 14:48:36.51ID:DWgniQ0o
>>977
コンテキストは実行時情報で型情報ではないよ?
2018/11/22(木) 16:42:53.79ID:aWnPsB95
OOPのメリットと言う上記全てがCommonLispでも可能だが、別にCommonLispがオブジェクト指向だからというわけではないぞ
実行時の環境がどれだけ豊かかという点はオブジェクト指向に関係は無いよ。smalltalkの特徴と混同し過ぎではないか?
2018/11/22(木) 16:57:56.75ID:WA/+SJn9
>>978
「じゃないよ」じゃなくて
何かを言えって
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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