Go for OSX'te (grafik penceresi için OpenGl kullanarak) küçük bir motor yazdım. C ++ oyun motorları ile ilgili bazı deneyimlerim var ( http://morganjeff.weebly.com/ ) ve denemeye karar verdi, sunduğu bazı özellikleri okuduktan sonra Git.
Go 1.1 sürümünden itibaren go, bir oyun motoru yazmak için ihtiyaç duyduğum özelliklerin çoğunu destekliyor (gerçekten bir motorun editörlerin önerdiği bir oyun çekirdeği).
- Üye işlevi bağlama (mesajlaşma sistemi için)
- Yansıtma yerleşiktir (serileştirme, harici araç desteği vb. İçin faydalıdır)
- Arabirimler (sistemler, bileşenler vb. İçin polimorfik davranışlar uygulamak için)
Go kullanmanın yararlarından bazıları (büyük bir proje için):
- Test, dilin içine inşa edilmiştir (bu, benchmark testlerini ve bazı iddiaları içerir).
- Dile örnekler eklemek kolaydır (ve doğruluk için derlenirler)
- Mimariye özel kod eklemek kolaydır (dosya adlandırma kuralları aracılığıyla)
- Profil dili için yerleşiktir
- dahili ithalat sürümleri (sürümlerini güncel ve güncel tutarken, kaynaklardan ayrı bir depoya büyük ikili dosyalar eklemenize izin verir)
Genel olarak Go kullanmanın bazı yararları:
- Refactor koduna kolay
- Go, diş açmayı destekler (üstüne yerleştirilmiş C ++ 'ın aksine)
- süper hızlı derleme hızı, kodlama dili desteğine olan ihtiyacı azaltır
- Statik yazım sistemi (arayüzler dolaylı olarak aka ördek yazarak gerçekleştirilir)
- Birden çok dönüş değeri, adlandırılmış parametreler, etiketlenmiş yapı özellikleri
- Harika yerleşik araçlar ve belgeler
- yönetilen dil
Go kullanmanın bazı olumsuz yönleri:
- Makro veya şablon yok
- Daha olgun dillerin kütüphane desteği yok mu?
- yönetilen dil (bilerek iki kez listelenmiştir)
- IDE YOK
Hareketsiz bellek elde etmenin yolları var ("güvensiz" içeri aktar) ve ben bir go programının bellek ve hız için nasıl profillenebileceğini gösteren bir makale bağlayacağım. Sonuç olarak, Go'nun modern bir C olduğuna dair iddia çok doğru görünüyor. Bence "akıllıca" tasarlanmış (bahsettiğimden çok daha fazla sebepten dolayı) ve daha da önemlisi iyi belgelenmiştir. Go'da tasarlanan bir motor, C ++ 'da tasarlanan bir motordan biraz daha farklı olacak (hala alıştığım bir şey), ancak Go motoru, C ++' da gerçekten çözülmeyen birçok sorunu çözüyor (yani paralellik, C ++ dilinin karmaşıklığı ve kalıtımın yanlış kullanılması).
İşte söz verdiğim makale:
http://blog.golang.org/2011/06/profiling-go-programs.html
-Jeff