2010-06-29 13 views
35

Tratando de sumergirse en Qt a lo grande, pero aún no hemos hecho un gran proyecto con él. Actualmente estoy usando Python, pero he estado pensando, ¿cuál es realmente el mejor lenguaje para usar en términos de productividad del programador?Programación Qt: ¿Más productivo en Python o C++?

En la mayoría de las comparaciones entre los idiomas, Python es la respuesta obvia, porque no tiene que meterse con la administración de memoria y todo eso.

Sin embargo, con Qt no estoy tan seguro. Proporciona suficientes características adicionales a C++ que (por lo que puedo decir) una línea de código Python es aproximadamente igual a una línea de código C++ la mayor parte del tiempo (excluyendo algunas cosas adicionales como las definiciones de clase y los componentes de estructura). Qt hace casi toda la gestión de memoria por usted, siempre y cuando se quede con sus clases, y proporcione equivalentes a los buenos contenedores que encontrará en Python.

Siempre he preferido los lenguajes estáticos, pero he subido al tren de Python por varias razones. Sin embargo, si la productividad de los programadores es similar a la de C++, puedo retroceder de esa manera para sus otros beneficios: código más eficiente y menos dependencias para la instalación de los usuarios.

¿Pensamientos?

+3

Python es un ganador obvio en términos de productividad del programador. –

+1

Cierto, puede escribir incluso una aplicación Qt compleja mucho más rápido en Python que en Qt y mis habilidades de Python están muy por detrás de las de C++. Solo el nuevo sistema de ranura de señal es una adición increíble, lo que hace que sea mucho más claro cómo funciona todo en Qt. Python también requiere menos escritura en mi experiencia. También muchas bibliotecas C/C++ hoy en día ofrecen (o tienen una en desarrollo) API en Python. – rbaleksandar

Respuesta

18

Mi opinión (habiendo probado C++ y Python en general y específicamente en el caso de Qt): Python siempre gana en términos de 'productividad del programador' y 'tranquilidad'. PyQt representa Qt muy bien y por lo tanto, no queda la pregunta de "Qt con Python" o "Qt con C++", en general, python es más productivo a menos que fuera del curso necesite velocidad o algo que no está disponible en Python.

mejor manera para que usted pueda llegar a la respuesta sería escribir un proyecto simple por primera vez en C++ y luego mismo proyecto en Python y comparar, pero que podría estar influenciado por una pitón como después de codificar el proyecto una vez que se encuentra es fácil en Python, así que pruebe con otro proyecto también y primero hágalo en Python y luego en C++.

23

Si uno o el otro, sugeriría Python a pesar de ser un entusiasta de C++. Con el código Python no tiene que preocuparse por el MOC, la portabilidad, los tiempos de compilación, etc. Simplemente compare el trabajo involucrado en la implementación de un intervalo QT en C++ frente a PyQT o PySide, p. Encuentro que es mucho menos doloroso tratar con widgets de esta manera (una productividad mucho mayor). Todavía puede invocar el código C++ desde Python en los casos en que necesite el rendimiento agregado.

Si usa una combinación, considere extender Python en lugar de incrustarlo. Python generalmente es más adecuado para incrustar código C/C++ que para incrustarse en un sistema C/C++. También tiende a tener más sentido de esta manera, ya que las aplicaciones generalmente están compuestas por un código mucho más mundano y sin rendimiento que el código de rendimiento crítico, por lo que escribir su aplicación principalmente como una aplicación de Python con funciones C/C++ adjuntas encaja con ese tipo del diseño del sistema mejor.

4

Con Python no tiene que construir su proyecto. Eso es suficiente de un ahorro de tiempo, supongo. Y las consolidaciones de Pyqt son increíbles. Definitivamente soy más eficiente con pyqt que con qt/C++.

3

Si usa python o C++ depende más de la aplicación que está creando y no tanto de Qt. Si está creando una aplicación que requiere muchos recursos y necesita muchos recursos, como CPU y memoria, C++ sería una mejor opción. Por otro lado, si su aplicación es más impulsada por la interfaz de usuario, python ofrece muchos otros beneficios en términos de desarrollo rápido y bibliotecas ricas.

7

definitivamente Python.

Sí, la gente dirá que Python es más productivo sin una razón. Algunas de las respuestas mencionan que no tiene que volver a compilar. Yo te daré algunos detalles más

  1. Python es una capa de abstracción sobre C++, por lo que puede pensar y expresar sus diseños con menos código. Es posible que tu programa no se ejecute tan rápido, pero seguro que expresas más rápido en código lo que deseas.

  2. El caso más común es cuando inicia su aplicación, carga algunos archivos, configura el entorno y abre un cuadro de diálogo. Allí notas que un botón no funciona o donde debería estar. Ahora ese es el punto donde la mayoría de las personas cierra la aplicación, une una ranura aquí, una señal allí ... y comienza la aplicación, carga los archivos, configura ... con python solo escribes el código y enciendes el diálogo otra vez, no toda la aplicación. No sé ustedes, pero ese tipo de tarea es lo que hago la mayor parte del tiempo con Qt

  3. Python le da algo que C++ no tiene: introspección. Puede explorar un programa en ejecución y extraer información sobre sus componentes en tiempo de ejecución. Qt te da parcialmente esto. Usted tiene esa capa MOC donde meta propiedades y metainformación se pueden unir a objetos Qt. Todas las partes de un programa de Python pueden ser introspectadas. Mucha gente depurando el código de Python, o tratando de entender cómo funciona, son adictos a esto por una buena razón

+1

Acerca de 2.) simplemente recarga el código mientras ejecuta la aplicación. ¿Qué IDE/editor usa aquí? ¿Cómo se admite la carga "en línea" en Pyhton? – nerdoc