D言語とは? わかりやすく解説

D言語

プログラミングのほかの用語一覧
プログラミング言語の種類:  CODASYL  C++言語  DSL  D言語  Fortran  GLUT  Go

D言語

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/12/20 18:07 UTC 版)

D言語
D言語のロゴ
パラダイム 関数型プログラミング命令型プログラミングオブジェクト指向プログラミング 
登場時期
  • 2001年12月8日 
開発者 ウォルター・ブライトD言語財団 
最新リリース 2.109.1 / 2024年7月1日[1]
型付け 強い静的型付け
主な処理系 DMD(公式実装), GDC (GCC), LDC (LLVM)
影響を受けた言語 C++C言語C SharpEiffelJavaPython 
影響を与えた言語 Vala, Swift[2]
ライセンス Boost Software License(標準ライブラリ)[3]
ウェブサイト dlang.org
拡張子 d、dd、di、def 
テンプレートを表示

D言語(ディーげんご、D programming language)は、プログラミング言語のひとつ。C言語をベースとしABI互換を保ちつつも、テンプレートによるジェネリックプログラミングオブジェクト指向プログラミング、関数型プログラミングなどをサポートするマルチパラダイムプログラミング言語である。

概要

型推論ガベージコレクション(明示的なメモリ管理も可能である)、スライスが可能な動的(および静的)配列連想配列など効率的なプログラミングを可能にする言語機能を備えている。単体テスト、事前・事後条件のチェックや不変条件のチェック(契約プログラミング)、debug 識別子の導入など、プログラムのデバッグ・保守に対しても重点的にサポートしている。並列処理との親和性も重視しており、明示しない限りグローバル変数がスレッド局所記憶であり、不変なデータ型(イミュータブル)がサポートされている。また、標準ライブラリであるPhobosにもメッセージパッシング等を用いた並列(および並行)処理が実装されている。

C++のようなテンプレートメタプログラミング機構を備えているが、テンプレート構文が簡潔な形に再設計されているなどの違いがある。コンパイル時関数実行を備えていることも特徴である。

D言語はシステムプログラミング言語としての側面も持つ。分かりやすいコードが高速かつ安全に動作するという言語設計を目指しているが、一方でパフォーマンスが要求される箇所では、インラインアセンブラポインタ演算などを利用できる。これらの機能や、危険な型変換などを用いたコードは関数の属性によって安全なコードと分離されるようになっている(関数の属性には、この他にも純粋な関数を示すものなどがある)。

コード例

  • Hello, world!
import std.stdio;  // モジュールを読み込む

void main()  // プログラムのエントリーポイントは C と同じ main
{
    writeln("Hello, world!");

    // void main() 関数から抜けると適切な終了コードが返る
}
  • 引数の和
import std.stdio, std.conv : to;

void main(string[] args)  // D の配列は要素数の情報を持っている
{
    int sum;              // 値型はコンパイラにより 0 で初期化される
    foreach(arg; args[1..$])  // 変数 arg は型推論により string 型になる
    {                         // 配列のスライシングも組込みでサポートされる
        sum += to!(int)(arg);  // to はテンプレート関数
    }
    writeln(sum);
}

高階関数を用いて書く事も可能である。標準ライブラリに含まれるmap, reduce関数を利用する例を示す。

import std.algorithm;
import std.conv;
import std.stdio;

void main(string[] args)
{
    writeln(args[1 .. $].map!(to!int).reduce!((a, b) => a + b));
}

特徴的な言語機能

統一関数呼び出し構文(Uniform Function Call Syntax, UFCS)

オブジェクト指向におけるメソッド呼び出しと同じ構文でフリー関数(グローバルレベルで宣言された関数)を呼び出すことができる機能。 関数の左側に置かれた値が第1引数として評価され、一般に「メソッドチェイン」と呼ばれる記述を可能にする。

プログラミング言語Nimにも同様の言語機能が存在する。

import std.stdio;

void main()
{
    // 以下の2つは同じ結果となる
    writeln(square(square(2))); // 16
    2.square().square().writeln(); // 16
}

// 引数を二乗して返す関数
int square(int n)
{
    return n * n;
}

歴史

  • 1999年12月 - ウォルター・ブライトが考案。
  • 2001年12月 - 初期バージョンがリリースされる。
  • 2007年1月 - バージョン1.0リリース。
  • 2007年6月 - バージョン2の開発が開始される。
  • 2007年8月 - D言語の第1回国際カンファレンス[1]がアメリカ合衆国のシアトルで開催された。
  • 2012年12月 - バージョン1.0の最終リリース (1.076)。
  • 2013年5月 - DConf2013[2]がシリコンバレーのFacebook社屋を借りて開催された。以後、場所を変えつつ年1度開催されている。
  • 2015年 - 米国ワシントン州にてD言語財団設立。
  • 2015年 - DMDのフロントエンド部の実装がC++からD言語に置換えられた。(2.069)
  • 2017年 - DMD実装のコード共用箇所の権利問題が解決し、オープンソース(Boost Software License)になった。[3]
  • 2018年5月 - GNUコンパイラコレクションのバージョン9.1からD言語がサポートされるようになった。(2.076相当)[4]

D1とD2

D1は、機能的には成熟したとされ、メンテナンスモードに移行している。標準ライブラリの非力さを補うためTangoライブラリとセットで利用されることが多い。なお、D1は2012年いっぱいでのサポート停止がアナウンスされた。

当初D2は、新しい機能を積極的に取り込むための開発系バージョンとして分離された。標準ライブラリPhobosが強化され、また言語仕様の面では文字列型 (string) が変更不可能な配列となり、スレッド局所変数がデフォルトとなったなど、言語機能のさまざまな変更[4]が行われ、D1の上位互換ではない。互換性より言語やライブラリの改良を重視し、言語機能やライブラリの破壊的変更が頻繁に起きるのも特徴の一つであった。現在では、推奨されない、あるいは廃止される機能としてコンパイル時に警告が表示され、また公式ドキュメントなどで事前に告知されるようになっている[5]

開発ツール

デバッガはC言語やC++と同じobjectフォーマットを使用するためCやC++用に書かれたものが使える。GDBなど、D言語に対するサポートを含んでいるものもある。既存の開発ツールについては以下のページが詳しい。

https://wiki.dlang.org/IDEs https://wiki.dlang.org/Editors

マイクロソフト統合開発環境Visual Studio向けのプラグイン。無償利用可能なVisual Studio Shellにも対応。

脚注

関連項目

  • ABA Games - D言語を使用したゲーム開発で有名
  • Eclipse - プラグインを利用することでD言語の開発環境として利用できる
  • Code::Blocks - D言語開発環境としても利用可能

外部リンク

ライブラリ

  • DUB registry - 公式のパッケージマネージャDUBで使用可能なパッケージの一覧

リソース

その他


D言語

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/27 00:42 UTC 版)

メモリマップトファイル」の記事における「D言語」の解説

標準ライブラリ(std.mmfileモジュール)でメモリマップトファイルサポートしている。

※この「D言語」の解説は、「メモリマップトファイル」の解説の一部です。
「D言語」を含む「メモリマップトファイル」の記事については、「メモリマップトファイル」の概要を参照ください。

ウィキペディア小見出し辞書の「D言語」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「D言語」の関連用語

D言語のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



D言語のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【D言語】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのD言語 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのメモリマップトファイル (改訂履歴)、do-while文 (改訂履歴)、イテレータ (改訂履歴)、ワイド文字 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS