D言語のあるべき姿、またあるべき使い方

D言語もだいぶ普及、はしてないけど話題に上るようになって、面白くなってきている。Dの現状の問題点として、仕様が不明確なこと、コンパイラのバグが多いこと、ある程度以上の規模のプログラムをどう書くかのスタイルガイドがないこと、などがあって、D言語における正しいスタイルとはどういったものなのだろうかということは、まだまだ手探りな状態だ。

従来の手法を無理に通すことは簡単なのですが、何故Dが今の様になっているかを考えてみることも、決して無駄ではない、いや、むしろ建設的でしょう。 ここは、そういうページです。

なのでこういった視点からのドキュメントはとてもありがたい。まあ、

というよりは、言ってしまえば、僕が自分の気に入った仕様を並べてるだけです。 自分が読んでも相当嘘臭いです。

という風に、こういった話は、どうしてもその人が今までどんな言語を使ってきて、何を気に入っているのかっていうことに強く影響されてしまうのはしょうがないけどね。

で、一番びっくりしたのがこれ。

interfaceから実クラスへダウンキャストできない?

COMのinterfaceと互換性を持たせようとすると、どうしてもそうなります。 Delphiのinterfaceも同様です。

お蔭で他の言語とinterfaceのやりとりができることを考えれば、我慢できる範囲かと…。 むしろCOMとの互換性を失うほうが痛手です。

なーにー!私はこれは間違いなくバグで、この設計が妥当だなんていう視点がある可能性すらまったく考えてなかったのだが、こういう事情があるのか... まあでも現状のコンパイルが通って、実行するとAccess Violationになるっていう挙動はおかしいので、dmd0.76ではバグだろうけどね。ダウンキャストでAccess Violationっていう字面はある意味合っているような気もするが、DはほとんどのランタイムエラーがAccess Violationなのでこのメッセージに意味があるかというと微妙。早くJavaC#なみのスタックトレースが出るようにならないかな。

個人的に今後Dでゲームを書く際に気をつけることメモ。

  • importはprivateにする
  • モジュール名、ファイル名はDスタイルに従って小文字に
  • プロパティを正しく使おう

基本的すぎ。まあ私は今のところDを、exeを作るちょっといい感じのJava、っていう具合に使っているだけなので、より良いスタイルについてはできる範囲から少しずつね。