プログラマの生産性を高める新たな言語「D」

 CやC++が持つ性能の高さとRubyやPythonのような最近のプログラミング言語が持つプログラマの生産性の高さとを一つの言語が併せ持つことはできないのだろうか? Zortech C++コンパイラやDigital Mars C/C++コンパイラの作者であるWalter Bright氏は、正にその問いを自らに問いかけてC++の後継言語である Digital Mars D を作成した。Dは仕事を手早く片付けるために役立つ実用的なプログラミング言語で、ちょうど1年前に最初のリリース(バージョン1.0)が公開された。

 なぜ新しいプログラミング言語が必要なのだろうか? その理由の一つは、C++があまりに複雑だからということだ。C++のすべての機能を覚えることはあまりに困難であるため、たいていのC++プログラマは特定の機能群を使用することが習慣となり、それ以外の機能には手を出さなくなる。このことはコンパイラにとっては特に問題ではないが、しかし別の機能群に慣れている他のプログラマがコードを読もうとしたときには問題になる可能性がある。Dは、重要な機能を省略することなく非常に単純化することによってこの問題を回避した。もちろんDの利点はこれだけではない。

 Dの目的の一つは、ソフトウェアの開発コストを少なくとも10%削減することだ。そのため生産性を高める機能を追加し、またバグで時間を浪費しないように言語を調整している。Dは命令型、構造化、オブジェクト指向、ジェネリックプログラミングといったプログラミングパラダイムをサポートしている。DはCやC++に非常に似ているので、 特にCやC++プログラマは比較的簡単にDを習得することができるはずだ。Dには、同じシステム上のCとABI(アプリケーション・バイナリ・インターフェース)レベルでの互換性がある。つまりDの中でprintfなどのCの関数を呼び出すことができるということだ。ただしCやC++とソースコードレベルでの互換性はない。DではC++と同じように、システムの下層に位置するデバイスドライバやオペレーティングシステムを書くことができる。またDは、ガベージコレクタ(ただし手動でのメモリ管理も可能)など、JavaとC#の数多くの便利な機能を採用している。

 数ヵ月前にDを学ぼうと思い始めたときに私は、習得には長い時間がかかるだろうと見込んでいたが、間違っていた。Dを学ぶ前にJavaのプログラミングを少しだけしたことがあったのだが、Dは非常に似ていると感じた。とは言えDを今の時点で学び始めるには、CやC++でプログラミングをしたことがない人向けの優れたチュートリアルがないという難点がある。

 Dのコンパイラには、DMDとGDCの2つがある。DMDはオフィシャルのコンパイラで、D言語の標準に100%準拠し、Dのソースコードからアセンブリコードへの変換を行なうためにプロプライエタリのバックエンドを使う。一方GDCは、Dのフリーのフロントエンドと、GCC(GNU Compiler Collection)のバックエンドを使っている。GDCはDMDとは違って今のところはまだ標準に100%の準拠はしていない。その理由は、GDCの開発者はDMDに新機能が追加される度に後追いで実装する必要があるためだ。GDCはLinux、Mac OS X、Cygwin、FreeBSD、AIX、MinGW上で 使用することができる。その他のオペレーティングシステムでも利用できるようにするためには、開発者がそのオペレーティングシステムをサポートするためにDのガベージコレクタを移植する必要がある。移植のために必要な作業はそれほど大量ではなく、また各システムについて一度行なえば良いだけなのだが、これまでのところは上記のオペレーティングシステムについてしか行なわれていない。

 Dのプログラム専用の、SourceForge.netに似たDSourceには、システムライブラリからGUIライブラリ、サーバ用プログラム、通常のアプリケーションまで、様々なDのオープンソースのプロジェクトがすでに存在している。オープンソースのDのプロジェクトに協力したいと思ったら、是非DSourceを見てみると良いだろう。DSourceにはチュートリアルもいくつかある。またDSourceには各Dプロジェクト用のフォーラムもあって、質問をしたりプロジェクトリーダーと話をしたりすることができる。

 Dは、Anjuta、Codeblocks、EclipseなどいくつかのIDE(統合開発環境)でサポートされている。各種テキストエディタ/IDE用のD用のプラグインはDSourceやProwikiで見つけることができる。

 私が気に入っているD用のエディタ/IDEは、D用の軽量エディタであるledsだ。leds自体がDで書かれていて、ソースコードもDSourceから入手することができる。ledsには文法ハイライト/文法エラーチェック/leds内からのビルドのサポートといった機能がある。ただ最新版のソースコードからのビルドは毎回コアダンプなどのエラーになり、まだ成功したことがない。そのためコンパイル済みのバージョンを使用しているのだが、残念ながらかなり古く一部の新機能は含まれていない。

 DでGUIプログラムを書こうと思っているのなら、GTK+のD言語バインディングであるGtkDの使用をお勧めする。GtkDは、GTK+用のグラフィカルなGUIデザイン用プログラムのGladeと一緒に使うことができる。それによりGUIの作成が手でコードを書くよりもずっと簡単で高速になるため、私にとっては大きなプラスだった。なお、Java/EclipseライブラリのSWTのポートや、wxWidgetsバインディングなどといったその他のGUIライブラリもDSourceから入手することができる。

 Dを使うことの難点としては、Dがまだリリースからあまり時間が経っていないために、チュートリアルやサポートが不足しているということがある。

 全体的にはDは素晴らしい新言語だ。Dがその作られた目的――C++の後継となること――を実現することを願っている。新しいプログラミング言語を習得することを検討しているすべての人にDを強く推奨する。ただし、これまでにプログラミング自体の経験がまったくないという人にはDelphiやJavaなどのより簡単な別の言語を学ぶことから始めることをお勧めする。

Linux.com 原文