일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로그래밍 발표
- 알고리즘초보
- 개발 강의
- 가발자 인사이드아웃
- github 부분 가져오기
- 프로그래밍
- 문서 따라하기
- 개발 flow
- Spring 문서 따라하기
- intellij 플러그인
- 알고리즘사이트
- Java
- 알고리즘분류
- JMeter
- mac 화면분할
- blog code 관리
- 코딩
- 스프링부트
- 주식기본기
- 커스텀단축키
- 코드트리
- 알고리즘
- 대규모 시스템 설계
- aws
- 알고리즘 추천
- spring boot example
- 개발자 자존감
- 초년생
- spring boot
- 좋은 멘토란
- Today
- Total
영감을 (inspire) 주고픈 개발 블로그
[프로그래밍 언어] Go 언어 파헤치기! 본문
Go 언어는 컴퓨터 기술에 조금이라도 관심있는 사람이라면 한 번쯤 들어본 언어일 것이다.
Go가 2009년 배포하고 벌써 7년이 지났고(정식버전은 2011년 배포) 무려 구글이 지원하는 언어다! (가장 매리트 있는 부분)
간단하게 Go 언어가 어떤 특징이 있는지 확인하고 문법적인 특징을 몇 개 집어가는 식으로 포스팅하겠다.
특징
0. 단순하고 실용적이다.
1. 컴파일형 언어다. 컴파일러 언어는 프로그램을 동작시키기 위해 전체를 컴파일해야 한다.
2. 문법 구조를 개선(변수를 먼저 쓰고 타입을 뒤에 쓰는 식) 하여 컴파일러가 소스코들 햇석하는 pass 수를 줄였다.
3. 구글이 만들었다. (라이브러리 지원이 많다)
4. 기존의 컴파일러 이론을 무시한다.
5. C를 바탕으로 만들었지만, JVM을 지원한다.
6. GoRoutine 이라는 비동기 메커니즘을 제공한다. (병렬로 동작하며 메세지 채널을 통해 값을 주고받는다. 즉 이벤트 처리, 병렬 프로그래밍이 간단한다. - 웹이나 앱에 사용하기 좋다는 것, 단 프로그래머가 챙겨줘야한다. 아니면 프로그램이 비정상 종료)
요약하자면 배워놓을 가치가 있는 언어란 거다.
단점도 존재한다.
https://github.com/ksimka/go-is-not-good
이 링크는 go의 단점만을 모아 놓은 것이다.
"현대적인 언어들이라면 당연히 가지고 있음직한 굵직한 특성들을 가지고 있지 않다. 심지어 “Go는 40년 동안의 프로그래밍 언어에 대한 연구를 던져버린 유일한 언어”라고 평가를 받기도 한다"
Go의 단점을 한마디로 요약하는 부분이다.
Go는 단순하고 실용적을 지향하는 철학으로 만들어졌다. 그러다 보니 기존의 직관적으로 적용하는 식으로 만들어졌다고 한다.
그래서 배우기 쉽고 실전에 빠르게 써먹을 수 있다.
Go가 처음 출시할 때 목표로 한 부분을 보면 알 수 있다.
– 웹서버
– 웹브라우저
– 웹로봇
– 검색엔진
– 컴파일러
– 프로그래밍 도구(디버깅 도구, 분석 도구 등)
– IDE(통합개발환경)
– 운영체제
* 이후에 기존 어플리케이션까지 아우를 수 있도록 바뀌었지만, 단순함을 목표로 했기에 11년 이후 그 때나 지금이나 문법적 변화는 미미하다.
단순함이 모든 면에서 장점은 될 수 없다.
그리고 무엇보다 애매하게 보일 수 있다. 저수준과 고수준 둘다 커버할 수 있다지만
저수준 치곤 c만큼 퍼포먼스가 좋지 않고, 그렇다고 어플을 만드는 등의 고수준 언어를 처리할 때의 호환성이 떨어진다.
사실 언어마다 효율적인 분야가 다르기 때문에 하나로 다 처리한다는 건 좀 힘들 수 있다. 그럼 Go언어는 어디에 쓰일까?
그럼 이런 단점을 가진 고언어가 갑자기 인기있게 된 계기는 클라우드다!
분산환경은 시스템이 분산된다는 의미 외에 소프트웨어가 분산된다는 의미도 있는데, 이런 환경에선 소프트웨어가 많은 기능을 가지고 있을 필요가 없다. 필수적인 기능만 가진 여러 소프트웨어들이 서로 데이터를 주고 받는 식으로 작동하는 게 효율적이다.
앞에서 말한 Go의 장점은 GoRoutine과 단순한 문법들이 클라우드 환경과 딱 맞는다.
그래서 현재 Go언어를 사용한 프로젝트 중 가장 인기있는 건 온라인 컨테이너, Docker 이다.(https://github.com/docker/docker)
그럼 다음에 Go 언어의 특징(느낀 점 위주로)을 포스팅 해야겠다.