Go란?
구글에서 만든 프로그래밍언어로 전반적으로 C언어에 가까운 객체 지향 언어다.
Go의 장점
- 실행 속도가 빠르다.
- Garbage collection이 있다.
- 간단한 객체
- 동시성과 효율적인 동시성 구현이 내장되어 있다.
Compiled vs Interpreted
Compilation
코드를 실행하기 전에 compiler가 instruction들을 기계어로 번역하는 것. 컴파일 된 코드는 빠르다.
ex) C, C++, Java(부분적으로)
Interpretation
코드가 실행되는 중에 interpreter가 instruction들을 번역하는 것. 인터프리터를 사용한 코드는 느리지만 코딩이 더 쉬워진다. 또한 메모리 관리를 자동적으로 해서 사용하지 않는 변수와 기타 데이터를 없앨 수 있다.
ex) Python, Java(부분적으로)
Go는 컴파일 언어이지만 인터프리터 언어의 장점을 갖고 있다. (가비지 컬렉션)
객체
Go는 객체 지향 언어이지만 기존의 객체 지향 언어와 조금 다르다.
Go는 class를 사용하지 않는다. 대신에 C언어처럼 struct를 사용하고 상속, 생성자, 제네릭이 없다.
이렇게 하면 코딩이 더 쉬워질 뿐만 아니라 실행 속도가 빨라진다.
동시성
동시성은 여러 작업을 동시에 관리하는 것이다.
Go는 많은 동시성 프리미티브가 내장되어 있고 효율적으로 구현되어 있어서 동시 프로그래밍을 할 때 유리하다.
Goroutine은 기본적으로 쓰레드와 같은 동시 작업을 나타낸다.
Channel은 동시 작업 간의 동시 통신을 위해 사용된다.
Select는 동기화를 활성화하는 데 사용된다.