구글(Google)의 혁신적인 도전, 'Go' 언어
오늘날의 구글은 구글왕국을 만들었을 정도로 큰 회사로 발전했다.
회사의 요구에 의해 만들어진게 굉장히 많은데 구글은 그 기술들로 일반 생활에서도 큰 기여를 하고 있다.
검색은 기본이고, 가장 큰 예로 지메일이 있다.
구글은 근무시간의 20%시간을 개인 시간으로 할당한다고 하는데, 그 개인 프로젝트에서 시작된 지메일이 현재는 수 많은 사람들이 쓰는 메일 서비스가 되었다.
기술적인 부분을 조금 말하자면 지메일이 개발될 당시의 상황은 http 프로토콜에서 벗어나기 힘든 요청-응답의 결과물 밖에 없었다
그때 ajax라는 비동기통신이 유행하고 있었고 구글 지메일팀은 웹 앱으로서 지메일을 만든다.
페이지를 벗어나진 않지만 비동기통신으로 메일을 불러오고 쓰고 하는거였는데, 주목할점은 웹 앱인데 지메일이 개발될 당시만 해도 웹 앱이라고 단어도 생소하던 시절이라 나도 지메일을 보고 충격먹었던 기억이 있다.
현재는 웹소켓도 발전되어 있고 http 프로토콜의 제약에서 많이 벗어난 상태이다.
그러한 구글이 2009년 언어를 개발하게 된다.
바로 'Go'라는 언어이다.
구글은 많은 부분에서 c++를 사용한다고 하는데 c++는 개발시간이 너무 길고, 언어 자체가 다른언어에 비하면 난이도가 높은 수준이라 간단하지만 성능이 좋은 언어가 필요했을 것이다.
그래서 구글은 Go 코어 개발진을 만드는데 개발계의 어벤져스를 데려온다. 다들 업적이 대단한데 간단하게만 설명하자면
- 로버트 그리스머, 구글 V8 자바스크립트 엔진의 개발자
- 켄 톰슨, 벨 연구소의 유닉스 초기 개발자이고 C언어의 기반이 된 B언어를 개발함. 유닉스의 아버지
- 롭 파이크, 위와 같은 벨 연구소의 유닉스팀에서 같이 개발하였고 켄 톰슨과 거의 동급인 사람임. 위의 켄 톰슨과 함께 UTF-8 개발
세 사람이 언어를 설계하고 2009년 릴리즈 된 후에 세계의 개발자들이 버그 리포팅을 해주고 라이브러리를 개발하며 공유하고 있다.
Go는 올해의 개발언어상도 수상했는데 그 연도가 2009년이다.
2009년 11월에 릴리즈됐는데 나오자마자 수상을 한 것이다.
그에 비해 C나 기타 언어와 다를게 없다는 이유로 많은 질타도 받았으며, 여러 언어를 합친거 같은 문법은 C와 다른 부분이 많아 코드를 읽기도 쉽지 않았다.
Go는 구글의 필요성에 의해 개발됐다고 생각되는게 많은 부분이 구글을 위해 개발되고 있다.
개발자들이 발표한 적용가능 분야는 웹서버, 웹브라우저, 웹로봇 기타 등등 시스템 개발분야가 포함되고 있는데,
이미 구글은 구글 다운로드 부분에서 Go를 사용 하고 있고, Go 홈페이지에서도 사용하고 있다.
웹브라우저는 크롬에 이식될테고 웹서버는 수많은 구글 웹서버를 대체할만한 수준이 된다면 교체될 것이고 웹로봇은 거의 Go로 재작성 될거라고 본다.
성능 부분을 말해보자면 C언어에 크게 뒤쳐지지 않는 편이다.
자바보다는 훨씬 가볍고 속도도 크게 차이 나지 않고, 서버분야에서 사용한다면 특별한 환경이 필요한게 아니니 구글 뿐만아니라 서버를 사용하는 모든 사람에게는 정말정말 좋은 언어다.
왜냐하면 c나 c++에 비해 개발시간이 무지막지하게 단축된다.
구글은 파이썬의 개발자 귀도도 데리고 있었는데, 파이썬은 간결하고 직관적인 스크립트 언어로 정말 간단한 수준으로 좋은 결과를 내는 언어이다.
Go는 파이썬에 견줄만한 간단한 코드로도 C와 자바에 맞먹는 성능을 자랑하고 생상선이 정말 높다.
구글 서비스 중에 앱 엔진이라는 서비스가 있는데 파이썬, 자바만 지원했지만 2011년 Go도 지원하기 시작한다.
그리고 ARM을 지원하는 Go가 개발되고 있는데 멀리 봤을때 안드로이드까지 Go로 재작성될거라고 생각된다.
구글과 오라클의 특허분쟁에 큰 부분이었던게 안드로이드 달빅의 자바관련 부분인데 Go로 작성하게 되면
특허 부분도 문제가 없고 개인적으론 성능 부분도 개선할 수 있을거라고 본다.
파이썬과 마찬가지로 문서가 잘 정리되어있고 개발자들간의 업데이트가 활발한 편이지만 아직은 Go에 대해 반신반의하는 개발자들도 있는거 같다. 인기가 없어서 사라지는 언어가 은근히 좀 된다.
일반 개발자들이 혹할만한 가비지 콜렉션, 병렬처리, 생산성 등이 매우 좋고 파이썬과 함께 모듈에 의존하는 개발 방식이다.
가비지 콜렉션을 지원하여 골치 아픈 포인터, 메모리 할당 해제 부분을 신경쓰지 않아도 되고, gorutine을 사용하여 간단한 병렬처리를 지원해준다. 멀티코어도 알아서 지원해 준다.
자바에서는 VM에서 제공해주지만 Go의 경우 빌드된 파일에서 이를 지원한다.
컴파일 시간도 매우 빠른 수준인데 C, C++ 에 비하면 인터프리터 돌리는 수준이다.
'5분 이것저것 토막 상식' 카테고리의 다른 글
드럼 세탁기와 일반 세탁기의 차이 (0) | 2019.08.02 |
---|---|
구글(Google) 속 숨겨진 20가지 비밀스러운 기능 (0) | 2019.08.01 |
19세기 천재 흑마법사의 일생 (0) | 2019.07.29 |
나치와 오컬트 (0) | 2019.07.29 |
지혜의 왕 솔로몬이 남긴 책 (0) | 2019.07.29 |