Go言語と戯れてみた


暇なので今更ですけどGoogleが開発しているオープンソースのプログラミング言語「Go」と戯れてみました。

Go言語の特徴

googleによると次のような特徴が紹介されています。

  • シンプルな言語である
    C言語に近い記述で言語仕様も軽量なため、学習コストは低い。
  • コンパイル・実行速度が速い
    コンパイルが速く、また実行速度もC/C++に迫る実行速度を目指している。
  • 安全性が高い
    タイプセーフかつメモリセーフである。またポインタ演算子を排除し、GCを導入した。
  • 同期処理が容易に行える
    goroutineと名づけられた軽量通信プロセスにより、サーバ処理が書きやすくなっている。
  • なにより楽しい
    ビルドが早くて、かつ洗練された構文、ガーベージコレクション、多種多様なメソッド、リフレクション機能を持っている。
    一見、動的言語のようであるが実行速度と安全性は静的言語そのものである。
  • オープンソースである
    BSDライセンスである。

現状はLinux、Mac、nativeclient、Androidで動作します。

インストール

今回はMacPortを使ってインストールしてみました。MacPortsをインストールしていない方は「MacPortsのインストールと設定」を参考にして下さい。

$ sudo port -d selfupdate
$ sudo port install go

Let's Programming!

おきまりのHello, world!を実行してみましょう。

hello.go

package main

func main() {
        println("Hello, world\n");
}

ターミナルを起動し、作成したソースコードをコンパイルします。

$ 6g hello.go

6gはGo言語のコンパイラです。6gはAMD64(x86_64)向けのコンパイラで、他にも8g(x86向け)や5g(ARM向け)があります。Go言語はターゲットのプロセッサにあわせてコンパイラを選択します。

コンパイラが終了すると拡張子「.6]のファイルが生成されていますが、これは中間ファイルです。次は中間ファイルからリンカで実行形式のファイルを作成します。

$ 6l -o hello hello.6

6lはGo言語のリンカです。コンパイラと同様にリンカもターゲットのプロセッサにあわせて選択します。

最近は何かとIDEを利用したプログラミングが多いせいか、ターミナルでプログラミングできて楽しかったです。学生時代を思い出しました^^;


あわせてお読みください