D言語は、
C言語のABI互換性を保ちながら、テンプレートによるジェネリックプログラミング、
オブジェクト指向プログラミング、関数型プログラミングといった多様な
プログラミングパラダイムをサポートするマルチパラダイム
プログラミング言語です。
概要
D言語は、
型推論、ガベージコレクション(明示的なメモリ管理も可能)、スライス可能な動的および静的
配列、連想
配列など、効率的なプログラミングを可能にする様々な言語機能を備えています。また、単体テスト、事前・事後条件のチェック、不変条件のチェック(契約プログラミング)、debug識別子の導入など、プログラムのデバッグと保守を強力にサポートします。
並列処理への親和性も重視されており、特に指定しない限りグローバル変数はスレッドローカルストレージとなり、不変(イミュータブル)なデータ型もサポートされています。標準ライブラリであるPhobosには、メッセージパッシングを用いた並列(および並行)処理が実装されています。
C++のようなテンプレートや
メタプログラミング機構も備えていますが、D言語ではテンプレート構文がより簡潔に再設計されています。コンパイル時関数実行もD言語の特徴の一つです。
D言語はシステム
プログラミング言語としての側面も持っており、分かりやすいコードが高速かつ安全に動作することを目指して設計されています。パフォーマンスが要求される箇所では、インラインアセンブラやポインタ演算なども利用可能です。危険な型変換などを用いたコードは、関数の属性によって安全なコードと分離されるようになっています(関数の属性には、純粋関数を示すものなどがあります)。
コード例
d
import std.stdio;
void main()
{
writeln("Hello, world!");
}
d
import std.stdio;
int sum(int a, int b)
{
return a + b;
}
void main()
{
int x = 10;
int y = 20;
writeln(sum(x, y));
}
d
import std.stdio;
import std.algorithm: map, reduce;
int add(int a, int b) {
return a + b;
}
void main()
{
int[] numbers = [1, 2, 3, 4, 5];
int result = numbers.reduce!add;
writeln(result); // 出力: 15
}
特徴的な言語機能
統一関数呼び出し構文 (Uniform Function Call Syntax, UFCS)
オブジェクト指向におけるメソッド呼び出しと同様の構文で、フリー関数(グローバルレベルで宣言された関数)を呼び出すことができる機能です。関数の左側に置かれた値が第一引数として評価され、「メソッドチェイン」と呼ばれる記述が可能になります。同様の機能は、
プログラミング言語Nimにも存在します。
歴史
1999年12月: ウォルター・ブライトによって考案。
2001年12月: 初期バージョンがリリース。
2007年1月: バージョン1.0がリリース。
2007年6月: バージョン2の開発が開始。
2007年8月: D言語の第1回国際カンファレンスがアメリカのシアトルで開催。
2012年12月: バージョン1.0の最終リリース (1.076)。
2013年5月: DConf2013がシリコンバレーのFacebook社屋で開催。以降、年1度開催。
2015年: 米国ワシントン州にてD言語財団が設立。
2015年: DMDのフロントエンド部の実装がC++からD言語に置き換え。(2.069)
2017年: DMD実装のコード共用箇所の権利問題が解決し、オープンソース化(Boost Software License)。
2018年5月: GNUコンパイラコレクションのバージョン9.1からD言語がサポート。(2.076相当)
D1とD2
D1は機能的に成熟しており、メンテナンスモードに移行しています。標準ライブラリの不足を補うためにTangoライブラリと組み合わせて利用されることが多く、2012年末でサポートが終了しました。D2は、当初、新しい機能を積極的に取り込むための開発系バージョンとして分離されました。標準ライブラリPhobosが強化され、言語仕様も変更されました。例えば、文字列型(string)が変更不可能な配列となり、スレッド局所変数がデフォルトになるなど、D1との上位互換性はなくなりました。D2では、言語やライブラリの改良を優先し、破壊的な変更が頻繁に発生していましたが、現在では非推奨または廃止される機能はコンパイル時に警告が表示され、公式ドキュメントで事前に告知されるようになっています。
開発ツール
デバッガはC言語やC++と同じオブジェクトフォーマットを使用するため、C/C++用のものが利用できます。GDBなど、D言語をサポートしているデバッガも存在します。
詳細については、以下のページを参照してください。
https://wiki.dlang.org/IDEs
https://wiki.dlang.org/Editors
Visual D
マイクロソフトの統合開発環境Visual Studio向けのプラグインです。無償で利用可能なVisual Studio Shellにも対応しています。
脚注
関連項目
ABA Games: D言語を使用したゲーム開発で有名。
Eclipse: プラグインを利用することでD言語の開発環境として利用可能。
Code::Blocks: D言語開発環境としても利用可能。
外部リンク
D Programming Language - D言語公式ウェブサイト
dlang.orgの日本語訳
プログラミング言語 D
GDC - D Programming Language for GCC
LDC - LLVMを使用するDコンパイラ
ライブラリ
DUB registry - 公式のパッケージマネージャDUBで使用可能なパッケージの一覧
リソース
D Wiki - 公式Wiki
わかったつもりになるD言語 (通称わなD。D memoの
2007年版)
D言語の四方山話
D言語入門
D language site
その他
Walter Bright's Homepage