목차
- Go 소개
- Go 용도
- Go 사용 이유
- Go / Python / C++ 비교
- Go 학습에 필요한 지식
Go 소개
- 고성능 애플리케이션 제작에 사용 가능. (예: Docker, Git)
- 빠르고 정적 타입의 컴파일 된 언어. (동적 타입의 해석된 언어처럼 느껴질 정도임)
- 2007년 Robert Griesemer, Rob Pike, Ken Thompson에 의해 Google에서 개발됨.
- 구문은 C++과 유사.
Go 용도
- 웹 개발(서버 측)
- 네트워크 기반 프로그램 개발
- 크로스 플랫폼 엔터프라이즈 애플리케이션 개발
- 클라우드 네이티브 개발
Go 사용 이유
- 재밌고 배우기 쉬움.
- 실행 및 컴파일 빠름.
- 동시성 지원.
- 메모리 관리 기능 보유
- 다양한 플랫폼(Windows, Mac, Linux, Raspberry Pi 등)에서 작동.
Go / Python / C++ 비교
Go |
Python |
C++ |
정적 typed |
동적 typed |
정적 typed |
빠른 run time |
느린 run time |
빠른 run time |
Compiled |
Interpreted |
Compiled |
빠른 compile time |
Interpreted |
느린 compile time |
goroutines과 channel 통해 동시성 지원 |
내장된 동시성 메커니즘 존재 X |
threads 통해 동시성 지원 |
자동 garbage 수집 O |
자동 garbage 수집 O |
자동 garbage 수집 X |
classes/objects 지원 X |
classes/objects 지원 O |
classes/object 지원 O |
inheritance 지원 X |
inheritance 지원 O |
inheritance 지원 O |
PS. 용어 해설
Run time (런 타임 = 실행 시간)
컴퓨터 과학에서 컴퓨터 프로그램이 실행되고 있는 동안의 동작
Compile time (컴파일 시간 = 변환 시간)
: 코드를 실행 가능한 프로그램으로 변환하는 데 걸리는 시간
Concurrencty (동시성)
: 최종 결과에 영향 안 주면서 여러 일을 순서에 안 맞게 수행하거나 동시에 수행하는 것.
static (정적) typed
: 컴파일 시간에 변수 형식을 알고 있음 의미.
Garbage Collection (쓰레기 수집)
메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능.
Inheritance (상속)
기존 클래스에 기능 추가하거나 재정의해 새로운 클래스를 정의하는 것을 의미
Go 학습에 필요한 지식
사전 프로그래핑 지식 불필요.
단, 알면 훨신 이해하기 편함.