2008-10-03 17 views
6

¿Aprender C++ me ayudará a crear aplicaciones nativas con buena velocidad? ¿Me ayudará como programador y cuáles son los otros beneficios?Will Learning C++ ¿Ayuda para crear aplicaciones de escritorio rápidas/sin requisitos adicionales?

La razón por la que quiero aprender C++ es porque estoy decepcionado con el rendimiento de la interfaz de usuario de las aplicaciones creadas sobre JVM y .NET. Se sienten lentos y comienzan lento también. Por supuesto, un programador realmente malo puede crear una aplicación más lenta y lenta usando C++ también, pero no estoy considerando ese caso.

Una de mis aplicaciones favoritas de Windows es Launchy. Y en el archivo Readme.pdf, el autor del programa escribió esto:

0.6 Esta es la primera versión de C++. Como me sentí frustrado con los grandes requisitos de .NET Framework y los usuarios falta de deseo de instalarlo, I decidí volver al idioma más rápido .

Estoy totalmente de acuerdo con el autor de Launchy sobre el requisito de .NET framework o incluso un requisito de JRE para aplicaciones de escritorio. Dejado solo la versión específica de ellos. Y algunas de las mejores y mis aplicaciones de escritorio favoritas no necesitan ejecutar .NET o Java. Simplemente corren después de la instalación. ¿Están en su mayoría construidos usando C++? ¿C++ es la única opción para aplicaciones buenas y rápidas basadas en GUI?

Y, también estoy muy interesado en escuchar los otros beneficios de aprender C++.

+0

También podría aprender D 'http://www.digitalmars.com/d/2.0/overview.html' –

Respuesta

5

Si usted quiere construir aplicaciones de Windows que se ejecutará sin marcos, tales como máquinas/intérpretes .NET o virtuales, entonces su única realmente opciones viables van a ser Visual Basic o C/C++

que he escrito algunas aplicaciones pequeñas de Windows antes en código C++, y definitivamente hay un beneficio en términos de velocidad y facilidad de implementación, a expensas de la dificultad para el desarrollo. C++ puede ser muy rápido, compila de forma nativa, tiene muchas funciones modernas de lenguaje y un amplio soporte.La compensación es que es probable que deba escribir más código en determinadas situaciones, o buscar bibliotecas como Boost que proporcionen la funcionalidad que busca.

Como programador, trabajar en C++ y especialmente en C es una buena experiencia para ayudarlo a entender algo un poco más cerca de la máquina que, por ejemplo, .NET, Java o un lenguaje de scripting como VBScript, Python, Perl, etc. no necesariamente te hará un mejor programador, pero si estás dispuesto a aprender nuevas lecciones de él, es posible que te ayude a obtener una nueva perspectiva del software. Después de todo, la mayoría de los marcos y sistemas de los que depende están escritos en C puro, por lo que nunca le hará daño entender los cimientos. C++ es un animal diferente de C directo, pero si se desarrolla en C++ para Windows probablemente se encontrará trabajando en una combinación de C y C++ para trabajar con las API de Windows, por lo que tendrá un efecto de goteo.

4

Como siempre. Depende. Mientras se mantenga alejado de grandes marcos de microsofts, como MFC, .net, etc. sus aplicaciones pueden ser extremadamente rápidas, pero difíciles de codificar. Su beneficio: realmente aprenderá cómo funciona Windows detrás de su bonita (?) Superficie. Solo mira el código de inicialización para COM-Objects y ya sabes a qué me refiero. Nunca verá tales cosas en VB o C#

Tiene que programar cada botón, cada ventana y cada control por su cuenta, enviando mensajes de ventana tontos, sin embargo sus aplicaciones son pequeñas, muy pequeñas. Este es un arte olvidado:

escribir programas pequeños y rápidos

Buena suerte!

4

te odio mi respuesta:

Los mayores cuellos de botella en el desarrollo GUI por lo general no son debido a la lengua. Después de todo, la mayoría de las veces, en la mayoría de las aplicaciones, la IU está inactiva, esperando que el usuario ingrese algo. Ya puedo escuchar tus gritos, pero dije en la mayoría de las aplicaciones.

Digámoslo de esta manera: estoy bastante seguro de que se puede diseñar una buena IU sobre .Net CLR. Aprender C++ es algo bueno, pero no resolverá los problemas inherentes al desarrollo de una buena IU.

1

Sí y no. Todo se trata de optimización ... Y dado que C++ le permite trabajar en un nivel inferior, C++ es uno de los mejores idiomas para escribir aplicaciones rápidas. Sin embargo, esas mecánicas de bajo nivel implementadas en C++ podrían ser muy molestas si estás acostumbrado a enfoques más abstractos de OOP. Probar su software en C++ suele ser un proceso largo. Si está buscando velocidad de todos modos, C++ definitivamente sería una de las mejores opciones.

6

sí, C++ es absolutamente genial. Compruebe Qt. También tiene un gran Python binding, por lo que puedes prototipar fácilmente en Python, y cuando/si necesitas un rendimiento adicional, portar a C++ es una traducción mayoritariamente 1: 1.

Pero, de hecho, la escritura de C++ no es tan difícil, ya sea cuando se tiene una gran plataforma, la peor parte es escribir todas las declaraciones de clase :-)

3

Si usted está comprometido con el aprendizaje de la materia prima, arenoso detalles de Win32, luego C++ lo llevará hasta allí. Si no lo eres, terminarás usando muchos envoltorios de todos modos. Para algo así como una pequeña utilidad o especialmente algo así como una extensión de shell (donde tratar de usar .NET le causará problemas de todos modos), C++ le permitirá escribir código efectivo con el mínimo absoluto en dependencias externas. Para una aplicación más grande, YMMV: gran parte de la lentitud de la interfaz de usuario proviene del diseño deficiente: algoritmos ingenuos, una falta de voluntad para derivar operaciones no triviales en hilos independientes, la dependencia de componentes de terceros mal escritos en lugar de controles personalizados ... Errores fáciles de realizar en cualquier idioma.

2

Aquí está mi respuesta honesta a esto.

En primer lugar, creo que cada programador debe aprender C/C++ solo por el hecho de que al aprender C++ aprende sobre la programación. Es un lenguaje de nivel de sistema. Debe considerar los detalles más finos de la administración de la memoria y demás. Estoy sorprendido de cuántos programadores no entienden los aspectos fundamentales de un lenguaje de programación o un sistema informático. Al aprender C/C++, te obligas a comprender la programación en un nivel más íntimo. Además de eso, si aprende cómo programar en C/C++, puede programar casi cualquier cosa.

Eso no quiere decir que C/C++ siempre sea la herramienta adecuada para el trabajo. Puede ser un dolor total depurar y tomar más tiempo para escribir un código más significativo. Sin embargo, es perfecto para aquellas situaciones en las que necesita un control absoluto de cómo se ejecuta un programa.

Esto quiere decir que no prefiero C/C++ para la programación de IU. Aún debe usar un marco de ventanas específico para el SO en el que se ejecuta (MFC, Win32, Motif, GTK, QT, etc.). Estos marcos no se prestan a curvas de aprendizaje fáciles. Para al menos el desarrollo de Windows, .NET es realmente el futuro del desarrollo de la interfaz de usuario (UI), aunque sorprendentemente MFC obtuvo una revisión importante para Vista que hace cosas .NET ni siquiera lo hace todavía. Si escribe su UI en .NET, es más fácil de mantener y para otros mantener.

Normalmente escribo mi UI en .NET y back-end en C++.

5

Escribí aplicaciones de Windows C++ durante 10 años y cambié a C# hace aproximadamente 2 años para trabajar en el último producto. Me avergüenza cuán patética es la aplicación C#. La puesta en marcha tarda 20 segundos, tiene que esperar un segundo o más para que cambie de una pantalla a otra. He usado una biblioteca de control de GUI de terceros, ¡y eso filtra la memoria como un colador! Mi aplicación funciona a 150 megas y apenas hace nada.

Estoy buscando volver a C++.

Puede usar MFC, será mucho más rápido que .Net. O, si realmente desea grabar, consulte WTL, aunque no hay mucha documentación para eso. Sugiero que vaya con MFC o Qt porque encontrará mucha información y tutoriales buenos para ellos.

Puedo ver que C# puede ser más rápido de desarrollar, y tal vez en alguna versión futura será más rápido y más pequeño.

0

C++ le ofrecerá potencialmente una aplicación más ágil, más barata y más rápida (si lo hace bien).

Sin embargo, el .NET framework está diseñado para la comodidad desde el punto de vista de un desarrollador; una gran mejora sobre Win32 API o MFC, lo que puede parecer un trabajo duro en comparación, así que considere cómo implementará los aspectos para los cuales su aplicación depende de .NET (hay otros marcos disponibles que pueden ser más fáciles que MFC o Win32 API) , y también considere los costos y problemas de licencia de usar dichos marcos; por ejemplo, la versión Express gratuita de VC++, por ejemplo, no incluye compatibilidad con MFC.

Si sabe dónde su aplicación es lenta, C++/CLI puede ser una solución; permitiéndole mezclar código administrado y nativo para acelerar las partes que lo necesitan. Sin embargo, si la GUI es intrínsecamente lenta en lugar del procesamiento de la aplicación; esto puede no ser un camino útil.

Cuestiones relacionadas