Tuesday 18 May 2010

D言語

Cを*改良した*と称する言語の一つ。

CbC ってのをやっていると、C の forwarding prototype が、かなりうっとうしいです。一応、自動的に生成してくれるscript を書いたんだけどさ。

あと、C で困るのは、

 typedefrec

みたいなのがないこと。

 typedef struct {
  Node left;
  Node right;
 } *Node;

ってことさえも出来ない。

 typedef struct node {
  struct node * left;
  struct node * right;
 } *Node;

とする必要がある。typedef の構文は、

 typedef void (*FuncPtrWithTwoIntegerArgs)(int,int);

とか任意の宣言が使えるので、typedefrec みたいなのだと、うまく構文解析できない。げろげろです。
 
 typedefrec void (*FuncPtr)(int,FuncPtr);

みたいに書きたいのだが... まぁ、無理すれば出来なくはないんだけど。

D言語は、型推論があるので、prototype は要らないのだが、typedefrec があるわけでもないらしい。

でも、問題はそこではなくて、

  dmd と、gdcと、ldcと、D.NET 版で、少しずつ異なる

ってことだな〜 まぁ、しょうがないんだけど。

gcc は、このところ、

 過去なんて知ったことか、俺らは勝手に gcc の中身をがんがん書き換える

って方針らしく、gcc base の言語(llvm も含めて)は、軒並破綻しているようです。うちも、はまってます。

D言語なら、Google の go 言語の方が良いんじゃないの説もある。まぁ、賛成しなくもないです。

No comments: