go(3)
-
20200715 Asynchronous and Parellel in Golang
요즘 python 의 async 개념을 보면서 별 생각 없었던 golang의 goroutine에 대해 다시 한번 더 생각하게 될 계기를 가질 수 있었다. goroutine이 병렬적 연산인 줄 알았지만 아니었던 것...! 근데 왜 이때까지 병렬인줄 알았나..?!!?!?!? 그럼 내가 여태까지 본 자료들은 무엇인가..?!?! 알고보니 엄청 간단한 것들이었다. 일단 asynchronous한 것과 parellel한 것의 차이점을 알아야 한다. 이건 내 방식대로 설명해보겠다. 다음과 같은 작업을 사람이 한다고 생각하자. 작업1 'golang'을 구글에서 검색 2초 대기 'python'을 구글에서 검색 2초 대기 끝 작업2 'golang'을 종이에 쓰기 2초 대기 'python'을 종이에 쓰기 2초 대기 끝 Syn..
2020.07.15 -
20200706 go compiler && go viper
1. How to compile go https://getstream.io/blog/how-a-go-program-compiles-down-to-machine-code/참조... go compiler에는 세가지의 phase가 있다고 한다: 1.Scanner - code를 toke단위로 parse해주는 역할 2.Parser - token들을 Abstract Syntax Tree로 바꿔주는 역할 3.Code Generation - Abstract Syntax Tree를 machine code로 바꾸는 역할 놀랍게도 이를 구현해주는 package들이 있다고 한다. (go/scanner, go/parser, go/token, go/ast) -> 이를 활용하면 go code를 활용하여 machine code로 변..
2020.07.07 -
20200513 Golang 기초
다른 문법 같은 건 너무 기본적이고, python에서는 비슷한걸 써본적 없는 개념인 go routine에 대해 기록하겠다. go routine은 그 안의 함수를 실행하며 가상 스레드를 여러 개 생성하여 각각 함수가 실행된다. 그러면서 동시에 main에서는 go를 만난 순간 그 부분은 뛰어넘고 나머지 부분을 실행하게 된다. 즉 main과 go 각각에서 따로 실행이 되게 되는 것이다. 다음과 같은 예를 들어보자. func main() { for i:=0; i
2020.05.13