ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Go 언어(Golang)
    개발 2025. 8. 7. 19:26

    Go 언어란?

    • C언어의 모체가 된 B언어와 유닉스의 개발자인 켄 톰슨이 설계에 참여해 구글이 개발한 프로그래밍 언어
    • 빠른 성능, 안정성, 편의성, 쉬운 프로그래밍을 목표로 개발된 범용 프로그래밍 언어

    Go 언어의 특징

    • 정적 타입, 강 타입
    • 컴파일 언어
    • 가비지 컬렉션
    • 병행성(Concurrency)
    • 멀티코어 환경 지원
    • 모듈화 및 패키지 시스템
    • 빠른 컴파일 속도

    Go 언어의 장점

    1. 네이티브 바이너리형식
      • 가상 머신 위에서 돌아가는 Java, C#에 비해 성능이 좋음
    2. 컴파일 시간
      • C, C++ 는 헤더파일이 많아서 컴파일 속도가 느림, 헤더파일 의존 관계도 복잡
      • Go는 헤더파일이 없음, 소스 코드를 패키지화하여 변경된 부분만 컴파일하므로 속도가 빠름, 문법적으로도 복잡한 요소를 최대한 줄여 컴파일 속도에 유리하게 설계
      • 언어적 문법 간결, 컴파일 속도가 빠름 생산성 증대
      • 간결한 컴파일 명령어로 인해 C나 C++처럼 make 파일을 복잡하게 만들 필요가 없음
      • 컴파일 시간을 단축시킬 수 있으며 속도도 빠름
      • 컴파일 시간
    3. 가비지 컬렉션
      • Java나 C#처럼 메모리 관리를 해주는 가비지 컬렉션이 존재
      • Java나 C#처럼 가상머신으로부터 제공되는것이 아니므로 성능적 우위를 가져올 수 있음
      • C나 C++ 처럼 별도의 메모리 관리가 필요 없고 가비지 컬렉션으로 인해 생산성이 높아짐
      • C, C++의 빠른 성능 + Java, C#의 빠른 생산성의 장점을 동시에 가져올 수 있음
    4. 고루틴
      • 쓰레드 위에서 돌아가는 경량 쓰레드같은 개념
      • 쓰레드보다 적은 리소스(고루틴: 2KB, 쓰레드: 1MB) 약 500배 차이)
      • 멀티쓰레드 방식에 비해 리소스 부담을 대폭 줄여줌
    5. 활용 범위
      • 메모리 관리에 시간을 쏟기 보다는 로직에 집중하는 애플리케이션 개발에 적합, 생산성 위주
      • 메모리 관리가 철저히 요구되는 시스템 라이브러리 개발에는 적합하지 않음
      • 메모리관리가 다소 느슨해도되고 규모가 크고 복잡하며 유지보수가 번번한 곳에서 편리하게 사용할 수 있음

    Go 언어 채택 사유

    • 언어적 문법이 간결 -> 언어 접근성, 생산성 유리
    • 가비지 컬렉션이 제공 별도 메모리 관리 불필요 -> 생산성 유리
    • Java, C#과 같은 가상머신을 필요로 하지 않기때문에 C, C++에 가까운 성능적 퍼포먼스를 가져올 수 있음 -> 성능 유리
    • 컴파일 방법이 간단하고 속도도 빠름 -> 생산성 유리
    • 멀티코어 프로그래밍을 지원하므로 멀티코어 시스템에 유리(요즘 시스템은 대부분 멀티코어) -> 성능 유리
    • 고루틴이라고 하는 경량쓰레드(일반쓰레드 리소스의 1/500 수준)를 활용해서 다중 처리 시스템에 유리 -> 성능 유리
    • 기본 라이브러리가 다양하게 제공되고 외부 라이브러리도 보편화되어있어 구하기 쉬움 -> 생산성 유리

    결론

    • C, C++의 성능의 장점 + Java, C#의 생산성의 장점을 동시에 활용할 수 있음
    • 메모리 관리에 신경을 덜 쓰게 되므로 유지보수가 번번히 이루어지는 시스템에 적합(온라인 캐주얼 게임 서비스, 웹 서비스, 실시간 서비스 등)
    • 다중 처리 시스템에 유리하므로 서버에 적합
    • 메모리 관리가 철저히 요구되는 애플리케이션에는 적합하지 않음(예: 시스템 라이브러리, 드라이버 등)
    • 좋은 성능의 시스템으로 원활한 유지보수에 적합
    • 온라인 게임 서비스, 웹 서비스 등에 적합
    • 쉬운 문법으로 인해 진입장벽이 높지 않음
    • 범용적으로 쓰이고있는 클라우드 플랫폼인 Docker도 Go언어 기반으로 개발되었음
    • 활용 분야가 많아지고 있는 추세(블록체인)
    • 아직까지는 국내의 범용적인 언어들에 비해서는 개발자들이 많지 않음

    댓글

Designed by Tistory.