Saya telah menulis mesin kecil di Go for OSX (menggunakan OpenGl untuk jendela grafis). Saya memiliki pengalaman dengan mesin game C ++ ( http://morganjeff.weebly.com/ ) dan memutuskan untuk mencoba Go setelah membaca tentang beberapa fitur yang ditawarkannya.
Pada rilis Go 1.1 go memiliki dukungan untuk sebagian besar fitur yang saya butuhkan untuk menulis mesin gim (benar-benar inti gim sebagai mesin yang menyarankan editor dan yang tidak) termasuk:
- Penjilidan fungsi anggota (untuk sistem pengiriman pesan)
- Refleksi sudah terpasang (berguna untuk serialisasi, dukungan alat eksternal, dll)
- Antarmuka (untuk menerapkan perilaku polimorfik untuk sistem, komponen, dll)
Beberapa manfaat menggunakan Go (untuk proyek besar):
- Pengujian dibangun ke dalam bahasa (ini termasuk tes benchmark dan beberapa pernyataan)
- Contoh mudah ditambahkan ke bahasa (dan dikompilasi untuk kebenaran)
- Kode spesifik arsitektur mudah ditambahkan (melalui konvensi penamaan file)
- Profil dibuat untuk bahasa
- versi bawaan impor (memungkinkan untuk menambahkan binari besar ke repositori terpisah dari sumber, sambil tetap versi dan mutakhir)
Beberapa manfaat menggunakan Go secara umum:
- Kode refactor mudah
- Go mendukung threading (tidak seperti C ++ yang melapisinya di atas)
- kecepatan kompilasi super cepat mengurangi kebutuhan akan dukungan bahasa scripting
- sistem pengetikan statis (antarmuka dipenuhi melalui pengetikan bebek alias secara implisit)
- beberapa nilai balik, parameter bernama, atribut struct yang ditandai
- alat dan dokumentasi bawaan yang hebat
- bahasa yang dikelola
Beberapa kerugian menggunakan Go:
- Tidak ada makro atau template
- Tidak memiliki dukungan perpustakaan untuk bahasa yang lebih matang
- bahasa yang dikelola (terdaftar dua kali dengan sengaja)
- TIDAK ADA IDE
Ada beberapa cara untuk mendapatkan memori mentah (impor "tidak aman") dan saya akan menautkan artikel yang menunjukkan bagaimana program go dapat diprofilkan untuk memori dan kecepatan. Semua dalam semua, klaim Go bahwa itu adalah C modern tampaknya sangat benar. Saya pikir itu "cerdas" dirancang (untuk banyak alasan daripada yang saya sebutkan) dan, yang lebih penting, itu didokumentasikan dengan baik. Mesin yang dirancang di Go akan sedikit berbeda dari mesin yang dirancang di C ++ (sesuatu yang saya masih terbiasa), tetapi mesin Go memecahkan banyak masalah yang tidak benar-benar diselesaikan di C ++ (yaitu paralelisme, kompleksitas bahasa C ++, dan penyalahgunaan pewarisan).
Inilah artikel yang saya janjikan:
http://blog.golang.org/2011/06/profiling-go-programs.html
-Jeff