728x90

http://www.youtube.com/watch?v=rKnDgT73v8s



구글이 공개한 program language : =go
문법이 JAVA와 아주 약간 비슷한 듯 보이지만 Python을 많이 참고하여 배꼈다.
구글이 웹과 임베디드 세계를 넘보는 만큼 이 언어는 임베디드 환경에 알맞도록 설정되어 있는 것 같다.
가장 자랑하는 것은 compile시간을 줄였다는 것이다. 큰 시스템에서는 컴파일 시간이 꽤 길기 때문에 한번에 코드를 제대로 짜지 못하는 나같은 우매한 인간은 컴파일 시간이 코딩 시간의 상당한 부분을 잡아먹게 된다.

go는 make할 때 dependency한 object(.o)파일을 참고하는 object파일에 포함시킴으로써 compile시간을 획기적으로 줄였다.
다시말해 기존 make방식은 각각의 .c코드를 .o의 어셈으로 바꾼 후 참조하는 파일이 있을 때마다 링크해나가면서 컴파일하기 때문에 시간이 오래걸린다. 한번 .o파일을 만든 후 다시 그것들을 참조하면서 다시 컴파일하는 것이다.
go는 object파일을 만들 때 참조하는 코드를 .o파일에 넣어버린다. 당연히 파일의 크기는 커지겠지만 compile시간을 줄일 수 있다. 일반적으로 개발환경에서는 메모리가 많이 있고 현대에는 메모리의 가격이 아주 싸기 때문에 메모리를 좀더 사용해서 개발시간을 단축하는 것이 훨씬 좋아보인다.

언어적 특징은 Python과 같다. 언어의 type이 없다는 것(형 변환이 자유롭다).
라이브러리에 많이 의존한다는 것.
그리고 재미있는 것은 함수포인터를 사용하기 편리하도록 만들어놨다.

함수포인터를 그냥 변수 type처럼 사용하는 언어..이것은 go가 class를 지원하지 않는 단점을 보완하기 위한 것으로 보인다. (이왕이면 class를 지원하는 ruby를 모델로 삼지 왜 OOP가 대세인 요즘 세상에 struct를 줄기차게 써가며 Python을 그대로 배꼈는지 의문이다. 아무튼) 함수(func)와 구조체(struct)를 가지고 class처럼 사용하고자 할 때 많이 쓰는 것이 함수 포인터다. class처럼 접근권한을 설정할 수 는 없지만 구조체 않에 함수를 집어넣을 수 있다는 것만으로 상당한 매력이 있으니까.

go 언어는 linux와 maxOS는 지원하지만 windows는 아직 지원하지 않는다. 이는 windows가 경쟁업체이기도 하지만 linux에서 사용하는 make명령을 그대로 사용하고 싶어서 그러는 것 같다. (여담이지만 회사에서 사용하는 개발 tool도 windows에서 돌아가지만 내부적으로는 make를 사용하고 gcc cross compiler를 이용한다.)

google이란 회사는 기술적으로 상당히 대단한 것들을 대수롭지 않게 저지르고 본다. 다른 회사들과 차별화되는 검색엔진부터, 문서도구, 웹 브라우저, 운영체제, 프로그래밍 언어까지 정말이지 무섭다.

프로그래밍 언어에 있어서 구글은 안드로이드 만으로는 허전했나 보다. 기대도 되지만 소프트웨어 엔지니어가 도대체 얼마나 많은 것을 배워야 하는건지 암담해진다.

발표당시 사용된 문서 : http://golang.org/doc/go_talk-20091030.pdf
대표 사이트 : http://golang.org/
728x90

+ Recent posts