| CARVIEW |
- 概要
- Dで作るWin32アプリ
- Dで作るWin32 DLL
- COMプログラミング
- Cの.hからD Moduleへ
- FAQ
- const(FAQ)
- スタイルガイド
- サンプル: wc
- 今後の予定
- D 更新履歴
- 2.0 の更新点
- Tips集
- 言語設計の理由
- 警告について
- バグトラッキング
記事
ツール
- DMD D コンパイラ (linux)
- DMD D コンパイラ (FreeBSD)
- DMD D コンパイラ (Mac OSX)
- DMD D コンパイラ (windows)
- GDC D コンパイラ
- リンカ
- プロファイラ
- コード カバレッジ
- DMD スクリプトシェル
- Windows デバッガ
- C言語ヘッダ変換
- エディタ
- その他
コミュニティ
Forumのログ
- digitalmars.D
- digitalmars.D.dtl
- digitalmars.D.announce
- digitalmars.D.dwt
- digitalmars.D.learn
- digitalmars.D.bugs
- digitalmars.D.debugger
- D.gnu
- Old D
付録
プログラミング言語 D 2.0
「"新しい"言語って、結局ほとんどは二つに分類できるような気がする。 一つは、アカデミックな世界から出てくる根本的に新しいパラダイムに基づいた言語で、 もう一つは、大会社が作るようなRADとかWebアプリに目を向けた言語。でもそろそろ、 コンパイラ実装の実経験に裏打ちされた新しい言語が生まれる時なんだろうね。」 -- Michael
"Great, just what I need.. another D in programming." -- Segfault
D はシステムプログラミング言語です。 CやC++の高いパフォーマンスと、RubyやPythonのような現代的な言語が プログラマにもたらした生産性とを併せ持つことに焦点をあわせています。 特に、品質保証、ドキュメンテーション、管理、可搬性、信頼性 を実現することに留意して設計されています。
D は静的型付きの言語で、機械語に直接コンパイルされます。 マルチパラダイム言語あり、多数のプログラミングスタイル ‐ 手続き型、オブジェクト指向、テンプレートメタプログラミング ‐ に対応しています。 C系の構文を持つ言語のひとつであり、ぱっと見た感じはC++に非常によく似ています。 D の特徴的な点をざっと掴むには、特徴リストのページ をご覧下さい。
企業の戦略的なロードマップや、偉大なプログラミング理論によって方向が 決まっているような言語ではありません。 D言語コミュニティ からの要望や提案・協力が、向かう先を決めていきます。
D言語の言語仕様には二つのバージョンがあります:
- D version 1 は、安定版です
- D version 2 は、新しい機能の追加が行われている開発版です
現在、4つの実装が存在しています:
- Digital Mars dmd: Windows 版 1.0 2.0, x86 Linux 版 1.0 2.0, Mac OS X 版 1.0 2.0, x86 FreeBSD 版 1.0 2.0
- LLVM D Compiler ldc。 D version 1 対応です。
- Gnu D compiler gdc
- D.NET compiler アルファ版です。.NET 向けで、D version 2 に対応しています。
Dを使ったオープンソースプロジェクト向けのホスティングサービス dsource に、多くのプロジェクトが集まっています。 D言語に関するWikiやライブラリ、ツール、メディア記事などのリンク集としては、 dlinks にまとまっています。
この文書には、 PDF版(英語) や、 本家英語版 、 ポルトガル語版 があります。 ドイツ語の書籍 Programming in D: Introduction to the new Programming Language と、 日本語の書籍 D言語パーフェクトガイド も発売されています。
以下は、D言語の機能の一部を紹介するサンプルです:
#!/usr/bin/dmd -run /* シェルスクリプト形式の実行もサポート */ /* Hello World in D コンパイルする場合: dmd hello.d 最適化つき: dmd -O -inline -release hello.d */ import std.stdio; void main(string[] args) { writefln("Hello World, Reloaded"); // 自動型推論と、組み込みのforeach foreach (argc, argv; args) { // オブジェクト指向プログラミング auto cl = new CmdLin(argc, argv); // 型安全な改良printf writefln(cl.argnum, cl.suffix, " arg: ", cl.argv); // 自動的または明示的なメモリ管理を選択可能 delete cl; } // 内部構造体・クラス struct specs { // 全てのメンバは自動的に初期化 int count, allocated; } // 内部関数は、 // 例えばargsの様な外の変数を参照できる specs argspecs() { specs* s = new specs; // '->' 演算子は不要 s.count = args.length; // 配列の長さは .length で s.allocated = typeof(args).sizeof; // 組み込みの型情報 foreach (argv; args) s.allocated += argv.length * typeof(argv[0]).sizeof; return *s; } // 組み込みの文字列と、典型的な文字列操作 writefln("argc = %d, " ~ "allocated = %d", argspecs().count, argspecs().allocated); } class CmdLin { private int _argc; private string _argv; public: this(int argc, string argv) // コンストラクタ { _argc = argc; _argv = argv; } int argnum() { return _argc + 1; } string argv() { return _argv; } string suffix() { string suffix = "th"; switch (_argc) { case 0: suffix = "st"; break; case 1: suffix = "nd"; break; case 2: suffix = "rd"; break; default: break; } return suffix; } }
注意: すべてのDユーザは、 D をダウンロードして使用することもしくは D の仕様を読むことにより、 投稿もしくは電子メールで送信される Digital Mars へのフィードバックの中で、著作権や 特許公示を伴うどのような知的所有権の主張もはっきりと示すことに同意したものとします。 (原文: all D users agree that by downloading and using D, or reading the D specs, they will explicitly identify any claims to intellectual property rights with a copyright or patent notice in any posted or emailed feedback sent to Digital Mars.)

コメント
English
ダウンロード
トップ