Programming/golang2022. 9. 28. 17:16

golang이 어쩔수 없이 쓰긴 하지만 마음에 들진 않는다 정도가 현재까지 결론

 

장점.

1. 멀티플랫폼 지원.

> 리눅스건 맥이건 윈도우건 GOOS= 라는 선언 하나 주면 아주 간단하게 크로스빌드가 된다.

2. 정적 바이너리 생성(기본 값)

> 양날의 검. 물론 hello world 하나 출력하는데 2MB 정도 먹고 몇가지 모듈들을 불러오면 기하급수적으로 늘지만

> 별다른 의존성 라이브러리 없이 독립적으로 빌드해서 실행가능한 단일 파일 하나만 복사하면 되는 건

> 임베디드에서 관리의 편의성을 제공함

3. 컴파일 언어

> node.js나 python과 같이 메모리 관리 불가능(?)한 실행환경이 아닌 컴파일 된 바이너리가 실행되는 것.

> 상업 프로그램, 배포환경, 임베디드라는 조건에서는 오히려 장점

4. net/http 등과 같은 고수준 라이브러리 제공

> c로도 curl 을 쓰면 REST 구현은 가능하지만 기본 라이브러리로 푸짐하게 제공하는 golang이 편하긴 하다.

 

단점.

1. 고정된 문법. 왜 내 마음대로 괄호 위치를 못 하냐고!!!

> c로는 warning 뜰만한 것도 죄다 error로 중단되고, 사용하지 않는 변수 있다고 빌드 에러

> 게다가 if () { 식으로 마치 python 처럼 indent가 문법에서 강요되는 느낌이라 드럽게 거부감이 가시질 않음)

2. IDE 가 약함. vi로 하려면 어우.. 다 외우지 않으면 더 귀찮..

> 방대한 라이브러리를 제공하는 신형 언어들의 득과 실이긴 하지만.. vscode에서 잘 지원되려나

> 외부 라이브러리 등에 대한 자동 완성을 얼마나 지원하는지 테스트는 해봐야 할 듯.

3. npm이나 pip 같은 중앙관리 되는 라이브러리 저장소 부재

> 언어의 발달이 빠른 시기라 라이브러리 버전 문제와 엮여 구버전 소스 빌드가 쉽지 않음

> 게다가 npm 처럼 얼마나 인기있고 숙성된 라이브러리인지 간접적으로 예측할 지표가 없어서

> 매번 검색해서 누군가의 소스를 써야 하는 불안함을 지울 수 없음

4. 문서 부족. tour of go 정도로는 어림도 없다.

> effective go 정도는 봐야 하지 않나 싶은데, 그런 문서를 찾는 것 자체가 어떻게 보면 접근성 측면에서 최악.

> 꼰대가 되서(?!) html 보단 pdf로 된 걸 받고 싶은데 그런 것도 없고

> 어떤 언어를 하나 배우는데 있어서 학습 커브 상승에 상당히 일조하는 부족한 문서

5. 자동화.

> 양면의 날이긴 하지만 자동화로 인해서 자동화 돌리기 위한 구조를 알아야 하는 문제가 발생

> 부족한 문서와 음의 시너지를 일으킴. go build . 으로 빌드는 가능하지만 도대체 어떻게 묶일지

> 빌드 하려면 기본적으로 패키지 이해를 해야 한다. 근데 문서들도 자세한 설명은 없다는게 함정.

 

 

 

결론

특정 환경에서 어쩔수 없는 선택지 라는 수준의 언어. 

좋다 나쁘다를 떠나서 내 취향은 아니지만 웹 서비스를 구동하기에는 임베디드에서 이 만한 녀석은 없다는게 슬프다.

 

[링크 : https://covenant.tistory.com/204]

[링크 : https://simplear.tistory.com/8]

'Programming > golang' 카테고리의 다른 글

cgo  (0) 2022.10.04
golang unsafe package  (0) 2022.10.01
golang json/encoding marshal() unmarshal()  (0) 2022.09.28
golang mac address 얻기  (0) 2022.09.28
golang method  (0) 2022.09.27
Posted by 구차니