반응형
GoLang
C++의 복잡함이 싫어, 2009년 11월에 구글에서 처음 발표된 후 2012년 3월에 정식 발표된 프로그래밍 언어
Go는 매년 순위가 오르는 모습을 보여주고 있고
2023년 2분기에 Pull Requests 수로는 C++을 이기는 모습을 보여주고 있습니다.
특징(장점)
- Go는 고수준 언어이다.
- Go는 정적 컴파일 언어이지만 컴파일 속도가 매우가 빨라 인터프리터처럼 사용할 수 있다.
- Go는 타 언어보다 더 까다로운 강타입 언어이다.
- Go는 가비지 컬렉터을 가지고 있다.
- Go는 컨텍스트 스위칭 비용이 발생하지 않는다.
고수준 언어 : 이전 프로그래밍 언어보다 사람의 의사소통과 비슷한 언어, 현재 사용되는 언어 대부분이 고수준 언어이다.
정적 컴파일 언어 : 코드를 컴파일하여 실행파일(.exe)로 만드는 언어
강타입 언어 : 서로 다른 타입 간에 연산이 있을 때 관대하게 형변환을 해주지 않고 엄격하게 진행하는 언어, Go는 타 언어보다 더 까다롭다.
가비지 컬렉터 : 메모리가 사용된 부분을 자동으로 해제시켜주는 역할, 원래 가바지 컬랙션이 존재하게 될 경우 CPU를 사용하여 느려지지만 Go에 경우 가바지 컬랙션이 있는 언어 중 상위의 성능을 나타냄
컨텍스트 스위칭 비용 : 하나의 CPU 코어가 여러 개의 스레드를 전환하면서 수행될 때 발생하는 비용이지만 Go에서는 CPU 코어마다 스레드를 하나만 할당하기에 비용이 발생하지 않는다, 스레드에 매핑되는 고루틴이 바뀌는 방식
개념
Go의 개념은 타 언어의 비해 적습니다.
개념 | 존재여부 | 설명 |
클래스 | x | 클래스는 없지만 비슷한 역할을 하는 구조체를 지원 |
상속 | x | 상속을 지원하지 않음 |
메서드 | o | 구조체가 메서드를 가질 수 있음 |
인터페이스 | o | 상속은 없지만 인터페이스는 존재 |
익명 함수 | o | 함수 리터럴이라는 이름으로 제공 |
가비지 컬렉터 | o | 고성능 카비지 컬렉터 지원 |
포인터 | o | 메모리 주소를 가르키는 포인터 존재 |
제네릭 프로그래밍 | o | 처음에는 존재하지 않았으나 2022년 2월에 릴리즈된 1.18 부터 지원 |
네임스페이스 | x | 모든 코드는 패키지 단위로 분리되서 구분 |
단점
장점은 위에 특징으로 설명했듯이 배우기 쉽고, 정적 컴파일이면서 가바지 컬렉션이 있지만 속도가 빠른 게 장점입니다.
단점은 아래와 같습니다.
- 고성능 연산에 사용하기엔 C++ 보다 느리다.
- 저수준 시스템 개발에서는 가비지 컬렉션과 고루틴을 지원하기 때문에 런타임이 무겁기에 사용이 불가능하다
- 널 포인터나 안전하지 않은 타입 캐스팅에 대한 대처가 아직 없다.
반응형
'Go Lang > Study' 카테고리의 다른 글
[GoLang] 구조체 선언 시 메모리 최적화 하기 (1) | 2023.10.29 |
---|---|
[GoLang] 실수 오차 없애기 (1) | 2023.10.28 |
[GoLang] .env 파일에 DB 접속 정보를 저장하자 (0) | 2023.10.04 |
[GoLang] xls 파일을 xlsx 파일로 바꿔주자 (0) | 2023.09.17 |
[GoLang] 자료형을 초과한 큰 수를 계산해보자 (0) | 2023.09.01 |