golang 좋다는 소리만 여러번 듣다가 며칠전에 처음 시작해서 처음으로 작은 프로젝트를 해봤다.
익숙하면서 익숙하지 않은 언어다.
입문하고자 하는 분들을 위해 며칠동안 느낀점을 적자면,,
장점
- 비동기 실행이 너무 편하다.(고루틴)
- 어디서 봤던 표현을 인용하자면 굉장히 마법같다.
- 실행하고자 하는 함수 앞에 'go' 만 붙이면 가벼운 쓰레드로 해당 내용이 생성되어 실행된다.
- 거기다 성능도 뛰어나다.
- 컴파일 언어라서 바이너리로 나오는게 편하다.
- php의 강점 중 하나인 '설정의 간편함'이 여기서도 적용되는거같다.
- 서버에 워커를 올리던 웹서버를 올리던 그냥 해당 플랫폼으로 크로스 컴파일 해준 뒤에, ftp나 scp로 올려도 문제 없이 잘 돈다.
단점
- 모듈 의존성 관리 도구가 파편화 되어있다.
- vgo, go mod, godep, dep 까지 유명한것만 벌써 4개다.
- 요즘은 go mod로 통일되고 있다고 하지만 옛날에 작성된 코드들은 많이 파편화 되어있다.
- 파이썬처럼 언어 자체에서 많은 기능을 제공하는 느낌은 아니다.
- 당장 list에서 검색이나 어떤 원소가 들어있는지 확인하는 함수가 없다. 코드작성이 어려운건 아니지만 기능이 없는게 있는것보단 별로니까.
workspace를 지정해서 그 안에서만 코드를 짜야 한다.
- 파이썬 쓸 때 처럼 아무대나 중구난방으로 프로젝트를 만들면 안된다. 가능은 한데, 모듈 의존성 관리가 안된다.
- 아직 커뮤니티가 작은거같다.
- 파이썬이 크게 Django와 Flask로 나뉘는데 반해 go는 아직도 중구난방이라고 한다.
- 거기다가 그 각각 프레임워크의 커뮤니티도 또 작다.
- 비슷한 이유로 파이썬의 pip나 노드의 npm처럼 모듈이 많지가 않다.
전체적인 감상은 다음과 같다.
아직 채널이나 동기화같은 고루틴 패러다임을 잘 활용하지 못하고 있는데, 이것만 적응되면 뛰어난 성능의 코드를 매우 쉽게 짤 수 있을것같다.
C의 언어적 요소위에
자바 같은 메모리관리(가비지 콜렉터) + 패키지 관리를 얹고
컴파일이라는 점이 얹어진 느낌?
되게 괜찮은 언어 같다. 파이썬은 간단히 프로젝트 할 때, golang은 성능이 필요하거나 안정적이게 컴파일 된 바이너리가 필요할 때, 혹은 파이썬 하다가 정적 타입이 그리울때 하면 좋을것같다는 생각이 들었다.
'Computer Science' 카테고리의 다른 글
프로토콜 버퍼(protocol buffer)란? (0) | 2020.12.14 |
---|---|
SW 마에스트로 11기 후기 (3) | 2020.11.29 |
선린인터넷고등학교 정보보호과 동아리 지원시스템 개발기 (1) | 2020.06.07 |
SW 마에스트로 11기 지원기 (0) | 2020.05.16 |
폭력적인 동생을 혼내주자! - Mild Controller 개발 일지(?) (1) | 2020.02.08 |