2009년 11월 12일 목요일

Go Language를 설치해보자.

구글이 go라는 언어를 발표했다.

우선은 리눅스와 맥만을 개발 환경으로 두고 있는 듯 하다. Python과 C++을 합쳐 놓았다는 기사가 있었는데, 잠깐 살펴본 바로는 둘과 크게 상관은 없는 것 같다. 파이썬의 생산력과 C++의 속도를 모두 잡겠다는 것이 의도라고 go의 개발자들이 이야기하고 있는데, 그것을 강조해서 말하다 보니 오해를 불러 일으킬 수 있는 기사가 나간 것 같다.

이것은 잠시 딴 이야기지만 파이썬과 C++에 대한 언급은 조금 경솔했다고 생각한다. 개발자들에게 언어라는 것은 매우 민감해서 이런 발언이 긍정적인 효과를 불러올 확률은 매우 낮다. 두 언어를 다 모르는 사람에게는 호기심을 자극할 수도 있겠지만, 파이썬 개발자나 C++ 개발자는 "흥, 얼마나 잘난 언어일까?"하고 삐딱한 마음을 가질 가능성도 높다고 생각한다.

아직은 초창기이고 이름에 대한 논의까지 멈추지 않았으니 성숙하려면 한참은 걸릴 것 같다. 홈페이지를 둘러본 바로는 라이브러리가 꽤 잘 되어 있는 것 같고 문법도 깔끔한 편인 것 같으니 어떻게 성장해 나갈 지 흥미롭게 지켜볼 수 있을 것 같다. 게다가 뒤에는 구글이 있지 않은가!

설치를 해보자.

리눅스(ubuntu 9.10)를 사용하고 있기 때문에 설치를 해보고 샘플로 제공하는 hello, world를 해봤다. 설치법은 go 홈페이지에 잘 나와있다.

$GOROOT, $GOOS, $GOARCH 환경 변수를 설정해준다.
좀 더 친절하게 예를 들자면, .bashrc 파일 뒤에다가
export GOROOT=~/go
export GOOS=linux
export GOARCH=386
를 넣어주면 되겠다. 홈 디렉토리에 /go라는 디렉토리를 만들고 그 곳에 필요한 파일을 다운로드 하겠다는 것이고, 운영체제는 리눅스, 32비트라는 의미가 된다. go 언어 개발자들은 주로 64비트에서 실험을 하는 듯 하다. 가장 안정된 arch가 amd64(64-bit) 포트, 그 다음이 386(32-bit)이라고 말하고 있다.

한 가지 홈페이지에서 제안하는 환경 변수가 더 있는데 $GOBIN이다. go 언어의 컴파일러와 링커 등이 설치될 경로를 설정하는 변수인데, 지정하지 않을 경우 ~/bin 이 사용된다. 내 경우에는 홈디렉토리에 bin 디렉토리를 두고 있고 몇몇 스크립트 파일과 rar등을 넣어두고 있기 때문에 설정하지 않았지만 go를 /usr/bin이나 /usr/local/bin에 넣어두고 싶은 사람은 설정해두어야 할 것이다.

내 생각에는 시스템 폴더에 넣는 것은 그리 좋은 방법이 아닌 듯 하다. permission 문제도 있고. 그냥 ~/bin을 쓰는 것이 가장 좋을 듯.

$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
라고 입력하면 소스를 죽 받아오게 되는데, Mercurial이 필요하다. 설치되지 않은 경우에는 우분투라면,
sudo apt-get install mercurial
로 간단히 설치할 수 있겠다. 다른 배포판에서는 알아서들.

go 디렉토리가 생성되게 되는데, go/src에 가보면 all.bash라는 파일이 있다. 실행하자. 한 번에 설치를 해주는 스크립트이다.
$ ./all.bash
한참을 작업하고는
--- cd ../test
0 known bugs; 0 unexpected bugs
$
라는 메시지와 함께 설치가 종료된다.

홈페이지에는 컴파일러의 실행 파일이 6g이지만 386 포트를 사용하게 되면 8g가 실행 파일이 된다.
package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}
$ 8g hello.go
$ 8l hello.8
$ ./8.out
hello, world
$
에러가 없기 때문에 아무 메시지도 출력되지 않는다. 8g는 컴파일러, 8l은 링커이고 기본 실행 바이너리의 이름은 8.out이 된다. hello, world가 깔끔하게 출력!

일단은 설치가 간편하고 깔끔한 느낌은 든다.