Search

Introduction

Subjects

1. Why Go?

1) Go Lang 등장 배경

대체적으로 멀티 코어 프로세서는 2005, 2006년부터 등장한 개념이며, 멀티 코어에 대한 Abstract 정립 이전에는 싱글 코어 프로세스로 처리했었다. 이 말인 즉, 대부분의 프로그래밍 언어들은 싱글 코어 프로세스에 적합한 언어였다는 것이다.
실제로 모든 프로그래밍 언어는 듀얼 코어 프로세서가 2006년에 등장했을 때, 두 코어를 모두 이용하는 것에 대해 네이티브와 같이 처리하지 못했었다.
Go Lang은 현대 추세에 맞게 멀티 코어 프로세싱에서 득을 볼 수 있도록 만들어진 언어이다. 즉, Parallel Computing (병렬 컴퓨팅)과 Concurrency Design Pattern (동시성에 대한 디자인 패턴)을 쉽고 빠르게 할 수 있도록 설계된 언어이다.
단일 기기의 멀티 코어 프로세싱 뿐 아니라 다중 기기의 멀티 코어 프로세싱에도 능한 모습을 보인다.
Go Lang은 3가지 목표를 가지고 구글에 의해 2009년에 만들어지고 2012년에 오픈 소스로 등장하게 되었다.
컴퓨터 사이언스 & 소프트웨어 엔지니어 계의 천재 중의 천재들에 의해서 만들어졌다. Ken Thompson (B, C, Unix, UTF-8) Rob Pike (Unix, UTF-8) Robert Griesemer (Hotspot, JVM) 추가적으로 Google의 다른 엔지니어들과 함께...
1.
Efficient Compilation
2.
Efficient Execution
3.
Ease of Programming

2) Go Lang의 분포 및 강점

세계적으로 Go Lang을 많이 쓰고 있을까? 아래 링크에서 제시된 회사들이 실제로 Go Lang을 서비스에 사용하고 있는 상황이다.
대표적으로, Google, Youtube, Apple, Dropbox, Docker, Flipboard, Firefox, The Economist, Heroku, MongoDB, IBM, Intel, Github, Twitter, Facebook 에서 Go Lang을 이용하고 있다.
또한 Go Lang은 아래에 대해서 강세를 보인다.
Web Service Scale
Google은 실제로 많은 코드를 Go Lang으로 재작성 했다. (예를 들면, Youtube)
HTTP, TCP, UDP와 같은 Networking
Concurrency & Parallelism
System Level Programming
Automation, CLI
Crypto
Image Processing
Go Lang을 배우기 전에 이 언어를 배우는 것이 재미있고, 유망하다는 것을 다른 언어들과 비교를 통해 알아보자.
Go Lang 공식 사이트의 GoCon 자료에서 따온 것이다.
Go Lang 등장 이후, 컴퓨터와 사람에게 특화된 언어에 대한 분포
Go Lang 등장 이후, 동시성과 가독성에 특화된 언어에 대한 분포

3) Go Lang으로 무엇을 할 수 있을까?

Go Lang을 배움으로써 무엇을 도모할 수 있을까? Node.js의 창시자 Ryan Dahl이 Node.js를 버렸던 가장 큰 이유는 거대한 트래픽을 감당할 수 있는 커다란 서버를 만드는데 있어서 Node.js는 최적의 시스템이 아니었다. 였는데, Go Lang은 Node.js와 같은 기술들과 달리 훨씬 나은 Server Side System 구축이 가능하다. 아래의 Go Lang 공식 사이트에 게재된 블로그에서는
“Initially, our Go-based system ran on 20 servers, with 20 million real-time connections in total. The system sent 2 million messages a day. That system now runs on 400 servers, supporting 200 million+ real-time connections. It now sends over 10 billion messages daily.” "처음에는 Go 기반 시스템이 20대의 서버에서 실행되었으며, 총 2천만 개의 실시간 연결이 있었다. 이 시스템은 하루에 2백만 개의 메시지를 처리했었지만, 이 시스템은 현재 400대의 서버에서 실행되며 2억 대 이상의 실시간 연결을 지원한다. 현재는 매일 100억 개 이상의 메시지를 처리한다."
라고 말한다.

4) Go Lang의 특성

Go Lang는 단언컨대 최고의 선택이라고 할 수 있을 정도로 좋은 평판을 지니고 있다. 아래의 특성들이 있음을 인지하고 Go Lang을 학습해보자.
1.
Go Lang은 함수의 순서에 따라 엮여 프로그램을 생성하기 때문에 Procedural Programming Language이다.
2.
Go Lang은 명령어로 기술된 구문들로 만들어진 함수들로 작성되기 때문에 Imperative Programming Language이다.
3.
이외에도 Modular, Object-Oriented, Statically-Typed, Garbage-Collected, Compiled Programming Language이다.
4.
Go Lang의 문법은 주로 C 계 언어의 문법과 유사하다. (주로 C, C++, C#, Java, JavaScript 등과 비슷한 특성이 많다.)
출처

2. How to Succeed?