프로그램언어 'Go'
Go 프로그래밍 언어(Go Programming Language)는 Google에서 만든 C계열 프로그램 개발언어.
[Go언어 직접 경험해보기]
PC나 스마트폰에서 웹브라우저 주소창에 http://golang.org를 입력하고 해당 사이트로 이동한다.
왼쪽 하단의 박스에 소스가 보일 것이다. 해당 소스를 컴파일하고 실행하려면 <COMPILE & RUN> 버튼을 누르면 된다. 눌러보자. 바로 밑에 파란색으로 결과가 보일 것이다.
이렇게 Go언어로 된 “Hello World!” 프로그램을 컴파일하고 실행한 후 그 결과를 확인했다.
이번에는 각자의 이름을 입력해서 실행해 보자. “Hello, 제용”처럼 말이다. 자신의 한글 이름을 입력하고 <COMPILE & RUN> 버튼을 눌러 결과를 확인해 보자.
[Go의 시작]
2007년 구글에서 개발자는 로버트 그리스머(Robert Griesemer), 켄 톰슨(Ken Thompson), 롭 파이크(Rob Pike)에 의해 시작되었다. 개발중 이안 테일러(Ian Taylor)는 Go언어를 GCC 컴파일러에 적용하는 일을, 러스 콕스(Russ Cox)는 개발팀에 합류해 Go의 완성도를 높이는 일을 담당하게 된다.
Go언어 개발팀은 벨 연구소(Bell Labs)에서 최고였고 B, C언어 개발 이후 켄 톰슨이 다시 돌아왔다.
먼저 켄 톰슨은 유닉스의 아버지로 유명하다. 유닉스를 만든 공로로 SW 분야의 노벨상이라 할 수 있는 튜링상(Turing Award)를 수상하기도 했다. 또한 유닉스 초기버전까지는 혼자 개발했을 정도로 뛰어난 실력의 개발자다. 이후 유닉스는 발전을 거듭하면서 서버 운영체제와 맥OS로 널리 사용되고 있다. 유닉스에 필요한 개발언어를 구상하면서 그는 B언어(1969)를 만들게 된다. 그 후 데니스 리치가 B언어를 개선해 C언어(1972)를 만든다. B언어와 C언어의 관계를 유추할 수 있는 예로 처음 나왔을 때 ‘New B’라는 이름을 사용하다가 이후 C로 명명됐다는 것을 들 수 있다. 그리고 켄 톰슨과 데니스 리치는 같은 벨 연구소를 다니면서 실제로 C를 개발할 때 많은 도움을 주고 받았다고 한다.
Go가 정식으로 세상에 나온 것은 2009년 11월이다.
[Go언어 적용분야]
처음 설계되던 때부터 출시 이후 지난해까지 공식적인 발표자료를 보면 Go언어가 목표로 삼은 것은 시스템 개발 분야다. 구체적으로 Go를 개발한 사람들이 프리젠테이션에서 밝힌 예상 적용가능 분야는 다음과 같다.
* 웹서버
* 웹브라우저
* 웹로봇
* 검색엔진
* 컴파일러
* 프로그래밍 도구(디버깅 도구, 분석 도구 등)
* IDE(통합개발환경)
* 운영체제
C와 비슷한 성능을 내면서 C/C++로 개발돼 온 분야를 대체할 수 있다는 설명이다. 하지만 올해부터 나온 발표자료에서는 시스템 개발에 한정되지 않고 다양한 용도의 개발에 활용할 수 있다는 설명이 추가돼 있다. 실제로 출시 후 1년간 사용해 보니 일반 개발언어(General Purpose Language)로 사용해도 손색이 없다고 주장한다. 구글 앱 엔진(Google App Engine)에 사용돼 다른 앱 엔진 개발 지원 언어인 파이썬, 자바와 어깨를 나란히 한 것을 보면 과장된 표현은 아닌 것 같다. 또 Go언어를 만든 롭 파이크는 “내가 써 본 개발언어 중에서 가장 생산성이 높다”라고 자신 있게 말하기도 했다.
[Go에 대한 Google]
Go 프로그래밍 언어가 공식적으로 구글에서 만들었지만 Go언어가 오픈소스 프로젝트 형태로 진행되기 때문에 구글이 일종의 Go언어 개발 스폰서 같은 느낌을 주기도 한다.
최근 구글을 가장 괴롭히는 것은 특허분쟁이다. 특히 가장 곤혹스럽게 만드는 부분이 안드로이드의 달빅(Dalvik)에 들어가 있는 자바관련 기능이다. 썬을 인수하자마자 오라클이 바로 구글을 상대로 안드로이드에서 자바 기술에 대해 라이선스를 얻지 않고 무단으로 사용했다며 제소한 상태다. 피해액으로 오라클이 주장하는 금액은 10억~60억 달러 정도이며 해외 언론에서는 오라클이 좀 더 유리한 입장이라고 한다. 빠르면 몇 달 뒤 결정이 난다고 하니 누가 웃고 울게 될지가 궁금하다. 개발언어를 갖고 있지 않을 경우 자사의 서비스를 하루 아침에 중단해야 할 수도 있다는 경험은 SW 분야에서 세계 최고 기업 구글에게는 다시 겪고 싶지 않은 경험일 것이다.
[Go와 C]
C 개발자를 가장 골치 아프게 하는 것들에는 포인터와 메모리 할당 및 해제가 있다. 포인터에 관한 문제점의 싹을 제거하기 위해 포인터는 제공하되 포인터 연산은 제공하지 않는다. 메모리 할당 및 해제에 대해 가비지 콜렉션(Garbage Collection)을 제공하는 경우 메모리 해제에 대해 개발자가 신경쓰지 않아도 된다. 특히 동시성(Concurrency) 관련 개발을 할 때 메모리 할당과 해제는 개발을 어렵게 하는 요소다. 동시성을 언어 차원에서 제대로 지원하기 위해서는 가비지 컬렉션이 반드시 필요하며 Go언어는 가비지 콜렉션을 완벽하게 지원한다. 물론 자바도 지원하는 기능이다. 하지만 자바의 경우 VM(Virtual Machine)에서 제공하는 것과 달리 Go언어에서는 빌드돼 나온 결과 파일에서 이를 지원한다는 것이 차이점이다. 최근 안드로이드 기기의 트렌드 중에 하나는 듀얼코어다. 물론 앞으로 두 개 이상의 코어를 갖는 기기가 기본 스펙으로 자리 잡을 것으로 예상된다. C/C++은 멀티코어를 고려해서 설계된 개발언어가 아니다. 당연히 40년 전에 존재하지도 않는 멀티코어를 미리 고려해서 언어를 설계할 수는 없었다. 그러므로 C/C++로 병렬처리가 가능한 프로그램을 작성하는 데는 많은 노력이 든다. 멀티코어 환경에서 개발할 경우 단순히 하드웨어의 병렬처리뿐만 아니라 소프트웨어 레벨에서 동시성도 함께 고려해야 한다. Go언어는 설계 단계에서 멀티코어를 지원하는 개념을 도입했다. 멀티코어 환경에서 안전하고 쉽게 개발할 수 있는 방법을 제공한다.
최고의 개발자들을 모아 Go언어를 만든 구글과 40년 만에 C언어의 업그레이드로 등장한 Go언어가 주요 내용이었다. 향후 Go언어가 주류 언어가 될 것인지, 앞으로의 방향과 발전이 기대된다.
Go 프로그램언어 웹사이트 http://golang.org
Go 한글화 사이트 http://golang.kr
Go 위키백과사전 정보 http://en.wikipedia.org/wiki/Go_(programming_language)
'IT/과학 /탐구' 카테고리의 다른 글
당신의 휴대폰은 당신이 누구인지, 어디 있는지, 어디로 가는지 다안다... (0) | 2011.09.19 |
---|---|
위키리크스 한국홈페이지!! wikileaks (0) | 2011.09.19 |
부팅을 단 8초만에 MS '윈도우8' 공개!! (0) | 2011.09.15 |
하루 9시간씩 무료 통화!! 모바일 메신저 '마이피플' (0) | 2011.09.08 |
2011년9월7일자 견적!! 고성능 컴퓨터, 디자인용 컴퓨터, 하드코어 게이밍PC (2) | 2011.09.07 |