안녕하세요, 소마 블로그 아웃 여러분!
긴 장마철을 보내며 건강히 잘 지내셨나요?
지난 Zig언어 소개에 이어 이번에는
Go언어에 대해 소개하는 시간을 가져보려고 합니다~
Go언어는 Go language, 줄여서 Golang이라고 많이 불리는데요.
아무래도 지난 Zig언어보다는 이번 Go를 아시는 분이 더 많지 않을까 싶습니다.
Go언어는 과연 어떤 배경으로 만들어졌는지,
과연 한 번쯤 써 볼 언어인지 살펴보러 가봅시다!
Go언어는 C++에 대한 불만으로부터 탄생했다는 이야기가 있는데요.
실제 인터뷰에서 Go 언어 창시 당시를 이야기해달라고 했을 때,
케네스 톰슨은 ‘우리 셋은 C++을 싫어하기로 했습니다.’라고 말하기도 했다죠.
C++은 현재도 객체지향 언어 중 완성도 높은 언어로 손꼽히지만,
그럼에도 불구하고 배우기 어렵고 복잡하다는 단점이 있죠.
서버 하나를 구축하는 데에도 품이 너무 크게 든다는 겁니다.
로버트 그리즈머, 케네스 톰슨, 롭 파이크는 2009년, 드디어 Go언어를 선보이게 됩니다.
C++처럼 객체 지향 언어이면서도 간단하고 안전성과 가독성을 모두 챙긴 언어였습니다.
Go언어의 장점은 일단,
인터프리터가 아닌 컴파일러를 사용하는 언어라는 점입니다.
인터프리터는 소스 코드를 한 줄 한 줄 읽어들여 해석하고 즉시 실행합니다.
반면 컴파일러는 소스 코드를 전부 가져와 해석하고 기계어 파일로 만들어버립니다.
컴파일 시간이 소요되기는 하지만, 실행 속도가 빠르다는 장점이 있습니다.
또한 Go언어는 문법이 단순하여서 설계 자체가 간단한 편입니다.
다른 언어에 비해 속도 면에서 장점을 가져갑니다.
또한, Goroutine이라는 경량 스레드를 제공하고
이를 통해 병렬 처리를 수월하게 할 수 있다는 장점이 있습니다.
사용하는 방법도 본인이 사용하고 싶은 함수 앞에
go만 붙여주면 끝입니다!
쉽죠?
마지막 장점은 키워드 개수입니다.
Go 언어에는 키워드가 단 25개밖에 되지 않는다고 해요.
잘 보면 우리가 알고 있는 var, const, if, for, break, return, goto 등
정말 필요한 최소한의 키워드는 다 존재하는 걸 볼 수 있어요.
덕분에 Go언어를 접해 본 적 없는 초심자도 쉽게 적응할 수 있다는 장점이 있어요.
Go언어에게도 단점이 있는데요.
고성능, 혹은 저수준의 연산을 수행하려고 하면
다른 저수준 프로그래밍을 위한 언어에 비해 성능이 떨어져요.
특히 가비지 컬렉션을 제공하기 때문에 오버헤드가 발생할 수 있고,
수동 메모리 관리를 금지했기 때문에
세밀한 메모리 관리가 어려워요.
수동 메모리 관리의 경우,
개발자가 예기치 못한 오류에 빠지게 하는
주요 원인이기도 할 정도로 어려워요.
그래서 최적화가 중요한 작업이 아니면
수동으로 메모리를 관리하지 못하게 하는 게 낫다는 의견이 많아요.
그리고 Go언어도 2009년에 나와
정식 출시된 지는 15년도 안 된 언어이기 때문에
언어 생태계가 그리 넓지 않아요.
표준 라이브러리는 강력하다고 평가받지만
외부 라이브러리가 약한 편이에요.
Go언어의 간단한 문법에 대해 살펴볼게요.
print함수는 C언어와 파이썬을 합쳐 놓은 듯한 모양이죠?
반면 변수 선언은 완전히 다른 모양새를 갖고 있어요.
특히 자료형을 명시적으로 선언하지 않아도 알아서 추론한다는 점이 특이해요.
만약 여러분이 Go언어를 써보고 싶다면,
Visual Studio Code나 GoLand를 추천해 드려요!
VS Code는 익스텐션을 통해 개발을 진행할 수 있고
무료라는 장점이 있지만 그만큼 버벅일 때도 있고 편의 기능이 많지 않아요.
GoLand의 경우 유료이지만,
학생 계정이라면 무료로 사용할 수 있다는 장점이 있어요.
유료인 만큼 편의 기능이 많이 제공되고,
Jetbrain사의 IntelliJ, PyCharm 등과 유사한 UI를 갖고 있어요.
학생 인증이 가능한 신분이라면 GoLand를 사용해보는 게 어떨까요?
지금까지 Go언어에 대해 알아보았습니다!
무더운 여름, 주말에는 Go언어 개발하며
미니 피서를 즐겨보심이 어떨까요?
감사합니다!