わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

nullはヌル? (2)

  1. なぜ多くの日本人がnull/NULLをヌルというか
  2. C言語の規格で,NULLはどのように読まれるべきか
  3. 大学の情報教育において,null/NULLはナルと呼ぶべきか,それともヌルか

本日は2番目の項目を取り上げます.なお,昨日からカテゴリを一部変更しています.3番目の項目を取り上げる際にも,変わる予定です.
学生への返信メール,そしてこのエントリを書く際に,参照した情報を挙げますと:

前二者は,自分の授業の教科書です.
JIS X 3010を読むには,http://www.jisc.go.jp/app/JPS/JPSO0020.htmlの「JIS規格番号からJISを検索」のフォームで「X3010」を入力すれば,あとは一本道です.
順に見ていきます.『入門以前』の巻末索引に当たると,「ナル」から始まる項目はなく,「ヌル」はあります.p.236を確認すると:

NULLの読み方は、英語では「ナル」に近い発音をするのですが、大抵の日本人は「ヌル」と発音します。
NULLは0番地を意味します。つまり0番地を指し示すポインタで、ヌルポインタとも呼ばれます

入門書なのに「ヌル」だけでなく「ナル」も取り上げているのは,将来,他の本を読んだりコミュニケーションをしたりするときのためではないか…と書くと我田引水でしょうか.
索引から引けるのはここだけですが,数ページ先まで読むと,文字列の末尾バイトの説明で再度,「ヌル」「ナル」が出てきます.

「終わり文字」は'\0'で表現され「null文字(ヌル文字、ナル文字)」と呼ばれます。
(p.241)

次に『スーパーリファレンス編』.こちらの末尾索引では,「ヌル」から始まる項目がなく,「ナル文字」があります.

また、'\0'で表現された文字をナル文字(null character)と呼びます。
(p.51)

残念ながらNULLとは別の値ですが,英語表現がついているのは要注目です.
もう一度索引に戻って,ダイレクトに,「NULL」を引きましょう.「ナル文字」と同じく,出現ページが多いのですが,最もよさそうなのはここ:

空ポインタ定数(null pointer constant)とは、値0を持つ汎整数定数式またはその定数式を型void *にキャストした式のことです。最も簡単な表現では、「(void *)0」です。いくつかの標準ヘッダファイル(たとえば、など)では、NULLとして定義されています。
(p.184)

NULLに関する同様の説明は,JIS X 3010 : 2003のp.35でも知ることができます*2
以上から,「文字列の末尾バイトについては,規格の中で,“ナル文字”という名称がついている」「NULLの読み方については,規定されていない」の2点が指摘できます.
その上で,NULLの語源が"null pointer constant"であることと,前日に書いたとおり,C言語の定数は英語をもとに命名されていることから,NULLだけをラテン語・ドイツ語読みすることは不自然であり,やはり,ナルであるべきだという結論になります.
ところで,もしNULLの語源がラテン語・ドイツ語であれば,K&Rに記載があってもおかしくありません.後日に確認したいと思いますが,記憶する限り,そんなことは書かれていなかったはずです.
もし書かれていれば,多くの訳書や和書で,本文あるいはコラムとして,その言及があってもおかしくないはずです.しかし個人的にそういうものを目にしたことがありません*3
このことは,NULLをヌルと呼ぶのが日本に限定された問題であることを示唆しています.

*1:追記:日本語で書かれたC言語の規格です.ただし,無料で読めるのはありがたいのですが,有償の書籍をスキャンされたものであるためページ移動に苦労すること,そしてC99の規格である点は,要注意です.

*2:ついでに,「ナル文字」についてはp.12にあります.

*3:これも,昨日同様,ご指摘をいただければ可能な限り確認に努めますし,それによって,撤回する用意はあります.