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

CやC++が持つ性能の高さとRubyやPythonのような最近のプログラミング言語が持つプログラマーの生産性の高さを併せ持った言語「Digital Mars D」が登場した。

» 2008年01月22日 04時52分 公開
[Nikolai-Sivertsen,Open Tech Press]
SourceForge.JP Magazine

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

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

 Dの目的の1つは、ソフトウェアの開発コストを少なくとも10%削減することだ。そのため生産性を高める機能を追加し、またバグで時間を浪費しないように言語を調整している。Dは命令型、構造化、オブジェクト指向、ジェネリックプログラミングといったプログラミングパラダイムをサポートしている。DはCやC++に非常に似ているので、特にCやC++プログラマーは比較的簡単にDを習得できるはずだ。

 Dには、同じシステム上のCとABI(アプリケーション・バイナリ・インタフェース)レベルでの互換性がある。つまりDの中でprintfなどのCの関数を呼び出せるのだ。ただしCやC++とソースコードレベルでの互換性はない。DではC++と同じように、システムの下層に位置するデバイスドライバやOSを書くことができる。また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上で使用できる。そのほかのOSで利用可能にするには、開発者がそのOSをサポートするためにDのガベージコレクタを移植する必要がある。移植のために必要な作業はそれほど大量ではなく、また各システムについて一度行なえばよいだけなのだが、これまでのところは前記のOSについてしか行なわれていない。

 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などのより簡単な別の言語を学ぶことから始めることをお勧めする。

関連キーワード

プログラミング | プログラマー


Copyright © 2010 OSDN Corporation, All Rights Reserved.