Я написав невеликий движок у Go for OSX (використовуючи OpenGl для графічного вікна). Я маю певний досвід роботи з ігровими движками C ++ ( http://morganjeff.weebly.com/ ) і вирішив спробувати Перейти, прочитавши про деякі функції, які він пропонує.
На випуск Go 1.1 випуск go підтримує більшість функцій, які мені потрібні для створення ігрового двигуна (насправді ядро гри як двигун пропонує редакторам, а що ні), включаючи:
- Прив'язка функції учасника (для системи обміну повідомленнями)
- Відображення є вбудованим (корисно для серіалізації, зовнішньої підтримки інструменту тощо)
- Інтерфейси (для реалізації поліморфної поведінки для систем, компонентів тощо)
Деякі переваги використання Go (для великого проекту):
- Тестування вбудовано в мову (сюди входять контрольні тести та деякі твердження)
- Приклади легко додати до мови (і вони зібрані для коректності)
- Спеціальний код для архітектури легко додати (через умови іменування файлів)
- Профілювання вбудовано в мову
- вбудована версія імпорту (дозволяє додавати великі бінарні файли до окремого сховища від джерела, зберігаючи його версію та оновлення)
Деякі переваги використання Go в цілому:
- Легкий код рефактора
- Go підтримує різьблення (на відміну від C ++, який шарує його зверху)
- надшвидка швидкість компіляції зменшує потребу в підтримці мови мовлення сценаріїв
- статична система набору тексту (інтерфейси задовольняються шляхом набору качки неявно неявно)
- кілька повернених значень, названих параметрів, тегів атрибутів структури
- чудові вбудовані інструменти та документація
- керована мова
Деякі недоліки використання Go:
- Ні макросів, ні шаблонів
- Немає бібліотечної підтримки більш зрілих мов
- керована мова (вказано двічі за призначенням)
- НЕ ІДЕ
Існують способи отримати необмежену пам’ять в ході (імпорт "небезпечний"), і я посилаю статтю, яка показує, як програма переходу може бути профільована на пам'ять та швидкість. Загалом, твердження Go, що це сучасний C, видається дуже правдивим. Я думаю, що це "розумно" розроблено (з набагато більше причин, ніж я згадував), і, що ще важливіше, це добре документовано. Двигун, розроблений в Go, буде трохи іншим, ніж двигун, розроблений на C ++ (до чого я все-таки звикаю), але двигун Go вирішує багато проблем, які насправді не вирішені в C ++ (а саме паралелізм, складність мови C ++ s та неправильне використання успадкування).
Ось стаття, яку я пообіцяв:
http://blog.golang.org/2011/06/profiling-go-programs.html
-Джефе