본문 바로가기

프로그래밍언어/Go

[Go] Go는 어떤 언어인가요? [2]

많은 개발자가 새로운 프로젝트를 만들 때 빠른 개발 속도와 높은 성능 사이에서 고민을 많이 합니다.
개발자들은 보통 스타트업의 경우 루비, 파이썬과 같은 동적 언어로 초기 버전을 빠르게 만들며,
이용자가 많아질 때 자바나 C++ 같은 정적 언어로 다시 작성하는 방법을 택하는데요,
이런 고민을 해결하기 위하여 '동적 언어의 개발 속도' + '정적 언어의 안정성' 이 두 가지 토끼를 잡고자 나온
Go에 대해 알아보겠습니다.

 

Go Programming Language

먼저 Go 언어의 특징은 다음과 같습니다.

  • 간결하고 유연함
  • 병행 프로그래밍에 특화 됨
  • 동적 프로그래밍
  • 정적 타입 언어
  • 빠른 컴파일과 실행속도
  • 협업이 쉬움
  • Garbage collection 제공

위의 두 줄은 이전 포스팅에서 다루었기에 넘어가고 세 번째부터 알아보겠습니다.

동적 프로그래밍 / 정적 타입 언어

Go는 C#과 C++와 같이 컴파일 기반의 정적 타입 언어입니다.
하지만 동적 언어의 특성도 수용함으로써 동적인 느낌으로 코드를 작성할 수 있습니다.
이는 Go 언어는 Duck typing 방직으로 동작하는 인터페이스 덕분입니다.
정적 언어에서는 특정 클래스가 어떤 인터페이스를 구현하는지 명시를 해 줘야하지만,
Go는 그럴 필요없이 인터페이스 간의 어떠한 연결고리도 없기에 동적인 특성을 살려줍니다.

빠른 컴파일과 실행속도

컴파일 기반의 언어는 TDD(Test-Driven Development)에 따라 다음의 순서로 사이클을 돌립니다.
테스트 코드 작성(Red) -> 테스트 성공(Green) -> Refactor
이는 프로그램의 규모가 커지고 테스트 단계가 많아질수록 사이클이 느려지는 단점을 가지고 있습니다.
컴파일이 필요없는 인터프리터 언어의 경우는 실행 과정이 느립니다.
하지만 Go는 컴파일 과정에서 사용되는 패키지만 자동으로 골라서 사용하기에 불필요한 시간 낭비를 없앨 수 있었습니다.

오늘도 Go의 특징들을 자세하게 알아보았습니다.
Go언어는 동적 및 정적 언어의 장점들을 모아 만들어진 언어인만큼 배울 필요성이 점점 느껴지네요!
다음에 나머지를 포스팅 하도록 하겠습니다.

 

이 글은 인제대학교 의용공학부 네트워크 팀 '11 신윤호가 작성하였습니다.

http://brian-s.tistory.com/48

 

'프로그래밍언어 > Go' 카테고리의 다른 글

[Go] Go는 어떤 언어인가요? [3]  (0) 2016.06.03