感想:プログラミングのNullとNilの違い

スポンサーリンク
スポンサーリンク

プログラミング言語によって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と区別するために使われる、と考えておくと各言語での辻褄が合っている、気がしなくもないです。

コメント

タイトルとURLをコピーしました