数言語縦断による実装

高木です。おはようございます。

先日、Visual Studioで左右のソースを見比べながらプログラミングしていました。
片方はC#、もう片方はC++だったと思います。

それを見た弊社のホープ、魔太郎がいいます。
「コンバートですか?」

実際にはコンバート(別のプログラミング言語で実装しなおすこと)ではありません。
状況を一言で説明しました。

「3言語縦断だ」

それを聞いて魔太郎はかなりビビっていました。

これについては昨日のブログでも書きましたが、コア部分をC++で、フロントエンドをC#で、そしてC++/CLIでブリッジという構成です。
今後、この構成に加えて、PHPで実装する階層が加わる予定です。
そうなると4言語縦断ということになります。

私の場合、昔から、階層ごとに異なるプログラミング言語を使い分けて実装するというのは普通にありました。

たとえば、メインはCで実装し、Cでは書けないようなCPUアーキテクチャにべったり依存した階層はアセンブリという2言語の構成は、組込み開発に関わったことがある方なら経験者も多いことでしょう。
その構成にC++が加われば、これで3言語になりますね。
あるいは、基本はVisual Basic(昔なので.NETとかはなく、バージョン1.0~2.0あたり)を使い、パフォーマンスが必要な部分はCを使うというのもよくやりました。
最近は、基本的にC++で実装し、GUIだけTcl/Tkを使うということもやっています。

近年開発したもので一番規模が大きかったものでは、Linux上のプログラムをC++で、AndroidタブレットのプログラムをJavaで実装しました。
さらに、PHPでコードジェネレータを実装し、デバッグ用のシミュレータをTcl/Tkで実装しました。

Webアプリケーションの開発に携わっている方であれば、サーバーサイドをJavaとかPHPとかRubyとかで実装し、クライアントサイドをJavaScriptで、データベースのアクセスはSQLで、とかいう構成も普通にあるでしょうね。
ですので、私だけでなく、複数言語を使った開発というのは珍しいことではないのです。

魔太郎はビビっていましたが、彼にしても、Visual BasicとSQLのような構成なら普通に経験しています。
言語縦断というのとはちょっと違いますけど。

私としては、できることなら単一のプログラミング言語で済ませた方がシンプルでいいと思っています。
けれども、現実はどんどん多数の言語を使う方向に向かってしまっているので皮肉なものですね。