読書

> C++ 移植性ガイド
> http://www.mozilla-japan.org/hacking/portable-cpp.html
数年前に見かけた文書。かなりエキセントリック。


ISO/IECのISが出たのが1998年の9月だそうなので、
上の文書はそれが出る以前に書かれたらしいということになります。
それがこの文書が示す状況を正当化するのかどうかは知りませんが。


で、それからもう7年も経っているわけですが、今でも普通に掲載され続けているわけです。
文書の更新を怠っているのか、それとも実情に変わりがないのか。
まぁ、私としては別にどっちでも良いわけですが、
変わっていない処理系は、やっぱり本当に変わっていないんでしょう。きっと。




C++の設計と進化」の「グローバルオブジェクトの初期化」のあたりを読んでいて、
突然このMozillaの文書の存在を思い出した。


[2.3, 2.4]
Stroustrupにとって、Simulaでの経験から、
オブジェクトを静, 動, 自動の区別なく、どのメモリ領域にも配置出来ることは重要であり、
それはC++の設計指針の1つであった、
というようなことが書いてある気がするわけですが、


[3.11.4]
それにも関わらず、それによって直ちに浮上する、
グローバルオブジェクトの初期化の問題は曖昧なままの?
ここでは解決法としてレイジーな初期化なんかが例示されているわけですが、
普通はどうするのだろうか。Mozilla流なのか。圧倒的に経験不足で分かんねぇ。



[3.3.2]
あと今日読んだところで驚いたのは、
> 当時は、CのためのLALR(1)を文法を書ける人がいなかった。
> ANSI Cが使ったLALR(1)文法は1年半後にTom Pennelloが作ったが、
> それはC++にとって遅すぎた。
という下り。
int (x); ぐへぇ、とかいう話もあるが、
やっぱ、デザインした後に、LALR(1)に起こすのか。
間違ってもLALR(1)の枠内で考えたりはしないんだな、と。。。



って、まぁ、そういう細かい問題は、分かればそれなりに面白いんでしょうが、ちょっと私には難しい。
それよりも強く感じたのは、言語自体の流動性というか、言語だって人間が作ってるんだなぁという感じ。
末端ユーザーの私にとって、言語は基本的に絶対不変なわけです。
勿論、そのような安定した状況は、標準化の努力の成果であったりするわけなんでしょうが。
その硬直的な印象が、なんだかちょっとだけ変わった。