プログラミング言語の難しさ

最近ふと気がついた。Pythonは言語仕様がシンプルである。しかし決して複雑なことができない訳ではない。Pythonは1つの言語仕様で複数の機能を実現している。だから言語仕様がシンプルなのに色々なことができる。逆に、新しい機能を増やすときに、その機能のみを実現する言語仕様を追加したりはしない。デコレータはclassmethodを実現するだけの機能ではない。もっと汎用的である。Pythonでは言語仕様を最小限にシンプルにしようとしているのではないか。クラスのメソッドのselfの扱いなど色々なところで一貫性があるのはこのおかげだと思う。


C++では新しい機能を追加するときに、それを実現するためだけの言語仕様を入れているのではないだろうか?しかも、複数の機能が依存関係があり複雑性を増し、例外的なことに対処する新たな言語仕様が必要になったりとかもしているのではないだろうか?例えばポインタとリファレンスとかどうなのだろう?C++はあまり詳しくないので具体例は挙げられないが。得意な人は例を考えて欲しい。


そう考えるとPythonはいかにすばらしい言語であるかが分かる。Rubyは言語仕様がPythonよりかなり複雑だと思う。Rubyを勉強したときに難しく思ったのはこの点だと思う。Rubyを知っていてPythonを知らない人は静的言語より簡単になったからすばらしいと思っていると思うが、RubyプログラマPythonの真髄を知ったらどう思うだろう?