D言語を触っています
前々から興味があったD言語で、試しにリバーシを作ってみました。下のスクリーンショットの通りコンソールアプリですが。ソースコードと実行ファイルは「練習で書いたプログラム置場」に置きました。
D言語というのは、
Cの関数を呼び出せて,C++のようなテンプレートが使えて,ネイティブコードで,コンパイルが高速で,C#やJavaのようにGCがあって,RubyやPythonみたいに簡潔に抽象レベルの高いコードが書ける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++」くらいに思って気軽に使っています。