Go.#1 / Go언어 시작하기

2019. 12. 5. 00:54Tutorial & Training/Go

728x90

Go언어란?

2009년도에 Google사 에서 공개한 Programming Language로,

개발에 참여한 개발자들이 대체로 셀럽(유명인사) 개발자들 입니다.

 

 

로버트 그리즈머 (Robert Griesemer), 롭 파이크 (Rob Pike), 켄 톰슨 (Ken Thompson)

위 3명이 개발에 참여하여 초반부터 인기를 끌었으며,

 

저도 처음에는 주변에서 추천하여 학교에선 Java를 개인적으로는 Go언어를 통하여

프로그래밍을 시작했습니다.

 

지금은 Python을 사용하지만요...

 

Go를 처음 접했을 당시에는 자료가 많지 않았고, CPU 점유율 100%의 버그가 존재했었는데...

지금은 고쳤겠죠..?

 

번외로 2년마다 보긴했는데,

Google이 Kotlin을 채택하기전 저는 당연히 Go언어를 채택할줄 알았지만... Flutter를 위한 큰 그림이었을지도..

본론으로 들어가면

 

 

Go언어의 장점

사실 언어를 처음 입문 하는사람이거나 사용중인 언어의 고질적인 문제로 인해,

많은 사람들이 찾아보는 부분이 아닐까 싶습니다.

 

Python을 꽤 오랜시간 써온 유저이자, Go를 둘다 써본 측면에서 바라본다면

- 예약어(키워드)가 적다!

- 컴파일 언어다!

- 컴파일 언어치고는 스크립트언어 처럼 생산성이 매우 뛰어나다!

 

 

 

 

Go언어의 단점

그럼 주관적인 Go언어의 단점은 뭐가 있을까요?

처음 입문유저에게는 그다지 해당되는 사항은 아닐 것 같고 그간

Interpreter language(인터프리터 언어)만 사용해온 유저들에겐 오히려 Go가

달갑게 느껴지진 않을것 같네요.

 

- 컴파일 언어의 특징처럼 자료형 Type을 선언해야함!

var a, b, c int  // 초기화
var d, e, f bool  // 초기화

var a int = 1  // 선언 및 초기화
const b string = "yankee"  // 선언 및 초기화

- main 함수의 강제성 Python을 사용하는 유저에겐 선택사항이라, 불편한 사람도 있을 것 같네요

package main

func main() {
	// your code!
}

- 함수에도 타입을..!? 

이부분은 케바케라고 봅니다.

Python에서도 유지보수 관리를위해 고오오급 단계로 넘어 갈수록

annotation을 권장 하기 때문에 함수 인자와 반환값을 선택사항에 포함합니다.

// go
func test(x int) string {
    return x
}
# Python
def test(x: int) -> str:
	return x
# Python 다른방법
def test(x):
	"""
		params x: int
		return str
	"""
	return x
// JavaScript
/**
  * @typedef {integer} x
  * @property {string} current The current x.
*/
function test(x){
	return x
}

javascript도 컴파일하면 저렇게 쓸수있어요... 아니면 주석으로 다시면...

사실 유지보수를 생각하여 Annotation을 명시하면 그다지 단점으로 보이진 않지만...

해당 언어에 대해 깊이있게 또는 다양한분야를 아니면, 유지보수 등 연구나 공부를 해보지않았거나

별 관심이없다면 처음보는 광경일수도 있습니다!

 

- Python 유저들에게만 해당되는 경우 {} <-- 중괄호 친구가 존재함

저는 Javascript도 다루고 자주쓰기 때문에 헷갈리지 않은데, 아마 Python만 사용하는 유저라면 실수를 종종하실..

 

- 디버깅

Interpreter Language들은 실행구조가 한줄 한줄 처리되서 Break Point를 건 위치에서

콘솔창을 열어 다른 코드를 테스트해보거나 보기힘든 변수를 입력하여 해당 값을 빠르게 확인하는 등 다양한

행동을 할 수 있습니다.

 

컴파일언어의 디버깅은 모니터링이라 Interpreter의 디버깅에 익숙해져있다면 불편함을 느낄 수 있습니다.

 

 

다음 시간은 설치부터...

728x90

'Tutorial & Training > Go' 카테고리의 다른 글

#01.Go - GraphQL 알아보기  (0) 2020.05.31
Go언어 ORM GORM의 크나큰 문제점  (0) 2020.05.15
Go Gorm Preload without order by  (0) 2020.05.13
Go.#3 / 패키지  (0) 2019.12.15
Go.#2 / Go언어 컴파일러 설치하기  (0) 2019.12.06