構文と意味と抽象化

C/C++では値型と参照型は構文上で違う。C#では構文上同じだが言語やシステムの内部で意味を解釈してくれる。違う意味を持つものを構文上同じ書き方ができるというのが抽象化。JavaC#ではメモリ解放処理を書かなくても内部で自動で行ってくれる。抽象化が進むにつれて構文がどんどんシンプルになるが、システム内部では同様のことが行われないといけない。


つまり処理を行う場所が、自分のプログラムか、ライブラリか、システム内部かのどこかであるだけで、どこにも書かれていないということではない。極論すれば構文をシンプルにするというのは、より低レベルな部分にコードを移していることにすぎないと思う。どう抽象化していくかによって〜指向だとか、関数型だとかの言語のパラダイムが決まる。