고 언어(Go Language)는 구글이 개발한 프로그래밍 언어입니다.
GC(Garbage Collector)가 기본적으로 탑재되어 있고, 가장 중요한 병행성 프로그래밍을 잘 지원해줍니다. 또 빠른 컴파일, 타입의 안정성(메모리 안정성), 타 언어보다 효과적인 가비지 컬렉팅이 가능합니다.
강 타입 약 타입
고 언어는 강 타입(Strong-type) 언어입니다. 약 타입은 Python이나 Javascript처럼 따로 자료형을 선언하지 않고 선언하는 형식을 말하고 강 타입은 C언어처럼 자료형을 직접 선언해줘야 하는 형식을 말합니다. 그러나 C언어는 강 타입 언어는 아닙니다. 이재홍의 '가장 빨리 만나는 Go 언어'책의 강 타입 설명을 인용해보자면 "강 타입(String-typed)은 값 자체가 타입이며, 타입을 바꿀 수 없습니다. 즉 컴파일 또는 실행할 때 자료형이 다르면 에러를 발생시킵니다."즉 강 타입은 값 자체가 타입, 선언 시 자료형을 직접 선언해줘야 할 수도 있고 약 타입은 선언 시 자료형을 필요치 않을 수 있고, 타입을 바꿀 수 있다는 점이 있습니다.
컴파일 언어
고 언어는 컴파일형 언어입니다. 따라서 자바(Java)나 C++같이 소스 코드를 작성 후 컴파일 하여 정적으로 사용하는 방식을 컴파일 방식, 흔히 사용되는 파이썬(Python)이나 PHP 같이 소스 코드를 작성하면 컴파일 과정 없이 결과를 바로 도출할 수 있는 방식이 인터 프리터형 방식이라고 합니다.
컴파일 방식의 장점은 실행 시 빠른 속도를 가져올 수 있다는 큰 장점이 있는데, 고 언어가 컴파일 방식인 점을 생각하면 마찬가지로 고 언어도 컴파일 방식의 장점을 가져올 수 있습니다.
병행성 프로그래밍 장점
기존의 프로그래밍 방식 중 쓰레드(Thread)를 이용하여 멀티쓰레딩이나, 프로세스(Process)를 만들어 멀티 프로세싱으로 프로그래밍 하여 프로그램에 병행성을 지원했다면, 병행성 프로그래밍이 가장 잘 지원되는 고 언어는 고 루틴(Go rountine)를 사용합니다. 고 루틴은 기존의 병행성을 지원하는 프로그래밍 방식보다 문법이 간단, 시스템 자원을 더 적게 사용합니다. 따라서 더 많은 고 루틴을 생성하여 더 많은 작업을 병행하여서 처리할 수가 있습니다.
문법
고 언어는 C언어의 영향을 받아 어느 정도 C의 문법과 많이 닮아있습니다.
if - else if - else 구조라던가 포인터라던가 여러 가지를 고를 수 있죠. 그러나 C언어와 다르게 세미콜론은 for 문의 식들의 끝을 나타내는 세미콜론을 제외하고는 거의 사용하지 않습니다. 이는 컴파일시에 전부 들어가게 됩니다. 또 C언어의 while 문이 고 언어에서는 없습니다.
고 언어는 파이썬(Python)과 다르게 :(콜론)을 함수의 처음과 끝에 사용하지 않고, C와 C++, Java 등 익히 알고 있는 언어들과 같이 {, }(중괄호) 사용하여 나타냅니다. 단 이 중괄호는 다음과 같이 나타내어야 합니다.
func main() {
}
if(a == 1) {
}
다음과 같이 중괄호를 써야 할 함수 선언이나 if 문, for 문 등은 중괄호를 내려서 사용하는 일이 불가능합니다. 이는 고 언어 자체에서 제한하는 사항입니다.
이상으로 고 언어의 대략적인 정리를 마칩니다.
[출처] Go Language !|작성자 blogcin
Go 언어 학습을 위한 사이트
The Go Programming Language
AN INTRODUCTION TO PROGRAMMING IN GO
http://codingnuri.com/golang-book/
A Tour of Go
https://go-tour-kr.appspot.com/
'Go Lang' 카테고리의 다른 글
GO :: 문법 요약 정리 #1 (Index 1~35) (0) | 2016.04.08 |
---|---|
GO :: LiteIDE 개발 환경 만들기 (0) | 2016.04.08 |