NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

구글의 고(GO)가 고(Go)할 수 있는 이유

IT 모니카

구글의 Go 개발자들
구글의 Go 개발자들 (출처: 유튜브)

 

‘서버 하나를 빌드하는데, 이렇게 시간이 오래 걸리다니…’ 이런 생각에서 시작하여, 또 하나의 프로그래밍 언어가 탄생하게 됩니다. 바로 구글이 개발한 고(Go), 다른 말로 고랭(Golang)의 역사가 시작된 것인데요. 이제는 구글을 넘어 전 세계적으로 폭넓게 쓰이고 있는 컴퓨터 프로그래밍 언어가 되었습니다. 고(Go)의 역사를 되돌아보면 2007년 구글의 특별 엔지니어인 롭 파이크와 로버트 그리즈머, 켄 톰슨을 중심으로 구글의 프로그램 개발자들이 C++ 프로그래밍 언어의 복잡함을 줄이고 좀 더 간결하고 사용자가 배우기 쉬운 프로그래밍 언어를 만들어보자는 목표로 모이게 됩니다. 그 결과 빠른 속도의 컴파일 언어를 위해 오픈 프로그래밍으로 작업한 결과 짧은 시간 안에 프로그래밍할 수 있는 고(Go)를 개발했습니다. 이렇게 탄생한 Go 언어는 2009년 11월에 리눅스와 맥 OS 플랫폼을 대상으로 세상에 나왔고, 2012년 3월 정식 버전을 시작으로 2021년 현재 1.17 버전으로 업데이트되었습니다.

 

고(Go)가 고(go)한다

지금 여러분이 쓰고 있는 프로그래밍 언어가 C, C++ 혹은 자바인가요? 만약 이 물음에 YES라면, 다른 언어들보다 고(Go)를 빨리 익힐 수 있다는 말이 있습니다. 그 이유는 우리가 알고 있는 고(GO) 언어가 공식적으로 C 프로그래밍 계열에 속하는 C 언어에 속하기 때문입니다. 그리고 한 가지 더! C 언어를 개발한 켄 톰슨이 고(Go)의 핵심 개발자라는 점인데, C 언어를 가장 잘 아는 사람이 C 언어 계열에 속하는 고(Go)를 개발했으니 더욱이 그렇습니다. 그리고 대부분의 프로그램 관련자들이 C 언어를 사용하고, 대부분의 시스템 프로그래밍에서 C 언어와 C++ 언어가 많이 사용되었기 때문에 개발자들이 새로운 언어를 익히고, 프로그램을 개발하기에 편리하다고 합니다.

 

이 밖에도 고(Go)는 여러 가지 프로그램과 운영체제를 지원합니다. 그중에서도 리눅스, 맥 OS, 윈도우 바이너리, 도커 컨테이너 등으로 지원되는데, 사용료는 무료입니다. 특히 고(Go)는 리눅스 배포판에 기본 사항으로 포함되어 있습니다. 그래서 리눅스 기반의 플랫폼에서는 고(Go)를 쉽게 배포할 수 있습니다.

 

 

구글의 Go

고는 빠른 컴파일 속도를 자랑한다

이어서 고(Go) 언어에 대해 구체적으로 살펴보겠습니다. 고(Go)는 C 언어와 비슷한 구문입니다. 하지만 C언어의 복잡함을 해결하고 컴파일 속도를 빠르게 했는데요. 이때 고(Go)는 전체적인 헤더 파일을 관리하는 것이 아니라 소스 코드 자체만 관리합니다. 즉 소스 코드 자체를 패키지 할 때 변경된 부분만 컴파일하기 때문에 속도는 자연스럽게 빨라질 수밖에 없습니다. 이것이 바로 많은 프로그래밍 개발자들이 고(Go)를 선택하게 된 이유 중 하나입니다. 더 쉽게 풀어보면 고(Go) 역시 컴파일 언어이지만, 컴파일러가 소스 코드를 자체를 패키지화했기 때문에, 프로그래밍 언어의 소스 코드를 곧바로 실행하는 인터프리터 언어와 같이 빠르게 작동할 수 있게 합니다. 특히 고(Go) 언어는 간결성을 보여주는데요. 이러한 간결성 덕분에 컴파일하는 데 있어서 접근성을 높여줍니다.

 

 

고(Go)는 명쾌하고 간결하다

고(Go)는 명쾌하고 간결합니다. 그 이유는 고(Go)가 C 언어와 비슷하지만, 다른 프로그래밍 언어인 C 언어의 키워드는 37개, C++ 언어는 84개인 것과 비교할 때 고(Go)의 키워드가 25개에 불과하기 때문입니다. 한 마디로 고(Go)의 키워드가 복잡하지 않기 때문에 명쾌하고 간결할 수밖에 없습니다. 고(Go)는 C 언어와 C++ 언어의 복잡한 요소를 최대한 줄이고 간결하게 만들어져 있다는 점, C 언어에 경험이 있다면 고(Go)를 배우고 만드는 것이 어렵지 않다는 것입니다. 

 

구글의 Go

고(Go)의 키워드

break, case, chan, const, continue, default, defer, else, fallthrough, for, func, go, goto, if, import, interface, map, package, range, return, select, struct, switch, type, var

그래서 고(Go)는 배우기 쉽고 사용하기에도 간단하다는 평가를 받습니다. 어떠한 프로젝트에 대해서 원개발자가 아닌 다른 개발자가 활용할 때도 복잡한 과정 없이 간편하게 풀어낼 수 있기 때문입니다. 특히 고(Go)는 시스템 프로그래밍에 적합하도록 설계되었는데, C와 구문이 비슷했기 때문에 개발자들에게 낯설게 다가오지 않았습니다. 고(Go)는 C와 비슷한 구문을 가지고 있어서 C 언어로 개발한 개발자라면 동시성과 함수형 프로그래밍 기능까지도 함께 수행할 수 있는 것입니다.

 

 

고(GO)는 빠르다.

고(GO)의 바이너리(0과 1로 이루어진 이분법으로 실행, 바이트로 저장되는 파일) 파일의 실행 속도는 빠릅니다. 한편에서는 C 언어의 바이너리와 비교했을 때는 다소 느리다는 평가를 받기도 하는데요. 하지만 C언어의 바이너리를 제외한 대다수 작업에서 고(Go)의 성능은 C와 비슷합니다. 그리고 자바스크립트, 파이썬, 루비 등 다른 프로그래밍 언어들에 비해 월등히 빠르니, ‘고(Go)는 빠르다’고 할 수 있는 것입니다.

 

 

고는 자유롭다

고(Go)의 프로그래밍 언어는 자유롭습니다. 다른 프로그래밍의 외부 C 라이브러리와 통신하거나 네이티브 시스템 호출을 수행하는 데 제약이 없기 때문입니다. 또 리눅스 함수, 컨트롤 그룹(cgroup), 네임스페이스 등과 컨테이너 기능을 구현하는데 편리합니다. 이처럼 기존 언어들과 함께 설계할 수 있다는 점, 이것이 바로 고(Go)가 자유롭다 하는 것입니다.

 

 

고(Go)는 작게 설계된 언어이다

고(Go)는 프로그램을 실행하는 데 있어 시간을 절약하기 위해 만들어진 언어로, 작게 설계된 언어라고 할 수 있습니다. 그런데 이 점이 고(Go)가 안고 있는 몇몇 문제점의 요인이기도 합니다. 그 이유는 작게 설계하기 위해서 일부 기능을 생략할 수밖에 없었기 때문입니다. 그래서 다른 언어에서는 일반적으로 쓰이는 기능들이 고(Go)에는 없기 때문에 번거로울 때가 종종 있습니다. 예를 들면 고(Go)에는 개발자들이 자주 사용하는 제네릭(Generics, 함수가 많은 유형의 변수를 받아주는 기능) 기능이 없기 때문에 제네릭 기능을 쓰려면 우회하는 방법을 사용해야 합니다. 또 고(Go)는 커널 또는 장치 드라이버, 임베디드 시스템 등을 만들 때 런타임과 가비지 수집기(GC) 모두 기반 OS에 의존해야 한다는 점이 있습니다. 많은 개발자들이 이러한 개선 사항에 대해서 말하고 있는데요. 고(Go)의 개발자들 역시 이러한 점을 고려해 여러 가지 기능들이 추가될 가능성이 높다고 합니다.

 

지금까지 프로그래밍 언어인 고(Go) 언어가 개발된 과정, 그리고 고(Go)의 장단점은 무엇인지 등을 살펴보았습니다. 일반적으로 개발자들이 고(Go)를 이용하는 분야는 웹 개발, 데이터베이스, 네트워크 프로그래밍 등에 활용하고 있습니다. 그리고 앞으로 추가 기능도 업데이트 될 것으로 보입니다. 이러한 원동력은 고(Go)는 C 언어나 C++ 언어 등 기존 시스템에 대한 액세스를 희생할 필요가 없기 때문입니다. 우리가 커뮤니케이션하는 것처럼 컴퓨터의 운영체제도 상호운영을 하며, 호환이 자유롭기 때문에 개발자들이 쉽게 이용할 수 있는 것입니다. 이것이 바로 고(Go)이며, 고(Go)의 인기는 당분간 계속해서 고(Go) 할 것으로 예측됩니다.

IT 모니카

온라인 플랫폼 안에서 IT의 무한한 정보를 글로 표현하고 소통하며 온택트 시대를 살아가는 글쟁이.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.