Category:用語の雑学 2005-06-13

ネストとインデント

ネストとインデントは同じような場面で使われる言葉です。 ベテランのプログラマで、ネストとインデントの違いを理解していない人はいないでしょう。 でも、最近はインデントの方が良く使われ、ネストの事を余り知らない人も多いようです。 また、ネストもインデントもプログラミング用語ですが、インデントはワープロなどの文書 を扱う場合にも使われるので、コンピュータの経験がある人は良く知っている言葉だと思います。

ネストの本来の意味は「(鳥や虫の)巣」の事です。プログラミング用語では「入れ子」の事をネストと呼びます。 これは、プログラムを図的に表現した場合、「入れ子」が「巣」のように見えるからではないでしょうか。 このように、ネストとは言語構造上の包含関係を表す場合に使う言葉です。例えば、次のように使います。

  • while文の中にif文をネストする (Perlなど)
  • body要素の中にh1要素をネストする (HTML)

ネストの中でさらにネストする場合もあるので、ネストはレベルを持ちます。ネストされていない状態をレベル0、 1つネストされるとレベル1、されにその中でネストされるとレベル2という具合です。ネストはプログラミングの 制御構造を表し、構造化プログラミングの基本的な概念です。

一方、インデントとは「(のこぎり状の)ギザギザ」の事です。ネストされた制御構造を実際にプログラミングする場合、 ネストのレベルが良く分かるように「字下げ」してコーディングします。プログラミング用語ではこの「字下げ」をインデントとよびます。プログラミングの場合の「字下げ」は、制御構造そのものを表現しています。 同じような事はHTML文書などの構造化されたデータ構造を扱う場合にも言えます。この場合のネストはデータ構造の「入れ子」を表し、この入れ子をHTMLで記述する時に「字下げ」して表現するのです。

以上を整理すると以下のようになります。

  • ネスト → 入れ子 → 制御構造やデータ構造の包含関係を表す言葉 → セマンティクス(意味上の言葉)
  • インデント → 字下げ → コーディング上のネストの表現方法 → シンタックス(表記上の言葉)

こんな理解でどうでしょう。


最終更新のRSS Last-modified: Wed, 12 May 2010 08:57:42 JST (2934d)