The Go Programming Language
C++, Objective-C, C#. 이름만 보아도 C에서 유래한 언어들이 참으로 많습니다. 그 이름에서는 드러나지 않지만 Java역시 거슬러 올라가면 C를 만나게 됩니다. C에 의해 대체되어 지금은 사라진 언어로 보아야 합니다만, 이 C 의 전신이 B 입니다. 살아있는 전설, 유닉스(Unix)의 아버지 Ken Thompson의 작품입니다. Ken Thomson 이 C 에서 파생된 또 하나의 언어를 들고 돌아왔습니다. Go 라는 이름을 갖고 있는 컴파일 형 언어인데, 스크립트 언어에서 발견되는 편리함을 추구하면서도 실행 속도를 포기하지 않는다는 목표를 갖고 있다고 합니다. 문법은 C++과 비교하는 것이 가장 빠를 듯하지만, C++과는 달리 C와의 호환성을 유지하지는 않습니다. 변수 선언부터 다릅니다.
오가네가 이 언어에 눈길을 주는 이유는 Ken Thomson 의 작품이라는 것 외에도, 그 배경에 구글(Google) 이 있으며(Ken Thomson도 구글 직원이네요), 주 지원 플랫폼에 안드로이드(Android)가 포함되어 있다는 점입니다.
간단히 특징을 살펴보면
- 오픈소스입니다.
- 컴파일 속도가 엄청 빠릅니다.
- C와 비슷한 성능을 내는 실행 파일로 컴파일 됩니다.
- 대단히 자유로운 형태의 Interface 를 지원합니다.
- Inheritance 대신 Embedding을 제공합니다. 해체된 형태의 Delegation으로 보입니다. 이 언어의 모토가 혹시 ‘해체’가 아닌지 모르겠군요.
- 쓰레드 프로그래밍이 언어 특성으로 흡수되었습니다.
- GC(Garbage Collection)이 지원됩니다.
- 포인터(Pointer) 는 지원하지만 포인터 연산(Pointer Arithmetic)은 지원하지 않습니다.
- String, Array, Slice, Map등의 고수준 객체들을 제공합니다. (Map은 Hash Map입니다. Slice 는 파이썬의 그 Slice 맞습니다.)
- 인터넷 시대에 어울리는 풍부한 라이브러리가 제공됩니다.
- 헤더 파일은 없어졌고 Java와 유사한 방식의 package를 제공합니다.
- 파이썬처럼 여러 개를 return 할 수 있습니다.
- Named Return이 지원됩니다.
- JNI 처럼 C 와 연결할 수 있는 도구가 제공됩니다.
자 Go 사이트로 가보시지요.
[...] This post was mentioned on Twitter by musart park(박기환). musart park(박기환) said: The Go Programming Language, http://bit.ly/aijdA7, Is it useful to learn as embedded programmer? [...]