С++ медленно, питон быстро? (с точки зрения времени разработки)
Я собираюсь сделать несколько простых игр с двумя играми, но я еще не выбрал язык. Многие люди рекомендуют либо С++ с SDL, либо python с pygame. Я продолжаю слышать, что разработка на С++ довольно медленная, а время разработки с Python довольно быстро.
В любом случае, может ли кто-нибудь объяснить это? Что именно делает разработку на С++ столь трудоемкой? Программы, которые я создал, были Project Euler-style, поскольку они очень короткие и основанные на математике, поэтому у меня нет опыта в крупных проектах.
Ответы
Ответ 1
Есть две вещи, которые имеют отношение между С++ и Python, которые повлияют на ваше время для разработки любого проекта, включая игру. Есть сами языки и библиотеки. Я играл с SDL в некоторой степени и заглядывал в PyGame, и для вашего конкретного экземпляра я не думаю, что библиотеки будут значительным фактором. Поэтому я сосредоточусь на самих языках.
Python - это динамически типизированный, собранный мусором язык. С++ - это статически типизированный, не содержащий мусора язык. Это означает, что на С++ большая часть вашего времени разработки будет потрачена на управление памятью и работу с вашей структурой типа. Это дает вам много силы, но вопрос в том, действительно ли вам это нужно?
Если вы хотите написать простую игру с некоторой базовой графикой и неплохим игровым процессом, то я не думаю, что вам действительно нужна вся сила, которую даст вам С++. Если вы хотите написать что-то, что будет толкать конверт, быть следующей игрой A-list, быть следующей MMO, вписываться в консоль или карманное устройство, тогда вам, вероятно, понадобится сила, которую дает С++.
Ответ 2
Сила Python - это способность позволить вам больше сосредоточиться на проблеме, чем иметь дело с тестированием проблем низкого уровня, таких как распределение памяти. Я не могу подсчитать, сколько раз дней разработки были потрачены впустую, отслеживая утечки памяти на C или С++. Преимущество всех языков высокого уровня.
Python очень легко учиться по сравнению с С++, поэтому вы можете быстрее ускорить выполнение основных задач программирования. Таким образом, вы также будете быстрее перемещаться в сложные задачи.
С++ обладает большой мощностью, но имеет множество способов стрелять в ногу по сравнению с Python (не говоря, что это невозможно сделать на Python).
Цикл компиляции/отладки может иногда стареть на С++ в зависимости от того, что вы пытаетесь сделать. Хотя технически говоря, каждый раз, когда вы запускаете Python script, он становится "скомпилированным" как таковой, это просто более быстрый цикл. Хорошая среда IDE может помочь облегчить это в Python, автоматически проверяя ваш код на синтаксические ошибки, когда вы его вводите.
Если у вас есть код, который вы хотите протестировать внутри более крупного проекта, иногда бывает сложно изолировать его для тестирования. В то время как хороший интерпретатор Python, такой как IPython, позволяет легко протестировать небольшой бит кода и посмотреть, как язык ведет себя и вставить его в файл.
Python также очень хорошо взаимодействует с существующим кодом C/С++ многими способами. Таким образом, если новый созданный вами модуль Pizon Whizbang действительно медленный, вы можете его суп в C/С++, затем завершите его с помощью Python через ctypes, Boost:: Python или SWIG.
И, прежде всего, Python поставляется с большой стандартной библиотекой, которая имеет много вещей, которые вам нужны. Это всего лишь вопрос о том, чтобы положить кусочки в целом! У него отличное сообщество, поэтому, если это не в стандартной библиотеке, есть хороший шанс, что кто-то там решил проблему (PyGame, Numpy, SciPy, Pyserial, PyWin и т.д.) для вас. Вы можете просто поиграть в Google, захватить его и перенести код прямо в вашу программу... прочь вы уходите!
Ответ 3
Я слышал эти жалобы до С++, но факт в том, что программирование на любом языке, с которым вы незнакомы, занимает много времени.
Хороший программист на С++, вероятно, может запустить приложение намного быстрее, чем обычный программист на языке Python и наоборот.
Я думаю, что С++ часто получает плохую репутацию, потому что он позволяет вам получить гораздо более низкий уровень - указатели, управление памятью и т.д., и если вы не привыкли думать о таких вещах, это может занять немного времени. Если вы привыкли работать в этой среде, это может стать второй натурой.
Если выбор языка не является чем-то, навязанным вам вашей компанией, командой, клиентом и т.д. Я обычно рекомендую, чтобы люди шли с языком, которым они больше всего нравятся или больше всего заинтересованы в получении дополнительной информации. Если вы беспокоитесь о скорости, ознакомьтесь с кривой обучения для каждого языка и вашего прошлого опыта. С++ имеет тенденцию иметь более высокую кривую обучения, но это тоже зависит от человека.
Не знаю, как отвечать.
Ответ 4
Python имеет ряд преимуществ перед языками программирования, такими как С++. Я сам много программировал с С++, C и другими языками программирования. В последнее время я тоже программирую на Python, и мне это очень понравилось!
Вы можете быстро начать с Python. Поскольку это довольно просто учиться (по крайней мере, с некоторым опытом программирования и достаточным абстрактным мышлением), вы можете иметь быстрые успехи. Также поведение, подобное script, облегчает запуск, а также позволяет быстро проверить некоторые вещи в интегрированной оболочке. Это также может быть полезно для отладки.
Весь язык заполнен мощными функциями и имеет хороший и довольно полный набор библиотек.
Был аргумент, что с "правой библиотекой" вы можете быстро развиваться с С++, как с Python. Это может (частично) быть, но я сам этого никогда не испытывал, потому что такие библиотеки редки. У меня также была большая библиотека под рукой, но на С++ все еще не было много ценных функций. Так называемая "стандартная библиотека шаблонов" STL делает вещи еще хуже, на мой взгляд. Это действительно мощная библиотека. Но это также сложно, что добавляет сложность дополнительного языка программирования на С++. Мне это очень не нравилось, и в компании, в которой я работал, много рабочего времени было потеряно, потому что компилятор не смог дать полезный вывод ошибок в случае ошибок в STL.
Python отличается. Вместо того, чтобы ставить "скорость программы" на трон - жертвуя всем остальным (как С++ и особенно STL), он сначала ставит "скорость развития". Язык дает вам мощный инструментарий и сопровождается огромной библиотекой. Когда вам нужна скорость, вы также можете реализовать критические моменты времени на C или С++ и вызвать его из Python.
Существует также, по крайней мере, одна большая онлайн-игра, реализованная в Python.
Ответ 5
Требуется примерно столько же времени, чтобы написать тот же код почти во всех языках высокого уровня. Победа в том, что на некоторых языках проще использовать код других людей. Во многих приложениях Python/Ruby/Perl вы пишете 10% кода и импортируете библиотеки, чтобы сделать остальные 90%. Это сложнее в C/С++, поскольку библиотеки имеют разные интерфейсы и другие несовместимости.
С++ vs Python - довольно личный выбор. Лично я чувствую, что теряю больше времени, не имея системы класса C/Java (больше времени выполнения/времени отладки, не имеет нигде рядом с хорошим автоматическим завершением, нужно делать больше документации и оптимизации), чем я получаю (не имея для написания функций интерфейса/заглушки и возможности меньше беспокоиться об управлении памятью). Другие люди чувствуют полную противоположность.
В конце концов, это, вероятно, зависит от типа игры. Если ваш процессор интенсивно перейдет на С++ (возможно, с языком сценариев, если это имеет смысл). В противном случае используйте любой язык, который вы предпочитаете
Ответ 6
Это требует много времени, потому что на С++ вам приходится иметь дело с более низкоуровневыми задачами.
В Python вы можете сосредоточиться на разработке реальной игры, а не на управлении памятью и т.д.
Ответ 7
есть много вещей, которые делают С++ дольше развиваться. Его более низкий уровень, указатели, разные библиотеки для разных систем, система типов, и есть другие, которых я уверен, что мне не хватает.
Ответ 8
Короткий ответ
Да, python быстрее с точки зрения времени разработки. В реальной жизни есть много примеров, которые показывают это. Однако вы не хотите делать 3D-графический движок в Python.
Ответ 9
Я бы больше сосредоточился на выборе структуры для создания вашей игры, чем при попытке выбрать язык. Если цель состоит в том, чтобы узнать, как игры работают внутри и снаружи, вы захотите использовать фреймворк. Попробуйте пару и выберите тот, который соответствует вашим требованиям и вам будет приятно.
Как только вы выбрали фреймворк, выбор языка станет легким - используйте язык, на котором написан фрейм.
В С++ существует множество вариантов игровых фреймворков - pygame работает для python. Многие из них работают с другими языками и инструментами (включая .NET, Lua и т.д.).
Ответ 10
Есть ли у вас опыт программирования вообще? Если нет, я бы начал с Python, который легче изучить, даже если это не лучший инструмент для разработки игр. Если вы решите, что хотите программировать игры для жизни, вам, вероятно, придется в какой-то момент перейти на С++.
Ответ 11
Обратите внимание, что SDL в настоящее время неактивен, поскольку он в основном не использует аппаратное ускорение.
SFML является альтернативой выбора и доступен также на Python.
Ответ 12
Зачем ограничивать эти два варианта? С С# или Java вы получаете доступ к огромной коллекции полезных библиотек плюс сбор мусора и (в случае С#) компиляции JIT.
Кроме того, вы говорите, что ищете игру для разработки игр, но из описания вашей задачи звучит так, будто вы также смотрите на кодирование своего собственного движка. Это часть упражнения? В противном случае вам обязательно нужно взглянуть на доступные двигатели Indie - многие из них дешевы и свободны и с открытым исходным кодом.
Излишне говорить, что работа с существующим движком определенно быстрее, чем с нуля:)
Ответ 13
Некоторые люди утверждают, что время разработки на С++ медленнее по сравнению с Python.
Не было бы так, что время, которое вы спасли при разработке приложения (или игры) на python, - это время, которое вы собираетесь использовать для повышения производительности после его разработки? и в более поздней части, когда у вас есть меньше всего вариантов?
В значительной степени это зависит от цели, для которой вы собираетесь разработать приложение.
Если вы думаете о корпоративном приложении, в этом случае он будет поражен миллионами (веб-приложение) или приложением с акцентом на низкий уровень следа, более быстрая загрузка в память, более быстрое выполнение, тогда ваш выбор - С++,
Если вы проецируете приложение на то, что не используете его на этом уровне, безусловно, Python - это выбор.
Полезность значительна, но дисциплинированный код может преодолеть это.
Во многом зависит от долгосрочных прогнозов. О том, насколько серьезным и критичным будет приложение.