Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,768)  
Tera Term  (1,863)  
CrystalDiskInfo  (1,753)  
HandBrake Japanese Language Version  (1,682)  
CrystalDiskMark  (840)  
FFFTP  (808)  
ffdshow  (757)  
MergeDoc  (629)  
mixfont-mplus-ipa  (619)  
10  TortoiseSVN  (517)  
11  FreeMind  (445)  
12  BathyScaphe  (421)  
13  Amateras  (380)  
14  Boookends  (375)  
15  SMPlayer  (370)  
More >>

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

2008年01月21日 10:13 Nikolai-Sivertsen(2008年1月17日(木)) 1 2
 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のガベージコレクタを移植する必要がある。移植のために必要な作業はそれほど大量ではなく、また各システムについて一度行なえば良いだけなのだが、これまでのところは上記のオペレーティングシステムについてしか行なわれていない。

最終更新:2009年06月18日 14:20
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.