본문 바로가기
카테고리 없음

[golang] - Go 언어

by CHML 2016. 2. 3.
1. Go 언어의 특징

Go 언어는 구글이 개발하고, 지속적으로 업데이트를 하고 있는 C언어 문법 기반의 컴파일 언어이다. C언어의 원시 언어인 B언어, 유닉스의 개발자로 유명한 켄 톰슨이 Go 언어의 개발에 참여하여 많은 화제가 되기도 했다.



Go 언어는 컴파일&빌드 시, 실행 파일 내부에 가비지 컬렉터(garbage collector)를 내장한다. 즉, Go 언어는 C/C++ 언어의 실행 파일과 같은 간결함과 JAVA, C#의 가상머신에서 제공하는 가비지 컬렉션의 기능을 모두 갖춘 언이이다. 따라서, Go 언어에서는 C/C++로 프로그램을 작성할 때와 다르게 메모리 관리에 신경을 쓰지 않아도 되기 때문에 생산성이 높다. 또한, Go 언어는 가상 머신을 거치지 않고 실행되기 때문에 C/C++ 처럼 빠른 성능을 얻을 수 있다.

기존의 언어들과 다르게 Go 언어는 언어 차원에서 병행성(concurrency)을 제공한다. Go 언어에서는 go 키워드를 이용하여 고루틴(goroutine)이라는 것을 생성할 수 있는데, Go 언어는 고루틴을 자동으로 다중 쓰레드로 처리하여 언어 차원에서 병행성을 제공한다. 또한, Go 언어에서 제공하는 채널이라는 개념을 이용하여 고루틴 간의 통신도 제공한다.

Go 언어는 C/C++ 언어와 다르게 헤더 파일이 없고, 소스 코드를 패키지화하여 변경된 부분만 컴파일한다. 또한, 문법적으로 복잡한 요소를 최대한 제거했다. 이러한 두 가지 특징은 Go 언어가 C/C++ 언어보다 컴파일 속도 측면에서 유리한 이유이다.


2. Go 언어의 활용 범위

C/C++, Java, Python 등과 마찬가지로 Go 언어는 만능 언어가 아니다. Go 언어는 가상머신이 아니라 실행 파일 단계에서 가비지 컬렉션을 제공하기 때문에 빠른 실행 속도와 자동화된 메모리 관리 두 가지를 모두 만족하지만, 그만큼 메모리 관리를 철저히 해야 하는 시스템 소프트웨어 제작에는 한계가 있다. 그러므로 Go 언어는 메모리 관리보다는, 로직이 더 중요하며 규모가 크고 복잡하며 유지보수가 빈번한 시스템의 개발에 적합한 언어라고 할 수 있다.