teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2019/11/03 15:27

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  ---
15
15
 
16
- まあでもそれはコンパイル言語だからできる芸当だという事実もあって、動的言語というかインタプリタ言語では「クラスもオブジェクト」の方が自然です。逆に、これによって動的言語は強力な記述力を獲得しています。
16
+ まあでもそれはコンパイル言語だからできる芸当だという事実もあって、動的言語というかインタプリタ言語では「クラスもオブジェクト」の方が自然です(今どきのオブジェクト指向プログラミングが当たり前の前提の動的言語から見ればの話)。逆に言うと、これによって動的言語は強力な記述力を獲得しています。
17
17
 
18
18
 
19
19
  **Pythonによる例**

3

追記

2019/11/03 15:27

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  ---
9
9
 
10
- クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラムとしては「クラス」でひな形を記述するけど、その構造はコンパイル時にぜんぶ静的に解決されて消し飛ばされる、という言語設計だってありえます。Javaなどは基本的にはこれです。
10
+ クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラムは「クラス」でひな形を記述するけど、その構造はコンパイル時にぜんぶ静的に解決されて消し飛ばされる、という言語設計だってありえます。Javaなどは基本的にはこれです。
11
11
 
12
12
  この場合は「クラスはオブジェクトとしては存在しない」「メソッドはただの(インスタンス自身を引数に取ったりする)サブルーチンになる」「属性やメソッドへのアクセスはインスタンスのメモリ番地(と属性やメソッドによって予め決められたオフセット)で行う」みたいな方針になります。低レイヤから見ればただの手続き型に近い訳です(これも程度問題ですが)。
13
13
 

2

追記

2019/11/03 08:07

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -7,8 +7,10 @@
7
7
 
8
8
  ---
9
9
 
10
- クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラムとしては「クラス」でひな形を記述するけど、その構造はコンパイル時にぜんぶ静的に解決されて消し飛ばされる、という言語設計だってありえます。Javaなどはこれです。
10
+ クラスを必ずオブジェクトにしないといけない、ということはないはずです。プログラムとしては「クラス」でひな形を記述するけど、その構造はコンパイル時にぜんぶ静的に解決されて消し飛ばされる、という言語設計だってありえます。Javaなどは基本的にはこれです。
11
11
 
12
+ この場合は「クラスはオブジェクトとしては存在しない」「メソッドはただの(インスタンス自身を引数に取ったりする)サブルーチンになる」「属性やメソッドへのアクセスはインスタンスのメモリ番地(と属性やメソッドによって予め決められたオフセット)で行う」みたいな方針になります。低レイヤから見ればただの手続き型に近い訳です(これも程度問題ですが)。
13
+
12
14
  ---
13
15
 
14
16
  まあでもそれはコンパイル言語だからできる芸当だという事実もあって、動的言語というかインタプリタ言語では「クラスもオブジェクト」の方が自然です。逆に、これによって動的言語は強力な記述力を獲得しています。

1

追記

2019/11/03 08:06

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -43,6 +43,8 @@
43
43
 
44
44
  クラスベースの対立語はプロトタイプベース(インスタンスベースともいう)ですが、これ実は上述のような「クラスもオブジェクト」の立場とそんなに本質的な違いがありません……。それでもコードの見た目(流儀)をクラスベース風にするかどうかという差異は生じるので、そこで区別できます。
45
45
 
46
+ 「オブジェクト指向」は更に広い概念で、クラスベース、インスタンスベースのどちらも含みます。
47
+
46
48
  ---
47
49
 
48
50
  > 基となるのは「オブジェクト」で、「プロパティとメソッドを持つ実体」が定義なのでしょうか?