[Go] Go는 어떤 언어인가요? [1]
많은 개발자가 새로운 프로젝트를 만들 때 빠른 개발 속도와 높은 성능 사이에서 고민을 많이 합니다.
개발자들은 보통 스타트업의 경우 루비, 파이썬과 같은 동적 언어로 초기 버전을 빠르게 만들며,
이용자가 많아질 때 자바나 C++ 같은 정적 언어로 다시 작성하는 방법을 택하는데요,
이런 고민을 해결하기 위하여 '동적 언어의 개발 속도' + '정적 언어의 안정성' 이 두 가지 토끼를 잡고자 나온
Go에 대해 알아보겠습니다.
Go Programming Language
먼저 Go 언어의 특징은 다음과 같습니다.
- 간결하고 유연함
- 병행 프로그래밍에 특화 됨
- 동적 프로그래밍
- 정적 타입 언어
- 빠른 컴파일과 실행속도
- 협업이 쉬움
- Garbage collection 제공
오늘 포스팅은 2번째까지 특징을 다뤄보겠습니다.
간결하고 유연한 언어 Go
Go는 코드가 단순하며 가독성이 높습니다.
기억하기 쉬운 키워드 몇몇개만으로도 어플리케이션을 구현할 수 있으며 1.5 버전 기준으로 25가지 키워드만 익히시면 됩니다.
이는 C++(150), VB.NET(188), Java(50) 등 타 언어에 비해 매우 적으며 파이썬(29)보다도 적습니다.
Go는 상태를 표현하는 '타입'과 동작을 표현하는 '매써드'를 분리하여 정의합니다.
또한 다른 객체지향 언어들은 코드를 상속받아 재사용하지만, Go는 상속이 안되며 코드의 조합으로
(물론 다른 언어도 조합하여 재사용 가능하지만 훨씬 복잡해집니다.) 재사용합니다.
병행 프로그래밍
흔히들 아는 무어의 법칙대로 계속 성능이 향상되던 시절을 지나 현재는 한계에 부딪혔으며,
이를 해결하기 위해 제조사들은 소형화 된 칩을 여러개 집어넣는 방식을 택하고 있습니다.
대부분의 언어들은 병행 프로그래밍 기능을 구현하기도, 테스트하기도 매우 어렵고 기대치만큼의 동작을 하지 않기도 합니다.
하지만 Go 언어는 다른 언어처럼 메모리를 공유하는 방식이 아닌 메세지를 전달하는 방식으로 동기화합니다.
이는 통신 순차 프로세스(Communcation Sequential Processes, CSP) 방식에 근간을 둔 것입니다.
Go에서 동시에 처리할 작업은 고루틴으로 실행하는데, 수 킬로바이트 정도의 아주 적은 리소스만을 갖고 동작하므로
한 프로세스에서 수 천~ 수 만개의 동시동작을 수행 가능케합니다.
학업때문에 오랜만에 포스팅하였는데요, 다시 열심히 공부해보도록 하겠습니다!
이 글은 인제대학교 의용공학부 네트워크 팀 '11 신윤호가 작성하였습니다.