Como un stickler de C++, esto realmente me ha estado molestando. Siempre me ha gustado la idea del "marco independiente del lenguaje" que Microsoft creó hace aproximadamente una década. ¿Por qué han dejado caer la pelota con esta idea? ¿Alguien sabe el razonamiento detrás de esto?¿Por qué WPF no admite C++. NET, como lo hace WinForms?
Respuesta
Parte de la razón será que el soporte de C++ es en realidad dos idiomas en uno: las variantes nativa y CLI; esa carga de desarrollo adicional ha sido reconocida por el equipo de Visual C++ como la razón por la que la integración adecuada de MSBuild se retrasó (¿retrasos ?, no lo he comprobado en 2008 o posterior) detrás de otros idiomas.
Otra parte será la generación de código durante la compilación que se realiza en una compilación de C# para admitir, p. la "magia" vinculante; He descubierto que incluso en F #, no entiendes que "simplemente está sucediendo".
También me molesta, si lo hubieran soportado, podríamos migrar nuestro código C++ a una nueva GUI mucho más fácil y más barato que básicamente reescribir todo en C#. Nos cuesta una fortuna rehacer nuestras aplicaciones, justo lo que queríamos en una recesión.
Imagino que el razonamiento es que C# es popular (y no tan multiplataforma como C++) por lo que han decidido mantener sus esfuerzos de desarrollo al mínimo requerido.
Si fuera yo, mi razonamiento sería que C++ .Net no debería usarse para escribir GUI.
No estoy tratando de ser sarcástico aquí, tal vez alguien me puede mostrar el error de mis maneras, pero no creo que sea una buena idea. Estoy jugando con uno en este momento y el desarrollo mucho más lento que si la aplicación se hubiera escrito en C#. Mi sensación es que si se requieren funciones en C++. Net o solo C++ regular para la aplicación, parece que una mejor idea sería crear una DLL para hacer el trabajo pesado y podría interactuar con C#.
es simplemente porque C# tiene todo el esfuerzo puesto para que sea más fácil. Podrían hacer eso con C++, si quisieran. Simplemente no lo hacen. – gbjbaanb
¿Hay alguna buena razón para hacerlo? –
¿Existe una buena razón para tener un tiempo de ejecución de múltiples idiomas, si resulta demasiado trabajo para admitir la programación de la GUI en todos los idiomas? –
Puede hacer WPF con C++ administrado.
La razón es que casi toda nueva programación de aplicaciones ahora se realiza en JavaScript, Java, VB.NET o C#: todos los lenguajes de GC. El énfasis está en una mayor calidad para un conjunto de habilidades más bajo y C++ exige demasiado del desarrollador, las empresas quieren que las personas escriban el código de error de registro en su primer día.
C++ para aplicaciones es principalmente para el mantenimiento de aplicaciones existentes o donde se requiere un rendimiento extremo. Los controladores de dispositivos y el sistema operativo aún se escriben con frecuencia en C++, pero incluso eso está cambiando (Coyotos es Cbit, E #, Cosmos/Mosa son C#, Singularity/Midori).
- 1. ¿Por qué hace esto lo que hace?
- 2. ¿Por qué este script SQL funciona como lo hace?
- 3. Ejemplos de aplicaciones rápidas .NET WPF/WinForms?
- 4. ¿Por qué los controles WinForms/WPF no usan Invoke internamente?
- 5. Lo hace por (;;) significa en C#
- 6. No entiendo por qué string.size devuelve lo que hace
- 7. Ninject for winforms: ¿mi arquitectura lo hace inútil?
- 8. ¿Por qué ObservableCollection no admite cambios masivos?
- 9. ¿Por qué debería usar WPF sobre Winforms? ¿Algún ejemplo de WPF superando a Winforms?
- 10. ¿Qué indicadores abren un archivo como lo hace Notepad.exe?
- 11. ¿Por qué XmlSerializer no admite el diccionario?
- 12. ¿Por qué Java varargs no admite colecciones?
- 13. ¿Por qué las conversiones implícitas C funcionan como lo hacen?
- 14. ¿Por qué Y hace lo mismo que yy?
- 15. ¿Por qué auto_ptr no admite op -> *()
- 16. ¿Por qué C++ no admite varios inicializadores en for loop?
- 17. ¿Por qué F # no permite atributos múltiples donde C# lo hace?
- 18. ¿Por qué F # no admite clases anidadas?
- 19. ¿Por qué c no admite un objeto con una interfaz como parámetro?
- 20. ¿Por qué se admite multibinding en WPF, pero no en Silverlight?
- 21. ¿Por qué gcc no admite funciones desnudas?
- 22. ¿Por qué wsHttpBinding no admite la transmisión?
- 23. ¿Por qué no se admite Convert.ToDouble (char)?
- 24. ¿Por qué gcc lo hace al crear código ensamblador?
- 25. ¿Qué es WPF para el programador WinForms?
- 26. Lo que lo hace un PaaS no SaaS - o ejemplos
- 27. Controles WPF en WinForms
- 28. ¿Por qué utilizar Handlers mientras runOnUiThread hace lo mismo?
- 29. ¿Funciona la "Recursividad anónima" en .NET? Lo hace en Mono
- 30. ¿Qué es el/elemento? ¿Como lo uso? ¿Y por qué?
Supongo que el equipo del compilador de C++ no tiene suficiente personal, y mantener dos idiomas (C++ y C++/CLI) es una carga excesiva. C++/CLI estará muerto de todos modos con VS11, y estará escribiendo objetos COM con la ayuda de extensiones de compilador ligeras, que en mi humilde opinión es mucho más sana (y tan amigable con .NET como C++/CLI). Prefiero un compilador correcto para un idioma que un compilador falso para dos idiomas. –