Go

GoogleのGo言語についてつぶやいてみました。

本家:The Go Programming Language
@IT:グーグル、C/C++に代わる新言語「Go」をOSSで公開

    • -
  • 軽くGo言語のspecをなめてみた。なんでもアリアリのD言語と比べるとだいぶスリム。配列の扱いに工夫があって、D言語同様にstringを組み込み型に入れている。
  • 面白いのは並行処理。たぶん実装はthread じゃなくてcoroutine。goroutineなんて呼んでいる。threadよりはスタック消費の面で軽量。plan9のCコンパイラでは、 segmented stackが扱えるそうで、plan9との親和性は高そう。
  • 一応、オブジェクト指向。でもinterfaceしかない。抽象型だけ入れてある感じ。coroutineといい、私にはModula-2に見える。
  • 関数が複数の値を返せるのにびっくり。これほしかった。func f() (i int, j int); v1, v2 = f();
  • generic typesもないし、exceptionも扱えません。性能上の理由があるらしい。性能命のGoogleの姿勢が見える。
  • operator overloadingがないのは当然として、method overloadingもありません。
  • Go言語、do/while文もない。どうしてるかは、ドキュメント参照。
  • Windowsに載っける気はさらさらないらしい。LLVMで動かす気もないみたい。遅くなるのがいやだと。さすがGoogleさま。"it was too large and slow to meet our performance goals."
    • -

(追記)
GoのGCは、Recycler algorithm といい、Javaで培われた技術とのこと。

  • David F. Bacon, Clement R. Attanasio, Han B. Lee, V.T. Rajan, and Stephen E. Smith,
    "Java without the Coffee Breaks: A Non-intrusive Multiprocessor Garbage Collector," ACM SIGPLAN PLDI'01, May 2001. (pdf, ppt