プログラミング言語によってNullとNilが使われていますが、違いはなんだろう? っていうところで考えてみた感想です。エビデンスはない。
前提として、NullはCやJavaなど幅広く使われていて、NilはLisp、Ruby、Swiftなどで使われます。NullもNilも英語としては空を意味していて、言葉として大きな差はありません。
NullとNilの使われ方の違いを一言でいうと、Null実質的には値0x0を示していて、Nilはそれ以外のもの、例えばオブジェクトを示しているんだろうという感想。
Nullポインターの概念は1965年から生まれてC言語あたりで広がったのでしょう。変数が値やオブジェクトを示さない場合はNullであるというイメージ。
Nilのほうは、空ではあるけど機能がないわけじゃないよっていう感じ。Nilが後発だとおもうので、きっとNullと区別したい場合に使われたのでしょう。
例えばRubyのNilはオブジェクトなのであきらかにNullとは概念が異なっています。
また、javascriptライブラリのlodashにisNilという関数があるのですが、isNilはNullだけでなくundefinedもtrueを返します。これは明らかにisNullだと混乱を招くために命名を変えています。実際isNullという別関数もあります。
こんな感じでNullは値、NilはNullと区別するために使われる、と考えておくと各言語での辻褄が合っている、気がしなくもないです。
コメント