相変わらず、おいらの頭の中は、様々な画期的技術と路線の定まらないAB予想図でごちゃごちゃになってます。

ここ2日間、普段は調べないようなことを色々あさったわけですが、、、

ABの今後にどのような方向性を持たせるのかといった、最もベースとなる部分が揺らいでしまって、困っています。

おいらはユーザーに親しまれる言語システムというものが、チョイスで構成されるものと考えています。中でも、ABはシステム記述言語という位置付けに相当することと思います。システム記述言語とは、汎用性よりも、環境密着型でハイパフォーマンスを引き出すモノのことを指します。

例えば、VisualStudio.NETを例にあげてみると、その中には、C++、VB、C#、J#など、様々な言語が存在し、プログラマーは好き勝手に(環境を考慮しながら)それぞれの言語を選択することと思います。もちろん、システム記述用途で、ネイティブベースで動作する実行コードを生成するにはC++しかないのだと思いますが、昨今のソフトウェア業界が必要とするほとんどのケースはそうではありません。

昨今のソフトウェア業界が必要とするものは、即ち、ソリューションを実現するためのツールです。ネイティブに動くかどうかは議論の的ではなく、問題となるのは、生産性、信頼性、汎用性などです。

そうはいっても、システム記述用途の言語が無くならないことは確かな模様(こいつだけが救いか…)。これは、低レベルでのシステムの問題改善、考察はそれ以外の言語からはアクセスできないからです。例えば、JAVAはJAVA VM上で、C#やJ#などはCLR上で動作しますが、VMそのものに手を突っ込むことはできません。ようは、CPU直読のネイティブコードとは疎遠だってことです。

ここでわからない方のためにメモメモ

  • JAVA VM … JAVA仮想マシン。様々なプラットフォームで用意されており、JAVA VM用のコードを実行できる。
  • CLR … .NET Frameworkが提供する仮想マシン。仕組みはJAVA VMと似通っているようだが、決して同一ではない。C#、J#、VBコンパイラが生成するコードは、このCLRで解読できるネイティブコードである。

なにやら知り尽くしたかのように書いておりますが、ここらへんについてのことはおいらも勉強中なのですf(^^;;;。間違っていたら、ご指摘願います。

で、話を元に戻して、ABはこの荒波の中、どうやって駆けずり上がればいいのかといったことを考えていきましょう。まず押さえておきたいところは、ABはC++同様、システム記述に特化した特長を持ち合わせているという点です。これは、CPUが直読できるネイティブコードを生成できること、ポインタ操作を前提としてることなどが深く関係しています。オブジェクト指向であり、言語仕様そのものを自ら拡張できちゃうような、テンプレート機能(こいつはC++のみ。ABには無いっす)など、システムの低レベル部分を操作できるような仕様さながら、最新の言語システムに近づこうとがんばってはおるようですが…

しかし、ABもC++も、最終的には、完全なCPU直読のネイティブコードを生成するのです。仮想マシンでの動作は考慮されておらんのです。これはC#、J#、VBなどの言語システムと比較する際の決定的な違いです。

  • ハードウェアに依存するコーディングが必要 … C++、ABの出番。
  • ソリューションを実現するため … C#、J#など。SunのJAVAも大活躍。

そうすると、ABもただ単に言語システムの改善を行っていくのではダメなんですね。ソリューション事業でABを選択してもらうためには、ABユーザーが移行し易い形の、JAVA VMまたはCLR用のコンパイラを提供するのが一番大胆な方法だと考えてしまいます。もう、こうなってくると夢の話になってしまいますが、ActiveB#なんてのを新しく作るしかなさそうです…

とにかく、今後数ヶ月で64ビットネイティブコンパイラの開発をすると発表しておりますので、まずはそちらを優先的に進めます。

そっちが一段落したところで、.NETへの対応やJAVAへの対応策を考えていきたいと思います。