Golang

GoLang 소개

여니여니_ 2020. 3. 15. 03:00

소개

이 친구는 Go 언어의 마스코트 고퍼이다. 너무 너무 귀엽다.

내가 이 친구때문에 고랭에 관심을 가졌다고 할 수 있다.

또 아직 시작한지 얼마 되지 않았지만, 언어에 대해 배울수록 재미있고 매력이 느껴진다. 

 

Go의 마스코드 Gopher

 

 

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

 

Communicating Sequential Processes & Golang.

CSP is a formal language specification to enable concurrent systems to communicate with each other. CSP has been influential in the design…

medium.com

 

 

 

 

출처: 

[HAMA 블로그] https://hamait.tistory.com/934

 

고 언어에서의 동시성 모델

임백준님이 번역하신 "7가지 동시성 모델" 책에는 순차 프로세스 통신 (CSP) 이라는 내용이 있는데 Golang 에서 구현한 모델을 클로저언어로 래핑한 라이브러리를 이용해서 설명하고 있다. 역시 책에 나오는 내용..

hamait.tistory.com

http://golang.site/go/

 

예제로 배우는 Go 프로그래밍 - Go 변수와 상수

1. 변수 변수는 Go 키워드 var 를 사용하여 선언한다. var 키워드 뒤에 변수명을 적고, 그 뒤에 변수타입을 적는다. 예를 들어, 아래는 a 라는 정수(int) 변수를 선언한 것이다. var a int 변수 선언문에서 변수 초기값을 할당할 수도 있다. 즉, float32 타입의 변수 f 에 11.0 이라는 초기값을 할당하기 위해서는 아래와 같이 쓸 수 있다. var f float32 = 11. 일단 선언된 변수는 그 뒤의 문장에서 해당 타입의 값을

golang.site

https://kamang-it.tistory.com/entry/Go18%EA%B3%A0%EB%A3%A8%ED%8B%B4%EA%B3%BC-%EB%8F%99%EC%8B%9C%EC%84%B1-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%93%B0%EB%A0%88%EB%93%9C%EB%A5%BC-%EB%8C%80%EC%B2%B4%ED%95%9C%EB%8B%A4

 

[Go-18]고루틴과 동시성 프로그래밍(쓰레드를 대체한다!)

동시성 프로그래밍이란 여러가지 작업(태스크:task)가 동시에 처리되는 것을 의미한다. 병렬 프로그래밍이랑 비슷하긴한데 사실 같은 개념은 아니다. 사실 이를 진지하게 논의할 시간은 아닌것 같고 동시성(concur..

kamang-it.tistory.com