c++ - create - cython
C++ lento, python rápido?(en términos de tiempo de desarrollo) (13)
¿Por qué limitarte a esas dos opciones? Con C # o Java, obtienes acceso a una gran colección de bibliotecas útiles, más recolección de basura y (en el caso de C #) la compilación JIT.
Además, estás diciendo que estás buscando hacer desarrollo de juegos, pero de acuerdo con la descripción de tu tarea, parece que también estás buscando codificar tu propio motor. ¿Eso es parte del ejercicio? De lo contrario, definitivamente debería echar un vistazo a los motores Indie disponibles en el mercado: muchos son baratos o no gratuitos y de código abierto.
No hace falta decir que trabajar desde un motor existente es definitivamente más rápido que ir de cero :)
Estoy pensando en intentar hacer algunos juegos 2D simples, pero todavía tengo que elegir un idioma. Mucha gente recomienda C ++ con SDL o python con pygame. Sigo escuchando que el desarrollo en C ++ es bastante lento, y el tiempo de desarrollo con Python es bastante rápido.
De todos modos, ¿podría alguien dar más detalles sobre esto? ¿Qué es exactamente lo que hace que el desarrollo en C ++ consuma tanto tiempo? Los programas que he realizado han sido al estilo del Proyecto Euler, ya que son muy cortos y están basados en matemáticas, por lo que no tengo experiencia en proyectos más grandes.
¿Tienes alguna experiencia en programación? Si no, empezaría con Python, que es más fácil de aprender, incluso si no es una mejor herramienta para el desarrollo de juegos. Si decides que quieres programar juegos para vivir, es probable que necesites cambiar a C ++ en algún momento.
Algunas personas dirían que el tiempo de desarrollo es más lento en C ++ en comparación con Python.
¿No sería el caso que el tiempo que ahorró en el desarrollo de una aplicación (o juego) en python sea el tiempo que usará para mejorar el rendimiento después de su desarrollo? y en la parte posterior cuando te quedan menos opciones?
Depende en gran medida del propósito para el que va a desarrollar la aplicación.
Si está pensando en una aplicación empresarial, en cuyo caso será alcanzada por millones (aplicación web) o una aplicación que se enfoca en un espacio reducido, una carga más rápida en la memoria, una ejecución más rápida, entonces su elección es C ++.
Si está proyectando su aplicación para no ser utilizada en este nivel, seguramente Python es la opción a seguir.
La capacidad de mantenimiento es considerable, pero el código disciplinado puede superar esto.
Depende en gran medida de las proyecciones a largo plazo. Sobre qué tan seria y crítica va a ser la aplicación.
El poder de Python está en su capacidad para permitirle enfocarse más en el problema que tener que lidiar con la prueba de problemas de bajo nivel, como la asignación de memoria. No puedo contar cuántas veces se han desperdiciado días de desarrollo rastreando pérdidas de memoria en C o C ++. Una ventaja de todos los lenguajes de alto nivel.
Python es muy fácil de aprender en comparación con C ++, por lo que puede ser mucho más rápido en tareas de programación básicas. Por lo tanto, también te moverás más rápido a las tareas avanzadas.
C ++ tiene mucho poder, pero tiene muchas formas de dispararte a ti mismo en comparación con Python (no digo que no se pueda hacer en Python).
El ciclo de compilación / depuración puede envejecer a veces en C ++ dependiendo de lo que esté intentando hacer. Aunque técnicamente hablando, cada vez que ejecutas un script de Python se está "compilando" per se, es solo un ciclo más rápido. Un buen IDE puede ayudar a aliviar esto en Python al revisar automáticamente su código para detectar errores de sintaxis mientras lo escribe.
Si tiene algún código que desea probar dentro de un proyecto más grande, a veces es un problema aislarlo para realizar pruebas. Mientras que un buen intérprete de Python como IPython , hace que sea fácil probar un poco de código y ver cómo se comporta el idioma y pegarlo en un archivo.
Python también interactúa muy bien con el código existente de C / C ++ a través de muchas formas. De esa manera, si un nuevo módulo de Python de whizbang que creaste es realmente lento, entonces puedes agregarlo en C / C ++ y luego envolverlo con Python mediante ctypes , Boost::Python o SWIG .
Y, sobre todo, Python viene con una gran biblioteca estándar que tiene muchas cosas pensadas para ti. ¡Es solo una cuestión de poner las piezas juntas! Tiene una gran comunidad detrás, así que si no está en la biblioteca estándar, es muy PyGame alguien haya resuelto el problema ( PyGame , Numpy , SciPy , Pyserial , PyWin , etc.) para usted. Puede simplemente buscarlo en Google, capturarlo y escribir el código directamente en su programa ... ¡ya está!
Es mucho tiempo porque en C ++ tienes que lidiar con más tareas de bajo nivel. En Python, puedes enfocarte en el desarrollo del juego en lugar de tratar con la administración de memoria, etc.
Hay dos cosas que son relevantes entre C ++ y Python que afectarán su tiempo para desarrollar cualquier proyecto, incluido un juego. Están los propios idiomas y las bibliotecas. He jugado con el SDL hasta cierto punto y he echado un vistazo a PyGame y para tu instancia específica no creo que las bibliotecas vayan a ser un factor importante. Así que me centraré en los propios idiomas.
Python es un lenguaje de recolección de basura de tipo dinámico. C ++ es un lenguaje recogido de forma estática y no recolectado en la basura. Lo que esto significa es que en C ++ se pasará una gran parte de su tiempo de desarrollo gestionando la memoria y tratando con su estructura de tipos. Esto le brinda mucho poder, pero la pregunta es ¿realmente lo necesita?
Si buscas escribir un juego simple con algunos gráficos básicos y una buena jugabilidad, entonces no creo que realmente necesites toda la potencia que C ++ te dará. Si está buscando escribir algo que empuje el sobre, sea el próximo juego de la lista A, sea el próximo MMO, quepa en una consola o en un dispositivo de mano, entonces probablemente necesitará la potencia que ofrece C ++.
He escuchado estas quejas antes sobre C ++, pero el hecho es que la programación en cualquier lenguaje con el que no esté familiarizado requiere mucho tiempo.
Un buen programador de C ++ probablemente puede activar la aplicación mucho más rápido que un programador Python aceptable y viceversa.
Creo que C ++ a menudo obtiene una mala reputación porque le permite obtener niveles mucho más bajos: punteros, gestión de memoria, etc., y si no está acostumbrado a pensar en estas cosas, puede llevarle un poco de tiempo. Si estás acostumbrado a trabajar en ese entorno, puede convertirse en una segunda naturaleza.
A menos que la elección del idioma sea algo que le imponga su compañía, equipo, cliente, etc., generalmente recomiendo que las personas opten por el idioma con el que se sientan más cómodos o con el mayor interés en aprender más. Si te preocupa la velocidad, observa la curva de aprendizaje de cada idioma y tu experiencia pasada. C ++ tiende a tener una curva de aprendizaje más alta, pero eso también depende de la persona.
Una especie de no-respuesta, lo sé.
Me concentraría más en elegir un marco para construir tu juego que en intentar elegir un idioma. A menos que el objetivo sea aprender cómo funcionan los juegos por dentro y por fuera, vas a querer usar un marco. Pruebe un par y elija el que cumpla con sus requisitos y se sienta bien con usted.
Una vez que haya elegido el marco, la elección del idioma se vuelve fácil: use el idioma para el que está escrito el marco.
Hay muchas opciones para los marcos de juegos en C ++: Pygame funciona para Python. Hay muchos que trabajan con otros lenguajes / herramientas también (incluyendo .NET, Lua, etc.)
Python tiene algunas grandes ventajas sobre los lenguajes de programación como C ++. Yo mismo he programado mucho con C ++, C y otros lenguajes de programación. Últimamente también estoy programando en Python y me gusta mucho.
Puedes tener un comienzo rápido con Python. Ya que es bastante simple de aprender (al menos con algo de experiencia en programación y suficiente pensamiento abstracto), puede tener éxitos rápidos. Además, el comportamiento similar a un script facilita el inicio y también es posible probar rápidamente algunas cosas en el shell integrado. Esto también puede ser bueno para la depuración.
El lenguaje completo está repleto de características poderosas y tiene un buen conjunto de bibliotecas bastante completo.
Hubo el argumento de que con la "biblioteca correcta" se puede desarrollar tan rápidamente con C ++ como con Python. Esto podría ser (en parte), pero yo mismo nunca lo he experimentado, porque estas bibliotecas son raras. También tenía una gran biblioteca a la mano, pero todavía carecía de muchas características valiosas en C ++. En mi opinión, la llamada "biblioteca de plantillas estándar" hace que las cosas empeoren aún más. Es una biblioteca realmente poderosa. Pero también es tan complejo, que agrega la complejidad de un lenguaje de programación adicional a C ++. Realmente me disgustó y en una empresa en la que trabajé, se perdió mucho tiempo de trabajo, ya que el compilador no pudo proporcionar una salida de error útil en caso de errores en la STL.
Python es diferente. En lugar de poner la "velocidad del programa" en el trono, sacrificando todo lo demás (como hace C ++ y especialmente el STL), pone primero la "velocidad de desarrollo". El lenguaje le brinda un poderoso conjunto de herramientas y está acompañado por una enorme biblioteca. Cuando necesite velocidad, también puede implementar cosas de tiempo crítico en C o C ++ y llamar desde Python.
También hay al menos un gran juego en línea implementado en Python.
Respuesta corta
Sí, Python es más rápido en términos de tiempo de desarrollo. Hay muchos estudios de caso en la vida real que muestran esto. Sin embargo, no desea hacer un motor de gráficos 3D en Python.
Se tarda aproximadamente la misma cantidad de tiempo para escribir el mismo código en casi todos los idiomas de alto nivel. La victoria es que en ciertos idiomas es más fácil utilizar el código de otras personas. En muchas aplicaciones de Python / Ruby / Perl, usted escribe el 10% del código e importa las bibliotecas para hacer el otro 90%. Eso es más difícil en C / C ++ ya que las bibliotecas tienen diferentes interfaces y otras incompatibilidades.
C ++ vs Python es una elección bastante personal. Personalmente, siento que pierdo más tiempo al no tener el sistema de clases C / Java (más errores de tiempo de ejecución / tiempo de depuración, no tengo una finalización automática tan buena, necesito hacer más documentación y optimización) de lo que gano (no tener para escribir interfaces / función de código auxiliar y poder preocuparse menos por la gestión de la memoria). Otras personas sienten exactamente lo contrario.
Al final probablemente depende del tipo de juego. Si su procesador es intensivo, vaya a C ++ (tal vez con un lenguaje de scripting si tiene sentido). De lo contrario, use el idioma que prefiera.
Tenga en cuenta que la SDL es actualmente lenta, porque básicamente no utiliza la aceleración de hardware. SFML es una alternativa de elección, y también está disponible en Python.
hay muchas cosas que hacen que c ++ sea más largo para desarrollarse. Su nivel inferior, tiene punteros, diferentes bibliotecas para diferentes sistemas, el sistema de tipos, y hay otras que estoy seguro que me falta.