소개
이 친구는 Go 언어의 마스코트 고퍼이다. 너무 너무 귀엽다.
내가 이 친구때문에 고랭에 관심을 가졌다고 할 수 있다.
또 아직 시작한지 얼마 되지 않았지만, 언어에 대해 배울수록 재미있고 매력이 느껴진다.
Golang이라고도 불리는 Go 프로그래밍 언어는 구글에서 개발한 언어이다.
2009년부터 개발을 시작했다고 하는데 비교적 정말 최근에 시작된 언어인 것 같다. 그래서인지 주변 친구들 중 아직 GoLang을 본격적으로 공부하는 사람을 보지 못했다. 한글 자료나 라이브러리도 풍부하지는 않은 것 같다. 하지만 레어하기도 하고 앞으로 많이 쓰일 것이라는 기대감에 더욱 GoLang이 좋아진다. (Android와 IOS 개발도 가능해질 것이라고 하니?)
Golang은 전통적인 컴파일, 링크 모델을 따르는 범용 프로그래밍 언어이다. 컴파일 속도가 매우 빠르고 C 계열의 언어와 인터프리터의 중간정도에 위치하고 있다. 특히 병렬 프로그래밍으로 서비스의 속도를 높이기 위해 사용된다. 웹 프로그래밍과 게임에서 활용되는 것으로 알고 있다.
시스템 프로그래밍을 위해 개발되었고, C++, Java, Python의 장점들을 뽑아 만들었다.
C++과 같이 Statically Typed의 언어이고, Java와 같이 Garbage Collection 기능을 가지고 있다.
Go는 인터페이스를 제공한다는 측면에서 객체 지향적이라고 할 수 있지만, 상속관계는 없다.
배우면서 느끼는 것은 Python과 약간 비슷하면서도 더 깔끔한 느낌이다? (제 개인적인 생각입니다) 그래서 진입장벽이 낮은 것 같은 느낌!
또 중요한 특징 중 하나가 Communicating Sequential Processes(CSP) 스타일의 Concurrent 프로그래밍을 지원한다는 것이다.
Communicating Sequential Processes 순차적 프로세스 통신
병행 시스템에서 상호작용의 패턴을 기술하기 위해 고안된 형식 언어이다. 프로세스 대수 혹은 프로세스 계산이라 불리는 병행성 관련 수학 논리의 한 종류이다.
Golang에서 동시성을 설명할 때 사용되는 문구는 다음과 같다.
Do not communicate by sharing memory; instead, share memory by communicating.
커뮤니케이션 하는데에 메모리를 공유하지 말고, 커뮤니케이션으로 메모리를 공유하자!?!
동시성 프로그래밍은 병렬 프로그래밍과는 다르다고 한다.
병렬 프로그래밍은 동시에 같이 일어나는 멀티 프로세싱이나 멀티쓰레딩 같은 것이다.
생각보다 어려운 개념인 것 같다... 나중에 와서 다시 정리해야겠다..
https://medium.com/@niteshagarwal_/communicating-sequential-processes-golang-a3d6d5d4b25e
출처:
[HAMA 블로그] https://hamait.tistory.com/934
'Golang' 카테고리의 다른 글
[Golang 시작하기 5] 포인터 (0) | 2020.03.20 |
---|---|
[GoLang 시작하기 4] for, range, if, switch (0) | 2020.03.18 |
[GoLang 시작하기 3] Naked Return과 Defer (0) | 2020.03.17 |
[GoLang 시작하기 2] 함수의 기본 형태, 변수와 상수 (0) | 2020.03.15 |
[GoLang 시작하기] Go Download 및 프로젝트 실행하기 (0) | 2020.03.15 |