今、私のPCの中にあるABを構成しているソースコードでは、従来のString型の前面撤廃がなされています。その代わりに、AB5CP1のライブラリに含まれている開発途中のCStringがそれに取って代わる存在になりつつあります。

しかし、現状のCStringを従来のString型へ移行するのは、至難の業。発想としては、+演算子などを有効にして文字列演算を行えるようにするということで良いのですが、パラメータの引渡し、ローカル領域内での確保と解放のタイミング、演算過程で生じる一時オブジェクト保存領域の制御など、実はいままでコンパイラが行ってきた部分をコンパイラ自信が汎用化し、それらの具体的な処理の流れをStringクラスモジュールライブラリとして定義していかなければなりません。

それにしても、演算子のオーバーロードの連続となるソースコードに対するコンパイラのデバッグは辛いものがあります。何階層にもなって呼ばれるオーバーロード解決用のモジュール、その中を一つ一つチェックするのですが、出てくる単語は “+” とか “=” ばかり…

現状ですと、実用的なStringクラスモジュールを稼動させられるのかどうか、ちょっと自信がありませんが、なんとかこの壁は乗り越えたいところです。

まぁ、String型そのものは特段珍しい存在ではありませんが、このような些細な仕様がその言語で実現できるコーディングレベルを左右するものだと感じます。

コンパイラレベルで実装していた従来のString型は、絶対的な存在だったのかもしれませんが、それらをクラスモジュールとして持たせることで無限の拡張性が生まれるのです(なんと素晴らしいことだ!!)。