의견.png

"고 (프로그래밍 언어)"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
28번째 줄: 28번째 줄:
 
==역사==
 
==역사==
  
2009년 11월에 Go가 발표되었다. 구글의 생산 시스템 중 일부 및 기타 기어븓ㄹ에 사용되고 있다.
+
2009년 11월에 Go가 발표되었다. 구글의 생산 시스템 중 일부 및 기타 기업들에 사용되고 있다.
 
Go는 다른 언어의 긍정적인 특징들을 유지하면서 공통이 되는 문제들을 해결할 새로운 프로그래밍 언어를 설계하기 위해 구글의 엔지니어 Robert griesemer, 롭 파이크, 켄 톰프슨에 의해
 
Go는 다른 언어의 긍정적인 특징들을 유지하면서 공통이 되는 문제들을 해결할 새로운 프로그래밍 언어를 설계하기 위해 구글의 엔지니어 Robert griesemer, 롭 파이크, 켄 톰프슨에 의해
 
실험적으로 시작되었다. 이 새로운 언어는 다음의 기능을 포함할 작정이었다.
 
실험적으로 시작되었다. 이 새로운 언어는 다음의 기능을 포함할 작정이었다.
37번째 줄: 37번째 줄:
 
*네트워킹 및 다중 처리를 지원할 것
 
*네트워킹 및 다중 처리를 지원할 것
  
나중에 인터뷰에서 언어 설계자 3명 모두 자신들이 C++의 복잡성을 싫어하며, 이로 인해 새로운 언어를 설계하는 계기가 되었다고 언급하였다.
+
나중에 인터뷰에서 언어 설계자 3명 모두 자신들이 C++의 복잡성을 싫어하며, 이로 인해 새로운 언어를 설계하는 계기가 되었다고 언급하였다.<ref>위키백과 - https://ko.wikipedia.org/wiki/Go_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)</ref>
 +
 
 +
==특징==
 +
 
 +
많은 사람들이 Go 언어를 두고 높은 생산성과 성능을 위한 언어라고 이야기한다. Go 언어의 주요 특징은 아래와 같다.
 +
 
 +
정적 타입, 강 타입
 +
C/C++, Java 와 같이 Compile Time 에 Type 결정이 이루어지며, 코드 내에서 암시적 형변환이 일어나지 않는다.
 +
 
 +
컴파일 언어
 +
C/C++, Java, C# 등과 같이 컴파일이 필요한 언어이다. Java 나 C#과 달리 실행 파일을 만들어낸다. 별도의 Runtime 환경이 필요 없어 실행 환경이 복잡하지 않다.
 +
 
 +
가비지 컬렉션
 +
실행파일 내에 Garbage Collector가 탑재됨.
 +
 
 +
병행성(Concurrency)
 +
Multi Thread, Multi Core 에 Go Routine이라는 단위의 함수실행을 한 Thread나 Core 별로 동시에 실행시킬 수 있다. Thread 와 Go Routine은 1:N 관계를 이룰 수 있다.
 +
 
 +
멀티코어 환경 지원
 +
Go Routine 간에 채널을 통해 통신하여 데이터를 공유하고 실행 순서를 제어할 수 있다. 제어는 Multi Thread 의 동기화와 비슷하다.
 +
 
 +
모듈화 및 패키지 시스템npm, pip, gem이나 Maven과 같은 모듈 의존성에 따른 패키지 관리를 언어 차원에서 지원. 인터넷 상의 패키지들을 바로 가져올 수 있다. import 키워드만 있으면 되며, go get이나 go install 명령으로 자동으로 패키지들을 가져온다.
 +
 
 +
import "github.com/kylelemons/go-gypsy/yaml"
 +
            ^        ^          ^    ^
 +
            |        |          |    `-- Package name
 +
            |        |          `-------- Project name
 +
            |        `------------------- Author's handle
 +
            `----------------------------- Hosting site
 +
 
 +
빠른 컴파일 속도
 +
C/C++ 은 헤더파일 처리 부담으로 컴파일 속도가 느리고 의존 관계가 복잡하다. Go는 헤더 파일이 없고 소스 코드를 패키지화하므로 변결 시 패키지만 재컴파일한다. 문법도 최대한 단순화하여 컴파일 속도도 빠르고 생산성이 좋다.<ref> Good joon's - https://goodjoon.tistory.com/241 [Good Joon]</ref>

2019년 7월 22일 (월) 15:17 판

이더리움(Ethereum)
디크레드(Decred)
시그마체인(Sigma Chain)
심버스(SymVerse)

(Go)는 2009년 11월 구글이 개발한 프로그래밍 언어이다. 고 언어, 고 랭귀지(Go language) 또는 간략히 고 랭(Go lang)이라고도 한다.

암호화폐이더리움디크레드시그마체인, 심버스 등의 개발에 고 언어가 사용되었다.

같이 보기


  의견.png 이 고 (프로그래밍 언어) 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.  

개요

Go는 2009년 구글이 개발한 프로그래밍 언어다. 가비지 컬렉션 기능이 있고, 병행성(concurrent)을 잘 지원하는 컴파일 언어다.[1]


역사

2009년 11월에 Go가 발표되었다. 구글의 생산 시스템 중 일부 및 기타 기업들에 사용되고 있다. Go는 다른 언어의 긍정적인 특징들을 유지하면서 공통이 되는 문제들을 해결할 새로운 프로그래밍 언어를 설계하기 위해 구글의 엔지니어 Robert griesemer, 롭 파이크, 켄 톰프슨에 의해 실험적으로 시작되었다. 이 새로운 언어는 다음의 기능을 포함할 작정이었다.

  • 정적 타이핑 및 대형 시스템으로의 스케일 가능할 것 (마치 자바와 C++처럼)
  • 너무 많은 필수적인 키워드와 반복 없이도 생산적이고 가독성이 좋을 것 (동적 언어와 같이 가벼움)
  • 통합 개발 환겨이 필요하지 않지만 지원도 가능할 것
  • 네트워킹 및 다중 처리를 지원할 것

나중에 인터뷰에서 언어 설계자 3명 모두 자신들이 C++의 복잡성을 싫어하며, 이로 인해 새로운 언어를 설계하는 계기가 되었다고 언급하였다.[2]

특징

많은 사람들이 Go 언어를 두고 높은 생산성과 성능을 위한 언어라고 이야기한다. Go 언어의 주요 특징은 아래와 같다.

정적 타입, 강 타입 C/C++, Java 와 같이 Compile Time 에 Type 결정이 이루어지며, 코드 내에서 암시적 형변환이 일어나지 않는다.

컴파일 언어 C/C++, Java, C# 등과 같이 컴파일이 필요한 언어이다. Java 나 C#과 달리 실행 파일을 만들어낸다. 별도의 Runtime 환경이 필요 없어 실행 환경이 복잡하지 않다.

가비지 컬렉션 실행파일 내에 Garbage Collector가 탑재됨.

병행성(Concurrency) Multi Thread, Multi Core 에 Go Routine이라는 단위의 함수실행을 한 Thread나 Core 별로 동시에 실행시킬 수 있다. Thread 와 Go Routine은 1:N 관계를 이룰 수 있다.

멀티코어 환경 지원 Go Routine 간에 채널을 통해 통신하여 데이터를 공유하고 실행 순서를 제어할 수 있다. 제어는 Multi Thread 의 동기화와 비슷하다.

모듈화 및 패키지 시스템npm, pip, gem이나 Maven과 같은 모듈 의존성에 따른 패키지 관리를 언어 차원에서 지원. 인터넷 상의 패키지들을 바로 가져올 수 있다. import 키워드만 있으면 되며, go get이나 go install 명령으로 자동으로 패키지들을 가져온다.

import "github.com/kylelemons/go-gypsy/yaml"

            ^         ^          ^     ^
            |         |          |     `-- Package name
            |         |          `-------- Project name
            |         `------------------- Author's handle
            `----------------------------- Hosting site

빠른 컴파일 속도

C/C++ 은 헤더파일 처리 부담으로 컴파일 속도가 느리고 의존 관계가 복잡하다. Go는 헤더 파일이 없고 소스 코드를 패키지화하므로 변결 시 패키지만 재컴파일한다. 문법도 최대한 단순화하여 컴파일 속도도 빠르고 생산성이 좋다.[3]