「D言語」の版間の差分

編集の要約なし
(デバッグ用コメントが混入してたので除去。)
<small>[[情報技術]] > [[プログラミング]] > D言語</small>
----
 
D言語はWalter Bright氏によって開発が始められた言語です。<br>
 
 
公式名称は「D language」(D言語)または「D programming language」ですが、英語ではネット検索などの利便性のため「dlang」と表記される場合もあります。
 
 
== 目次 ==
* [[D言語/関数]]
 
{{stub}}
== D言語の特徴 ==
D言語はC++とは違い、C言語とのソース互換性を持ってないです。(一方、C++標準Cありません(C言語ソースライブラリとは互換性あり)。そうしてしまうと古い時代遅れのノウハウ(バッドノウハウ)持っ引きずりかねない、と考えていためです
 
また、D言語はシステムプログラミング言語を目指しています。システムプログラミング言語とは、オペレーティングシステムそのものの開発もでき、高速で動く言語です。(たとえばC言語はシステムプログラミング言語です。LinuxはC言語で書かれています。)
D言語の開発者たちは、標準C言語とのソース互換性を持たせると、古い時代遅れのノウハウ(バッドノウハウ)を引きずりかねない、と考えているので、あえてD言語にはC言語とのソース互換性を持たせないでいます。
 
また、D言語はシステムプログラミング言語を目指しています。システムプログラミング言語とは、オペレーティングシステムそのものの開発もできる言語です。(たとえばC言語はシステムプログラミング言語です。LinuxはC言語で書かれています。)
 
実際にD言語で開発されたOSが市販や公開されているかはともかく、D言語がOS開発言語も目指してていることは、利用上、とても重要です。なぜなら、ユーザーにとって手間が掛かるかもしれないが、とりあえず、今までC言語で出来たハードウェア制御や、D言語でもひととおり出来るようになる予定・目標だからです。
* ネイティブコンパイルされるため動作が速い - インタプリタや仮想機械上で動作する言語に比べて非常に高速です。
* 自動メモリ管理 - [[w:ガベージコレクション|ガベージコレクタ(GC)]]を搭載しているため、メモリの取得・開放に関してプログラマが気にする必要はありません。もちろん手動でメモリを管理する方法も用意されています。
<!--* 保守性 - assert、[[w:単体テスト|unittest]]、使いやすいinvariant、debug, version による条件コンパイルなど、プログラムの保守性を高めるための機能があります。-->
* 可読性の高いテンプレート - C++と比べてテンプレートの構文がすっきりしていて仕様を把握するのも簡単です。
* 強力なCTFE(コンパイル時実行) - D言語はかなりの範囲の関数の結果等をコンパイル時に実行することができます。
* 豊富な表現力 - 関数型言語やオブジェクト指向言語といったパラダイムを非常にうまい具合に言語に組み込み、高い水準で両立させています。今後、借用(@live)に関連する機能も充実化される予定です。
* コンパイラの開発しやすさ - D言語はそのコンパイラの開発が簡単になるように設計されており、パースするのもC++とは比べ物にならない速さです。
 
C, C++ との大きな違いをいくつか挙げます。
*
 
== コンパイラを動かしてみよう ==
読者のほとんどはC言語の文法を知っているかもしれませんが、おおまかに上記コードで使用されている文法を説明すると
 
import モジュール名;
でモジュールを導入します。D言語の impoertimport は、C言語でいう #include 文に相当しまとは違い、ソースコードで置き換えるわけではなく、シンボルテーブルの情報を得るものです。
 
 
main() というのは、D言語に必ず1つだけ存在する「関数」(かんすう)であり、ここから開始します(なお、どのプログラム言語でも、プログラムの開始点のことを「エントリポイント」といいます)。つまり、D言語のエントリポイントは「main()」関数です。
 
 
Windows版 D言語では現状、日本語の表示があまりよくないです。文字コードは UTF-8 にしないとエラーになります。ですが、UTF-8にしてもWindows版D言語では文字バケをします。
ですが、UTF-8にしてもWindows版D言語では文字バケをします。
 
なので、LinuxでD言語を使いましょう。
 
== D言語の文法について ==
もし読者が英語が得意でプログラムについて一通り分かっているなら、詳細については公式のドキュメントを読んだ方が早いと思います。本wikiでは初心者向けに書いていきます。
 
初心者の方は、日本語訳もされている [https://tour.dlang.org/tour/ja/welcome/welcome-to-d D言語ツアー]を読むと良いかもしれません。D言語ツアーは初心者むけの公式ガイドの和訳です。
 
 
=== 概観 ===
D言語の構文はC言語やJavaに似ており、テキストに書かれたプログラムを1行ずつ処理していく手続き型言語の側面を持ち合わせています。基本的な流れや、一つ一つの文、コメント、演算子などもC言語を元にしています。詳しくは[[C言語]]の該当項目を参照してください。(リンク: wikibooks『[[C言語]]』)
 
ただしC言語と異なる部分もあるため、C言語を参考にするには注意が必要です。#include <stdio.h>の代わりにimport std.stdio;となる事や、printf("''文字列''")の代わりにwrite("''文字列''")を使う事は知らなければなりません。
 
また void という特殊な型があります。これは値が無いことを表します。
 
 
 
== 基本テクニック ==
 
==== 契約・単体テスト ====
 
== 外部リンク ==
*[https://dlang.org/]
 
{{stub}}
 
[[Category:コンピュータ言語]]
1,326

回編集