たかがString型、されどString型ということでコンパイラの再設計をしているところですが、AB5でどこまで言語仕様を落とし込むかが問題です。

確かに、演算子のオーバーロードを用いれば、String型をクラスモジュールとして実装することは可能です。今現在、私の手元にあるテストコードでは、ABコンパイラと演算子オーバーロードを活用したStringクラスが正常に稼動しています。もちろん、Print命令やInput命令も従来通り利用できますし、メモリ管理の仕様がオープンになることでString型特有のバグも減少の方向に進むかと思います。

しかし、AB5ではただ単に演算子のオーバーロードでString型の一件を済ませてしまうのは、ちょっともったいない感じもします。というのも、C#、VBなどを見習うと、C/C++やABにはない下記のような機能を持ち合わせ、オーバーロードなどという “ウラ技” 的な発想ではなく、クラスモジュールが提供する正統派な機能として、これらの問題を解消しています。

  • インデクサ … オブジェクトに対して添え字アクセスが可能
  • プロパティ … メンバと同様のアクセス方法で、任意の処理を実行可能

オーバーロードを悪く言うつもりはありませんが、手続き型の言語仕様の側面から見て例外的な手法を提供するのであれば、こういうやり方が正しいのかもしれません。

さてさて、String型がある程度動くようになったところで、開発者向けにβ版のリリースをしていこうと思います。今回のβ版は、従来のString型を一掃するというバグバグしい内容となっているので、一般公開は避けさせていただきます。