OOPの特別な用語としての「方法」はどこから生まれたのですか?


13

「メソッド」は、オブジェクト指向プログラミングの特別な用語です。単語がこの特定の意味で使用され始めた時期と、どのプログラミング言語または定量的学習の他の分野に関連して誰が知っていますか?

回答:


11

JavaとC#はC ++からメソッドを取得し、C ++はSimulaから取得しました。

そして、アルゴルはおそらくシミュラに影響を与えました:

また、MIT ALGOLバージョンAED-0は、データ構造(その方言では「プレックス」)をプロシージャと直接リンクし、後に「メッセージ」、「メソッド」、「メンバー関数」と呼ばれるものを事前設定しました。


3
IIRC、C ++は通常、「メソッド」よりも「メンバー関数」を好みます。
tdammers

同じウィキペディアの記事によると、60年代の前半に用語(OOPに関連)の造語が配置されます。
Tulainsコルドバ

2

明確な答えを見つけるのは難しいですが、メソッドとして物事を参照する最初の言語はSimulaであるように見えますが、これは間違っているかさかのぼる可能性があります。関数(数学から)と手続き(数学からも)がプログラミング言語に現れることを考えると、私が理解できる最高の方法は、「方法」が「方法論」の短縮形であることです。

これらはすべてサブルーチンであり、コンピュータープログラムを構成するコードの一部です。OOPスタイルのプログラミングの背後にあるアイデアは、可能な限りコードを再利用することであるため、「メソッド」が選択されたと思います。したがって、プロシージャを作成することもできますが、メソッドを使用すると、新しいスタイルが機能していることがより明確になります。正直なところ、私はメソッド関数を呼び出すことが知られており、メソッドと呼ばれる関数を聞いたことがあります。


6
私はあなたが間違って「図」を恐れている- 方法(目標を達成するためのプロセス)と方法論(研究)は異なる意味を持っています。
JK

1
また、「方法」は非常に長い間英語の単語として存在していました。契約するのに長い単語を探す必要はありません。
Steve314

「メソッド」の代わりに「関数」を使用すると、それは主にC ++の欠点であり、Cには「プロシージャ」という概念がなく、「関数」のみが返されるという事実のためvoidです。C ++メンバー関数は、(Simulaとは異なり)通常の関数と非常に密接に関連していthisます-暗黙的なパラメーターと(おそらく)ランタイムディスパッチメカニズムを使用しても、処理対象は実際には変わりません。Cが関数と手続きを最初に同じものとして扱ったのかどうかはわかりませんが、Pascal(新しい言語)にはキーワードがfunctionありprocedureます-IIRC、Pascal関数には副作用があります。
Steve314

具体的には、方法はプロセスそのものではなく、目標、説明/知識を達成する方法です。これは、オブジェクトのタイプを定義する別の抽象的な概念である「クラス」に関連して重要です。オブジェクトのクラスと、オブジェクトがそのクラスのものである限り、各オブジェクトでXを実行するメソッドを取得します。特定のオブジェクトに汎用メソッドを適用し、そのオブジェクトに固有の結果を取得します。
SF。

1

私は何十年もの間これに関する情報を探していました。これまでの私の推測では、この用語は、数値計算の特別なサブフィールドからSimulaに来たもので、関数(固有値など)を実装する特定のアルゴリズムは、しばしばmethodと呼ばれます。これは、同じ数学関数をさまざまなトレードオフで計算するためのさまざまな数値的方法があるためです。OOPでは、なぜならこの方法は、オーバーライドの、あなたがクラスに応じて異なる方法で実装「同じ」機能を持たせてもよい-例えば、面積がために異なる方法で実装されるだろうサークル長方形の両方である、シェイプ持って、地域を。これは、数値法の伝統的な概念の合理的な拡張のようです。


0

私は、OOPの歴史におけるこの言葉の語源については何も知りません。しかし、私はそれがないことを知っているdeductional(deducable)。それに対するより良い用語(より多くの Term用語またはMDT)は、反応または行為である可能性があります


2
私はあなたに同意しないと確信しています。「方法」は、全体が始まったときのことを完全に表す言葉であり、さまざまなものをモデル化する方法です。メソッドが現実世界で物事を変えるのと同じように。
-Vatine

「メソッド」はもともと実装コードを説明していたと思います。これは「プロシージャ」に似ています-結果を計算するためのメソッド/プロシージャ/アルゴリズムです。実装が知られていないインターフェースにそれを使用するのは少し奇妙ですが、元々(Simulaでは)「メッセージ」がおそらく使用されていました。それでも、メソッドを呼び出すと、どの実装を(呼び出しサイトで)知ることができない場合でも、実装コードを呼び出しています。
Steve314

1
私は3つの単語「関数」、「手順」、および「方法」を推測します、「関数」には数学的な意味があり(入力を出力にマップします)、「手順」は命令的です(一連のステップを実行し、同じで使用されます)軍隊の感覚); 「メソッド」にはどちらの意味もありません。これがおそらく、OOPで推奨される理由です。
-tdammers

「cromulent」の@Vatine +1
MattDavey

-1

REAL BASIC、VBx、およびVB.netのバックグラウンドを持つプログラマは、2つのタイプのメソッド宣言「FUNCTION」および「SUB」を認識しています。BASICファミリの言語では、「SUB」キーワードだけでなく「FUNCTION」キーワードを使用して関数を宣言できます。これら2つの違いは、「SUB」としてコードを実行するだけで値を返さない「FUNCTION」は値を返すことができるかどうかということです。しかし、OOの概念の出現により、subとfunctionという用語はメソッドとして交換可能に使用され始めています。


2
パスカルの手順/機能についても
同様

3
VBは、「メソッド」ではなく「サブルーチン」の略である「関数」と「サブ」を使用します。
アント

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.