Медленный C++, Python быстро? (с точки зрения времени разработки) [закрытый]

Я использовал T4 для генерации:

  • прокси (время разработки, для внедрения / упаковки кода мониторинга / ведения журнала / ... в очень специфические открытые API).
  • генерация интерфейса для отображения интерфейса / класса один на один
  • заменяет код отражения на «непосредственно / реальный» вызывающий код (преимущество обслуживания кода отражения, но производительность реального кода), например, когда разрешение доступа к свойствам через индексатор или что-то в этом направлении.
  • генерация xml для проекта java (не удалось найти решение для java, подобное T4, легко распространяемое внутри компании, T4 легко, потому что оно встроено и его можно запускать из командной строки)
  • генерировать перечисления из основной базы данных (мы сгенерировали их как для базы с дельфи-кодом, так и для базы .Net)
17
задан Dominic Rodger 10 June 2009 в 20:09
поделиться

12 ответов

Я слышал эти жалобы на C ++ раньше, но дело в том, что программирование на любом языке, с которым вы незнакомы, отнимает много времени.

Хороший программист на C ++, вероятно, сможет запустить приложение намного быстрее, чем нормальный программист на Python, и наоборот.

Я думаю, что C ++ часто имеет плохую репутацию, потому что он позволяет вам получить гораздо более низкий уровень - указатели, управление памятью и т.д., и если вы не привыкли думать о таких вещах, это может занять некоторое время. Если вы привыкли работать в такой среде, это может стать вашей второй натурой.

Если выбор языка не является чем-то навязанным вам вашей компанией, командой, клиентом и т. Д., Я обычно рекомендую людям использовать тот язык, которым они больше всего владеют. комфортно с ИЛИ, наиболее заинтересованным в получении дополнительной информации. Если вас беспокоит скорость, взгляните на кривую изучения каждого языка и свой прошлый опыт. С ++, как правило, требует более высокого уровня обучения, но это тоже зависит от человека.

Я знаю, что это не ответ.

11
ответ дан 30 November 2019 в 10:19
поделиться

Между C ++ и Python есть две вещи, которые повлияют на ваше время -разработать любой проект, в том числе и игру. Есть сами языки и библиотеки. Я до некоторой степени играл с SDL и заглядывал в PyGame, и для вашего конкретного случая я не думаю, что библиотеки будут иметь большое значение. Поэтому я сосредоточусь на самих языках.

Python - это динамически типизированный, язык со сборкой мусора. C ++ - это язык со статической типизацией, не использующий сборщик мусора. Это означает, что в C ++ много времени на разработку уходит на управление памятью и работу со структурой типов. Это дает вам много возможностей, но вопрос в том, действительно ли они вам нужны?

Если вы хотите написать простую игру с базовой графикой и хорошим геймплеем, то я не думаю, что вам действительно нужно все мощь, которую даст вам C ++. Если вы хотите написать что-то, что расширит границы, стать следующей игрой из списка лучших, стать следующей MMO, поместиться на консоли или портативном устройстве, тогда вам, вероятно, понадобится сила, которую предоставляет C ++.

Это означает, что в C ++ много времени на разработку уходит на управление памятью и работу со структурой типов. Это дает вам много возможностей, но вопрос в том, действительно ли они вам нужны?

Если вы хотите написать простую игру с базовой графикой и хорошим геймплеем, то я не думаю, что вам действительно нужно все мощь, которую даст вам C ++. Если вы хотите написать что-то, что расширит границы, стать следующей игрой из списка лучших, стать следующей MMO, поместиться на консоли или портативном устройстве, тогда вам, вероятно, понадобится сила, которую предоставляет C ++.

Это означает, что в C ++ много времени на разработку уходит на управление памятью и работу со структурой типов. Это дает вам много возможностей, но вопрос в том, действительно ли они вам нужны?

Если вы хотите написать простую игру с базовой графикой и хорошим геймплеем, то я не думаю, что вам действительно нужно все мощь, которую даст вам C ++. Если вы хотите написать что-то, что расширит границы, стать следующей игрой из списка лучших, стать следующей MMO, поместиться на консоли или портативном устройстве, тогда вам, вероятно, понадобится сила, которую предоставляет C ++.

Не думаю, что вам действительно нужна вся мощь, которую даст вам C ++. Если вы хотите написать что-то, что расширит границы, стать следующей игрой из списка лучших, стать следующей MMO, поместиться на консоли или портативном устройстве, тогда вам, вероятно, понадобится сила, которую предоставляет C ++.

Не думаю, что вам действительно нужна вся мощь, которую даст вам C ++. Если вы хотите написать что-то, что расширит границы, стать следующей игрой из списка лучших, стать следующей MMO, поместиться на консоли или портативном устройстве, тогда вам, вероятно, понадобится сила, которую предоставляет C ++.

24
ответ дан 30 November 2019 в 10:19
поделиться

Сила Python в том, что он позволяет вам сосредоточиться больше о проблеме, чем о тестировании низкоуровневых проблем, таких как выделение памяти. Я не могу сосчитать, сколько раз тратились дни разработки на поиск утечек памяти на C или C ++. Преимущество всех языков высокого уровня.

Python очень прост в изучении по сравнению с C ++, поэтому вы можете намного быстрее выполнять базовые задачи программирования. Следовательно, вы также быстрее переходите к более сложным задачам.

C ++ обладает большой мощностью, но имеет много способов выстрелить себе в ногу по сравнению с Python (не говоря уже о том, что это невозможно сделать в Python).

Цикл компиляции / отладки иногда может устареть в C ++ в зависимости от того, что вы пытаетесь сделать. Хотя технически говоря, каждый раз, когда вы запускаете сценарий Python, он сам по себе «компилируется», это просто более быстрый цикл. Хорошая IDE может помочь решить эту проблему именно в Python, автоматически проверяя ваш код на наличие синтаксических ошибок, пока вы его набираете.

Если у вас есть код, который вы хотите протестировать в более крупном проекте, иногда бывает сложно изолировать его для тестирования. . В то время как хороший интерпретатор Python, такой как IPython , позволяет легко протестировать небольшой фрагмент кода и посмотреть, как ведет себя язык, и вставить его в файл.

Python также очень хорошо взаимодействует с существующим C / Код на C ++ множеством способов. Таким образом, если новый модуль Whizbang Python, который вы создали, действительно медленный, вы можете добавить его в C / C ++, а затем обернуть его Python через ctypes , Boost :: Python , или SWIG .

И, что самое главное, Python поставляется с отличной стандартной библиотекой, в которой есть много вещей, разработанных для вас. Просто нужно сложить все вместе! За ним стоит большое сообщество, поэтому, если его нет в стандартной библиотеке, есть большая вероятность, что кто-то решил проблему ( PyGame , Numpy , SciPy , Pyserial , PyWin и т. Д.) Для вас. Вы можете просто погуглить, взять и вставить код прямо в свою программу ... вперед!

15
ответ дан 30 November 2019 в 10:19
поделиться

Python имеет большие преимущества перед языками программирования, такими как C ++. Я сам много программировал на C ++, C и других языках программирования. В последнее время я также программирую на Python, и он мне очень понравился!

Вы можете быстро начать с Python. Поскольку ему довольно просто научиться (по крайней мере, имея некоторый опыт программирования и достаточно абстрактного мышления), вы можете быстро добиться успеха. Кроме того, поведение, подобное сценарию, упрощает запуск, а также позволяет быстро протестировать некоторые вещи в интегрированной оболочке. Это также может быть полезно для отладки.

Весь язык упакован мощными функциями и имеет хороший и довольно полный набор библиотек.

Был аргумент, что с «правильной библиотекой» вы можете разрабатывать на C ++ так же быстро, как и на Python. Это может быть (частично), но я сам никогда не испытывал этого, потому что такие библиотеки редки. У меня также была большая библиотека, но мне все еще не хватало многих ценных функций C ++. Так называемая "стандартная библиотека шаблонов" STL, на мой взгляд, еще больше усугубляет ситуацию. Это действительно мощная библиотека. Но он также настолько сложен, что добавляет сложности дополнительному языку программирования к C ++. Мне это действительно не нравилось, и в компании, в которой я работал, было потеряно много рабочего времени, потому что компилятор не мог выдавать полезные сообщения об ошибках в случае ошибок в STL.

Python другой. Вместо того, чтобы поставить на трон «скорость программы» - жертвовать всем остальным (как это делает C ++ и особенно STL) - он ставит на первое место «скорость разработки». Язык дает вам мощный инструментарий и сопровождается огромной библиотекой. Когда вам нужна скорость, вы также можете реализовать критичные ко времени вещи на C или C ++ и вызвать их из Python.

Существует также по крайней мере одна большая онлайн-игра, реализованная на Python.

2
ответ дан 30 November 2019 в 10:19
поделиться

Это отнимает много времени, потому что в C ++ приходится иметь дело с более низкоуровневыми задачами. В Python вы можете сосредоточиться на разработке самой игры вместо того, чтобы заниматься управлением памятью и т. Д.

2
ответ дан 30 November 2019 в 10:19
поделиться

есть много вещей, которые увеличивают время разработки С ++. Его нижний уровень содержит указатели, разные библиотеки для разных систем, систему типов и другие, которые, я уверен, мне не хватает.

2
ответ дан 30 November 2019 в 10:19
поделиться

Краткий ответ

Да, python быстрее с точки зрения времени разработки. В реальной жизни есть много примеров, подтверждающих это. Однако вы не хотите создавать движок для 3D-графики на Python.

1
ответ дан 30 November 2019 в 10:19
поделиться

Я бы больше сосредоточился на выборе фреймворка для создания игры, чем на попытке выбрать язык. Если цель не состоит в том, чтобы узнать, как игры работают изнутри и снаружи, вы захотите использовать фреймворк. Попробуйте пару и выберите тот, который соответствует вашим требованиям и нравится вам.

После того, как вы выбрали фреймворк, выбор языка становится легким - используйте язык, для которого фреймворк написан.

Там Есть много вариантов игровых фреймворков на C ++ - pygame работает для python. Многие из них также работают с другими языками / инструментами (включая .NET, Lua и т. Д.)

0
ответ дан 30 November 2019 в 10:19
поделиться

Написание одного и того же кода почти на всех языках высокого уровня занимает примерно одинаковое количество времени. Выигрыш в том, что на некоторых языках легче использовать код других людей. Во многих приложениях Python / Ruby / Perl вы пишете 10% кода и импортируете библиотеки для выполнения остальных 90%. Это сложнее в C / C ++, поскольку библиотеки имеют разные интерфейсы и другие несовместимости.

C ++ против Python - это довольно личный выбор. Лично я чувствую, что теряю больше времени из-за отсутствия системы классов C / Java (больше ошибок времени выполнения / времени отладки, не имеет такого хорошего автозаполнения, нужно делать больше документации и оптимизации), чем я получаю (не имея написать интерфейсы / функцию заглушки и меньше беспокоиться об управлении памятью). Другие думают прямо противоположное.

В конце концов, это, вероятно, зависит от типа игры. Если ваш процессор интенсивно переходит на C ++ (возможно, с языком сценариев, если это имеет смысл). В противном случае используйте любой язык, который вы предпочитаете

2
ответ дан 30 November 2019 в 10:19
поделиться

Есть ли у вас вообще опыт программирования? Если нет, я бы начал с Python, который легче освоить, даже если он не лучший инструмент для разработки игр. Если вы решите программировать игры для жизни, вам, вероятно, в какой-то момент придется перейти на C ++.

0
ответ дан 30 November 2019 в 10:19
поделиться

Обратите внимание, что SDL в настоящее время медленный, потому что он в основном не использует аппаратное ускорение. SFML является альтернативой по выбору и также доступен в Python.

0
ответ дан 30 November 2019 в 10:19
поделиться

Зачем ограничивать себя этими двумя вариантами? С C # или Java вы получаете доступ к огромной коллекции полезных библиотек, а также к сборке мусора и (в случае C #) JIT-компиляции.

Кроме того, вы говорите, что хотите заняться разработкой игр, но из вашего описание задачи похоже, что вы также собираетесь написать свой собственный движок. Это часть упражнения? В противном случае вам обязательно стоит взглянуть на доступные инди-движки - многие из них дешевы или платны, и имеют открытый исходный код.

Излишне говорить, что работа с существующим движком определенно быстрее, чем работа с нуля :)

0
ответ дан 30 November 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: