golang을 배우는 자세에 대하여

Roeniss Moon·2020년 11월 30일
1

golang은 병렬처리에 대단히 강한 자부심이 있는 언어지만, goroutine을 적극적으로 활용해야겠다! 는 마인드로 출발하면 고랭과 친해지기가 너무 어려운 것 같다. 왜냐하면,

  • 기본적으로 문법도 낯설다 : C 인듯 C 같지않은 C 비스끄므리한 언어다.

  • 동시성을 극도로 활용하는 토이 프로젝트가 많지 않다 : 그런 주제는 떠올리기도 어렵고, 구현은 더 어렵다. 물론 대부분의 라이브러리에 고루틴이 많이 녹아들어 있겠지만, 직접 "활용"하지 않을 것이라면 리버싱에 큰 동기부여가 안 될 듯 싶다.

  • 일상 속에서 접하기가 극도로 어렵다 : ...

따라서, 다음과 같은 마음가짐으로 고랭을 만져보는게 좋을 것 같다. 왜 고랭을 가지고 노느냐 라고 묻는다면,

  • Golang의 interface로 소통(을 권장)한다는 점에서 java와 유사하지만, interface가 Object가 아닌 feature를 다룬다는 점에서 특이하다 : interface를 이용한 메서드 활용은 채널을 이용한 커뮤니케이션보다 한 단계 쉽다는 생각이다. 이러한 점은 go만의 독특한 면을 보여주면서, 동시성까지 가지 않아도 자주 쓸 일이 생긴다.

  • Golang은 빠르고 심플하다 : 개인적으로, 내가 체감하는 (입문자 수준의) go는 'C같은 퍼포먼스의 유사 python' 정도이다. 포인터를 엉성하게 쓰더라도, 결과를 빠르게 보여준다. 그런데 사실 작은 프로젝트에서는 그렇게 유의미한 차이가 없긴 하다

  • Golang은 힙하다 : 뭔가 go를 쓴 프로젝트들은 young하고 fun하고 sexy하면서 geek한 느낌을 준다 : 깃헙에서 내가 만난 많은 go 기반 프로젝트들은 js나 python으로 짰어도 비슷한 퍼포먼스와 작업속도가 나올 것 같은 것들 뿐이었다.

...

얘기를 어떻게 전개해야 될지 잘 모르겠어서 그냥 결론만 말하련다.

즉, 마치 프로그래밍 언어를 생전 처음 대하는 사람처럼 고를 대하면 부담이 한결 적어진다는 것이다. 이걸 어떻게 해야 'go스럽게' '좋은 퍼포먼스로' 구현할 수 있을까 - 라는 고민 이전에, go라는 언어를 가지고 재밌게 (종류에 무관하게) 이것저것 가지고 노는 것부터 출발해야 한다는 것이다.

이렇게 말만 번지르르한 것도 좀 찝찝해서, 조만간 여기 아래에 go로 만든 (그러나 go가 아니어도 됐을 법한!) 무언가를 추가할 것이다. (ps. go-spinner)

profile
기능이 아니라 버그예요

0개의 댓글