§4.文字列処理




C++は文字列処理が苦手だと言われる。確かにprimitiveな文字列型を持っていない。std::stringを使ってやっと半人前。boost::regex(正規表現ライブラリ)を利用して、やっと一人前になれる。実際のところ、boost::regexをさらにwrapしないと、Perlのようにサクサクは文字列を扱えない。

Perlがのさばってきたのも、C++の文字列を機構が弱かったからだし、Rubyが一躍脚光を浴びたのも、Perl風で、Perlよりまともなスクリプト言語だったからに過ぎない。

現在、文字列がらみの処理で速度が要求されない場合ならば、Ruby以外の選択肢はないだろう。

いま作っているスクリプト(?)言語は、C++のソースに落ちるんでstringもつかえるし、正規表現ライブラリも自分で持っている。だからと言って、Rubyの代わりになるとはこれっぽっちも思っていない。インタプリタ型の言語は、エラーが出てすぐに修正して再開できたりして、ターンアラウンドタイムが非常に短い。(コンパイル型の言語でもエディットコンティニューは出来なくはないが、その実装は非常に難しく手間のかかる作業だとだけ言っておこう。)

もうだいたいの方向性が見えてきたかも知れない。

1.C++の言語拡張として実装する(gcc等を裏で使用して暗黙のうちにビルドする)
2.よって最終的にはネイティブコードに変換される
3.既存のソースをコンパイルできる
4.C++で書いたソースコードと同等の速度を期待できる
5.C++にテンプレートを拡張した機能を付与する
6.ラムダ式やカリー化、delegateをサポートする
7.C++にMix-in機構を導入する

だいたいは、このくらいである。Rubyのイテレータブロックとか好きなので、たぶん取り入れるだろう。先進的な機能は、それくらいである。この言語を実際の開発で使おうと思っているので、3.と4.は特に重要である。