아, 프로그래밍 언어여. 아마도 당신은 아마도 API가 얼마나 "놀라울 정도로 빠른지"에 대해 끊임없이 이야기하는 사무실의 한 지나치게 열정적인 개발자에게서 들어봤을 것입니다. 물론, 당신은 다른 언어를 사용해 본 적이 있고 아마도 "내 접시에 정말 다른 언어가 필요한가?"라고 생각했을 것입니다. 스포일러 경고: 예, 그렇습니다. 그리고 Go가 바로 그 언어입니다. 가능한 가장 냉소적으로 진실된 방법으로 분석해 보겠습니다.
Go의 구문은 너무 단순해서 거의 모욕적입니다. JavaScript 프레임워크의 복잡성을 익히고, Python 데코레이터와 씨름하고, C의 메모리 관리를 실제 수류탄처럼 다루며 몇 년을 보냈다면 Go는 누군가가 색칠 공부 책을 건네준 것처럼 느낄 것입니다. 아니, 진심으로요. Go는 "그렇게 멋진 기능이 모두 필요하지 않습니다. 그냥 작업을 완료하자"라는 철학을 바탕으로 의도적으로 미니멀리즘을 구현했습니다.
다른 언어는 코드를 정교하고 읽을 수 없는 예술 작품으로 만드는 데 필요한 모든 도구를 제공하지만 Go의 디자이너는 "아냐, 그냥 작동시키자"라고 생각했습니다. 복잡한 상속 계층 구조, 복잡한 함수 오버로딩, 나쁜 꿈에서 나온 대수학처럼 보이는 템플릿이 없습니다. 그냥 간단하고 핵심적인 코드입니다. 마치 “자, 너무 어렵게 생각하지 마세요.”라고 말하는 것과 같습니다.
기존 언어에서 동시성을 처리해 본 적이 있다면 그것이 얼마나 해로울 수 있는지 알 것입니다. 스레드 풀, 뮤텍스, 교착 상태 등 생각만 해도 몸을 웅크리고 울고 싶어집니다. 그런데 가? 아뇨, Go는 "스레드? Pfft. 여기에 고루틴이 있습니다."라고 말합니다. Go에서 경량 스레드를 스핀업하는 것이 얼마나 쉬운지는 거의 무례합니다. 함수 호출 앞에 go 키워드를 던지기만 하면 BAM이 동시에 실행됩니다.
그리고 Go 채널에 들어가지도 마세요. 이는 마치 Go가 다른 모든 언어의 동시성 시도를 살펴보고 "너희가 너무 복잡하게 만들고 있으니 이것 좀 봐"라고 말한 것과 같습니다. 채널을 사용하면 고루틴은 고함을 지르거나 소란을 피우지 않고 수업 시간에 메모를 전달하는 예의바른 어린이처럼 통신할 수 있습니다. 얼마나 원활하게 작동하는지 보면 모욕감을 느낄 수도 있습니다.
간단한 HTTP 요청을 만들기 위해 47개의 패키지를 설치해야 할 때 그 느낌을 아시나요? Go에는 없습니다. Go의 표준 라이브러리는 필요한지 몰랐지만 이제는 없이는 살 수 없는 스위스 군용 칼과 같습니다. 웹 서버를 가동하고 싶으십니까? 완료. JSON을 처리해야 합니까? 쉬운. 네트워크를 통해 통신하는 동시 프로그램을 작성하려고 하시나요? 이미 도구 상자에 있습니다.
Go의 표준 라이브러리는 마치 “아, 웹 서비스를 만들고 싶니?”라고 말하는 것처럼 조용한 자신감을 가지고 있습니다. 200개의 타사 종속성을 가져오거나 영혼을 희생하지 않고도 가능합니다.” 그것은 부풀려진 구독 비용 없이 언어의 모든 프리미엄 기능을 얻는 것과 같습니다. 그리고 솔직히 그건 무례한 행동이에요.
거기 앉아서 발을 두드리며 Python 또는 JavaScript 코드가 실행되기를 기다리던 모든 시간을 기억하십니까? Go는 그런 말도 안되는 일을 할 시간이 없습니다. 컴파일되어 있고 빠릅니다. 마치 눈을 깜박이면 빠르게 완료됩니다. 물론, 다른 언어들도 최선을 다하지만 Go는 “뭐? 아직 여기 있나요? 이미 끝났어요.”
가장 좋은 점은 무엇인가요? 현재 일어나고 있는 모든 내부 마법을 이해할 필요는 없습니다. Go가 에스프레소에서 Usain Bolt처럼 실행되는 실행 파일을 대량으로 생성한다는 것을 알고 계실 것입니다. 다른 언어에서는 몸을 풀고 운동화를 신는 데 시간이 걸리는 반면, 바둑은 이미 결승선을 통과하고 샤워를 하고 경기 후 스무디를 즐기고 있습니다.
Windows와 Linux 모두에서 Python 스크립트가 작동하도록 시도해 본 적이 있습니까? 예, 그것은 대학에서 그룹 프로젝트를 조직하려고 하는 것과 같습니다. 혼란, 이상한 오류, 많은 비난으로 가득 차 있습니다. 그런데 가? Go는 당신이 어떤 플랫폼에 있는지 상관하지 않습니다. 한 번 컴파일하면 거의 모든 곳에서 실행됩니다. 그것은 프로그래밍 세계의 "물론이죠"라는 태도입니다.
그리고 Docker 컨테이너 작성을 좋아하는 사람이라면(실제로 좋은 컨테이너를 좋아하지 않는 사람이 있을까요?) Go의 바이너리는 꿈이 현실이 되는 것입니다. "딱 맞는" 런타임 환경에 의존하지 않는 정적으로 연결된 단일 바이너리는 요청 없이 실제로 설거지를 하는 룸메이트를 갖는 것과 같습니다. 사실이라고 믿기에는 너무 좋지만 여기 있습니다.
이제 당신이 무슨 생각을 하는지 알겠습니다. "하지만 단지 소규모 프로젝트를 만들고 싶다면 어떻게 해야 할까요?" 물론이죠. 그럴 수도 있죠. 하지만 현실이 되자. 대부분의 인터넷을 통제하는 회사인 Google이 Go를 만들었다는 소식을 듣는 순간, 당신은 세계 지배를 위해 설계된 강력한 도구를 휘두르는 듯한 느낌을 받게 될 것입니다. 물론, 아마도 작은 웹 서버나 일부 API로 시작하겠지만, 마음 속으로는 정말로 원한다면 이 기능을 사용하여 차세대 Google 규모 시스템을 구축할 수 있다는 것을 알고 있습니다.
맞습니다. Go는 확장성을 고려하여 설계되었지만 걱정하지 마세요. 첫 번째 프로젝트가 할 일 목록 앱인지 판단할 사람은 아무도 없습니다. (사실 그럴 수도 있어요. 조금요.)
우리 모두는 오픈 소스 프로젝트를 좋아합니다. 그렇죠? 그것은 우리에게 "공동체"의 일원이라는 따뜻하고 흐릿한 느낌을 줍니다. Go는 오픈 소스이므로 원할 경우 코드를 자세히 살펴볼 수 있습니다. 당신은 실제로 그것에 어떤 기여를 하시겠습니까? 아마도 그렇지 않을 것입니다. 하지만 당신이 충분하다고 생각한다면 할 수 있다는 것을 아는 것, 그렇죠?
모임에서 사람들에게 "예, 저는 Go를 사용하고 있습니다. 완전히 오픈 소스이므로 커뮤니티에 좋습니다."라고 말할 수 있습니다. 그런 다음 편안히 앉아 동료들이 정중하게 고개를 끄덕이는 것을 즐기십시오. 귀하의 실제 기여가 대부분 GitHub의 주요 저장소로 구성되어 있다는 것을 누구도 알 필요가 없습니다.
보세요, 우리 모두는… 음, 그들이 "열정적"이라고 말할 수 있는 프로그래밍 커뮤니티의 일원이었습니다. 일부 언어 커뮤니티(이름을 언급하지는 않지만 여러분은 여러분이 누구인지 알고 있습니다)는 "모범 사례"로 인해 약간 위협적일 수 있으며 for 루프를 작성하는 올바른 방법에 대한 끊임없는 트집을 잡을 수 있습니다. 그런데 Go의 커뮤니티는요? 신선한 공기를 마시는 것과 같습니다. 그들은 지지적이고, 도움이 되며, 간단한 질문을 한다고 해서 당신이 바보처럼 느껴지게 만들지 않을 것입니다. 그들이 얼마나 차가운지 거의 불안합니다.
어쩌면 언어 자체가 지나치게 복잡하게 만들려고 하지 않아서 누구도 우월한 척 할 필요를 느끼지 못해서일지도 모르겠습니다. 이유가 무엇이든 Go 커뮤니티는 "조언"으로 위장한 관리 대신 실제 지원을 찾을 수 있는 곳입니다.
그렇다면 왜 모두가 Go를 배워야 할까요? 왜냐하면 그것은 어리석지 않고 단순하고, 소란을 피우지 않고 빠르며, 당신이 던지는 미친 프로젝트를 처리할 수 있을 만큼 충분히 강력하기 때문입니다. 항상 침착하고, 침착하며, 힘든 일처럼 보이지 않으면서 어쩐지 터무니없을 정도로 생산적인 일을 해내는 그 친구와 같습니다.
당신을 달래거나 정신을 희생하라고 요구하는 언어에 지쳤다면 Go가 가장 좋은 곳입니다. 시도해 보세요. 그러면 사무실에서 지나치게 열정적인 개발자가 될 수도 있습니다. 솔직히 말하면 좀 재미있지 않을까?
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3