kumama go言語とかgolangとかGAEとかネットサービスとかその他色々・・・

7Dec/090

Googleはなぜgolangを作ったのか?

なにより中島さんがよく口にされていた「おもてなし」のためじゃないだろうかと思ってた。

 UIE 中島さんのBlogで、GoogleはなぜAndroidやChrome OSを無料で配布するのか?と言うポストを読んで。Blog炎上っていうか微妙な発言ほどコメントやTBが集まるけど、本筋の正論にはコメントが集まらないのが寂しいなぁとか変なことを考えつつ。

 確かにコモディティとか戦略って意味もあるだろうけど一番の根底にあるのはgoogleとしてのおもてなし。現状、携帯電話や携帯端末での主流はOperaのサブセットとかNetFrontとか。Googleがネットのでのおもてなしのために必要と考えているHTML5のサポートは微妙な状況。唯一AppleのiPhoneだけ。そんな中でGoogleユーザ(ネットユーザ)に気持ちよく携帯電話や携帯端末を使ってもらうために、AndroidやChrome OSを配布している。無いものは自分たちで作って提供すると言う方針。無料なのはGoogleが検索やその他のサービスを無料で提供しているのと同じ無料で特に深い意味はない。またGoogleとして全体的まとまりが今ひとつ見えないのは、Appleで言うところのジョブズの様な神が居ないから。

 さて一方、go言語はどうだろうか?pkgのソースを見てるとほとんど既成のライブラリを使っていない。先日エントリしたdnsclientや、X11、どちらもcgoで既存ライブラリを呼び出せばもっと互換性高く簡単に実装できるはず。それを敢えてgoで自前で実装してる。基本的にCでインターフェイスして呼び出しているのはsyscallだけ。つまりKernelさえ動いていれば後のユーザーランドは不要。

 と、言う事に気がついて微妙に既存のCライブラリをラップするcgoの作成には気が乗らない。Chrome OSはあくまでChrome OS。Google OSではない。Chrome OSがUbuntuにChromeをシェルとして被せただけとか色々な意見があった。今後、Kernelだけvmlinuzやmach_kernelで後のユーザーランドはgo nativeなOSが出てきても全然おかしくない。goのhttpサーバにブラウザがあれば完了だ。goで書かれたGoogle OSが登場しないと誰も言い切ることは出来ないだろう。

Filed under: golang Continue reading
7Dec/090

goで継承は出来ない…けど

んー、確かに「継承」はできないんだけど。似たような別の方法はあるってことで。
golangのLanguage Design FAQ::「Why is there no type inheritance?」辺りを読むといいかも。

method setを無名で内包する形で定義すると継承したみたいな感じになるっていうのと、interfaceは使いたい放題っていう当たりがキモかなぁ。

継承というよりは拡張という感じだけど感じ方はひとそれぞれ。

以下、サンプル。

Filed under: golang Continue reading
7Dec/090

goで関数内に複数のreturnを書くことができないなんて嘘

@itのGolangの記事の誤解
を見て知ったんだけど、全く同意。

元記事:第1回 Google Go登場の背景

記事を@ITに書くというのは非常に有意義で、是非これからも末永く続けて欲しいと思う。だけどミスリーディングはヤメテ欲しい。

package main

func Fx(i int) (ret int) {
    if i > 0 { ret = i*i; return; } else { ret = 0; return; }
    return;
}

func Fx2(i int)(int) {
    if i > 0 { return i*i } else { return 0; }
    return 0;
}

単純にコントロールパスの問題。最後のreturnには絶対に入らないからそれぐらい察しろよgoコンパイラって事かもしれないけど、だからといって関数内に複数のreturnを書くことができないというのは無茶。

その他、記事全体的に微妙な感じがする。

「Google Go登場の背景」はもう少し別のところにあるとおもう今日この頃。

Filed under: golang No Comments