D言語を触っています

前々から興味があったD言語で、試しにリバーシを作ってみました。下のスクリーンショットの通りコンソールアプリですが。ソースコードと実行ファイルは「練習で書いたプログラム置場」に置きました。

D言語というのは、

Cの関数を呼び出せて,C++のようなテンプレートが使えて,ネイティブコードで,コンパイルが高速で,C#JavaのようにGCがあって,RubyPythonみたいに簡潔に抽象レベルの高いコードが書けるD言語

C/C++に疲れた人のD言語 - ...ing wiki

というすごい代物です。言語仕様の美しさよりも実用性を優先しつつ、既存の言語が持つ機能をなるべく取り込もうとしているそうです。ただし利用者はそんなに多くないようで、日本語の資料も少ないです。詳しくは「Dってどんな言語?」や「C/C++に疲れた人のD言語 - ...ing wiki」をご覧ください。ゲームプログラミングの分野では、「ABA Games」や「OMEGA」でD言語で作られたゲームとソースコードが公開されています。

D言語を触ってみた感想ですが、C++と比べて良さそうだと感じた点は以下のような感じ。

  • 基本的にC/C++と同じ文法になるように作られているので、学習コストが少なくて済む。
  • ヘッダファイルを書かなくていい。というかそもそも前方宣言が存在しない。
  • ガベージコレクタがあるのでdeleteしなくていい。
  • ビルドが速い(らしい。大規模なプログラムをビルドしたことがないのでまだ実感ない)。
  • 地味な違いだけど、classやstructの定義のあとにセミコロンが不要。好みの問題だろうけど、あれは何のために必要なのかずっと疑問だった(C言語の名残り?)。

逆に困った所は以下。

  • C++と違ってクラスが参照型となっていていろいろ混乱する。オブジェクト変数の代入がシャローコピーだったり。
  • 旧版の D 1.x と新版の D 2.x で言語仕様や標準ライブラリが少し変わったため、ネットで見つけたサンプルコードがうまく動かなかったりする。

まだ把握できていない機能もいろいろあるのですが、基本はC/C++と同じなので「better C++」くらいに思って気軽に使っています。