2012-04-12 17 views
8

? Quiero desarrollar en Qt, y ya conozco Python. Estoy aprendiendo C++, ¿cuáles son las ventajas de programar Qt en C++ sobre Python? C++ parece más complicado, y parece que no hay mucha ganancia.¿Cuál es la ventaja de utilizar el C++ nativo Qt sobre PyQt

+6

Las mismas razones por las que usaría C++ sobre Python en general ... – Anthony

+0

¿Espera que sus usuarios estén en varias plataformas o solo? – Danish

Respuesta

7

Si planea distribuir su aplicación, es mucho más fácil entregar un archivo ejecutable compilado autónomo que confiar en que los usuarios finales instalen primero Python y PyQt. Pero eso puede o no ser una consideración para usted.

+0

Probablemente compilaría ejecutables con algo así como py2exe. – Orcris

+0

Wow, ¿has probado eso para PyQt? (No lo hice.) El ejecutable resultante será bastante grande. –

+9

Definir bastante grande. 10 MB de sobrecarga pueden haber sido "enormes" en 1995, pero hoy es risible. En la actualidad, desde el punto de vista de la distribución de aplicaciones, es tan fácil implementar una aplicación PyQT (o PySide) como una aplicación nativa, o cualquier aplicación de Python para el caso. – astevanovic

0

En resumen, creo que a menos que tenga requisitos de rendimiento sólidos, debe quedarse con Python. Además, como menciona Greg, su programa será más portátil con Python que con C++.

Me encanta C++, pero en estos días, para la mayoría de los proyectos, principalmente recurro a Python si no a Java. Sin embargo, si estoy escribiendo un juego o una aplicación de gráficos, podría considerar C++.

+1

Creo que el punto de Greg fue que es * menos * portátil con Python. Esa ha sido mi experiencia de todos modos. Escribí el programa PyQT para algunos colegas. Gran error. Ahora se me pide constantemente que los ayude a lidiar con la instalación de PyQT. Es al punto ahora donde, si alguno de ellos se actualiza a OS X Lion y tiene problemas, estoy tirando su máquina por la ventana. Si lo hubiera hecho en C++, esto probablemente sería un problema menor. – ely

+0

Interesante, gracias por compartir eso. Supongo que asumí que el esfuerzo de intentar construir el mismo programa C++ en múltiples plataformas sería * más * que instalar Python y PyQT. PERO si todos los usuarios estarán en una plataforma, C++ definitivamente suena mucho mejor. – Danish

+0

Es cierto. Probablemente también se amplía con el número de personas que usan su programa. Cuantas más personas necesite para el servicio, más deseará puede darles todos los binarios que no requieren instalación. Si solo distribuye el programa a unas pocas personas que raramente necesitan servicio, entonces la bonificación del tiempo de desarrollo de Python es probablemente dominante. – ely

15

¿Cuál es la ventaja de utilizar el nativo de C++ Qt sobre PyQt

velocidad/potencia/control.

La aplicación PyQt aún requerirá Python. La aplicación C++/Qt compila a exe nativo. Al usar C++ obtendrás acceso a bibliotecas de terceros que no estarán disponibles en Python, además de que exterminarás al "intermediario", capa que se encuentra entre tu programa y qt dlls, y posiblemente puedas obtener un mejor rendimiento. Por ejemplo, no escribiría un archivador o un descompresor de mp3 en Python, aunque ciertamente se puede hacer.

Sin embargo, tiene un costo - C++ no tiene un recolector de basura, es mucho más complejo, tiene un desarrollo "lento" (tiempo de compilación), requiere años para dominar y obtendrá un mejor rendimiento solo si su cuello de botella es dentro del intérprete (es decir, sobrecarga del lenguaje con guiones). Es decir. C++ brinda más potencia a un costo de mayor responsabilidad y mayor tiempo de desarrollo. Si no necesita eso, entonces no tiene una razón para quedarse con C++.

La elección del idioma depende de su aplicación/situación y sus preferencias personales. Si necesita hacer la solicitud PRONTO o hacer una maqueta, será razonable usar un lenguaje con el que esté familiarizado. Si tiene serios problemas de rendimiento, será razonable contratar un programador de C++ calificado para hacer el trabajo: crear una aplicación nativa, crear un perfil, optimizar, etc.

Tenga en cuenta que el lenguaje es una herramienta. Si desea usar su idioma para todo simplemente porque le gusta el idioma, no está trabajando de manera eficiente.

--EDIT--

En lo personal, yo no usaría pitón para una aplicación más grande Me esperan mantener durante mucho tiempo. Sin embargo, esto se debe a que el lenguaje no es exactamente compatible con mi mentalidad (depender de la Ley de Murphy) y (como resultado) no me siento cómodo con eso. La persona que piensa de manera diferente probablemente se sentirá mucho más cómoda con Python e incluso podría pensar que C++ es demasiado restrictivo.

Otra cosa es que a juzgar por mi experiencia escribiendo complementos de Blender y varios scripts de Python, hay algunos problemas generales de rendimiento que aparecen porque el lenguaje está escrito y manipulación de listas/mapas/matrices que se puede realizar de forma RÁPIDA gratis C++ puede tomar 5x..10x veces más en python. Algunas personas pueden insistir en que esto se puede solucionar, sin embargo, el costo de esta "reparación" podría superar los beneficios que se obtienen al utilizar un lenguaje guionado.Independientemente de mi preferencia, sigo usando Python para crear scripts de utilidad que necesiten ejecutar varias utilidades, dividir/empalmar/analizar su salida de texto y hacer algo con él (C++ no es muy bueno en estas situaciones), y aún así proporcionar enlaces de Python (asumiendo que Lua no es bueno) en un programa que debe ser extensible.

Al final todo se reduce a la selección de la herramienta más adecuada: si C++ no le dará ningún beneficio en comparación con Python, entonces no hay razón para cambiar.

+4

Una buena respuesta, aunque me gustaría señalar, la cantidad de módulos disponibles para python es enorme y el argumento de tener una mayor libertad con C++ es bastante discutible. Para cualquier rendimiento intensivo vaya C++, el resto probablemente se ajuste mejor con Python en mi humilde opinión. – astevanovic

+0

Buena respuesta. Estoy aprendiendo QT, y he hecho un par de aplicaciones simples para ver cómo funciona. Estoy realmente impresionado con el rendimiento y el editor de GUI. La documentación es fácil de entender y puede obtener mucha información de la web. Para el desarrollo de la electrónica (mi caso), encontré puertos serie muy fáciles de administrar y otros periféricos que usan QT. – GTRONICK

3

C++ optimiza la velocidad de la máquina.

Python optimiza la velocidad del programador.

C++ es relativamente prolijo: se expresan más palabras por idea. Bugs/Lines_of_code es más o menos una constante, por lo que la concisión importa.

La administración de memoria de C++ a veces es manual, lo que puede significar problemas de tiempo de ejecución extraños http://stromberg.dnsalias.org/~strombrg/checking-early.html incluyendo segfaults y pérdidas de memoria. Python quita esto de las manos del programador y lo automatiza.

A la GUI rara vez le importa la velocidad de su lenguaje de implementación: el problema principal es qué tan rápido el usuario final puede escribir y hacer clic.

Cuestiones relacionadas