Improve this page
Github へのログインが必要です。
簡単な修正は、ここから fork、オンライン編集、pull request ができます。
大きな修正については、
通常の clone で行って下さい。
Page wiki
関連するWikiページを参照・編集
English
このページの英語版(原文)
プログラミング言語 D - 利便性・表現力・効率性
#!/usr/bin/rdmd
// Computes average line length for standard input.
import std.stdio;
void main() {
ulong lines = 0;
double sumLength = 0;
foreach (line; stdin.byLine()) {
++lines;
sumLength += line.length;
}
writeln("Average line length: ",
lines ? sumLength / lines : 0);
}
Standard input
Command line arguments
Application output
利便性
- D では、動的言語のように、冗長な型指定なしで長いコード片を記述することができます。
それでも、静的な推論によって型やその他のコードの性質は導出されるため、
静的な世界と動的な世界の両方の恩恵を受けることができます。
(例を表示)
- 自動的なメモリ管理が安全で簡潔で頑強なコードに役立ちます。
D は同時にスコープによるリソース管理 (別名
RAII 技法)
と scope 文 もサポートし、
決定的なトランザクション的コードを簡単に読み書きできるようにしています。
(例を表示)
- 組み込みの配列と連想配列、スライス、そしてレンジの機能が、
日々のプログラミングを簡単で、小規模から大規模まで種々のタスクを楽しいものにします。
(例を表示)
表現力
- 最高のパラダイムとは、他のパラダイムに犠牲を強いることが無いことです。
D は古典的な多態性、値セマンティクス、関数型スタイル、
総称性、生成的プログラミング、契約プログラミング、
その他様々な手法を提供します—すべてがハーモニーを奏でる形で。.
(例を表示)
- Dは並行性へのイノベーティブなアプローチを提供します。 真に変更不可能なデータ、メッセージパッシング、スレッド間での、デフォルトでのデータ非共有、 そして制御された変更可能な共有データなどがあります。詳しくはこちら。
- 簡単なスクリプトから大規模なプロジェクトまで、 Dはどんなアプリケーションの要求にもスケールする幅広さを備えています: 単体テスト、 情報の隠蔽、洗練されたモジュール性、高速なコンパイル、 正確なインターフェイス、など。詳しくはこちら。
効率性
- D は自然に効率的なネイティブコードにコンパイルされます。
- D は最も"自然な"コードが高速で しかも 安全に動作するよう設計されています。
時には、型安全性の保証を回避して、最高速度と完全な制御を必要とする機能もあるでしょう。
そのようなレアケースのために、
D は生のポインタや型キャスト、一切の橋渡し処理なしのC関数の直接呼び出し、
そしてインラインアセンブラをもサポートしています。
(例を表示)
- @safe, @trusted, @system の3つのモジュール属性によって、 プログラマは安全性と効率性のトレードオフをアプリケーション毎に最適に選択することができ、 その一貫性をコンパイラに検査させることができます。 詳しくはこちら。