Golang 하면 존123나 카리스마있어

50
post-thumbnail

팰월드 하다보니 서버에 지금 몇명이 온라인 상태인지 알 수 없어서
디스코드 봇이 있나 하고 찾아봤는데 잘 만든 코드들이 오픈소스로 풀려있었습니다.

저야 익숙하니 상관없는데
가져다 쓰시는 분 대다수가 개발자가 아닙니다.

그런 분들한테
"conda 설치해서 Python 몇 버전을..."
"nvm 설치해서 NodeJS는 몇 버전을..."
"Java는... 이미 설치 되어 있으시다구요? 그럼 Java 11을 또 설치해서..."

이러면 시작부터 못하는 분들이 많아서
일요일 하루를 어린 뷕셩이 니르고져 홇배이셔도(?)
디스코드 봇을 창제하여 반포하시기에 이르는데...

https://github.com/juunini/palworld-discord-bot

야 그럼 코드 실행하려면 언어 설치해야지 뭔 소리냐?

쑻, 코이츠. 'Code' 의 진정한 치카라를 마다...

여러분 옛날에 콤푸타실에서 뻐-켓먼스터 할 때
GBA Emulator 돌릴 때 뭐 설치해서 쓰셨습니까?

디스켓(1.44MB)에 420KB 남짓한
.exe 파일 하나랑 옆에 파일 3개정도 같이 넣어가지 않으셨습니까?
거기다가 포켓몬스터 옐로우버전 롬파일도 같이 넣고
디스켓이란다. 게다가 1.44MB라니, 틀니 압수 경고다

GBA Emulator를 실행하는데
자바도 필요없고
파이썬도 필요없고
아무것도 필요 없습니다.

이제 다들 납득이 가십니까?

어케했노 x발x아

프로그래밍 언어는 크게 컴파일 언어와 인터프리터 언어로 나뉩니다.
컴파일 언어는 '빌드' 라는 행위로 실행파일을 만들어내는 언어고
인터프리터 언어는 만든 코드를 실행하기 위해 해당 언어의 인터프리터가 필요한 언어입니다.

야! 자바는 컴파일 언어인데 왜 실행하려면 자바가 필요하냐?! 그럼 자바는 인터프리터 언어냐?!
인터프리터 언어 맞는데요?

모르는 분들을 위해 Golang의 Hello World 예제를 보여드리면

대략 이렇습니다.
이렇게 빌드 된 파일은 실행할 곳에 가져다가 실행만 하면 됩니다.
실행할 곳에 Golang이 없어도 되죠.

파이썬도 이렇게 저렇게 하면 빌드 되거든요?

아 그래요?

그런데 인터프리터 언어랑 컴파일 언어랑 대결 붙이면 반칙이니
잠깐 옆길로 새는 것 같지만 rust랑도 한번 붙여보겠습니다.
그런데 rust의 Hello World 예제를 빌드한 용량의 상태가?!

1.4MB vs 295K
아, 고랭도 플래그 붙여서 빌드하면 용량이 줄어들죠
(뒤에 짤랐는데 rustc에도 플래그 잔뜩 붙어있음)

  • rust: 295KB
  • golang: 869KB

손나 바카나?!

그럼 rust가 더 좋은거 아니냐?!

하지만 rust에는 치명적인 단점이 있는데,
빌드가 한 평생 걸린다는 점입니다.

빌드 시간과 용량&성능을 등ㄱ...ㅏ? 가 맞나?
암튼 그렇습니다.

하지만 C가 나타나면?

어... 16KB?

여러분 C 쓰세요
그럴거면 어샘블리로 하지 슈퍼마리오가 40KB다
https://www.youtube.com/watch?v=5ZXOV1ma35g

그럼에도 Golang을 써야 할 이유

쉬운 크로스 컴파일

위 화면을 보시면 amd64 환경 우분투에서

  • 윈도우(x64)용 빌드
  • 라즈베리파이4용 빌드
  • 맥(Intel CPU) 빌드
  • 맥(Apple Silicon) 빌드

이렇게 굉장히 쉽게 크로스 컴파일이 됩니다.
이거 되는 언어 있냐구? 칙쇼!

빠른 빌드 시간

빌드 시간도 말도안되게 빠릅니다.
프로젝트가 얼마나 크든 몇 초 안에 다 돼요.

여기서 Golang의 특별함이 드러나는게
컴파일 언어로 작업하시는 분들 빌드 하고 나면 다들

화장실 갔다가
담배도 함 피고
커피도 마시러 어딘가 갔다가
바람 좀 쐬고 오면

아직 안끝나있습니다

아닌데! 나 자바 쓰는데 빌드 빨리 되던데!
자바로 빌드한거 JVM 있어야 실행되면...
그럼 그 빌드 반쯤은 압축으로 봐도 되지 않냐며

많이 사용됨

국내에서 취업할꺼면 자바, 파이썬, 노드 해라
맞는 말입니다.

근데 kubernetes 에코시스템들은 절대다수가 Golang을 쓰고
CNCF(Cloud Native Computing Foundation) 의 프로젝트들을 보면
다수가 Golang으로 만들어져 있습니다.

많이들 쓰는 Docker도 Golang으로 만들어져 있습니다.

이래도 마이너 언어 같나요?

존123나 카리스마있어

여러분 회사에서 누구 도와준다고
코드 만들어서 줬는데
상대방이 개발자가 아니어서 그 분 자리 가서

"이거 쓰려면 파이썬이 있어야 하는데요, 여기 없으니 제가 설치해드릴게요. 여기 보시면 파이썬 cmd가 있을텐데 이거 누르셔서 이 경로로 이동하신 다음에 python main.py 라고 입력하시면..."
(뭐 아니면 .bat 파일 만들어서 줄 수도 있겠지마는 파이썬은 가서 설치해줘야 할겁니다)

이러고 있으면 도움 받는 사람도 속으로
'아 존123나 어렵네 그냥 손으로 할 걸'

이런 생각 하실 수도 있습니다.

그런데 여기서 개발한 언어가 파이썬이 아니라 고랭이다?

GOOS=windows GOARCH=amd64 go build -o awesome-golang.exe main.go

이렇게 빌드해갖고 저 파일 메신저로 던져주면서

"그 엑셀파일 있는 폴더에 이거 집어넣고 실행하세요"

profile
지상 최강의 개발자 쥬니니

26개의 댓글

comment-user-thumbnail
2024년 2월 21일

유머 넘치는 글 잘 보고 갑니다 😂

1개의 답글
comment-user-thumbnail
2024년 2월 21일

센스넘치는 작문 실력에 감탄하고 갑니다 ㅋㅋㅋㅋ

1개의 답글
comment-user-thumbnail
2024년 2월 23일

팰 월드, Golang 까지 겹치다니 .. 아아 이것이 지상 최강의 힘인가

1개의 답글
comment-user-thumbnail
2024년 2월 24일

글, 짤 퀄이 너무 좋아서 술술 재미있게 잘 읽고 갑니다!

1개의 답글
comment-user-thumbnail
2024년 2월 24일

rust도 좋습니다요.. ㅠㅠ

1개의 답글
comment-user-thumbnail
2024년 2월 27일

뭐하면 척이네욧 이 지구상 최강 개발자님^^

1개의 답글
comment-user-thumbnail
2024년 2월 29일

Golang 라인사내에서 사용한다는걸 보고 알게된 언어인데 이런장점이있었군요 ㅋㅋ

1개의 답글
comment-user-thumbnail
2024년 3월 3일

golang 카리스마 메모..

1개의 답글
comment-user-thumbnail
2024년 3월 4일

요즘은 별 내용은 없고, 그냥 드립으로 도배하는게 아티클 퀄임?
이거 좋다고 따봉 눌러주는 클라스하고는 연예인 개발자 되기 쉽고만

2개의 답글
comment-user-thumbnail
2024년 3월 11일

golang의 매력을 이렇게 재밌게 풀어주시다니 ㅎㅎㅎ

답글 달기
comment-user-thumbnail
2024년 3월 27일

파이썬으로 스크립트 코드를 배포한다면 사용자가 파이썬을 설치 안해도 되도록 1기가 짜리☠️ venv 파이썬 가상환경 폴더를 뭉탱이로 넣어서 배포합시다! 끼얏호!😇

1개의 답글
comment-user-thumbnail
2024년 5월 25일

이거보고 바로 golang 시작함
fmt.Println("Hello World!!")

1개의 답글
comment-user-thumbnail
2024년 9월 6일

역시 개발은 간지있어야돼

1개의 답글