IT用語辞典バイナリ |
D言語
別名:プログラミング言語D
【英】D Programming Language
D言語とは、1999年に登場したプログラミング言語の名称である。Digital MarsのWalter Brightによって考案された。
D言語はC言語に似た系統の構文や記述スタイルを持っており、C言語やC++の持つ高い処理性能は保ちながらも、実装をより容易にし、また最近発展を見せている複数の機能に対応している。C言語やC++を習得しているプログラマーは無理なくD言語に移行できるといわれている。
D言語はマルチパラダイム言語と呼ばれ、オブジェクト指向プログラミングや手続き型プログラミングといった複数のプログラミング手法に対応している。また、オペレーティングシステム(OS)のAPIに直接アクセスすることができるため、C言語が得意としていた汎用のプログラミングにも適しており、その一方でGUIを駆使したアプリケーションの開発にも幅広く用いることが可能である。
D言語のコンパイラやデバッガは、Digital Marsによる公式Webサイトからダウンロードすることができる。2007年11月現在の最新バージョンは、2007年6月にリリースされたバージョン2.0である。
参照リンク
D Programming Language 2.0 - (英文)
プログラミング言語 D - (日本語訳)
ウィキペディア |
D言語
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2011/12/31 15:29 UTC 版)
| D言語 | |
|---|---|
| パラダイム | マルチパラダイム |
| 登場時期 | 1999年 |
| 開発者 | ウォルター・ブライト |
| 最新リリース | 2.057 2011年12月13日 1.072 2011年12月5日 |
| 型付け | 強い静的型付け |
| 主な処理系 | DMD, GDC, LDC, D.NET |
| 影響を受けた言語 | C言語, C++, C#, Java, Ruby, 関数型言語 |
| ウェブサイト | www.digitalmars.com |
D言語(ディーげんご, D programming language)は、プログラミング言語のひとつ。
Digital Mars社のウォルター・ブライトによって開発された。C言語の後継を目指したものだが、マルチパラダイムプログラミング言語であり、オブジェクト指向プログラミングも可能である。
目次 |
概要
C言語は、元々オペレーティングシステムの記述用に開発された言語であり、複雑高度なアプリケーションを書くための機能が充実しているとは言い難い。一方で幅広いプラットフォームでの動作実績には抜きん出たものがあり、結局、開発者の最大公約数としてC言語を用いることが一般化している。このような状況に対して、C言語をより適切な言語で置き換えようという試みがなされてきたが、どれも決定打に欠けているのが現状である。
C言語の後継としてはC++が有名であるが、その複雑さも随一である。Javaは複雑さを適度に抑えて豊富な標準ライブラリを持つが、仮想機械を必要とするためパフォーマンスを求める場合には敬遠される。かといってC言語では低レベルすぎるといった、それぞれの言語の使いづらさに対して現実主義的な回答を模索した言語がD言語だといえる。
2007年1月3日(現地時間1月2日)にようやくDMD(Digital Mars社製のD言語コンパイラ)のバージョン1.0がリリースされた。比較的新しい言語であるため、近年発達してきた概念や機能が多く取り込まれている。
具体的には、例外処理やテンプレートなどへの対応がなされているほか、正規表現やスレッド、ソケットなども標準ライブラリに含まれている。事前・事後条件のチェックや不変条件のチェック、debug 識別子の導入など、プログラムのデバッグ・保守に対して重点的にサポートしている点もこの言語の特徴である。またコンパイラの作成を非常に重視しており、言語仕様そのものがコンパイラ側の効率を意識して作られている。これはC言語が幅広く普及した背景に処理系のポーティングの容易さがあったことを踏まえており、関連する解析ツールなどの開発環境までを含めて「言語の実用性」ととらえた現実的な考え方を反映している。
特徴
- 実用的 (goto[1]、インラインアセンブラ[2]、ABI[3]、C言語とのバイナリ(ABI)互換機能[4])
- ネイティブコードを出力する非常に高速なコンパイル
- ワンパスで実行ファイルやライブラリが作成可能
- 依存を考慮してコンパイルが可能 (rdmdのみ)
- 前方参照の導入
- 強いtypedef、型の別名定義
- 複素数、虚数、列挙型、function型、delegate型
- 機能強化された配列(動的サイズ変更、スライシング、連想配列、組み込みの文字列)
- 参照型のクラス (Objectから派生)
- 実行時型情報
- 文字列switch、goto case文、名前付きblock、foreach文
- ガベージコレクション[5]
- プリプロセッサの撤廃
- 契約による設計、例外処理、スコープガード
- 単体テスト
- 暗黙の型推論
- 改良されたテンプレート構文、テンプレートミックスイン、可変個引数、タプル
- 関数テンプレートの戻り値推論
- ネストされた関数
- 遅延評価が可能
- 文字列をコードとしてミックスイン
- 任意のファイルのコンパイル時読み込み
- 関数のコンパイル時の実行
- 多くのリテラル(関数リテラル、delegateリテラル、連想配列リテラル、構造体リテラルなど)
- スレッド (スレッドクラス(std.thread)、クリティカルセクション)
- 2.0以降で追加された機能
- 実用的 (C++とのバイナリ(ABI)一部互換機能[6])
- 値型の高機能な構造体[7] (コンストラクタ、デストラクタ、コピーコンストラクタ、アラインメントの変更など。)
- グローバル変数/static変数が標準でスレッドローカルストレージ (従来のグローバル変数/static変数も使用可能)
- 変数や配列のアクセス制御(invariant、const、enum。)
- Traits(型特性、関数特性、クラス特性など。)
- 関数の引数の束縛(std.bind)、Variantクラス(std.variant。)
- レキシカルクロージャ
- 関数/メソッドの意図しない乗っ取りの軽減(オーバーロード集合など。)
- 配列演算
- 参照でのリターン
- 委譲 (opDot、Alias This)
など
- バージョン2.0以降に実装の計画があるものの仕様が定まっていない機能(2006年現在)
- テンプレートの継承
|
|||||||||||||||||
固有名詞の分類
D言語に関係した商品