2008-09-18 13 views
6

He sido programador web basado en Unix durante años (Perl y PHP). También soy competente con C y C++ (y bash y ese tipo de cosas de sysadmin) en términos del lenguaje en sí. Nunca tuve problemas para aprender un nuevo idioma (estuve jugando con Java hace unos años y aunque podía escribirlo, simplemente no me gustaba como idioma).¿Cómo comenzar en el desarrollo de Windows?

Lo que no tengo ninguna experiencia con es la amplia gama de marcos que existen para escribir aplicaciones gráficas de Windows.

Tengo algunas ideas para las aplicaciones basadas en Windows que quiero trabajar. Podría hacer esto es Perl/TCL/TK, pero quiero algo más "nativo" por una variedad de razones.

A través de mi empresa actual tengo acceso a las herramientas de Microsoft (y las licencias para usarlas para "desarrollo") así que he decidido enseñarme algo nuevo.

Por lo tanto, tengo instalado Visual Studio 2008. Lo encendí, hice clic en "Nuevo proyecto" y luego me confundí por la variedad de tipos de proyectos nuevos que podía comenzar.

¿Alguien puede ayudarme a entender no solo las diferencias fundamentales sino también cualquier consejo sobre qué tipo de cosas se presta cada tipo?

  • Windows Forms
  • aplicación MFC: podía - (a menos que esto es en realidad más recomendable ... Sé el idioma por lo tanto no la elección de C#) Yo uso

    Suponiendo Voy a bajar la ruta C++

  • Win32

también sé que lejos de Microsoft que podría utilizar wxWidgets. wxWidgets me atrae (plataforma cruzada, etc.), pero ¿cómo se compara esto con las diversas opciones de Microsoft anteriores? También sé que Qt existe.

Respuesta

0

C# es el lenguaje de elección para el desarrollo de Windows, para mí. Vengo del mismo tipo de antecedentes que tú, y encontré C# increíblemente refrescante. Realmente amo este lenguaje, y .NET es ahora mi plataforma de elección. Además, es fácil mantenerse en contacto con sus raíces de Unix a través del desarrollo Mono. Realmente, .NET es una gran plataforma y debes explorarla.

Además, cuando se trata de Visual Studio, debe recordar que los diferentes proyectos básicamente solo especifican qué tipo de bibliotecas están incluidas, de forma predeterminada, y el proceso de compilación. Si desea permanecer con un Makefile estilo Unix, puede hacer el desarrollo de Windows con Mono.

Alex

0

Windows Forms es , con mucho, el mejor de esos. Sin embargo, usar formularios de Windows de C++ simplemente te confundirá más si aún no sabes lo que estás haciendo, porque entonces realmente estás usando C++/CLI, que bien podría ser un lenguaje completamente diferente. Mejor ir C# si quieres ir por esa ruta.

MFC es probablemente lo más parecido a lo que está familiarizado. Pero, de nuevo, Windows Forms es mucho más agradable.

0

Realmente elegiría C# en lugar de C++. Para las aplicaciones cliente de Windows, no puede ser mejor. Para C/C++ como tú, la curva de aprendizaje de la sintaxis será corta. La dificultad será aprender el framework .NET, pero ese es el costo que tendrá que incurrir de una forma u otra.

Una vez que seleccione C#, simplemente elija Windows Forms o la aplicación WPF. Ambos son tipos de aplicaciones del lado del cliente. Si elige la aplicación WPF, también tendrá que aprender XAML, que es un concepto bastante nuevo pero poderosamente poderoso.

0

He intentado hacer algo de programación C++ en .Net (Windows Forms). Y si bien fue posible, ciertamente no fue una experiencia placentera, principalmente porque tiene algunas palabras clave adicionales que difieren de standarad C++. Pero si estás dispuesto a aprender algo más de C++, es una opción.

Yo mismo he empezado a trabajar en un proyecto que utiliza C# que funciona muy bien. Es fácil de aprender si tienes experiencia en C++.

No volvería a tocar la API Win32. ¡Es realmente terrible!

4

Depende de qué tan 'cerca del metal' desee estar. Elija .Net/C#/Windows Forms/WPF si desea escribir rápidamente aplicaciones solo para Windows. Elija C++/MFC si está decidido a aprender una plataforma que no es fácil de usar y tiene protecciones de 15 años de código heredado, pero le brinda un control infinito sobre cada pequeño detalle (para ser claro: MFC también es solo para Windows) .

MFC es un envoltorio alrededor de la api C win32, además de algunos extras que combinan la funcionalidad estándar. Ayuda mucho saber cómo funciona la api win32. Para aprender esto, recomiendo 'Programming Windows' de Charles Petzold (llamado 'el Petzold' por los veteranos). También puede elegir comenzar con MFC. Eche un vistazo a las numerosas muestras y tutoriales que se incluyen con Visual Studio y en sitios como codeproject.com.

.Net/C# es mucho más fácil de usar. Extrae gran parte de la API de Win32, pero sigue siendo un envoltorio, por lo que para algunas cosas deberá 'bajar un nivel', como solía tener con Visual Basic. En mi humilde opinión (y probablemente me modded para esto), C# es el nuevo Visual Basic, excepto que no es tan feo como un lenguaje y está tipado estáticamente. Para ser justos, tiene algunas ventajas también, como no requerir el extraño tiempo de ejecución de VB (pero sí requiere .Net, entonces ...)

+0

Tu comentario en C# siendo el nuevo Visual Basic es un poco parcial. Visual Basic.NET es un lenguaje muy maduro y no requiere el "extraño tiempo de ejecución de VB" al que se refiere. Las elecciones de idiomas son solo eso, elecciones de idiomas. El inglés no es mejor que el chino. Todos ellos tienen sus méritos. –

+1

Puedo ver cómo 'C# es el nuevo Visual Basic' podría considerarse despectivo, pero no quise decirlo de esa manera (bueno, tal vez un poco;)). Lo que quiero decir es que C# es la nueva forma de "nivel de entrada" para programar Windows, incluso si es un lenguaje muy capaz en sí mismo. Además, VB.Net y el antiguo VB son idiomas muy diferentes. – Roel

0

Si solo está interesado en escribir aplicaciones de ventanas gráficas, simplemente quédese con " Aplicación Windows Form ". Comenzará con un formulario de Windows en blanco y una clase que contenga su método main().

El proyecto "Aplicación de consola" es probablemente el más simple, solo crea un archivo de clase para usted con un main() y eso es todo.

El proyecto "Biblioteca de clases" tiene andamios y configuración de compilación predeterminada para crear una DLL.

Generalmente no hay diferencias fundamentales entre los diferentes tipos de proyectos. Todo lo que hacen es configurar algunos valores predeterminados para ti y generar algunos códigos de andamios (por ejemplo, un formulario de Windows en blanco) para que comiences.

Recomiendo aprender C#. Si conoces Java, no será un gran salto para ti. La versión inicial de C# en realidad fue diseñada para ser exactamente como Java, pero han divergido un poco a lo largo de los años.

0

Creo que lo que yo sugeriría tiene mucho más que ver con su objetivo. Si está buscando construir su propia aplicación y quiere comercializarla rápidamente, y tiene que ser Windows, me gustaría ir con C# WF como otros han sugerido.

Si está buscando hacerse más útil, entonces yo iría con C#/ASP.Net. De esta manera estás aprendiendo C# pero también estás aprendiendo más sobre web developent, en general, y ASP.Net en particular.Creo que encontrará que Windows Forms es mucho más fácil, comparativamente, y realmente no vale la pena perder mucho tiempo.

Así que, si yo fuera tú, construiría mi aplicación de modo que la mayor parte se separe de la interfaz. Primero aprendería cómo hacer que ese código interactúe en ASP.Net, y luego lo probaría en Windows Forms. Si puede hacer eso, aprenderá muchas habilidades realmente importantes para el desarrollo del framework .Net.

0

En mi humilde opinión, wxWidgets es mejor que cualquiera de esos. Por ejemplo, conozco a muchas personas que convirtieron sus proyectos de MFC a wx. wxWidgets tiene todo el contenido de MFC (en las versiones anteriores de wx, muchas clases eran clones de clases de MFC) y mucho más. No es solo una biblioteca de GUI, pero tiene envoltorios para todo tipo de tareas comunes, como leer/escribir archivos XML, registro de Windows, manipulación de varios tipos de gráficos y datos de imágenes, clases de conversión entre juegos de caracteres, etc. También hay una gran cantidad de clases complementarias en el sitio web de wxCode que pueden mejorar sus aplicaciones fácilmente.

wxWidgets también es multiplataforma, tiene soporte total Unicode y solo adelanta más. Si decides intentarlo, asegúrate de probar wxFormBuilder para obtener un constructor WYSIWYG fácil de la interfaz de usuario (cuadros de diálogo, ventanas, ...).

Cuestiones relacionadas