Go for OSX에서 작은 엔진을 작성했습니다 (그래픽 창에 OpenGl 사용). C ++ 게임 엔진 ( http://morganjeff.weebly.com/ )에 대한 경험이 있으며 제공하는 기능 중 일부를 읽은 후 Go를 사용해보기로 결정했습니다.
Go 1.1 릴리스부터 go는 다음을 포함하여 게임 엔진을 작성하는 데 필요한 대부분의 기능 (실제로 엔진이 에디터를 제안하는 게임 코어)을 지원합니다.
- 멤버 함수 바인딩 (메시징 시스템 용)
- 리플렉션 내장 (직렬화, 외부 도구 지원 등에 유용)
- 인터페이스 (시스템, 구성 요소 등의 다형성 동작 구현)
대규모 프로젝트의 경우 Go를 사용하면 다음과 같은 이점이 있습니다.
- 테스트는 언어에 내장되어 있습니다 (벤치 마크 테스트 및 일부 어설 션 포함)
- 예제는 언어에 쉽게 추가 할 수 있으며 정확성을 위해 컴파일됩니다.
- 아키텍처 별 코드를 쉽게 추가 할 수 있습니다 (파일 이름 지정 규칙을 통해)
- 프로파일 링은 언어에 내장되어 있습니다
- 내장 된 가져 오기 버전 관리 (버전을 최신 상태로 유지하면서 소스에서 별도의 저장소에 큰 바이너리를 추가 할 수 있음)
일반적으로 Go를 사용하면 다음과 같은 이점이 있습니다.
- 코드 리팩터링 용이
- Go는 스레딩을 지원합니다 (C ++과 달리
- 초고속 컴파일 속도로 스크립팅 언어 지원 필요성 감소
- 정적 타이핑 시스템 (인터페이스는 오리 타이핑을 통해 암시 적으로 만족합니다)
- 여러 반환 값, 명명 된 매개 변수, 태그가 지정된 구조체 속성
- 훌륭한 내장 도구 및 문서
- 관리되는 언어
Go를 사용하면 몇 가지 단점이 있습니다.
- 매크로 나 템플릿이 없습니다
- 보다 성숙한 언어에 대한 라이브러리 지원이 없습니다
- 관리되는 언어 (의도적으로 두 번 나열)
- IDE 없음
원시 메모리를 가져 오는 방법 (가져 오기 "안전하지 않은")이 있으며 go 프로그램을 메모리 및 속도에 대해 프로파일 링하는 방법을 보여주는 기사를 링크하겠습니다. 대체로 Go의 주장은 그것이 현대적인 C라는 것이 매우 사실 인 것 같습니다. 나는 그것이 "스마트하게"디자인 된 것 (앞서 언급 한 것보다 훨씬 더 많은 이유로)이며, 더 중요하게는 잘 문서화되어 있다고 생각합니다. Go로 설계된 엔진은 C ++로 설계된 엔진 (아직 익숙하지 않은 엔진)과 약간 다르지만 Go 엔진은 C ++에서 실제로 해결되지 않은 많은 문제 (즉, 병렬 처리, C ++의 언어의 복잡성과 상속의 잘못된 사용).
내가 약속 한 기사는 다음과 같습니다.
http://blog.golang.org/2011/06/profiling-go-programs.html
-제프