본문 바로가기

Language/GoLang

1.About GoLang

1. GoLang(Go언어)

 - 2009년 11월 구글에서 발표한 프로그래밍 언어

 - 시스템 프로그래밍을 염두에두고 설계된 범용 언어

 

 - GoLang 공식 페이지에서는 Go언어를 아래와 같이 소개하고 있다.

"Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language."

 

 - 내용을 요약하면 "Go는 표현적이고 간결하며 효율적이다. 동시성 메커니즘을 통해 멀티 코어 및 네트워크를 활용할 수 있는 프로그램을 쉽게 작성할 수 있고, 유연한 모듈식 프로그램을 구성할 수 있다. Go는 머신 코드로 빠르게 컴파일 되는, 정적으로 형식화된 컴파일 언이이다."

 

2. GoLang Compiler

 - Go언어는 2015년부터 Go로 작성된 컴파일러 사용

  * 그 전까지는 C언어로 작성된 컴파일러 사용

 

3. 장점

 1) 빠른 컴파일 속도

    - 컴파일러의 속도가 빨라 인터프리터 언어처럼 사용 가능

     * 물론 Python 등의 인터프리터 언어보다는 기계어 번역 시 반응이 느림

 2) 비동기 메커니즘

    - GoRoutine(고루틴)이라는 비동기 메커니즘 제공

    - 병렬로 동작하며 메시지 채털을 통해 값을 주고받음

    * 동기화 문제는 프로그래머가 다뤄야함 : 동기화를 무시할 경우 프로그램이 비정상 종료될 수 있음

       * ex) 부모 루팅이 자식 루틴보다 먼저 종료될 경우 자식 루틴은 메모리에서 강제로 제거됨

    - GoRoutine은 멀티스레드 메커니증 : 자체 스케줄러에 의해 관리되는 경량 스레드

       * CPU 코어수와 관계없이 성능에 문제되지 않음

 3) 단순하고 간결한 언어 : 입문이 쉬움

 

4. 단점

 1) 타깃에 맞춰 컴파일

    - 바이트코드 생성하는 언어가 아니므로 타깃 머신에 따라 컴파일 필요