2009年11月12日木曜日

The Go Programming Language 試用中

http://golang.org/

exception がないのはいやですが、ソースコードを見た感じでは作りは良さそうなので、ちょっとは使ってみようかと思う。が、all.bash が通りません。いったいどういうリポジトリを公開してるんだか。まあ一部の test に失敗しているだけのようで、しかも test 自体に問題があるような感じではある。

とりあえず go.y を覗いたところ(文法変える気?)、シンプルな感じ。全体的にソースコードはかなりきれい。exceptionがないぐらいで見捨てるのは忍びない。


以下、お約束:
fib.go:
package main

import fmt "fmt" // Package implementing formatted I/O.

func fib(a int) int {
  if a==0 {return 0}
  if a==1 {return 1}
  return fib(a-1)+fib(a-2);
}

func main() {
     a := 40;
     fmt.Printf("fib(%d) = %d\n", a, fib(a));
}
fib.c:
#include "stdio.h"
int fib(int a){
  if(a==0) return 0;
  if(a==1) return 1;
  return fib(a-1)+fib(a-2);
}
int main(int argc, char **argv){
  printf("fib(40) = %d\n", fib(40));
}
result:
$ 6g fib.go && 6l fib.6 && time ./6.out
fib(40) = 102334155

real    0m2.245s
user    0m2.186s
sys    0m0.017s
$ gcc -O2 fib.c && time ./a.out
fib(40) = 102334155

real    0m2.434s
user    0m2.384s
sys    0m0.014s
気になった点:
  • 関数の引数、戻り値の型は省略できないようだ
  • if 文の{}は省略できないようだ 
  • compile 時間は fib だと gcc の方が早い
使いやすさよりも、まずは処理系に優しい言語という感じ。

0 件のコメント:

コメントを投稿