Go Programming Language (Google) 접근...

반응형

Go 는 구글이 세상에 내 놓은 개발 언어입니다.

2009년 11월에 리눅스와 Max OS X Platform 을 대상으로 공식 발표 되었습니다.

Go 는 Garbage Collection 기능이 있는 병행성 (Concurrent) 프로그래밍 언어입니다.

실무에 적용하기에는 준비가 덜 되어 있다는 얘기들이 있었지만, 2010년 롭 파이크는 구글에서

실제로 사용됙 있는 부분이 있다고 공개적으로 알리게 되었고,

전 세계 프로그래머들에게서 Go 는 점차적으로 관심을 받게 되었습니다.


초기에는 서버 프로그래밍을 위한 언어로 주로 소개되었지만

현재는 시스템 개발에만 제한되지 않고 다양한 용도의 개발에 활요할 수 있다고

소개되고 있습니다.


Wikipedia 에서 설명하는 Go 의 내용을 살펴보면,


Go 의 탄생 목적


  - Go 는 정적 타입 컴파일 언어의 효율성과 동적 언어 처럼 쉬운 프로그래밍을 할 수 있도록 한다.

  - 안전성 : 타입 안전성과 메모리 안전성

  - 병행성 (Concurrent) 과 통신을 위한 훌륭한 지원

  - 효과적인 Garbage Collection

  - 빠른 Compile


Go 문법은 대체로 C 언어와 비슷하다고 합니다.

Go 언어에 대한 문법 기초 설명은 A Tour of Go(한국어) 에 예시와 함께 설명이 되어 있습니다.

Code 의 블럭은 중괄호 "{ ... }" 로 둘러싸고 for, switch, if를 포함한 일반적인 제어 구조를 가집니다.

Go 문법에는 C/C++ 과 다르게 라인 끝에 세미콜론 ";" 은 필수가 아닌 옵션입니다.

변수 선언 또한 다릅니다.

C/C++, Java 등의 기존에 주로 사용되던 언어에서는 변수의 형 부터 작성 후 변수명을 작성하였으나

Go 문법에서는 변수명을 먼저 작성하고 뒤에 그 변수의 형을 작성합니다.

이는 코드를 왼쪽에서 오른쪽으로 읽을 때 자연스럽게 읽기 위해서 이러한 형태를 가진다고 합니다.

 ( 이 외의 부분은 Go's declaration syntax 를 참고하세요. )


변수 선언 예시,

 C/C++ 변수 선언

 Go 에서의 변수 선언 

 int x, y;

 var x, y int


변수 초기화, 함수 사용, 함수의 리턴값 등 C/C++ 과는 다른 구석이 많습니다.

구조를 보면 Java, Visual Basic, C# 과 비슷함을 느낌니다.



 package main


 import "fmt"


 func main() {

   fmt.Println("Hello, World")

 }



Go 프로그램은 패키지로 구성되어 있습니다.

프로그램은 main 패키지로 부터 실행을 시작합니다.

상기의 Hello, World 소스를 보면 main 패키지 를 선언하고

fmt 패키지를 import 하였습니다.

fmt 패키지에 라인 출력을 위한 Println 함수가 존재하며 main 함수 내에

Hello, World 문구 출력을 위해 사용되었습니다.

Println 함수는 fmt 패키지에서 Export 된 함수로 Go language에서는 Export 를

따로 선언하지 않고, 함수를 대문자로 시작하면 외부에서 접근 가능하도록 (Export) 

선언 된다고 합니다.

즉, 패키지 작성시 함수며을 Println 과 PRINTLN 으로 작성하게 되면 exported name 이 되어 외부에서 접근할 수 있으며,

println 으로 작성하게 되면 외부에서 접근할 수 없는 함수가 됩니다.

C/C++ 과 다른 점을 보면 main 함수 선언된 부분에서 확인할 수 있습니다.


 C/C++ 에서 함수

 Go 에서의 함수

 int main () {

    ....

 }

 func main() {

   ....

 }


함수 사용된 것을 보면 함수 return 시에 형이 정의 되지 않습니다.


Go 언어를 보면 세미콜론도 그렇고 함수에서의 리턴 형 부분에서도 그렇고 컴파일러에서 알아서 처리해 주는 부분들이 

많은 것으로 보입니다.


좀더 사용해보고 분석해봐야 겠지만 (이미 여러 자료들이 많이 있으니.. 좀더 쉽겠죠 ㅎ)

맛은 보고 싶다는 생각에서 정리를 한번 해볼 생각입니다.


Go 에 대해서...

좋다는 사람도 많지만, 좋지 않다, 기존 언어보다 못하다 등의 의견들도 많습니다.

좋지 않다는 부분에서 접근하여 Go 언어를 살짝 보면, C/C++ 을 주로 하던 프로그래머들은

거부 반응이 있을 수 있을 것이라는 생각이 듭니다.

소개에서 C/C++과 비슷하다고 하지만 실제 구현된 예제를 보면 비슷하다고 보기엔 다른 부분이

너무나 많기 때문입니다.

Go 프로그래밍 언어에 대해 좀더 분석하고 사용해보다 보면 비슷한점과 좋은 점을 더 찾을지 모르겠습니다.

일찍이 많은 분들이 접하고 정리 하셨기에 단순히 Go 언어를 개인적으로

익혀가는 부분에 대해서 정리해볼까 라는 생각으로 접근하려 합니다. ^^~


참고,

  Go Programming Language - 공식 웹사이트

  Go Language Tour 

  Go Language Korea blog

  Go 한국어 커뮤니티

  Golang Korea Google Plus

  Go 개발 언어 자료를 한국어로 번역하는 프로젝트

  



반응형

'Program Language > Go language' 카테고리의 다른 글

Go language development env.)  (0) 2014.06.17
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유