2010-07-29 18 views
14

Ya casi termino un curso sobre el uso de OOP en C++ y todos los programas que escribimos en ese curso eran aplicaciones de consola. También terminé un curso universitario en programación en C, así que creo que tengo conceptos básicos de programación C sólidos y ahora es el momento de dar un gran paso hacia la GUI.GUI con C++? o C# y Java el camino a seguir?

He hecho muchas búsquedas en Google y cada vez que leo más páginas me vuelvo más confundido, me entero de que en el pasado había opciones demasiado famosas como WinAPI y MFC. Traté de ver el WinAPI pero parece bastante difícil y necesita mucho tiempo, así que le pedí el consejo a mi instructor y me dijo que si quería escribir programas de GUI, aprendería C# o Java mejor que usar C++, que es más rápido pero mejor diseñado para aplicaciones de programación de bajo nivel como controladores y demás. Así que busqué en la web para encontrar si todavía se utiliza C++ en la escritura de las aplicaciones actuales y para mi sorpresa Firefox, Google Chrome, Notepad ++ y muchas otras aplicaciones GUI en sourceforge.net están escritas en C++ en contradicción con el consejo de mi instructor. También me enteré de que puede usar las bibliotecas QT o GTK para compilar aplicaciones de GUI en C++, pero no tengo idea de cómo hacerlo o si eso es cierto.

Así que mi pregunta es cuáles son las mejores opciones disponibles en la actualidad para escribir programas de GUI de manera eficiente, sin importar cuán pronunciada sea la curva de aprendizaje. Busqué en Google las opciones de GUI de C++ porque creo que será más rápido que las aplicaciones de Java o C#. Si alguien tiene una opinión diferente, indíquelo.

+0

Define "solidez" con respecto a la GUI. – n0rd

+0

WinAPI, no API. API es un término genérico. –

+0

Quise decir WinAPI. Gracias por la corrección – Ahmed

Respuesta

2

La forma más rápida es utilizar C# y WPF. Es rápido y simple para pequeñas aplicaciones, pero puede ser bastante complejo en mi opinión y hay mucho que aprender. Al menos eres una prueba de futuro, Microsoft está presionando finalmente a WPF. (Visual Studio lo usa, y habrá muchas más versiones por venir) El único inconveniente real es que solo podrá ejecutar la aplicación en Windows.

Si realmente desea el acceso de "bajo nivel", hay muchas opciones de interoperabilidad con el código C++.

+0

¿Funcionan C# y WPF tan bien como C++ y MFC por ejemplo? Siempre y cuando diga que son difíciles de aprender, ¿por qué no debería aprender qué es más rápido? – Ahmed

+1

"La manera más rápida" aquí es solo el tiempo para desarrollar sus aplicaciones. Creo que esas aplicaciones pueden usar los recursos de la computadora y funcionar tan rápido como la aplicación escrita en C++ y WinAPI. Es por eso que Firefox, Chrome y muchas otras aplicaciones famosas aún usan C++. –

+0

Eso no tiene sentido. Usted dice que C# es más rápido en el desarrollo y tan rápido como C++ y WinAPI en la respuesta y eficiencia del programa. Aunque la gente usa C++ – Ahmed

2

Depende del tipo de aplicación de GUI que desee escribir. Si desea escribir una aplicación empaquetada como MS Word o Firefox, entonces C++ es el camino a seguir, porque el mercado exige el último poco de rendimiento, con dependencias mínimas. OTOH, si quieres escribir (por ejemplo) una interfaz para la base de datos de tu empresa, el rendimiento de la GUI normalmente no es importante, pero ofrecer algo de forma rápida y económica es, por lo que debes usar algo más RAD, como C#.

1

Qt es muy bueno. La gente dice que WTL también es bueno, pero no lo usé.

Java y GUI no encajan muy bien en mi cabeza. Existen algunas bibliotecas nativas de Java GUI (AWT, Swing) pero son lentas y no proporcionan una interfaz nativa a la plataforma en la que se ejecuta. También hay SWT, que es utilizado por Eclipse, pero no han visto ninguna aplicación además de Eclipse usándola.

Si las necesidades de la GUI son simples me quedaré con C#: suelta algunos controles en su formulario, escribe algunas lógicas y está listo para funcionar. Si necesita una GUI realmente compleja, no creo que haya una gran diferencia en el tiempo de desarrollo entre diferentes idiomas.

+1

Entonces Qt es solo una biblioteca que facilita la creación de aplicaciones de GUI en C++? ¿Puedes dar un ejemplo para las aplicaciones que usan Qt? – Ahmed

+0

Tengo que admitir que Java no es excelente en la creación de aplicaciones de escritorio. Quédese con C# si desea un entorno de desarrollo rápido. –

+0

Qt no se trata solo de la GUI. Es un marco que permite hacer aplicaciones de plataforma cruzada (tiene muchas clases de utilidad no relacionadas con la GUI). En cuanto a los ejemplos: Qt Creator: un IDE para el desarrollo de Qt se escribe usando Qt. – n0rd

0

Si elige C++, eche un vistazo a wxwidgets, de esta manera no se limita a un solo sistema operativo (Windows en este caso con MFC). También QT debería ser bueno, pero nunca los he probado (tampoco tengo mucha experiencia con wxwidgets, pero las pocas veces que tuve que hacer algo con ellos funcionaron bastante bien).

Si no es necesario un alto rendimiento en la interfaz gráfica de usuario, echar un vistazo a los lenguajes de scripting - Python tiene una biblioteca predeterminada que funciona bien (tkinter) y también se une a wxwidgets

21

Antes que nada, si quieres aprender a escribir la GUI independiente de la plataforma, entonces C# no se va.

Cuando escribe GUI en C++, hay una cuestión de conjunto de herramientas, Qt y GTKmm le proporcionan conjuntos de herramientas de plataforma cruzada muy sólidos. Mientras que Qt tiene una apariencia más "nativa" en Windows que GTKmm, Java Swing le permite escribir una GUI muy buena también, pero sería más pesada y más lenta que una escrita con Qt o GTKmm.

Ahora ... C#/WPF mismo problema que la GUI de Java: más lento que el original, pero también lo bloquea en una sola plataforma.

Mi consejo personal empieza en Qt.

+0

Nunca me di cuenta cuando tienes que comprar una licencia de Qt y cuando no. Creo que estás listo para usar cuando solo desarrollas para el escritorio, pero no tomes mi palabra. – Blub

+0

@Blub, versión reciente de Qt publicada bajo LGPL, por lo que puede usarla casi sin límites siempre que establezca un vínculo dinámico con ella. – Artyom

+0

Escuché que puedes usar mono. –

1

C++ es bueno para la velocidad (herramientas de representación HTML como chrome/firefox o editores de imágenes como photoshop) y para realizar "hazañas" que de otro modo no podrías hacer en otras plataformas.

Pero es más doloroso de usar y hay mucha más curva de carga en cualquiera de las bibliotecas de UI basadas en C++ de lo que te gustaría aprender.

Dado que parece que no necesita nada de esto, como se desprende de su pregunta, su elección predeterminada debe ser C# o Java o basado en la web como su tutor aconsejó.

+0

En desacuerdo. Qt (por ejemplo) está MUY bien documentado y solo he tenido unas pocas "gotchyas" desde que empecé hace aproximadamente un año. La verdadera lucha para un principiante será el lenguaje, no el marco. Por otro lado C# es un lenguaje un poco más simple de recoger, pero encuentro la documentación de MSDN descuidada y difícil de aprender. –

+0

QT podría ser un caso especial, no lo sabría ya que no lo he usado. Pero, ¿por qué preocuparse con C++ y con la administración de la memoria cuando es obvio que el usuario simplemente necesita alguna herramienta para construir una interfaz de usuario? El OP ni siquiera tiene un caso de uso específico de UI, y mucho menos un caso de uso de C++ específico. – computinglife

+0

@computinglife el modelo de gestión de memoria Qt es bastante limpio. Si hereda de un objeto en el marco y establece su elemento primario en otro objeto en el marco, rara vez necesitará administrar la memoria por su cuenta. Para los casos en que lo haces, hay clases de punteros inteligentes. Hay muy buenas razones para usar Qt y muy buenas razones para no usar Qt. Solo digo que a pesar del lenguaje, es un gran marco. –

0

Si insistes en utilizar C++, prueba con Win32 o GTK. Ver this thread. De lo contrario, le recomiendo que pruebe otro idioma como Python para la parte de la GUI de sus aplicaciones: Guarde el resto en su idioma preferido y envuélvalo. No se olvide de la mejor característica de C++: compatibilidad binaria con C.

+1

hilo interesante. – Ahmed

3

Pruebe Juce.

+0

JUCE http://www.rawmaterialsoftware.com/ le dará una GUI y mucho más. Es C++, * realmente * fácil de aprender, rápido y muy cruzado (iPhone cualquiera). Estoy totalmente convertido. – learnvst

6

Si es nuevo en la programación de GUI, C#/WinForms será lo mejor para usted. Es bastante simple, tiene una gran comunidad, tiene muchos controles listos para usar ... y la mejor documentación de todos los tiempos: MSDN.

Claro, si está buscando un conocimiento profundo de "cómo funcionan las cosas", entonces debe comprender la GUI de Win32. Por lo tanto, siempre puede volver a C++/MFC para eso. No recomendaría ninguna otra biblioteca C++ (como Qt), no porque sean malas, sino porque requieren una buena experiencia para iniciarse.

Mi sugerencia es comenzar con WinForms, entender lo básico y aprender a crear aplicaciones simples. Tan pronto como seas maestro en eso, profundiza :)

+0

Totalmente de acuerdo con usted. He estado trabajando con formularios .Net antes de escribir mi primera aplicación en C++ utilizando solo Win32 API. Fue un momento tan doloroso ya que todo era extraño y difícil de entender. –

+0

Recuerdo mis tiempos que cambié de Borland C++ Builder, a Visual Studio MFC ... de Dios :) –

1

C++ nunca muere, por lo que aprenderlo no es una decisión equivocada. Sin embargo, es bastante difícil escribir aplicaciones de GUI usando C++ durante los primeros días. Por lo tanto, sugiero que use C# t para escribir algunas aplicaciones GUI antes de volver a C++.

0

Si tiene una fundación C++ y quiere ampliarla, le recomiendo que empiece desde Qt. Su distribución incluye diseñador gráfico de interfaz de usuario y Asistant - navegador para documentación. También hay producto Qt Creator por separado: IDE completo hecho a medida para Qt que lo tiene todo integrado (incluido el compilador). Todo esto es gratis y muy fácil de configurar. Excelentes tutoriales incluidos. Qt también incluye clases no gui para problemas comunes de programación (como contenedores, tipo de variante, etc.). Puede convertir su aplicación de consola a la GUI en cuestión de pocas horas y decidir si desea continuar aprendiéndola o probar alguna otra herramienta.

Simplemente vaya a http://qt.nokia.com/downloads descargue SDK, instálelo y tendrá todo para comenzar a codificar.

0

QT es agradable, pero he probado JUCE y ahora creo que es mejor.

JUCE es rápido, limpio y fácil de usar. Puede integrarlo con Eclipse y GCC (y minGW), usar funciones de depuración (gdb en Eclipse) y más.

Puede compilar su código en Windows, Linux, OSX, IOS y Androis sin realizar muchos cambios.

Mantenga un ojo en su página web: http://www.rawmaterialsoftware.com/juce.php

Si habla mirada español en este enlace: http://juceratot.eshost.es

Regard

1

No es exactamente una respuesta a su pregunta, pero si usted todavía está en el aprendizaje y no en la línea de producción, intente aprender Win API. En realidad, estoy sorprendido de que nadie te haya dicho eso.

Como puede ver, todos los demás frameworks/API/SDK son solo envoltorios de esta API, y es probable que cada vez que se le solicite hacer algo no estándar en su GUI no encuentre una solución dentro de su marco y lo haga Necesito cavar hacia abajo para ganar API de todos modos.

Sí, es solo API de Windows, aún sabiendo lo que está sucediendo detrás de la escena puede ser muy útil a veces.

Sólo mis 2 centavos.

Cuestiones relacionadas