2025-11-08
1일 1아티클
ITWORLD
Go
특징
- 빠른 정적 타입 컴파일 언어, 동적 타입 인터프리터 언어처럼 체감
- 작고 단순한 언어
장점
- 다재다능함, 편리함
- 동시성, 스레드 유사 기능 내장
- 가비지 컬렉터 등 자동 메모리 관리 기능 제공
- 속도
- 대부분의 경우 C와 대등한 수준, JS/Pyrhon/Ruby 등 언어보다 매우 빠른 수준
- 이식성 및 상호운용성
- 기본 외부 종속성 없이 독립적 실행
- 외부 C 라이브러리와의 통신, 네이티브 시스템 호출 가능
- Docker에서 Go는 저수준 리눅스 기능, cgroups, 네임스페이스와 상호작용하여 컨테이너 구현
- 폭넓은 지원
- Go 툴체인은 Linux, MacOS, Window binary, Docker Container 형태로 무료 제공
사례
- 클라우드 네이티브 개발 : 도커, 쿠버네티스, 이스티오 등의 프로젝트 구축 기반
- 분산 네트워크 서비스
- 네트워킹, 분산 함수, 클라우드 서비스 등 동시성 작업에 부합
- 유틸리티, 독립형 툴
- 빠른 실행 및 재배포를 위한 패키징의 용이함
한계
- 많은 언어 기능 생략
- ex. 매크로 기능 X
- 제네릭 함수도 오랫동안 없다가 2022년에 도입
- 거대한 바이너리
- 기본적으로 정적 컴파일됨, 즉 런타임에 필요한 모든 요소가 바이너리 이미지에 포함
- 이는 빌드 및 배포 프로세스 간소화라는 장점 대신 기본적인 이미지 크기 문제라는 단점도 존재
- 가비지 컬렉터 리소스 소비
- 설계적으로 고의 가비지 수집 방식, 수동 메모리 관리 미제공
- 메모리 부하 처리 (지연시간) 미숙
- 표준 GUI 툴킷 부재
- 시스템 프로그래밍에는 부적합
- 커널, 디바이스 드라이버, 임베디드 등 저수준 시스템 설계용 언어가 아님
- Go 런타임 및 가비지 컬렉터는 기반 운영체제에 의존
오늘 배운 것
- 정보처리기사 실기 응시