D
Wikipedia:ja:D言語 より:
- D プログラミング言語 (D) は Digital Mars の Walter Bright によるオブジェクト指向・命令型・マルチパラダイムのシステムプログラミング言語です。C++ のリエンジニアリングが元で作られ、C++ の影響を強く受けていますが C++ の派生言語ではありません。D は C++ の機能を再設計すると共に Java, C#, Eiffel などのプログラミング言語で使われている発想から着想を得ています。
インストール
D でプログラムを組むには2つのものが必要になります: D コンパイラとライブラリです。手早くプログラミングを始めたいときは dlang-dmd パッケージグループをインストールするのが一番楽です。このパッケージグループには公式コンパイラ (dmd), 標準ライブラリ libphobos-devel[リンク切れ: 置換パッケージ: libphobos], 開発ツールのコレクション dtools が含まれています。
インストールのテスト
シンプルな Hello World プログラムでインストールが正しく完了できているか確認できます:
import std.stdio; void main() { string yourName = "archer"; writefln("Hello %s!", yourName); }
ファイルに上記のコードを貼り付けて hello.d という名前を付けて、ファイルと同じディレクトリで次を実行:
$ dmd hello.d
そうしたら次のコマンドでプログラムを実行することができるはずです:
$ ./hello
また、ディレクトリにオブジェクトファイルを保存せずにコンパイル・実行をしたいときは:
$ dmd -run hello.d
代替コンパイラ
コンパイラに関しては複数の選択肢が存在します。標準のコンパイラ (リファレンス実装) は dmd ですが、gdcAUR (GNU D Compiler) や ldc (LLVM D Compiler) も人気があります。どちらも [community] に入っています。
主な違いは dmd のバックエンドは FOSS ではない (Symantec からライセンスを受けている) のに対して、他のコンパイラは完全な FOSS です。3つのコンパイラはどれも同一のフロントエンドコードを共有しているため、言語機能のサポートについては (フロントエンドのバージョンが同じなら) ほとんど同等です。
hardening-wrapper
Arch Linux の dmd と libphobos パッケージは PIC のサポートを有効にせずビルドされています。hardening-wrapper[リンク切れ: パッケージが存在しません] を使用して実行ファイルをビルドすると強制的に PIC のサポートが有効になり以下のようにエラーが表示されます:
$ dmd app.d
/usr/bin/ld: app.o: relocation R_X86_64_32 against `__dmd_personality_v0' can not be used when making a shared object; recompile with -fPIC app.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status --- errorlevel 1
以下のような解決方法があります:
- hardening-wrapper[リンク切れ: パッケージが存在しません] をアンインストールする。
- PIC のサポートが有効になっている gdcAUR コンパイラを使用する:
gdc app.d
もしくは dub を使用する場合:dub --compiler=gdc
- abs を使って
-fPIC
フラグを有効にして dmd と libphobos を再コンパイルする。 - clang のリンカを使う:
CC=/usr/bin/clang dmd app.d
もしくは dub を使用する場合:CC=/usr/bin/clang dub
詳しくは以下のページを参照:
- https://issues.dlang.org/show_bug.cgi?id=15054
- FS#34983
- FS#46260
- http://wiki.dlang.org/Installing_LDC_on_Gentoo#Hardened_Gentoo
便利なライブラリとバインディング
- DDT - D のプロジェクトとコード管理のための Eclipse プラグイン
- Mono-D - D でプログラミングするための MonoDevelop アドイン
- QtD - D の Qt バインディング
- GtkD - D のオブジェクト指向 GTK+ ラッパー
- Derelict - マルチメディアライブラリのバインディング、ゲーム開発向け
- Deimos - 様々な C ライブラリのバインディングが大量に揃っているプロジェクト
参照
- GitHub の Phobos リポジトリ - 公式リポジトリ
- The D Programming Language - D の公式ホームページ
- Planet D - D に関するブログまとめ