2012년 4월 30일 월요일

go language




지금은  GO 언어를 들여다 보고있다.

concurrency 는 속도가 목적이 아니라 디자인이 목적이라는 말.
기존 OOP 언어 개발방법에서 class hierachy 를 개발 초기에 결정하는 것이 거의 불가능하다는 점을 GO 는 만져준다.
concurrency + rpc 는 scalability 를 가능하게한다.
개발자의 주 업무는 디자인을 지속적으로 변경하는 일이라는것을 GO 언어는 염두에둔다.
지속적으로 디자인을 변경하는일이 짐이되지 않도록 하는 장치가 들어있는것으로 관찰된다.

GO1 은 아직 완성도가 높지않다.
지원하는 라이브러리가 적다. 특히 UI 가 아쉽다. 부족한 부분을 아직은 SWIG 에 의존하고 있는 상황이다.
빌드속도는 빠른것이 확인되었으나, 실행속도는 아직 확인되지 않았다.
최악의 경우 JAVA 정도의 속도가 될지도 모를일이라고, 나 혼자 걱정하고있다.


GO 에는 함수형 언어의 특성이 들어있다.
GO 에는 class 가 없다.
따라서, GO 는 C++ 개발자에게 디자인 패러다임을 전환할것을 요구한다.

사고의 전환은 개발자들의 시간과 에너지가 필요한일이다.
개발자들이 GO 디자인 패러다임에 적응하는데는 시간이 걸릴것이다.
그러나, 몇년안에 OOP 언어에 지친 개발자들은  GO 언어로 이동할것이다.
몇년안에 지금 부족한 라이브러리가 채워질것이다.


디자인변경이 고통스럽지 않아야한다.
thread, ipc, rpc, shared memory synchronization 기능을 언어차원에서 지원해야한다.
Scalability 가 가능해야한다.
여러가지 OS 에서 빌드할 수 있어야 한다.
실행속도가 빨라야 한다.
이것은 내가 원하는 언어의 요구사항이다.

메인언어로,
GO 언어가 C++ 언어의 대안이 될수 있을것인가.
그것을 앞으로 몇달간 살펴볼 예정이다.

goroutine 과 channel 을 쓸것인가 thread 와 mutex 를 쓸것인가.
그것을 앞으로 몇달간 살펴볼 예정이다.


결국, 나는 Better C++ 을 찾고 있는 중인가.