Dの使用領域
このリストでは、様々な分野のD言語で書かれたアプリケーションを紹介している。
Dの差別化機能の概要については
Dの概要のページを見てほしい。
通常、企業のコードベースは趣味のプロジェクトよりもかなり大きい。
したがって、重要な目標は、理解しやすく保守しやすいエレガントなコードを書くことである。
である。他の言語と比較すると、D言語にはコードベースをきれいに保つのに役立つ多くの機能がある、
Dには、コードベースをクリーンでボイラープレートなしに保つのに役立つ多くの機能がある。
生産性を向上させる。
シンプルでありながら強力なD言語の機能の例を以下に挙げる。
テンプレート
と統一された関数呼び出し構文である。
純粋関数」である、
メモリセーフサブセットSafeD、
特別なunittestブロック、
契約"、そしてエラー処理へのまともなアプローチである。
エラー処理へのまともなアプローチ
バグのない製品を出荷するのに役立っている。
最終的にパフォーマンスが重要なら
が重要なのであれば、Dがそれをカバーしてくれる!
から始まるツールでコードをチューニングできる。
条件付きコンパイル
SIMDベクトル最適化から
インラインアセンブラ、
その他多数。
Dは数多くの多様な領域で使用されてきた。以下に短いセレクションを紹介する。
完全な概要については
D言語を使用している組織のリストを参照のこと。
既存のライブラリとのバイナリ互換性は、大規模プロジェクトでは重要である。
プロジェクトにおいて重要である。
Remedy Entertainmentは、XBox OneとWindows 10向けにDコードを使用した初の
AAAゲームの出荷に成功した。
詳細はイーサン・ワトソンの
プレゼンテーションを参照のこと。
多くの純粋なDオープンソースプロジェクトは、ゲーム開発者の間でDコードの人気が高まっていることを示している。
ゲーム開発者の間でD人気が高まっている。
例: クロスプラットフォームの3Dゲームエンジンである
DashやDゲーム開発ツールキット
gfmである。
D言語は、低レベルと高レベルのコードを1つの言語で組み合わせることができる。
機能、コンパイル時の関数実行など、D言語は高性能な非同期I/O、並行処理、ウェブ・アプリケーションに適している。
高性能な非同期I/O、並行処理、ウェブ・アプリケーションに適している。
vibe.dフレームワークはD社の主力製品である。
のフラッグシップ・ソリューションである。
イベント処理に関連するあらゆるニーズに対応するD社の主力ソリューションである。
成功例については、DConfのプレゼンテーションを参照されたい。
Dによるモバイルゲームサーバーバックエンド
Dの高い生産性は、GUIアプリケーションを作成する際にも有益である。
例: Linuxタイリング端末エミュレータ
tilixだ、
D開発環境
DLangIDEである。
である。
バイナリの互換性のおかげで、C、C++、その他の言語で書かれた既存のGUIライブラリはすべて利用できる、
その他の言語で書かれた
簡単にアクセスできる。
Dは、リファレンスDMDコンパイラー自体、Facebookの高速C/C++プリプロセッサ
ワープ、Higgs JavaScript仮想マシンなどで使われている。
Dのコンパイル時関数実行により、カスタム文法パーサーをコンパイル時に生成することができる。
をコンパイル時に生成することができる。
を例として参照されたい。
Dはシステム・プログラミング言語であり、ベアメタルやカーネル開発に適している。
またはカーネル開発に適している。Dでオペレーティング・システムを書くのは簡単で、多くのプロジェクトがそれを証明している。
プロジェクトで実証されている。いくつか挙げてみよう:
LDC(LLVMのDコンパイラ)を使う
は、最も一般的なCPUアーキテクチャをターゲットにすることができる、
ARMやMIPSベースの組込みシステムやスマートフォンから始まり、POWERやSparcベースのサーバーシステム、そして "ビッグアイアン"のzシステムまで、
POWERやSparcをベースとしたサーバー・システム、そして "ビッグアイアン"と呼ばれるzシステムに至るまで。
D言語は、Pythonのような一般的な科学言語と似ている。
フレンドリーな構文で現代的な言語の利便性を提供する点で、Pythonのような一般的な科学言語と似ている。
デフォルトでガベージコレクションされる。便利な機能により、迅速なプロトタイピングに時間を費やすことができる、
科学プログラマーがほとんど心配する必要のないメモリ問題と戦うよりも、むしろ迅速なプロトタイピングに時間を費やすことができる。
しかし、コンパイルされた静的型付け言語でもあり、C言語と同程度に高速なコードを作成することができる、
アルゴリズムやパイプラインを容易に並列化できる、
システム言語として、最後の数サイクルを得るための完全な制御(手動メモリ管理を含む)を提供する。
システム言語として、最後の数サイクルを得るための完全な制御(手動メモリ管理を含む)を提供する。
具体的なスポットをいくつか紹介しよう:
NumPyと同様、Dは便利で、既存のCライブラリにバインドすることができる。
NumPyと違って、Dは既存のライブラリでカバーされていない計算のために遅くなることはない、
また、他の言語に強制的に移行させられることもない。
さらに、コンパイル時のイントロスペクション機能により、Dは優れたパフォーマンスを実現するためにさらなる最適化を行うことができる。
は、優れたパフォーマンスを実現するためのさらなる最適化を可能にする。アンドレイの講演
Fastwareを参照のこと。
mirのようなサードパーティライブラリによる多次元配列のサポートは優れている。
mirのようなサードパーティライブラリによる多次元配列の優れたサポートがある。
最新のCPU向けに開発することに慣れている多くのプログラマーにとって、GPUを使って汎用計算をするのは大変な作業に見えるかもしれない、
GPUを使って汎用計算を行うことは、困難で手間がかかるように見えるかもしれない。
経験豊富なユーザーでさえ、性能向上が余分な労力に見合わないことが多いことを認めるだろう。
D型システムのパワーと静的イントロスペクションのおかげで、GPUプログラミングは、より簡単になった、
GPUプログラミングは
は、性能に妥協することなく、従来のAPIよりも安全で使いやすくなっている。
Dは高度な抽象化と高速実行が可能なため、科学的分析に適している。
分析に適している。例:
Dのレンジはパイプやデータストリームに適している。
はパイプやデータストリームに自然に適合する。
小さなDスクリプトで、分析のための小さなデータ・サブセットから始めることができる。
最適化を有効にすることで、簡単にフルセットに切り替えることができる。
を有効にすることで、簡単にフルセットに切り替えることができる。
アドロールの証言を読む
"D言語はデータサイエンスのためにある"(日本語訳)
なぜDが同社の重要なインフラにとって重要な言語なのか。
eBayは最近、大規模データマイニング環境で使用されている内部
データ処理ユーティリティをオープンソース化した。
をオープンソース化した。
Dのマルチパラダイム(命令型、構造化、オブジェクト指向、汎用、関数型プログラミング)は、1つの言語から徐々に教えることができる。
純粋性、さらにはアセンブリー)アプローチにより、1つの言語で教え、徐々に新しい機能を説明することができる。
新しい機能を説明することができる。
大学では、インタプリタ型言語はメモリ安全性が高いため、一般的に教えられている。
D言語のメモリ・セーフ・サブセットであるSafeDは、インタープリタ言語に匹敵する安全性と使いやすさを提供する。
D言語のメモリ・セーフ・サブセットであるSafeDは、インタプリタ言語やJITコンパイル言語に匹敵する安全性と使いやすさを提供する。
とともに、ネイティブ・コードの効率性を維持している。
初心者は、ガベージコレクションの恩恵も受けられる。
ガベージコレクションは、明示的なメモリ管理の知識を必要とせずにシンプルなコードを書くのに役立つ。
より洗練されたメモリー管理は、高度な学習段階で導入することができる。
学習段階に導入できる。
Dはコンパイルが非常に速いので、高レベルのスクリプト言語としても使える、
生産的なスクリプト言語として使うことができる。
静的型チェックの利点もある。
最後になるが、オンラインで自由に入手できる本や チュートリアルがある。
リソースとして利用できる。