クラスの機能に関して

  • クラスは以下の機能の複合体

a) 名前空間(+アクセス指定)
b) マルチプルインスタンス
c) ポリモルフィズム(or Duckタイピング)
d) Mix-in


c)とd)が継承機能で実現されることである。しかし、スクリプト言語などの動的言語であれば、Duckタイピングは普通に出来るし、Mix-inもクラスの属性(メソッド)をコピー出来れば実現できる。なので、継承機能は不要だと思う。実際、私が普段Pythonスクリプトを組む時は継承機能は、ほぼ使用しない。クラスの継承機能があると分かりづらくなるし、言語の実装も複雑になると思う。


また、クラス機能に関しても、構文が分かり易ければ、プロトタイプベースであろうと何であろうと構わない。要は、a)とb)の機能が実現できれば良いだけ。あとは、既存のGUIなどのクラス階層を持つライブラリを取り込む時に、表現できさえすれば良い。これは、Luaなどのクラス機能がない言語であっても実現出来ていることからも、やはりクラスの概念は必要であっても、クラスの機能そのものは絶対的な必要性はないと言える。


Luaは、そういう意味では軽くて良いが、例外処理がないので、PythonのEAFP機能が実現できるかどうかが、最近気になっている。