見出し画像

Declaration v.s. Definition

「語源で身につく技術用語」シリーズ、A, B, C と来て、今回は D で始まる単語です。どちらもプログラミングでよく使われる用語ですが、その成り立ちにはどのような違いがあるのでしょうか?


はじめに

プログラミングでよく使われる declaration と definition との違いについて、今回も語源から考察していきたいと思います。

Declaration

Declaration は通常「宣言」と訳されますが、その原義はなんでしょうか?

中英語 (Middle English, ME)

中英語では declaracioun だったようです。ちなみに動詞形の declare は中英語でも declare(n) でした。

ラテン語 (Latin, L)

KDEE によると dēclārātiō(n-) 由来となっていますが、Etymonline だと間に古フランス語 (Old French, OF) の declaration が挟まっています。古フランス語経由だとすると、中英語で変化した綴字が現代英語で先祖返りしたことに!?
さて、この dēclārātiō(n-) は dēclārātus (p.p.) に由来し、dēclārāre (to make clear) に辿り着き、さらにこれは dē- + clārāre に分解できます。
ラテン語接頭辞の dē- には様々な意味がありますが、ここでは「強意」と捉えるのがよさそうです。KDEE においても「はっきりさせる、説き明かす」が原義であると書かれています。ただ、英語においては「布告する」の方が早かったとのこと。また、原義は英語では18世紀初頭には廃義となったようです。
プログラミングの文脈では、これこれの(変数|関数)をこれから使いますよと事前にはっきりと説明して全体に布告するといったイメージで捉えたらよいのかもしれません。変数に値を代入したり、関数の中身を記述したりせず、名前や型(関数の場合は引数・戻り値も含む)を明らかにするということですね。

Definition

Definition は通常「定義」と訳されますが、その原義はなんでしょうか?

中英語 (Middle English, ME)

中英語では diffinicioun, difinicion だったようです。現代英語で -tion なのが中英語では -cio(u)n なのはあるあるですかね。Declratation - declaracioun もそうでしたし。

古フランス語 (Old French, OF)

中英語の dif(f)inicio(u)n は古フランス語の définition に遡るとのことですが、こちらの方が現代英語に近いですね。実際、現代フランス語でも définition のまま変わっていないようなので、なぜ中英語でフランス語とは異なる綴字にしたのに現代英語でフランス語とほぼ同じ綴字に戻った(?)のかが気になります。

ラテン語 (Latin, L)

古フランス語からさらに遡るとラテン語の dēfīnītio, diffīnītio に辿り着き、さらに dēfīnītus, diffīnītus (p.p,) そして dēfīnīre (to end, limit, determine) に行き着きます。そして declaration 同様さらに de- + fīnīre (to limit, finish) へと分解できます。ここでも de- は強意と捉えるのがよさそうです。
プログラミングの文脈では、変数に値を代入したり、関数の中身を記述したりして、名前や型だけでなくその中身も固定化・最終化するとイメージしたらよさそうです。

まとめ

Declaration, definition ともに強意の接頭辞 de- を持ちますが、それを除いた意味は:
Declaration: (どんな変数や関数を使うのか、その名前や型を) 明らかにすること・公に述べること、
Definition: (変数の値や関数の処理内容を) 最終的に定めること、
とイメージするとよさそうです。
(もっとも最近のプログラミング言語でどこまで declaration を独立して記述する必要があるのかと問われると……)

この記事における参考文献・サイト

#英語 #English #フランス語 #French #ラテン語 #Latin #ギリシア語 #Greek #語源 #Etymology #技術用語 #TechnicalTerm #英語史 #HistoryOfEnglish #hel #hel活 #綴字変化

この記事が参加している募集

#新生活をたのしく

47,912件

この記事が気に入ったらサポートをしてみませんか?