Boxing

格闘技のボクシングは何故 "Boxing" かというと、
拳を握る動作が「箱を作る」のに喩えられるからなのですね。


プログラミングの世界でも、値に対して boxed / unboxed という形容詞が使われ、
unboxed なものを boxed なものにすることを boxing、その逆を unboxing と言ったりします。
これはどっちかというと、「箱を作る」のではなく「箱に入れる/出す」というような意味で使われています。


じゃあ、boxed / unboxed とはどういう状態なのかといえば、
C言語的に言えば、メモリ上に直接乗っているような値は unboxed で、値へのポインタは boxed。
Java 的に言えば、プリミティブ型(『1』とか)が unboxed で、
参照型(『new Integer(1)』とか)が boxed というような具合です。
(Java 5.0 からはある程度これらが自動変換されるようになりましたね)
あんまり厳密に定義が決まっているような言葉じゃない気がします。


初心者向けのプログラミングの説明として、
「変数ってのは箱みたいなもんだ」というのがよくありますが、
それと混同するとわけわからなくなるなー、とか思いました。(普通は混同しねぇか)


まぁ、ただの言葉なのでそれだけの話なのですが、
箱に入れる/出すっていうイメージは面白いと思います。
箱に入れるというのは、ユーザ(プログラマ)と対象の間に一段階クッションを置き、
箱を介して間接的に対象を触るようにする操作であり、
それによって詳細を隠す(文字通りブラックボックス)だとか、
抽象化するとった方向に結び付けやすいですからね。