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 런타임 및 가비지 컬렉터는 기반 운영체제에 의존

오늘 배운 것

  1. 정보처리기사 실기 응시

내일 할 일

참고자료

results matching ""

    No results matching ""