알림창

알림을 전체 삭제하시겠습니까?

메뉴 닫기 메가스터디아카데미 로고 로그인 로그인

메카뎀매거진 Blog

[큐레이션] GO 프로그래밍 언어 특징

  • 작성일2021-12-10
  • 조회701
분량

 

추천강의

구글이 만든 프로그래밍 언어, GO 언어를 아시나요?

 

현재 프로그래밍 언어는 총 몇 가지가 될까요?
 

프로그래밍에 관심이 있는 사람이라면 들어봤을 법한 C, C++, C#, 자바(JAVA), 파이썬(Python) 등

이외에도 정말 이름만 겨우 들어봤을 법한 수십 가지 종류의 언어가 출시되어 있습니다.
 

프로그래밍 언어에는 우리가 아는 언어 외에도 수십 가지의 종류가 존재한다.
 

다양한 프로그래밍 언어 중에서도 오늘은 구글이 독자적으로 개발한 GO라는 프로그래밍 언어가

어떤 특징을 가지고 있는지 알아보려고 합니다
 

GO 프로그래밍 언어

Golang으로 불리기도 하는 GO 언어는 2009년, 구글이 빠른 성능과 안정성, 편의성, 쉬운 프로그래밍을 목표로 개발한 범용 프로그래밍 언어입니다.

구글은 GO 언어의 공식 홈페이지에서 GO 언어를 다음과 같이 소개하고 있습니다.

      GO is an open source programming language that makes it easy to build simple, reliable, and efficient software
 

이를 번역해보자면 "GO는 간단하고 안정적이며 효율적인 소프트웨어를 쉽게 구축할 수 있는 오픈소스 프로그래밍 언어입니다"의 뜻으로 해석됩니다.
 

이처럼 GO 언어는 최근 출시된 언어들 중 가장 직관적이고 쉽다는 평을 받고 있습니다


 

GO 언어의 마스코트 캐릭터. 설치류 동물인 것 같은데 뭔지 모르겠다. 그래도 귀여우니 됐다.

 

GO 언어의 특징

그렇다면 GO 언어는 어떤 특징을 가지고 있을까요?
 

GO 언어는 앞서 말씀드린 바와 같이 직관적이고 심플하게 개발되었습니다.

이는 C기반 언어들과 밀접하게 같은 부분이 많기 때문입니다.
 

직관적이고 쉽지만, GO 언어는 굉장히 보안성이 강한 언어이기 때문에, 복잡하지 않고 간단한 코딩일 때 발생하는 보안적인 허점을 보완하고 있습니다.
 

무엇보다도 GO 언어의 가장 큰 특징은 구글이 만들었다는 점이 아닐까 싶습니다.
 

현재 전 세계 IT 시장을 구글이 제어하고 있다고 해도 과언이 아니기 때문에, 구글이 만든 언어는 단기/장기적으로 많은 효용 가치를 지니고 있을 것입니다
 

GO 언어를 배워야 하는 이유 - 1

앞서 파이썬과 같은 C기반 언어들과 같이 GO언어는 직관적이고 쉽다고 말씀드렸습니다.

'그럼 파이썬을 배우면 되지 왜 GO를 배워'라는 궁금증이 생기지 않나요?
 

GO 언어는 GO 루틴이라는 독특한 특징을 지니고 있습니다.

기술이 발전됨에 따라 하드웨어 시장은 갈수록 싱글코어가 아닌 멀티코어로 성능을 향상시키고 있습니다.

소프트웨어도 하드웨어의 발전에 맞춰 동시성을 가지고 있어야 합니다.
 

기존에 많이 쓰이는 자바(JAVA)나 파이썬(Python)은 90년대에 싱글 코어 환경에 맞춰 사용되어 왔기 때문에 멀티 스레딩 소프트웨어를 개발하기에는 어렵습니다.
 

하지만 GO언어에서 지원하는 GO 루틴은 두 언어와 달리 더 많은 메모리를 사용할 수 있도록 도와주고 있습니다.
 

GO 언어를 배워야 하는 이유 -2

GO 언어는 자바(JAVA)나 파이썬(Python)에 비해 C계열 언어를 사용하면 성능이 월등히 좋습니다.
 

자바는 JVM을 통해서 실행 단계를 거쳐야하며, 파이썬은 인터프리터 실행을 위해 해석 단계를 거쳐야 하지만 GO 언어는 직접 컴파일하며 자동을 개체를 할당하고 제거하기 때문에 기본 하드웨어에서 직접 실행이 가능합니다.
 

또한 GO 언어는 C 언어 계열의 성능을 지니나, 파이썬과 유사하게 깔끔하고 쉬운 구문을 사용하기 때문에 유지 및 관리가 쉽습니다.

물론 파이썬보다는 쉽지 않으나 컴퓨터와 인간 모두에게 두루두루 가까운 언어입니다.

 

마치며

자바와 파이썬에 비해 대중적인 언어는 아니나, 장래성을 본다면 Google이 만들었다는 이유로 GO 언어는 분명 프로그래밍 언어의 한 획을 그을 것입니다.

이제 막 프로그래밍 언어를 배워보고자 하는 사람이라면 다른 언어와 함께 GO를 배워보는 것도 좋은 선택이 될 것입니다.

오죽하면 겨울왕국의 Let it go를 패러디한 Write in GO가 나오겠습니까.
 


The schedule's tight on the cluster tonight

분산환경에서 오늘밤은 작업 일정이 빡빡해
 

So I parallelized my code

그래서 나는 코드를 병렬화했어
 

All those threads and continuations

그 모든 스레드와 컨티뉴에이션들로
 

My head's going to explode

내 머리는 폭발할 것 같아
 

And all that boilerplate

심지어 그 모든 의례적인 코드들
 

That FactoryBuilderAdapterDelegateImpl

그 모든 "괴상한디자인패턴의복잡다단한구현"
 

Seems unjustified

이건 맞는 방법이 아닌 것 같아
 

Give me something simple

제발 알려줘 좀 더 간단한 방법을
 

Don't write in Scheme

스킴은 쓰지 마
 

Don't write in C

C로 짜지 마
 

No more pointers that I forget to free

해제하길 깜빡한 포인터여 이제 그만 안녕
 

Java's verbose, Python's too slow

자바는 장황하고, 파이썬은 느려터졌단 걸
 

It's time you know

이제 깨달을 때가 왔어
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

No inheritance anymore

클래스 상속이여 이제 그만 안녕
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

There's no do or while, just for

do도 while도 없어, 오직 for뿐
 

I don't care what your linters say

당신의 린터가 뭐라고 말하든 상관없어
 

I've got tools for that

내겐 수정툴이 있다고
 

The code never bothered me anyway

코드는 더 이상 날 괴롭힐 수 없어
 

It's funny how some features Make every change seem small

몇 개의 함수가 재수정을 작게 보이게 만드니 재밌어
 

And the errors that once slowed me Don't get me down at all

느리게 하던 에러들도 더 이상 날 새로 짜게 만들지 못해
 

It's time to see what Go can do

이제 Go가 뭘 할 수 있는지 알아볼 시간야
 

'Cause it seems too good to be true

왜냐면 믿기 어렵도록 너무 좋아보이니까
 

No long compile times for me.

더 이상 기나긴 컴파일 타임은 없어
 

I'm free!

난 자유야!
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

Kiss your pointer math goodbye

포인터 산술과 작별의 키스를 해
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

Time to give GC a try

GC가 알아서 정리하게 할 시간이야
 

I don't care if my structures stay On the heap or stack

난 상관 안 해 내 구조체가 힙이나 스택 영역에 남아 있어도
 

My program spawns its goroutines without a sound

내 프로그램이 단 하나의 에러 사운드 없이 Go 루틴을 생성한다
 

Control is spiraling through buffered channels all around

버퍼링 된 채널들을 통해 제어가 나선형처럼 진행된다
 

I don't remember why I ever once subclassed

내가 왜 옛날엔 서브 클래스를 생성했는지 기억도 안 나
 

I'm never going back My tests all build and pass!

다신 돌아가지 않을 거야, 내 모든 테스트 빌드가 잘 돌아가!
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

You won't use Eclipse anyomore

넌 이클립스를 다시는 안 쓰게 될 거야
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

Who cares what Boost is for?

부스트 라이브러리가 알 게 뭐야?
 

I don't care what the tech lead say

난 상관 안 해 기술 책임자가 뭐라 말하든
 

I'll rewrite it all!

내가 전부 다시 짤 거야!
 

Writing code never bothered me anyway

코드 짜기는 더 이상 날 괴롭힐 수 없으니까
 

The schedule's tight on the cluster tonight

분산환경에서 오늘밤은 작업 일정이 빡빡해
 

So I parallelized my code

그래서 나는 코드를 병렬화했어
 

All those threads and continuations

그 모든 스레드와 컨티뉴에이션들로
 

My head's going to explode

내 머리는 폭발할 것 같아
 

And all that boilerplate

심지어 그 모든 의례적인 코드들
 

That FactoryBuilderAdapterDelegateImpl

그 모든 "괴상한디자인패턴의복잡다단한구현"
 

Seems unjustified

이건 맞는 방법이 아닌 것 같아
 

Give me something simple

제발 알려줘 좀 더 간단한 방법을
 

Don't write in Scheme

스킴은 쓰지 마
 

Don't write in C

C로 짜지 마
 

No more pointers that I forget to free

해제하길 깜빡한 포인터여 이제 그만 안녕
 

Java's verbose, Python's too slow

자바는 장황하고, 파이썬은 느려터졌단 걸
 

It's time you know

이제 깨달을 때가 왔어
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

No inheritance anymore

클래스 상속이여 이제 그만 안녕
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

There's no do or while, just for

do도 while도 없어, 오직 for뿐
 

I don't care what your linters say

당신의 린터가 뭐라고 말하든 상관없어
 

I've got tools for that

내겐 수정툴이 있다고
 

The code never bothered me anyway

코드는 더 이상 날 괴롭힐 수 없어
 

It's funny how some features Make every change seem small

몇 개의 함수가 재수정을 작게 보이게 만드니 재밌어
 

And the errors that once slowed me Don't get me down at all

느리게 하던 에러들도 더 이상 날 새로 짜게 만들지 못해
 

It's time to see what Go can do

이제 Go가 뭘 할 수 있는지 알아볼 시간야
 

'Cause it seems too good to be true

왜냐면 믿기 어렵도록 너무 좋아보이니까
 

No long compile times for me.

더 이상 기나긴 컴파일 타임은 없어

I'm free!

난 자유야!
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

Kiss your pointer math goodbye

포인터 산술과 작별의 키스를 해
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

Time to give GC a try

GC가 알아서 정리하게 할 시간이야
 

I don't care if my structures stay On the heap or stack

난 상관 안 해 내 구조체가 힙이나 스택 영역에 남아 있어도
 

My program spawns its goroutines without a sound

내 프로그램이 단 하나의 에러 사운드 없이 Go 루틴을 생성한다
 

Control is spiraling through buffered channels all around

버퍼링 된 채널들을 통해 제어가 나선형처럼 진행된다
 

I don't remember why I ever once subclassed

내가 왜 옛날엔 서브 클래스를 생성했는지 기억도 안 나
 

I'm never going back My tests all build and pass!

다신 돌아가지 않을 거야, 내 모든 테스트 빌드가 잘 돌아가!
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

You won't use Eclipse anyomore

넌 이클립스를 다시는 안 쓰게 될 거야
 

Write in Go! Write in Go!

Go로 짜! Go로 짜!
 

Who cares what Boost is for?

부스트 라이브러리가 알 게 뭐야?
 

I don't care what the tech lead say

난 상관 안 해 기술 책임자가 뭐라 말하든
 

I'll rewrite it all!

내가 전부 다시 짤 거야!
 

Writing code never bothered me anyway

코드 짜기는 더 이상 날 괴롭힐 수 없으니까

 

 





TOP