-
[GOLANG 왕초보 기초 1장] 고언어 기초배움/GOLANG 2023. 12. 7. 21:39반응형
블록체인이 관심이 생겨서 프로그래밍을 하나도 모르는 내가 프로그램 언어를 공부하기 시작했다. 패스트캠퍼스 강의가 좋아보여 수강하고 있지만 문과 출신인지라 GOLANG이 나오면서 부터 1강을 소화하는데 5일이 걸렸다. 강사분도 나같은 초짜를 위해 어떤 버튼을 눌러야 하는지 하나하나 알려주는것은 너무도 곤욕스러울 것이다. 프로그래밍 왕초보분들, 초중생들도 정말 쉽게 이해할수 있도록 공부한 개념을 함께 공유하기로 한다.
1. GOLANG 이란 무엇인가?
처음 GOLANG이란 이야기를 들었을 때, 이건 뭔가 싶었다. 너무 기본이라 강의에서 소개조차 안하는 기본이다. GOLANG은 C언어, 자바, 파이썬과 같이 일종의 프로그램 언어라고 한다. GOLANG = GO Language = 고언어 라고 생각하면 쉽다.
2. GOLANG 누가 만들었는가? 간결한 문법과 빠른 컴파일
GOLANG은 구글에서 로버트, 롭, 켄이 ( Robert Griesmer, Rob Pike, Ken Thompson) C언어, 자바를 대채할 프로그래밍 언어를 만들었다고한다. 우선 GOLANG은 '총 25개의 간결한 문법으로 구성'되어 있는데 C가 27개, C++이 84개에 비하면 초보자도 쉽게 다가가기에도 부담이 없는 정도이다.
또, GOLANG 의 중요한 개념인 '컴파일러(Compiler)가 빠르다' 라고 하는 말이 있다. 컴파일러가 무엇인가? 쉽게 말하면 컴파일러는 컴퓨터 언어로 쓰인 프로그램을 컴퓨터가 이해하고 실행할 수 있는 형태로 바꿔주는 것이라고 한다. 프로그래밍 언어를 작성하면 바로 컴퓨터가 읽어내는 것인 줄 알았는데 아니라 한번 더 컴퓨터가 이해할 수 있도록 바꿔주는 작업이 필요하다고 하다고 한다.
그런데 기존 프로그래밍 언어들은 이 작업 속도가 너무 느렸던 것이다. 그래서 간결한 언어문법과 빠른처리속도를 위해 GOLANG이 개발 된 것이다.
3. GOLANG은 어디에 쓰이는가?
GOLANG은 특히 빠른 속도, 메모리 최적화, 병행처리가 가능하여 매우 규모가 큰 네트워크와에 사용된다고 한다. 넷플릭스, 클라우드서비스, 우버, 블록체인이 전세계에서 공유 되는 것을 생각해보면 된다. 이렇게 컴퓨터들이 서로 정보를 빠르게 주고받으며 잘 협력할 수 있도록 도와주는 언어라고 생각하면된다. 우리가 큰 프로젝트를 할때, 각 부서가 서로 잘 소통하고 협력해야 일이 빠르고 잘 진행 되는 것 처럼, 컴퓨터도 그렇게 서로 정보를 주고받으며 일을 처리하도록 GOLANG이 도와준다고 생각하면 된다.
참 고 자 료
자바의 스레드와 고랭의 고루틴은 각각 그 언어에서 프로그램을 실행하는데 사용되는 기본 단위들입니다. 이들은 프로그램이 여러 작업을 동시에 처리할 수 있도록 도와주는 역할을 합니다. 다음의 예를 통해 알아보면 좀 더 쉽게 이해할 수 있다.
자바의 스레드와 효율성
- 자바 스레드: 자바의 스레드는 음식점에서 각자 다른 테이블을 담당하는 여러 웨이터들처럼 동작합니다. 이 경우 각 웨이터(스레드)는 자신의 테이블만 관리하기 때문에 테이블 간의 혼란이 없습니다. 하지만, 이 방식의 단점은 많은 웨이터를 고용해야 한다는 것이죠. 즉, 많은 자원(웨이터)과 조정(관리)이 필요합니다. 각 웨이터가 본인의 테이블에만 집중하기 때문에, 한 테이블에서 일이 끝나도 다른 테이블에서 도와주기 어렵습니다. 이는 자원의 비효율적 사용으로 이어질 수 있어요.
고랭의 고루틴과 효율성
- 고루틴: 반면에 고랭의 고루틴은 하나의 웨이터가 여러 테이블의 작은 업무들을 빠르게 번갈아 가며 처리하는 것과 같습니다. 이 웨이터는 필요에 따라 각 테이블 사이를 빠르게 이동하며, 여러 작업을 효율적으로 처리합니다. 이 방식의 장점은 한 웨이터(고루틴)가 여러 테이블의 다양한 요구를 동시에 처리할 수 있다는 것이에요. 이렇게 되면, 같은 양의 일을 처리하기 위해 필요한 웨이터의 수가 줄어들고, 각 웨이터의 시간도 효율적으로 사용됩니다. 고루틴은 작은 메모리 공간을 사용하고, 웨이터 간의 전환도 빠르기 때문에 전체적으로 자원을 더 효율적으로 사용할 수 있기에 ' 네트워크 서비스나 복잡한 동시 처리가 필요한 시스템에서 유용' 하다.
결론
- 효율성 비교: 자바의 스레드는 각각 독립된 작업을 처리하는 데 효과적이지만, 많은 자원을 필요로 합니다. 반면에, 고랭의 고루틴은 하나의 스레드 안에서 여러 작업을 효율적으로 전환하며 처리할 수 있어, 자원을 더 적게 사용하고 관리가 더 간단해집니다. 고루틴은 특히 작은 작업들이 많고, 이 작업들이 빠르게 전환되어야 하는 상황에서 매우 효율적입니다.이렇게 보면, 고루틴의 방식은 같은 작업을 더 적은 자원으로, 더 빠르고 효율적으로 처리할 수 있다는 장점이 있습니다.
반응형'배움 > GOLANG' 카테고리의 다른 글
[GO Beginner Basics Chapter 3] Installing GO, Visual Studio, and GitHub Using Homebrew Commands Part 2 (0) 2023.12.10 [GO언어 왕초보 기초 3장] 홈브류 명령어로 GO, 비주얼스튜디오, 깃허브 설치하기 2편 (0) 2023.12.10 [GO Beginner Basics Chapter 2] Installing Homebrew (Solving Errors) Part 1 (0) 2023.12.09 [GOLANG 왕초보 기초 2장] 홈브류 homebrew 설치하기 (오류해결) 1편 (0) 2023.12.09 [GO beginner_Chapter.1] What is GOLANG? (1) 2023.12.07