Я запускаю курс компьютерной графики, и я должен выбрать язык.
Выбор между C++ и Python. У меня нет проблемы с C++, Python является происходящей работой. Таким образом, я думал для потери работоспособности по дороге Python, с помощью pyopengl для графической части.
Я услышал, хотя, та производительность является проблемой.
Python / pyopengl достаточно сформировавшийся для оспаривания C++ на производительности?
Я понимаю, что это - съемка общим планом, но я хотел бы услышать Ваши мысли, события в использовании pyopengl.
Заранее спасибо.
Это ОЧЕНЬ зависит от содержания вашего курса компьютерной графики. Если вы делаете что-то вроде вводного курса, который я преподавал в прошлом, это в основном вращение кубов и сфер, некоторое наложение текстур и некоторая вертексная анимация, вот и все. В этом случае Python будет вполне адекватным, если предположить, что вы можете обойти Unpythonic (и, честно говоря, не-C ++) парадигму конечного автомата OpenGL.
Для таких вещей, как математические вычисления с матрицей, вы можете использовать Numpy, ядро которого написано на C и действительно работает довольно быстро. Вы будете работать быстрее, выполнять итерации быстрее и, скорее всего, получите больше удовольствия.
Однако, если вы изучаете какой-нибудь хардкорный, ультрасовременный курс компьютерной графики, состоящий из миллионов треугольников на сцену, со скином, анимацией, всем, придерживайтесь C ++.
Если ваш класс предоставил вам выбор, вероятно, можно с уверенностью сказать, что Python будет в порядке.
Если вы хотите применить свои знания в реальной работе в компьютерной графике, то почти все игры и графические движки написаны на C или C ++, а Python (или Lua) остается языком сценариев.
Python - отличный язык, но это не тот инструмент для графики. И если вы хотите сделать что-то удаленно продвинутое, вам придется использовать непифонические библиотеки, и в итоге вы получите уродливый код C, написанный на Python.
Python - это динамический язык, который интерпретируется и компилируется во время выполнения и как таковой не может иметь лучшую производительность, чем C++ - посмотрите этот пост для сравнения нескольких языков программирования.
Еще одна веская причина предпочесть C++ - параллельное выполнение. Многие задачи в CG можно оптимизировать, разделив их на несколько потоков, которые выполняются параллельно - когда-нибудь пробовали запустить новый поток с помощью Python?
Вот мой личный опыт:
Когда я впервые услышал о PyOpenGL, я был абсолютно взволнован . OpenGL на моем любимом языке? Иметь дело! Так что я начал самостоятельно изучать программирование 3D-графики.
Я просмотрел несколько руководств и книг, таких как NeHe и OpenGL SuperBible . Поскольку функции PyOpenGL идентичны функциям самого OpenGL (с очень незначительными отличиями), было несложно воспроизвести большинство примеров. Кроме того, у NeHe есть много исходного кода на Python, созданного другими.
Прошло немного времени после того, как (около 2 недель) я прочитал о Quaternions и сам реализовал его на Python. Теперь у меня есть среда с поддержкой GLSL с полными возможностями взаимодействия с 3D-камерой. Я сделал простой шейдер Фонга и использовал кватернионы для вращения камеры. У меня пока нет ни одного хита в исполнении.
Спустя несколько месяцев я вернулся к этому коду.
Я попытался реализовать Python Octree, и когда я перешел на 8 уровней (256x256x256 вокселей), для вычислений потребовалось более 2 ГБ ОЗУ, и через несколько минут это все еще не выполнено. Я понял, что когда вы храните много объектов в Python, это не просто простая структура, как в C ++. Именно здесь я понял, что мне нужно вычленить это, написать это на C ++, а затем снова склеить с помощью вызова Python.
Как только я закончу с этим, я сообщу вам, если я вспомню. ;]
(Отвечая на ваш вопрос, нет, Python никогда не заменит C ++. У этих двух языков разные цели и разные сильные стороны.)