2019. 12. 5. 00:54ㆍTutorial & Training/Go
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의 디버깅에 익숙해져있다면 불편함을 느낄 수 있습니다.
다음 시간은 설치부터...
'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 |