मैंने Go for OSX (ग्राफिक्स विंडो के लिए OpenGl का उपयोग करके) में एक छोटा इंजन लिखा है। मुझे C ++ गेम इंजन ( http://morganjeff.weebly.com/ ) के साथ कुछ अनुभव है और कुछ सुविधाओं के बारे में पढ़ने के बाद गो को आज़माने का फैसला किया।
गो 1.1 रिलीज के रूप में मुझे एक गेम इंजन लिखने के लिए आवश्यक अधिकांश विशेषताओं का समर्थन मिला है (वास्तव में एक गेम कोर के रूप में एक इंजन संपादकों को सुझाव देता है और क्या नहीं) सहित:
- सदस्य फ़ंक्शन बाइंडिंग (संदेश प्रणाली के लिए)
- परावर्तन अंतर्निहित है (क्रमांकन के लिए उपयोगी, बाहरी उपकरण समर्थन, आदि)
- इंटरफेस (सिस्टम, घटकों, आदि के लिए बहुरूपी व्यवहार को लागू करने के लिए)
गो (एक बड़ी परियोजना के लिए) का उपयोग करने के कुछ लाभ:
- परीक्षण भाषा में बनाया गया है (इसमें बेंचमार्क परीक्षण और कुछ दावे शामिल हैं)
- उदाहरणों को भाषा में जोड़ना आसान है (और वे शुद्धता के लिए संकलित हैं)
- आर्किटेक्चर विशिष्ट कोड जोड़ना आसान है (फ़ाइल नामकरण परंपराओं के माध्यम से)
- प्रोफ़ाइल भाषा के लिए बनाया गया है
- बिल्ट-इन संस्करण आयात करना (बड़े बायनेरिज़ को स्रोत से एक अलग रिपॉजिटरी में जोड़ने की अनुमति देता है, जबकि इसे संस्करण और अद्यतित रखते हुए)
सामान्य रूप से गो का उपयोग करने के कुछ लाभ:
- रिफैक्टर कोड के लिए आसान
- गो थ्रेडिंग का समर्थन करता है (C ++ के विपरीत जिसने इसे शीर्ष पर रखा था)
- सुपर फास्ट संकलन गति स्क्रिप्टिंग भाषा समर्थन की आवश्यकता को कम करती है
- स्थैतिक टाइपिंग प्रणाली (इंटरफेस डक टाइपिंग के माध्यम से संतुष्ट हैं)
- कई रिटर्न मान, नामांकित पैरामीटर, संरचित विशेषताओं को टैग किया गया
- महान अंतर्निहित उपकरण और प्रलेखन
- प्रबंधित भाषा
गो का उपयोग करने के कुछ डाउनसाइड:
- कोई मैक्रोज़ या टेम्प्लेट नहीं
- अधिक परिपक्व भाषाओं का पुस्तकालय समर्थन नहीं है
- प्रबंधित भाषा (उद्देश्य पर दो बार सूचीबद्ध)
- कोई आईडीई नहीं
जाने में कच्ची मेमोरी प्राप्त करने के तरीके हैं (आयात "असुरक्षित") और मैं एक लेख को लिंक करूँगा जो दिखाता है कि कैसे एक कार्यक्रम को स्मृति और गति के लिए प्रोफाइल किया जा सकता है। सभी के सभी, गो का दावा है कि यह एक आधुनिक सी है बहुत सच लगता है। मुझे लगता है कि यह "स्मार्टली" डिज़ाइन किया गया है (बहुत अधिक कारणों से जैसा मैंने उल्लेख किया है) और, इससे भी महत्वपूर्ण बात यह है कि यह अच्छी तरह से प्रलेखित है। गो में डिज़ाइन किया गया एक इंजन C ++ में तैयार किए गए इंजन की तुलना में थोड़ा अलग होने वाला है (कुछ मैं अभी भी उपयोग किया जा रहा है), लेकिन गो इंजन बहुत सारी समस्याओं को हल करता है जो वास्तव में C ++ (अर्थात् समानतावाद) में हल नहीं होते हैं C ++ s भाषा की जटिलता, और वंशानुक्रम का गलत उपयोग)।
यहाँ लेख मैंने वादा किया है:
http://blog.golang.org/2011/06/profiling-go-programs.html
जेफ