C уже давно стал стандартным языком для игр и графического программного обеспечения. И на то была реальная причина — работа с графикой в реальном времени и физикой требует высокой производительности. Обработка геометрии, управление буферами, матричные вычисления — все это требует времени.
А как насчет логики высокого уровня? Игровая механика, пользовательский интерфейс, управление хранилищем, сетевые запросы? Стабильность и безопасность там гораздо более востребованы, чем скорость.
Мы можем реализовать функции, требующие высокой производительности, на компилируемом языке, например C, и вызывать их из программы, написанной на динамическом языке, например Python.
Но сегодня у нас уже есть хорошо документированные и простые в использовании библиотеки для Python (pygame, pyopengl, pyassimp, pybullet, numpy), которые реализованы в основном на C/C и предоставляют функции для тяжелых вычислений. или физика/графика в частности. Возможно, мы никогда не столкнемся с необходимостью реализовать такие библиотеки самостоятельно.
Принято считать, что языки со сборкой мусора, такие как Java или C#, медленнее C и не отвечают требованиям для тяжелых вычислений. Это, конечно, неправда.
В некоторых особых случаях C может превосходить Java или C# по производительности на 20-30%, но когда дело доходит до абстракций времени выполнения, таких как динамическая диспетчеризация функций, взаимодействие языков, асинхронные задачи, управление текстом или абстрактными коллекциями, Java и C# показывают гораздо более высокую эффективность, чем C.
Кроме того, мы можем запускать наши программы на Python в одной среде выполнения с Java или C#, используя Jython или IronPython. Он дает множество преимуществ, таких как общая память со сборкой мусора, система типов и простой доступ к библиотекам C# или Java прямо из коробки. На Java реализованы такие хорошие динамические языки, как Clojure и Groovy, которые имеют полный доступ к библиотеке классов Java и обладают ранее упомянутыми преимуществами.
Сегодня персональные компьютеры намного быстрее, чем 15-20 лет назад. Но большинство настольных программ или игр работают не так быстро, как ожидалось (несмотря на то, что они по-прежнему в основном реализованы на C/C). Сегодня нам нужны хорошие алгоритмы и эффективные подходы гораздо больше, чем просто скорость языка. Функция с постоянной сложностью на Python более предпочтительна, чем функция с линейной сложностью на C. Рисовать 100 деревьев по 15 строк кода Python предпочтительнее, чем рисовать 500 деревьев по 300 строк кода C.
Не так уж важно, какой язык вы используете, когда у вас еще нет игры, верно?
Создание игры на C гораздо более требовательно и утомительно, чем то же самое на Python или Ruby. Когда вы создадите 1 игру на C , вы создадите 10 игр на Python. Когда вы создадите 5 игр на Python, это будет 0 игр на C .
Давайте позаботимся об играх и веселье, иначе какой в этом смысл?
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3