1 名前:デフォルトの名無しさん [2014/03/01(土) 16:49:54.65 ] オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。 hayabusa3.2ch.net/test/read.cgi/news/1393649485/ オブジェクト指向(英語:Object Oriented)とは、主にソフトウェアの設計や開発における考え方のひとつ。 大きな意味でのデザインパターンである。 近年では「オブジェクト指向」というとC++、Java、C#、Ruby、PHPなどの「オブジェクト指向プログラミング言語」、 およびそれらを用いた「オブジェクト指向プログラミング」が世の大半を占めている関係で、まるでイコールのように 言われることも多いが、あくまで物事の考え方であり、プログラミング言語に限ったものではない。 たとえば、最近ではあまり新規では見かけなくなったが、医療分野で使われているDICOM規格をはじめ、UNIXやLinuxで 今なお使われているX Window Systemの仕様書など、1980年代ごろにはオブジェクト指向規格書やオブジェクト指向 仕様書なるものも大量に存在した。 monobook.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91
303 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 00:20:01.93 ID:JKEnhuU6] >>300 そのできることの定義ができないんだよ。 「私は掛け算が出来ます」ってことを コンピュータ上でどうやって定義するか? 無理でしょう? エージェントではなくて、エージェントに指令を出すほうが エージェントのことを知らないといけない。 掛け算をしたいからMath/Multiplicationエージェントさんに仕事を頼もうって具合に。 これなら実現可能だけど、エージェント指向では 誰に(Math/Multiplicationエージェントさん)ではなくて、仕事内容(掛け算)を やってくれる人を買ってに見つけるものなので、 正確に仕事内容を伝えなきゃいけない。 仕事を出すために仕事の処理内容を引数にするとかわけわからんw それクロージャーを渡して別スレッドで実行ってことかいな?w
304 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 06:22:33.88 ID:wpIB4f22] あぁ、根本的に分かってねえなこいつw いくらエージェントとか言っても、相手はコンピュータ 自然言語理解する訳ねえだろ。 計算式をエージェントが解く場合、まず構文解析エージェントがトークンに分ける。次に演算順序エージェントが順番に並べる。 そしてかけ算エージェント、割り算エージェント、足し算エージェント、引き算エージェントがそれぞれ計算し、演算順序エージェントと協調して結果をとりまとめるエージェントに渡して、人間さまの理解出来る形に変換するエージェントがプリントアウト。 オブジェクト指向だと計算順序から次の処理オブジェクトまで静的に人間様がコーディングするが、エージェントの場合はメッセージだけ規定してコーディング。 理解出来る物しか実行しないというのは、文字通り本当に指定されたメッセージ処理以外しないって事だ。
305 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 06:29:03.28 ID:JKEnhuU6] >>304 それだとエージェントである必要が全く無いですよね? まず構文解析オブジェクトがトークンに分ける。次に演算順序オブジェクトが順番に並べる。 そしてかけ算オブジェクト、割り算オブジェクト、足し算オブジェクト、引き算オブジェクトがそれぞれ計算し、 演算順序オブジェクトと協調して結果をとりまとめるオブジェクトに渡して、人間さまの理解出来る形に変換する オブジェクトがプリントアウト。 さて、エージェント特有のものは何でしょうか? > オブジェクト指向だと計算順序から次の処理オブジェクトまで静的に人間様がコーディングするが、 > エージェントの場合はメッセージだけ規定してコーディング。 そのメッセージを作るのが不可能なんですよ。 メッセージの一例を書いてみてください。
306 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 08:04:56.81 ID:pu2brC7x] すげー勘違いしてない? エージェントって言ってるのは呼び出し方がちょっと違うだけの 機能を持ったオブジェクトだよ
307 名前:デフォルトの名無しさん [2014/03/23(日) 08:06:58.75 ID:2/mKAdk3] 20年くらい前エージェント指向というのが雑誌に書いてあったので読んでこれはダメだと思ったことしか覚えてない。
308 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 11:54:05.88 ID:hof0CNNK] よく分からんが、エージェント全員に同じメッセージを出して、 受理できるエージェントが自動的に実行するってこと? 実行したエージェントが、次よろしく、とメッセージを出す。 それを受理できるエージェントが・・・
309 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:17:47.86 ID:JKEnhuU6] >>306 だからそういうこと。 エージェント指向というものは存在しない。 オブジェクト指向にある種のインターフェースを持たせただけのもの。 エージェント指向で凄いことが出来るように言っているが、 その多くは実現不可能で、現実にはインターフェース以上にものにはなりはしない。 ただのインターフェースなのに指向とか風呂敷を広げ過ぎたんだ。
310 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:20:32.71 ID:JKEnhuU6] >>308 うん。そういう宣伝をしているね。 だけどエージェントが全てのメッセージを理解できるわけでもなく メッセージを出す側がやってほしいことを ちゃんとエージェントがやるかといったら、 エージェントが勝手に判断してやることなんかない。 結局のところメッセージとは、受理できるエージェントを 指定した関数呼び出しでしかない。
311 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:24:58.25 ID:9EUDVluQ] もしかして:分散オブジェクト
312 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:28:37.44 ID:JKEnhuU6] >>311 そういうこと。 エージェント指向なんてものはなくて 実態はオブジェクト指向なんだよ。
313 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:45:38.51 ID:DU/ep8WR] アスペクト指向も?
314 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:56:09.37 ID:JKEnhuU6] アスペクト指向も指向ってほどのものじゃないね。 mixin等と同じようなもの。 オブジェクト指向のフレームワークや言語拡張で提供できてる。
315 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 13:57:22.52 ID:Ob+xqTTb] 何でもできる神クラスを作ろうとして結局何もできなかったって感じだな。 それだったらGoogleにリクエスト投げた方がよっぽど良い返事がもらえる。
316 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:10:53.11 ID:ZhYebgxz] あらゆるプログラミング言語はアセンブリ言語のフレームワークや言語拡張だ、 と言っているようなものだ。実質何も言っていない。
317 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:12:18.32 ID:JKEnhuU6] 今更だがw 十数年前に聞いただけの記憶に頼るのはアレなんで、検索してみた。 itpro.nikkeibp.co.jp/word/page/10024992/ > エージェント指向 agent-oriented > > オブジェクト指向におけるオブジェクトを、自ら判断し処理できる > 機能を持ったエージェントと呼ばれるモジュールに置き換えたもの。 > エージェント同士が状況に応じて自律的に連携、協調できるようになることを目指している。 > > エージェント指向システムを構築するに当たっては、 > それを使って解決しようとする問題を分割し、それぞれの問題を > 解決するエージェントを設計するといった方法などが考えられている。 うん、あってたw 問題を小さくし、その問題を解決するエージェントってのは要するにクラスや関数のこと。 そこはオブジェクト指向でも同じなわけで、エージェントのキモは「自ら判断し処理できる」こと。 単純に、○○ができるエージェントさんに仕事を頼むのが、オブジェクト指向であり、こっちは簡単にできる。 エージェント指向では仕事を用意すれば、エージェントが勝手に仕事をするんだが、 その仕事=メッセージをどうやって定義すればいいのか。 仕事を行ってくれるための、"完ぺきな"命令を用意しなければいけない。大変な作業だよ。 「カレーつくってれ」という簡単なメッセージで人間世界は成り立つかもしれないが コンピュータの世界じゃ詳細なレシピをメッセージとして、エージェントに渡さないといけないからな。 カレーに野菜が入っているか、肉が入っているかはエージェントにお任せ。 なんてものを人間はコンピュータに求めていないわけで。
318 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:15:19.10 ID:ZhYebgxz] 日経解説だしな
319 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:15:27.60 ID:JKEnhuU6] >>316 あらゆるプログラミング言語はアセンブリ言語のフレームワークや言語拡張だよ。 正確には、アセンブリの中の特定のパターンに 名前をつけて、単純でわかりやすい記述(文法)でかけるようにしたもの。 指向は考え方。だけどエージェント指向やアスペクト指向は考え方ではなくて 機能(エージェント)と文法(アスペクト)にすぎないって話。 別に、使えないものだとは言ってないんだよ。 オブジェクト指向は指向でいいが エージェントやアスペクトは指向ではないってこと。 だから「指向」としてはオブジェクト指向を置き換えるには至らなかったんでしょ。 機能や文法はオブジェクト指向言語やそのフレームワークに取り入れられたが。
320 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:16:04.42 ID:JKEnhuU6] >>318 もっといい解説が存在するなら それを書いてくれていいよ。
321 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:27:40.22 ID:GCXxAoQu] 美少女とトイレでばったりとか、美少女のお漏らしとか見れないのん?
322 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:28:26.44 ID:ZhYebgxz] オブジェクト指向だって、機能と文法に過ぎないじゃないか。
323 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:31:50.05 ID:JKEnhuU6] いえオブジェクト指向は(言語とは無関係の)設計パターンですよ。 オブジェクト同士の関連を表したもので、実装ではありません。 その設計パターンを実装しやすいような文法にしたのが オブジェクト指向言語です。
324 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:39:18.52 ID:ZhYebgxz] その言葉の「オブジェクト」を「アスペクト」に変えてみたらどうかな? AspectJ は、アスペクト指向のパターンを実装しやすいような文法にしたもの、 以外のなにものでもない、と思うけど。
325 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 16:18:39.45 ID:3XgyoelJ] トランザクションスクリプト全盛期にはインパクトあったじゃん オブジェクトの外側でロジックが浮いちゃってたからこれを神でも小人でもいいけどエージェントと呼ぶとすっきりした気になった
326 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 16:29:43.48 ID:uH5dKzzp] > すっきりした気になった それは大事なこと。
327 名前:デフォルトの名無しさん [2014/03/23(日) 16:37:03.89 ID:jszu+iCk] class Humen{ void evacuation{ printf("unko"); return; } } class Bisyojo extends Humen{ void evacuation{ return; } }
328 名前:デフォルトの名無しさん [2014/03/23(日) 17:11:57.14 ID:X1SDIdox] オブジェクト指向が自然を記述する為にあるとかわけの分からん勘違いしてる様な奴は度し難いという一例
329 名前:デフォルトの名無しさん [2014/03/23(日) 17:28:50.92 ID:wpIB4f22] ObjectiveC以外でオブジェクト指向しようとするから悩むんだよ。
330 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 18:58:20.37 ID:zACKZbQg] 92,3年頃にでたOMT のツールが使いやすかったんだが名前忘れた。だれかしらない?
331 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 19:21:01.00 ID:JKEnhuU6] オブジェクト指向は指向なんでそこから色んなパターンが生まれてるけど アスペクトは1パターンでしかないんだよね。 オブジェクト間の連携の間に処理を割りこませる時に使うパターン
332 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 00:17:43.01 ID:uaFpB2hk] >>328 ランボーが自動車をサンプルとして提示したから 現実に適用できる、なんだかすごいやつとして いつの間にか広がったと信じています
333 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 07:21:48.48 ID:abZb4UQn] オブジェクト指向って要するに大失敗した米国防総省のAdaプロジェクトの遺物だからな
334 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 08:36:32.03 ID:+IuI6ea0] I Have to Work Faster and Faster スケジュールが長かった時代には、ドメインモデルを注意深くモデル化してコードに落とし こむこともできたが、設計ミスがあると、修正して新バージョンをつくるまで数ヶ月かかって いた。今日ほとんどのプロジェクトでは、ドメインを的確に理解することは、すばやく価値を 提供することよりも重要ではない。ドメインの理解はいずれにしろすぐに変わっていくし、顧 客側でもデプロイごとに新しい発見をしていく。ドメインのいくつかの側面を誤解していた場 合、リリースを繰り返す中ですばやく修正される。 もし注意深いモデリングが重要でないのなら、オブジェクトモデルを忠実に実装すること自 体、以前よりも疑いの度を増してくる。アジャイルソフト開発は、品質と変更への対応を大幅 に改善したが、いまどきの要件に対しては、”必要最小限”かつ柔軟に変更に対応できるよう にコードを保つ方法を考え直さなければならない。関数プログラミングはこのためにある。 shop.oreilly.com/product/0636920021667.do
335 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 18:35:49.17 ID:ftyS+NcD] >>323 OOPでない純C言語でもOOP出来るもんな 言語サポートが無いから「やりにくい」だけで
336 名前:デフォルトの名無しさん mailto:sage [2014/03/24(月) 18:38:56.70 ID:reURH2nI] UML2.0への変化についていけず ウォーターフォールに戻りました
337 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 00:04:03.82 ID:2SW0uc9D] Cしか知らなかった頃は1関数内千行も書いて怒られていたがC++を知ってからは積極的に処理を外出しする癖がついた その頃から業務の細分化もできるようになって後輩に仕事を与えやすくなった気がする十五年前の思い出
338 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 00:19:16.31 ID:3K6UX0Lt] 数千行は極端ですな。おれは15年前は中坊なんで想像もできないですが 一方今は、無数のフォルダ分けがなされて20行もないファイルが数千個ばらまかれ、リファクタツールかける気にもなりようがないメンテナンス不能なjavaプロジェクトみたいな極端も存在します どっちがマシなんでそ ぶっちゃけ手のつけようがあるかないかで言うと、(gotoスパゲティがなければ)数千行のcコードの方が望みがあるのかなとか思うんすけどw
339 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 01:12:21.29 ID:2SW0uc9D] >>338 goto大好きBASIC(≠VB)の世代ですんで^ ^ Javaは残念ながら知らないんですが私の場合はC++が 仕様書がなくとも何とか他人が読めるコードを書けと教えてくれた 決して先輩上司ではなくてね
340 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 13:27:09.83 ID:fTe0++yc] >>337 俺はN88-BASICの時代から1プログラム100行以下を心がけていた。。。たぶん、ストレスなく管理できるのは200行が限界じゃないかな。 プログラムの重複を整理するとC言語で95%がサブルーチン化できるが、どうしても5%は素直にサブルーチン化できない。 その代表格がsort()関数だろうね。標準ライブラリのsort()関数は最終パラメータにプログラムの開始アドレスを渡している。 この部分が5%にあたる。 ただ、そう考えるとC言語は100%サブルーチン化出来るとも言える。最後は関数のアドレスをわたしゃいんだから。 そのアドレス渡しを高級文法の中で(知らない間に)使えるようにしたのがC++の特徴と言えるべさ。 もっとも、、、C言語に関数を示す判りやすいキャストを登録しただけの方がすっきりした気がする。
341 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 13:39:35.84 ID:fTe0++yc] ただね、、、オブジェクト指向言語、いや、C++とそれをお手本にした言語というべきなんだけど、ゼロポストの言うとおり糞だというのは同感なんだ。 オブジェクト指向の考案者は、もともとは「作業を楽する事を心がけるプログラミング」という意味だったんじゃないかね? 俺はSmallTalkは触ったことないからC++しか判らんのでそう思う。 C++の作者はクラス化という考え方で「作業を楽する事を心がけるプログラミング」を実現しようとした。 で、それを見た子ネズミ達は、クラス化がオブジェクト指向なんだと勘違いしたのジャマイカ? *** C++のクラス化って情報処理で落ちこぼれの温床になっていると思うんだが詳しい人いないかな? クラス化を素直に理解できる人は2種類いると思う。 1)アセンブラをマスターしている人。 C++ってのは機械語で仕事していれば実に実に判りやすいんだ。 2)丸暗記に強いタイプ。 C++がクソじゃねえか?ってのは、1,2も一般的とは言いがたいと思うというのが理由。
342 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 19:52:22.98 ID:xj0aRC2d] 同意。 たぶんクラスというのは元々、構造化プログラミングで関数をばらばらに扱うと 大変なことになってくるのでそれを簡単にする為にグループ化、もしくはモジュール化 していたのを、最初から言語仕様にしてしまおうという目的だったと理解している。 その結果出来たクラス、モジュールの振舞いが、現実世界のものに似ている場合が有る、 ことから誰かがオブジェクト指向なんて名前をつけてしまったんだと思う。 だからあくまでも結果論であって、「オブジェクト」指向から理解しようと思っても それに当てはまらないケースなんて山ほどあって、結局理解出来ないことになる。 あの、ワンとかニャーの例が初心者を落ちこぼれさす一番最悪な例だと思う。
343 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 19:57:37.24 ID:65VtCojr] で、俺もそのワンとかニャーの被害者w 長年理解出来ずに居たが。 結局、よく整理された分かり易いコードを書くようにしていたある時、 その結果のコードが「オブジェクト指向」になっていて、 初めてそこで「オブジェクト指向」と呼ばれていたものが理解出来たという感じ。
344 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 20:57:03.96 ID:fTe0++yc] オブジェクト指向の最大の問題点は、過剰な喩えでこれから覚えなくてはいけない人を惑乱したことだろうね。 「メソッドにメッセージを送る」なんて実際に、どっかで呼んだ覚えがある。 素直に「サブルーチンを呼ぶ」って言えばよい話。 メソッド(オブジェクト指向プログラミングにおいて、各オブジェクトが持っている自身に対する操作) と気取った言い方をした所で、所詮プログラムはプログラム。 で、メッセージを送るなんて大袈裟な事言っても、ただ単にメソッドを実行しているだけ。 コンピュータの構造を理解している人間ほど、電波に感じる言葉遣いをしているって問題もある。
345 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 21:04:37.01 ID:lornT58y] >コンピュータの構造を理解している人間ほど 誤解はよろしくない。 本を書くのはヒマな人間だ。 それがどういう意味かわかるな?
346 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 21:41:35.89 ID:FbuvqMDP] > ただ単にメソッドを実行しているだけ。 そういう論理は、どんなコンピュータも機械語を実行しているだけ。だからアセンブリ言語以外無用。 という無意味な結論にしかならないよ。
347 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 22:22:28.57 ID:46PJc7fJ] メソッドにメッセージを送るのではなく、オブジェクトにメッセージを送るとメソッドがじっこうされる。 メッセージを送るというのを意識した言語なんてRubyとかごく一部な気が。 普通の言語ならメソッドを呼ぶのほうが一般的に使われる(rubyとかも) メソッドはサブルーチンの一種だから、わざわざ誤解する可能性のあるサブルーチンという用語を使う意味はない
348 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 22:33:14.81 ID:UEvWvg+1] プーチンでも呼んで来い
349 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:09:45.02 ID:eb0F/6mj] サブプーチン
350 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:18:06.04 ID:Cc+RYh9g] サブルーチンという用語だと、データと処理が別々になってしまう印象を受けるな。 メソッドだと、大体はカプセル化されてデータを隠蔽する印象。 呼び出して使う側からすると前者は面倒。呼び出し側がデータの後始末意識しないといけないし。
351 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:24:41.77 ID:lornT58y] オブジェクト指向だからといってガベージコレクションやRTTIが完備されてるわけじゃない。
352 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:28:38.92 ID:dEVLbQ7F] 関数とサブルーチンに明確な境目はないけれど、 ちゃんとした関数なら副作用がなくてテストが容易で コードの中身を見なくても処理が推測できるもので だめな関数=サブルーチンは、副作用がメインでテストが難しい コードの中身を見ないと何をやっているのかさっぱりわからない。 ってイメージが有るな。 たとえば、コードが長くなったから 一部分をそっくり抜き出して、関数にすると たいていダメな関数=サブルーチンになってる。 そういうサブルーチンばっかり作っているような技術力の低い所だと 関数(実際はサブルーチン)を使うとあちこちにジャンプする必要があるから コードが読みにくい!とか言うやつが出てくる。(本当はちゃんとした関数をかけてないから)
353 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:32:30.86 ID:LlFFIxqw] おいおい、そんな基本的な話されても… …なんだここ素人しかいねえよw
354 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:37:45.86 ID:XRtgkR6L] 俺もワンにゃーでは全く分からんかったな… スクリプト系で、組み込みの配列や文字列、果てはBigIntや実数どころか フツーの小さな整数までがオブジェクトとされてる言語を触ってから 「あ、オブジェクトって、たかがそういう話なんだ?」と気付いた その「たかがオブジェクト」が中々理解に苦しんだ
355 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:47:01.97 ID:XiMhbNPd] そう。現実のオブジェクトってどんなものでも多機能なイメージになるよな。 だから、初心者がそのイメージで設計すると、そのまま多機能で大量のメンバー変数と メソッドを持つクラスになってしまう。
356 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 23:54:00.90 ID:MAe46oc1] >>354 そうだよ。実は知らない人のほうが理解早いぐらい。 それぐらい普通の概念なんだよね。 俺も小学5年生の時、BASICを少しかけるようになった時、 よしエロいゲームを作ろう。 さて女の子を作るにはどうしたらいいんだ? 頭、顔、足、手、おっぱい、これらをどうやってプログラムすればいいんだ? で、ここまでで挫折した。 その後オブジェクト指向ではない言語を使ってきて、 体のパーツを作ろうとかいう発想じゃダメだなーってわかったんだが、 オブジェクト指向を理解して、あの時考えたものは オブジェクトを使うことによって、実装可能であることに気づいた。
357 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 00:34:43.69 ID:Q+RTv4Ce] >>355 15年後の>>337 が1クラスに1000メソッド詰め込んだ感じか?
358 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 01:27:26.01 ID:aIgjMDhZ] まああれだ、、、古典的な教本ではサブルーチンって読んでいたわけだ。 BASICとかFORTRANの時代な。 ルーチン(手続き、処理)のサブだから、子プログラムはサブルーチンと読んでいたわけだ。 C言語が出現してこれを関数(ファンクション)といい始めた。 K&Rの主張は、サブルーチンは、x=f()の関係だから関数なんだというもんだったな。 言っている事は同じなんで違和感がここまではなかった。 C++になってメソッドと言いはじめて、、、メッセを送るだと?・・・これでどれだけ有望な技術者が納期を守れず夜逃げしたことか。。。これ実話。
359 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 01:36:42.90 ID:aIgjMDhZ] >>347 >メソッドにメッセージを送るのではなく、オブジェクトにメッセージを送るとメソッドがじっこうされる。 自然言語としてヘンだってことを理解してほしい。 メッセージという言葉がおかしいんだよ。 メッセというのはマルチタスクで動いているプログラムA,Bの間でプロセス間通信を利用し、メッセージを送るというのが本来の使い方。 メッセージという言葉使った瞬間にそういう誤解を受ける。これが大問題。 階層構造を持つ、クラス定義したジャンプテーブルに従い、関数を読んでいるだけなんで、実際にはメッセージでも何でもない。 現実に即して言うならば、メッセージという言葉を最初に使った時点で思想家を気取った香具師がこの言葉を選らんだのではにかと思うわけだ。
360 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 01:48:22.72 ID:aIgjMDhZ] >>346 >そういう論理は、どんなコンピュータも機械語を実行しているだけ。 >だからアセンブリ言語以外無用。という無意味な結論にしかならないよ。 ならんと思うよ。 アセンブラの観点から見ると、FORTRAN->C言語->C++の流れはポインタ操作に関しては先祖返りだというのが良く判る。 FORTRAN/COBOLの時代に、良く使う機能を強化し、レアな機能を隠蔽したわけなんだが、隠蔽されていたポインタはやっぱり必要だろうとC言語で復活した。 C言語ではデータ操作を前提としていたが、サブルーチンもポインタ操作する必要があるというのでC++が出現したと言う指摘は可能だ。
361 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 02:13:25.02 ID:1568NTop] >>359 たしかにメッセージという言葉は他にも使われていた用語だから紛らわしいけど、おかしいまではいかないでしょ 言語によって用語の意味が異なることもあるんだし 俺もそれほどメッセージの考え方が好きなわけではないけど、 メソッドがジャンプテーブルになかった時とかメッセージのほうが自然な解釈ができる気がする
362 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 06:32:58.93 ID:ryvqkXO3] >>353 今更かw ここには妄想技術者とか日曜プログラマしかいねーよ
363 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 10:25:29.12 ID:8HxvNny/] >>362 理解できないのでそう思うのですねわかりますw 副作用があるものまでひっくるめて「関数」と呼んじゃうのはC言語他の悪い慣習に過ぎないな。 一般名詞と、特定の言語仕様におけるテクニカルタームは、ちゃんと峻別しなきゃダメ。
364 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 10:42:48.93 ID:Dupb/ZEA] ワナビーくんが駄目出ししたところで意味ないでしょ
365 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 10:51:17.07 ID:qIhM9I6N] いっつも思うんだが、語る資格がないような雑魚ほど語りたがるよなw 子供が政治を語ってるような陳腐さになぜ本人は気づかないのか。 ひたすらそれが不思議でならない。
366 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 10:51:19.59 ID:8HxvNny/] そう思うなら「C言語は関数型言語」とか主張して一生混乱しとけ
367 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 10:51:51.82 ID:8HxvNny/] > 子供が政治を語ってるような陳腐さになぜ本人は気づかないのか。 自己紹介乙w
368 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 13:00:54.46 ID:ryvqkXO3] もう「手続き」って読んどけよ(笑)
369 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 13:39:33.43 ID:pwhdAG7g] Smalltalk知らなさそう
370 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 14:40:21.96 ID:TYq55S8V] そりゃしょうがないよ。K&RがC言語は関数型言語だって「プログラミング言語C」の中で言っていたよね? K&Rは原理的に数学オタクだった気がするなwww 彼らが作ろうとしたUnixが物事を徹底して抽象化して一元化したものだから、さもありなんという気がする。 こないだLinuxでプロセス管理していたんだが、Linux/Unixって、プロセスをファイルで管理しているのな・・・あれは驚いた。 プログラムを実行するとプロセス番号を名前に持つファイルがポコポコ生まれる。 実にファンダメンタルだなって思ったよwww まあミニコンがメモリ8Kだから32Kだかって時代の名残りかもしれんが。。。
371 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 14:49:02.41 ID:8HxvNny/] > そりゃしょうがないよ。K&RがC言語は関数型言語だって「プログラミング言語C」の中で言っていたよね? 何頁?
372 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 14:49:06.26 ID:TYq55S8V] ただなあ、、、オブジェクト指向が実学ではなく、宗教化しているんじゃないかなあ。。。 一般的にオブジェクト指向と称している言語の文法を「オブジェクト指向」と誤解しているのは良い事ではないだろう。 たかがオブジェクト指向、その証拠に、Linux系のコンパイラ系オープンソースの開発のほとんどはC言語ベースで行われている。 C++でオブジェクト指向というのはめったに見かけない。 つまり世の中のシステムの大半はC言語で十分、いやC++では無理があるということを暗示している。 *** C++でないとダメだって分野もあるから一律否定はしない。 Linux系のGUIライブラリGTKは、C言語ベースなんだが失敗例だろうな。 GTK+になってクラス化されて始めてまともに使えるようになった。 C言語だと、GUIライブラリは設計者が上手くないと失敗するんだろうな。 MSのMFCとかGUI関連にクラスライブラリが多いのはそれがC++と相性が良いんだろう。。。 でもこれは珍しいケースだと思うけどね。
373 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 14:53:29.35 ID:TYq55S8V] >>371 太古の昔に読んで記憶しかないな。確か、Cではサブルーチンは関数として扱うという記述のところで見たと思う。 あるいは<stdio.h>のあたりかな。 いや、まてよ・・・main()のところかもしれん。www main()関数つまり、それ自体が関数型言語だと自己主張しているように見える。
374 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 14:54:34.18 ID:8HxvNny/] C言語の「関数」は、単に「そう呼んでるだけ」だから。
375 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 15:00:42.38 ID:pwhdAG7g] >>370 > こないだLinuxでプロセス管理していたんだが、Linux/Unixって、プロセスをファイルで管理しているのな・・・あれは驚いた。 > プログラムを実行するとプロセス番号を名前に持つファイルがポコポコ生まれる。 procfsでググれアホ
376 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 15:10:02.00 ID:8HxvNny/] つーかUNIX的には後付けだな。 Plan9あたりからのバックポート。
377 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 15:43:10.94 ID:TYq55S8V] >>375 ググッタがね、、、ってかさ、徹底的にファイルで一元管理しているのが凄いと思わんか? おれはのけぞったよ。 ユニファイドIOでここまで突き詰めたんだなってのが素直な感想。
378 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 15:54:51.60 ID:8HxvNny/] 一元管理してるわけじゃないよ。 単に、昔はpsコマンドとかが実装に依存して情報を得ていたような所にAPIを横から追加してるだけ。 ネットワークまわりがファイルに乗ってないというUNIXの設計は変わってないし、 「ユニファイドIO」とやらが一体何を指してるのか知らないけど、何も突き詰めてない。
379 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 15:55:24.20 ID:pwhdAG7g] >>377 多分、俺とお前の「管理」が意味するところが違うんだと思うので、これ以上話しても無駄だなという感想
380 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 16:28:28.45 ID:TYq55S8V] >>379 おれもそう思うよ。 俺は素直に、Unixって原理的にコダワッテイルナと思うわけよ。 こないだ、ディスク管理ツールを作ったんだが、GUIからシェルコマンド叩いてスタンダードIOだけでプログレスバーを表示出来たときには感動したなあ。
381 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 16:39:10.50 ID:pwhdAG7g] ただかまって欲しいだけなんだろうか。
382 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 17:58:56.11 ID:1568NTop] 単にいろんなものファイルとして処理するという発想なだけでメモリが少なかったとか関係ないじゃん
383 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 18:07:02.02 ID:8HxvNny/] ファイルに抽象化して、むしろオーバーヘッドが増えるんだから、メモリは余計に食うよな。 (初期の)BSDなんかは、仮想記憶を使うためにBSDがあるのか、BSDを使うために仮想記憶があるのか、 てな感じにメモリ空間を必要としたようだしw
384 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 19:09:37.68 ID:2/K+jOvx] 久々に覗いたら、まじめなはなしになってんな…… 美少女クラスの話をしてくれよ!
385 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 09:32:47.62 ID:mXUNxkRi] 美少女とは二次元空間にしか存在しない架空の存在である
386 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 13:45:56.23 ID:f2a6Bc9R] アニメーターとかは、バスや電車で人物観察してスケッチに残したりする。アンケートの標本みたいに、 現実世界の人々のサンプリングとして使う。が、それって本当に客観的で抽象的なデータなのか? Googleマップとかでも起こりうるように、そういうのは実際には全部個人情報なのではないか? 美少女キャラといっても、9割方は現実に存在する美少女のパッチワークであり、絵描きがクリエイト した部分は1割もないのが普通ではないか?宮崎アニメでなぜわざわざ、スタッフの人に似せたキャラ を出したりするかというと、元のモデルが差し障って使えなかったりするからだろう。
387 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 06:48:57.96 ID:ur7wdjMW] へんなもの食ったのか?
388 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 09:08:19.08 ID:fmP+ZTw3] >>384 なにげに良スレになってるな。 ダックタイピングにおける美少女クラスの持つべき属性を まじめに論じてくれよ。
389 名前:デフォルトの名無しさん [2014/03/31(月) 10:22:08.76 ID:d/6Xhq7D] >>373 Cは関数型言語じゃない ソースはwiki
390 名前:デフォルトの名無しさん mailto:sage [2014/04/09(水) 17:53:39.69 ID:iVtPfWG1] Cはただ命令型言語
391 名前:デフォルトの名無しさん mailto:sage [2014/04/09(水) 22:53:43.95 ID:PWguwHse] >>390 命令型で無いものの名前と代表的な言語を教えて頂けますか
392 名前:デフォルトの名無しさん mailto:sage [2014/04/10(木) 05:11:41.58 ID:sy5Vj+v2] >>391 宣言型言語。Scheme, Haskell, Prolog など
393 名前:デフォルトの名無しさん mailto:sage [2014/04/22(火) 17:13:34.79 ID:jOCCWe2b] 今北 外出とは思うがJSみたいなオブジェクト指向なら メソッドを削除するだけだから何の問題もないな
394 名前:デフォルトの名無しさん mailto:sage [2014/04/22(火) 17:34:35.32 ID:kD92NltV] JCかJKみたいなオブジェクト指向も頼む
395 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 22:13:57.74 ID:rToGCAYv] 2ついいことを教えてやろう。HunterxHunterはなぜ唐突にアリの話になったのか? 『社会生物学』のEdward O. Wilsonが、アリの研究者だからだ。そして、新しいガ ンダムがなぜレコンギスタなのか? --- 「The Social Conquest of Earth」という 新著の題名から採ったかは別として、おそらくそのあたりがネタ元のはず。
396 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 16:16:29.13 ID:zA2QJfGQ] オブジェクトってのは個体の全ての情報を持っているわけじゃなくて あるテーマにおける情報と振る舞い方を表してるにすぎない 筆記用具としてのペンと、凶器としてのペンではクラスを別にしないといけない データベースのレコードがいい例えになる 僕らが扱っているのはオブジェクトではなく、あくまでオブジェクトの側面なのだ。 それどころかオブジェクト自身が側面の集まりであることに気づくべきなのだ
397 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 23:08:43.05 ID:BPdrCHGq] そういうオブジェクト指向の哲学を中心に語った本って何かある?
398 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 23:33:00.51 ID:Psvl1AKr] >>396 おかしい。 あるオブジェクトが筆記用具(クラス)として扱われたり、凶器(クラス)として扱われるというのが、 OOPの多態性の話だというのに。 君が言ってるのは、「クラス」の話なんだから、どこをどうやったら、それが「オブジェクト」の話として、 そういう大上段に構えた主張になれるわけ?
399 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 07:25:50.46 ID:POF8JjRC] オブジェクト自体には情報が無いって事? 型抜きが増えるたびに情報が付与されていく感じか
400 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 07:28:04.70 ID:POF8JjRC] ペン自体はそういう形をした物質でしか無いからな。
401 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 08:02:23.15 ID:POF8JjRC] ん、なんか変だな そういう形をした物質は、筆記用具としても凶器としても使える。 で問題ない気がする。 そもそもクラスからオブジェクトを生成するってのが変なんだよな △クラスと□クラスと○クラスが合わさって☆クラスになる ☆クラスのインスタンスが☆オブジェクト でも現実には☆オブジェクトが先にある ☆の要素を分解したら△、□、○に分解できるわけだ でも使い方なんてのは無限に付与できるわけで それは☆が元々持っている情報なのかって話になってくる 新しい使い方が付与されると☆は☆ではなかったという事態になる。 それが☆はそれ自体の側面でしかないってことか。
402 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 12:44:35.35 ID:TvL0I6wZ] >>398 そ、それは多態性ではないお。
403 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 13:43:39.95 ID:A+wzKE9y] ペンにwriteメソッドとattackメソッドをつけるのか