Go for OSXで小さなグラフィックスを作成しました(グラフィックウィンドウにOpenGlを使用)。私はC ++ゲームエンジン(http://morganjeff.weebly.com/)の経験があり、Goが提供する機能のいくつかを読んだ後にGoを試してみることにしました。
Go 1.1リリースの時点で、goはゲームエンジンを作成するために必要なほとんどの機能をサポートしています(エンジンがエディターを示唆するゲームコアであり、そうではない)。
- メンバー関数バインディング(メッセージングシステム用)
- Reflectionが組み込まれています(シリアル化、外部ツールのサポートなどに役立ちます)
- インターフェイス(システム、コンポーネントなどの多態的な動作を実装するため)
Goを使用するメリット(大規模プロジェクトの場合):
- テストは言語に組み込まれています(これにはベンチマークテストといくつかのアサーションが含まれます)
- 例は言語に簡単に追加できます(そして、正確性のためにコンパイルされています)
- アーキテクチャ固有のコードは簡単に追加できます(ファイルの命名規則を使用)
- プロファイリングは言語に組み込まれています
- インポートのビルトインバージョン管理(大規模なバイナリをソースとは別のリポジトリに追加し、バージョン管理された最新の状態に保つことができます)
一般にGoを使用する利点:
- リファクタリングが簡単なコード
- Goはスレッド化をサポートしています(C ++とは異なり、その上に階層化されています)
- 超高速のコンパイル速度により、スクリプト言語サポートの必要性が軽減されます。
- 静的型付けシステム(インターフェイスは、暗黙的に別名鴨型付けによって満たされます)
- 複数の戻り値、名前付きパラメーター、タグ付き構造体属性
- 優れた組み込みツールとドキュメント
- 管理言語
Goを使用する場合の欠点:
- マクロやテンプレートはありません
- より成熟した言語のライブラリサポートはありません
- 管理言語(意図的に2回リストされています)
- IDEなし
生メモリをgoで取得する方法(「安全でない」をインポートする)があります。goプログラムをメモリと速度についてプロファイルする方法を示す記事をリンクします。全体として、Goがそれが現代のCであるという主張は非常に真実のようです。(私が述べたよりもはるかに多くの理由で)「スマートに」設計されており、さらに重要なこととして、十分に文書化されていると思います。Goで設計されたエンジンは、C ++で設計されたエンジン(まだ慣れているもの)とは少し異なりますが、GoエンジンはC ++で実際に解決されていない多くの問題を解決します(つまり、並列処理、 C ++言語の複雑さ、および継承の誤用)。
ここに私が約束した記事があります:http :
//blog.golang.org/2011/06/profiling-go-programs.html
-ジェフ