「D」の版間の差分
(en:D (programming language)への転送ページ) |
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
||
(2人の利用者による、間の5版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:プログラミング言語]] |
||
− | #redirect[[en:D (programming language)]] |
||
+ | [[en:D (programming language)]] |
||
+ | [[Wikipedia:ja:D言語]] より: |
||
+ | :D プログラミング言語 (D) は Digital Mars の Walter Bright によるオブジェクト指向・命令型・マルチパラダイムのシステムプログラミング言語です。C++ のリエンジニアリングが元で作られ、C++ の影響を強く受けていますが C++ の派生言語ではありません。D は C++ の機能を再設計すると共に Java, C#, Eiffel などのプログラミング言語で使われている発想から着想を得ています。 |
||
+ | |||
+ | == インストール == |
||
+ | D でプログラムを組むには2つのものが必要になります: D コンパイラとライブラリです。手早くプログラミングを始めたいときは {{Grp|dlang-dmd}} パッケージグループをインストールするのが一番楽です。このパッケージグループには公式コンパイラ ({{Pkg|dmd}}), 標準ライブラリ {{Pkg|libphobos-devel}}{{Broken package link|置換パッケージ: {{Pkg|libphobos}}}}, 開発ツールのコレクション {{Pkg|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 ですが、{{Pkg|gdc}}{{Broken package link|置換パッケージ: {{Pkg|gcc-d}}}} (GNU D Compiler) や {{Pkg|ldc}} (LLVM D Compiler) も人気があります。どちらも [community] に入っています。 |
||
+ | |||
+ | 主な違いは dmd のバックエンドは FOSS ではない (Symantec からライセンスを受けている) のに対して、他のコンパイラは完全な FOSS です。3つのコンパイラはどれも同一のフロントエンドコードを共有しているため、言語機能のサポートについては (フロントエンドのバージョンが同じなら) ほとんど同等です。 |
||
+ | |||
+ | == hardening-wrapper == |
||
+ | |||
+ | Arch Linux の {{Pkg|dmd}} と {{Pkg|libphobos}} パッケージは PIC のサポートを有効にせずビルドされています。{{Pkg|hardening-wrapper}}{{Broken package link|パッケージが存在しません}} を使用して実行ファイルをビルドすると強制的に PIC のサポートが有効になり以下のようにエラーが表示されます: |
||
+ | |||
+ | {{hc|$ 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}} |
||
+ | |||
+ | 以下のような解決方法があります: |
||
+ | |||
+ | * {{Pkg|hardening-wrapper}}{{Broken package link|パッケージが存在しません}} をアンインストールする。 |
||
+ | * PIC のサポートが有効になっている {{Pkg|gdc}}{{Broken package link|置換パッケージ: {{Pkg|gcc-d}}}} コンパイラを使用する: {{bc|gdc app.d}} もしくは {{Pkg|dub}} を使用する場合: {{bc|1=dub --compiler=gdc}} |
||
+ | * [[abs]] を使って {{ic|-fPIC}} フラグを有効にして {{Pkg|dmd}} と {{Pkg|libphobos}} を再コンパイルする。 |
||
+ | * clang のリンカを使う: {{bc|1=CC=/usr/bin/clang dmd app.d}} もしくは dub を使用する場合: {{bc|1=CC=/usr/bin/clang dub}} |
||
+ | |||
+ | 詳しくは以下のページを参照: |
||
+ | * https://issues.dlang.org/show_bug.cgi?id=15054 |
||
+ | * {{Bug|34983}} |
||
+ | * {{Bug|46260}} |
||
+ | * http://wiki.dlang.org/Installing_LDC_on_Gentoo#Hardened_Gentoo |
||
+ | |||
+ | == 便利なライブラリとバインディング == |
||
+ | * [https://code.google.com/p/ddt/ DDT] - D のプロジェクトとコード管理のための Eclipse プラグイン |
||
+ | * [http://mono-d.alexanderbothe.com/ Mono-D] - D でプログラミングするための [http://monodevelop.com/ MonoDevelop] アドイン |
||
+ | * [https://bitbucket.org/qtd/repo QtD] - D の Qt バインディング |
||
+ | * [http://gtkd.org/ GtkD] - D のオブジェクト指向 GTK+ ラッパー |
||
+ | * [https://github.com/aldacron/Derelict3 Derelict] - マルチメディアライブラリのバインディング、ゲーム開発向け |
||
+ | * [https://github.com/D-Programming-Deimos Deimos] - 様々な C ライブラリのバインディングが大量に揃っているプロジェクト |
||
+ | |||
+ | == 参照 == |
||
+ | * [https://github.com/D-Programming-Language/phobos/ GitHub の Phobos リポジトリ] - 公式リポジトリ |
||
+ | * [http://dlang.org/ The D Programming Language] - D の公式ホームページ |
||
+ | * [http://planet.dsource.org/ Planet D] - D に関するブログまとめ |
2019年11月21日 (木) 18:48時点における版
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 ですが、gdc[リンク切れ: 置換パッケージ: gcc-d] (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 のサポートが有効になっている gdc[リンク切れ: 置換パッケージ: gcc-d] コンパイラを使用する:
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 に関するブログまとめ