[GOLANG] 01. GO 언어의 빠른 학습을 위한 나만의 로드맵
01. GOLANG을 학습하는 이유
학습하는 이유는 간단하다. Lattigo를 더 잘 다룰 수 있기 위함이다.
C++이라는 typcial하고 general한 HW 친화적인, 빠르고 강력한, 고정밀의 언어를 두고, 왜 Lattigo라는 라이브러리가 등장하였을까.
GOLANG도 그만큼 FHE 생태계 내에서 강력한 언어로써 자리잡을 수 있다는 것을 의미한다고 생각한다. GOLANG만의 특징이 해당 생태계 내에서 경쟁력있는 결과를 만들어내기 때문일 것이라고 생각했다.
그래서 GOLANG에 대해 학습할 필요를 느꼈다.
전형적인 Spring 기반의 백엔드 서버 구축은 이제 레드오션이다.
잘 하는 경력있는 개발자들에게 맡기자. AI의 확산은 더욱 경쟁력있는 개발자를 원한다. 단순히 FHE만을 위함은 아니다. Docker, Kubernetes 등 컨테이너 기반의 Devops 도구들이 전부 GOLANG 중심으로 쓰여졌으며, 빅데이터를 활용하는 분산 시스템 환경에서의 성능 최적화는 대부분 GOLANG 기반이다. 즉, Cloud Native Computing Foundation 프로젝트의 상당수가 Go 중심이기에, 백엔드 클라우드까지 컨트롤하기 위해선 단순한 Python이나 Java 스택으로써는 무리가 있다.
02. 학습 진행 방식 및 주요 키워드 정리
- 여러 GOLANG 코드들을 살펴본 결과, 문법은 기존 언어와 크게 다르지 않았다.
문법은 가볍게 훑고 넘어갈 것이다.
하지만, struct(구조체), slice, map 등의 내부 동작 방식 및 Go의 포인터 개념은 중점적으로 다룰 예정이다. - GOLANG만의 인터페이스와 error handling을 중점적으로 다룰 것이고, Go의 GC(Garbage Collection)과 메모리 관리 방법 그리고 Escape Analysis를 통해 GC 압력 핸들링 방식을 다룰 것이다.
- 가장 많이 알려져있는 Goroutine과 Channel, Context 등에 대해 살펴볼 것이다. 이는 동시성 프로그래밍에 주로 쓰이며, 경량 스레드이고, Golang을 사용하는 주된 이유 중 하나로 꼽힌다.
- 간단한 웹서버 제작, pprof를 통한 성능 프로파일링 방법 등 주된 Concept 이외의 개념과 개발 철학 등에 대해서 다룰 예정이다.
This post is licensed under CC BY 4.0 by the author.