- D言語とは( Overview )
-
C言語 の後継として、C++ に代わるマルチパラダイムプログラミング言語。
Zortech C++コンパイラやDigital Mars C/C++コンパイラ の作者 Digital Mars社の Walter Bright 氏によって開発された ネイティブコンパイル言語。
- 開発モデル
- D言語 の開発モデルは C、C++ などの既存言語と同じで、テキストエディター や デバッガー など既存のツールを使えます。
- 互換性
-
ソースコードの互換性はどの言語ともありませんが、
- ルック&フィール
-
- ほとんどの式や文、全体的なレイアウトも C/C++ と同じ形です。
- Cの演算子とその優先順位、式の評価順序規則、型の昇格規則を全て保っています。
- 対 C
-
- 呼び出し規約
- 構造体・共用体・列挙型・ポインタ・基本データ型
宣言は置き換える必要があるのでヘッダーファイルの変換は必要になりますが、C の関数へ直接アクセス出来ますから、OS の API(Win32API)にも直接アクセス出来ます。
- 対 C++
-
C++ との互換性は不完全ですが
- C++ と名前マングリング規則を合わせる
- C++ と関数呼び出し規約を合わせる
- C++ と、単一継承の場合に限り仮想関数テーブルの形式を合わせる
COMインターフェイスは使えますから、Windows のアプリケーションを作る場合の致命的な問題はほとんどないでしょうが、C++ のライブラリーはほとんど使えないでしょう。
- ネイティブコンパイル言語
-
- ネイティブ言語
-
ネイティブ言語 とは 機械語 のことで、一般的な CPU は機械語以外は理解できませんから、Windows などの OS も 機械語 に変換されてものをインストールしますし、PC で実行されているものは 全て どこかで ネイティブ言語 に変換されています。
プログラム言語によって、ネイティブ言語 への変換(コンパイル)が明確なものと、そうではないものに分類されたりもします。
- オブジェクトファイル
-
オブジェクトファイル(Object File)またはオブジェクトコード(Object Code)とは、コンパイラがソースコードを処理した結果生成される中間的なコード表現である。オブジェクトファイルの内容はバイナリであり、コンパクトで構文解析済みのコードである。オブジェクトファイル群をリンクすることによって最終的な実行ファイルやライブラリが作成される。
コンパイラー の処理が終了した 機械語 の バイナリーコード で、実行情報も含まれるが確定していないのが一般的。
- リンク
-
機械語 も共通言語ではありませんが、アセンブラー も オブジェクトファイル を出力しますから、同じ 機械語 で オブジェクトファイル形式 が同じなら異なった言語のとの リンク も出来ます。
- エントリーポイント
-
ネイティブコンパイル言語 のプログラムは普通 エントリーポイント から記述する必要がありますが、面倒な処理を書く必要はありませんし、より自由な設計が可能になります。
スクリプト言語 や RAD環境 でプログラムを組む場合、エントリーポイント を意識する必要がなかったりしますが、C、C++ や D言語 は エントリーポイント が明確です。
- 利点
-
プログラマが特別な実行時VM (仮想マシン) に縛られる Java VM や Smalltalk VM のような機構とは無関係です。 D VM なんてものは存在せず、 D は普通にリンクできるオブジェクトファイルを生成する、 直接的なコンパイラです。D は C と同様にOSに直結しています。
いろいろありますが、基本的にはアセンブラ言語(機械語)で出来ることは何でも出来るようになっていますから、その環境で出来ることは何でも出来ると言うことになります。
また、ネイティブコンパイル言語 = 難解 とは限らず、ある意味シンプルでわかりやすかったりもします。
- 主要言語機能
-
- ガベージコレクション
- オブジェクト指向
- テンプレート
- 配列
- 連想配列
- 動的クロージャ
- RAII
- 演算子オーバーロード
- 最初に学ぶプログラミング言語
-
最近はプログラムを学習しようと思えば、ありとあらゆるアプローチが用意されているようですが、初心者が手軽に触ってみられるものとなるとその選択肢は意外と少ないのではないかと思います。
- BASIC
-
PC には OS すら付属せず、電源を入れると BASIC だったりして、出来ることがプログラミングかゲーム以外ほとんどないような頃は、PC を触ること = プログラム(BASIC)学習だったりもしました。
BASIC とアセンブラ以外は高嶺の花ばかりで手軽に触れる言語はほとんどなく、まずは BASIC を覚えることが自然で、BASIC のマニュアルも当たり前のように付属していたりしましたから、当然インターネットなどと言う情報源などありませんでしたが独学で何とかなったものです。
最初に学んだ言語は BASIC という人は多いでしょうが、そういう時代のお話。
Visual Basic は言語仕様が似ているだけで別物でしょうし、現在の Windows の環境で 初心者が学べる BASIC を探すだけで大変です。
- スクリプト言語(インタプリタ)
-
機械語への翻訳が不要で、ソースコードをダイレクトに実行出来るように見えるものですが、言語仕様としてその分類が明確な言語とそうではない言語があります。
また、RAD のようにほとんどインタプリタな開発環境もありますし、D言語にもインタプリタのようなことをさせることは出来たりしますから、言語の分類項目としては曖昧。
すでに使える環境があれば初心者向きな言語はあると思いますが・・・ - C言語
-
情報が豊富でツールなんかも沢山ありますから、取り付きやすさでは一番でしょう。
何とかなるかも知れませんが、ポインターやメモリー管理、プリプロセッサ(マクロ)などは初心者の天敵で、避けて通れない仕様なのも問題です。
- Object Pascal(Delphi6)
-
無償で手に入った Delphi6 は RAD が使えて、また、普通にテキストエディターでソースコードを書いてコンパイルすることも出来き、言語仕様も初心者に向いていました。
Delphi6 はちょっと古すぎますし、最近はどうなってるの?
- D言語
-
初心者を考慮した言語仕様ではないことは確かです。
確かに高機能過ぎて 初心者 にとって難解でしょうが、冗長な記述の多くは省略できますし、初心者 にも理解しやすいところだけを使っての プログラミング も出来ます。
どちらにしても、初心者にどうなのかは判断できませんが、
間違ったやり方より正しいやり方の方が簡単に書けるようにすること。いかにも学習向きです。
- 最小限の投資
- 過去の BASIC がそうだったように、最初は最小限の投資( PC があれば無料 )で済むべきでしょう、少なくともどんな教科書が自分に必要なのかを判断できるようになるまでは。
- D言語の問題点
-
- 日本語環境に弱い
-
日本語環境ではデフォルトの Shift-JIS の方に問題があるのですが、文字コード
の指定が必要だったり、変換が必要だったり、
最初は戸惑うかも知れませんが、最近では Shift-JIS がアホな規格だと教えてくれる環境がとっても少なくなりましたから、ある意味貴重?
- 不安定
-
破壊的な仕様変更など当たり前、バグが減るどころか増える傾向があったりして、最新バージョンはある意味とても楽しみ、
だった?のは、過去の話になるかもしれません。
- 人気がない
-
初心者は D言語 の存在を知ることもないでしょう。
・・・・
- 多機能過ぎる
-
基本を身につける前におかしなテクニックを憶えてしまい、基本的なことが出来ないというかコードが書けない自称プログラマーが多いらしい。
基本を身につけるには最小限の機能で十分で、ある程度の身につくまではその中で出来るだけ我慢強く遊んだ方が良いのは確実でしょうが、今日日そんな環境があって、しかもそこで我慢強く遊べればのお話。
- Windows D Compiler
-
-
D 1.0とD 2.0 -
-
D 1.0( Change Log) -
統合環境が選べたり、使えそうなライブラリーがあったりしますが、安定版というポジションは微妙。
また、
D 2.0との互換性が異種言語と言っても良いほど考慮されていませんから、後で2.0へ移行するというのも?ちなみに、このサイトでは
1.0は対象外。 -
D 2.0( Change Log) -
最近(2011年1月30日現在)は Bugfix が中心で、変更や追加があるのは標準ライブラリ(Phobos)。
簡単に遭遇できるようなバグもなく、仕様も安定している様子。
1.0の方がライブラリや開発環境の選択肢は多いでしょうが、ほとんどが古く更新されていないものが多いでしょうから、あえて1.0を使う理由はほとんどないでしょう。 -
- ダウンロード( D Programming Language 2.0 )
-
先頭には version 1 がありますが、すっ飛ばして、
DMD - Digital Mars D Programming Language version 2
- dmd.2.xxx.zip( dmd D 2.0 compiler )
- dmd Windows installer( dmd D 2.0 compiler 1-click install for Windows )
のどちらか1つをダウンロード
- 最新情報
-
更新履歴や内容のチェックは
いの一番で最新バージョンを使いたければ、ここから。
最新バージョンでは都合が悪い時は任意のバージョンもダウンロード出来ます。
- インストール
-
インストールする場所はどこでも良いと思いますが、以前は空白入りのディレクトリー名があったりするとダメだったりしましたから、出来るだけ日本語や空白の含まれないところの方が問題は起きづらくなるでしょう。
- .zip
-
dmd2以下を好きなところに解凍するだけですが、\dmd2\windows\binを
PATHに追加する必要があります。 - dmd Windows installer
-
実行すれば最新版をダウンロードして任意の場所にインストール出来ます。
PATHの設定もしてくれますが、環境変数はSystemのPATHに追加されます。また、全部インストールするとデフォルトが
1.0になってしますので、普通はD 2.0だけをインストールした方が良いでしょう。 - 環境変数(PATH)
-
まずは「コンピューター右クリック -> プロパティー」とかなんとかから、「システムのプロパティー」の「詳細設定」にたどり着きましょう。

「環境変数」をクリック

「ユーザー環境変数」と「システム環境変数」がありますが、「ユーザー環境変数」の方がいじりやすいでしょう。
新品状態の場合「PATH」はないと思いますから「追加」を、すでにあるなら選択して「編集」をクリック。

変数名は
PATH変数値は、dmd をインストールしたところの
\dmd2\windows\binを、すでに何かあるなら、その後に必ず;を入れてから追加しましょ。
-
- コマンドプロンプト
-
コンパイル は コマンドプロンプト を使うのが基本です。
コマンドプロンプト は
スタートメニュー -> 全てのプログラム -> アクセサリー -> コマンドプロンプト
から起動できます。
- カレントディレクトリー
-
筆者の環境で コマンドプロンプト を起動すると カレントディレクトリー は
C:\Users\Pen-Jrということになります。
普段 Windows は GUI で操作しますから、カレントディレクトリーやパスなんか知らなくても、マウス操作だけで任意のファイルにたどり着くことが出来ますが、
コマンドプロンプト ではいちいち 正確な入力 が必要になります。
- D Compiler の起動
-
と実行ファイル名だけ入力します。
C:\Users\Pen-Jr>dmd
- コマンドプロンプトを好きなフォルダで起動
-
カレントディレクトリー を ソースファイル のあるところにしないといろいろ面倒ですが、Vista 以降ならエクスプローラから任意のフォルダーで
Shift + 右クリックのメニューに「コマンドウィンドウをここで開く」がありますから、エクスプローラからソースファイルのあるフォルダから
Shift + 右クリックで起動すれば OK。Vista より前の OS やShift+とか面倒だったりなら以下のツールが便利。UAC が有効だと、管理者権限が必要な時がありますが、権限付きでの起動も簡単になります(普通にコンパイルするだけなら、管理者権限とかは不要)。また、レジストリをいじるのが平気で Vista 以降ならツールを使わなくても
HKEY_CLASSES_ROOT\Directory\shell\cmd の Extended
を削除すれば
Shift+はいらなくなりますし、UAC も無効にすれば面倒はなくなります。
dmdはどこからでも起動できますから、ソースファイルのあるディレクトリーで コマンドプロンプト を起動すれば、作業が楽になります。
2011年7月27日




