Programar en Visual C++ - I

Tamaño de letra:

Programar en Microsoft Visual C++

Mucha gente iniciada en programación C++ quiere aprender a programar con Microsoft Visual C++ (VC++)  y se encuentran con muchísimas dudas. Han oído hablar de Microsoft Visual C++ 6, de Visual C++ 2002 NET, de Visual C++ 2010, de programar en código nativo, de usar la MFC, de programar con NET Framework, de C# (C sharp), de programar en consola y alguno puede pensar, pero… ¿qué narices es todo esto? ¿Cuál es el VC++ más apropiado para mí y para el diseño de mi aplicación? ¿Visual C++ es gratuito? ¿Mi código de VC++ 6 vale para VC++ 2010?
Pienso que este artículo es necesario antes de ponerte a descargar software o a programar sin más. Espero que te sirva de guía y puedas conocer las distintas formas de programar con VC++.

 

De Visual C++ 6 a Visual C++ 2010

Un momento muy importante para todo programador surgió con la aparición de Visual Studio versión 6.0 que salió en el año 1998. Dentro de este paquete estaba Visual Basic 6 que fue el lenguaje de programación más popular: Era la forma más sencilla posible de crear una aplicación para Windows con programación orientada a objetos, pero vamos que hablo en pasado y aún a día de hoy (¡13 años después!) sigue siendo utilizado por muchísimos usuarios, echas un vistazo a cualquier foro y te puedes sorprender al ver que hay más gente que pregunta por VB6 que por VB NET. Además es usado también en Microsoft Excel, Access y muchas otras aplicaciones de Windows. Pero vamos a centrarnos en lo que nos importa hoy.
Por su parte visual C++ 6 sedujo a otros tantos usuarios. Yo diferencio dos formas totalmente distintas de programar:

 

  1. Programación en código nativo: Esto se hace usando directamente las API de Windows. Hablaremos de esto.
  2. Usando la MFC 6.0 (mfc42.dll) que viene incluida en Visual C++ 6. Esta forma de programar es distinta a la anterior. La MFC, cuyas siglas significan Microsoft Foundation Classes, es una librería con la que puedes crear y manejar componentes de Windows de forma intuitiva. Se hace mucho más simple la programación, no digo que sea sencillo ni fácil que no lo es, digo simplicidad, menor código, más intuitivo. La MFC es una biblioteca de clases donde podemos encontrar un conjunto de las mismas para simplificar el trabajo que nos llevaría realizar ciertas tareas usando la programación 1. Hay clases como CDialog para representar el cuadro de diálogo, CString para cadenas de texto etc… Se podría decir que MFC es la API de C++ para Windows. Utilizando la segunda forma puedes crear por ejemplo (se me ocurre) una sencilla aplicación para gestionar una base de datos ya que la MFC proporciona unas clases para el manejo de las mismas.

A partir de VC ++ 6.0, que fue el punto de inflexión, salieron las siguientes versiones en los mismos años que indica su nombre:

  • Visual C++ .NET 2002 (Visual C++ 7.0) => MFC 7.0 (mfc70.dll)
  • Visual C++ .NET 2003 (Visual C++ 7.1) => MFC 7.1 (mfc71.dll)
  • Visual C++ 2005 (Visual C++ 8.0) => MFC 8.0 (mfc80.dll)
  • Visual C++ 2008 (Visual C++ 9.0) => MFC 9.0 (mfc90.dll)
  • Visual C++ 2010 (Visual C++ 10.0) => MFC 10.0 (mfc100.dll)

 

Código nativo, MFC, consola y .NET

Como sabes, a partir de Visual Studio .NET 2002 se introdujo la plataforma .NET. Los programas desarrollados en .NET no se compilan directamente en lenguaje máquina, sino que se compilan en un lenguaje intermedio llamado Microsoft Intermediate Language (MSIL). Fíjate que cada vez que ejecutas un programa, el mismo Framework se encarga de “traducir” el código intermedio en código que entiende el procesador (¡en cada ejecución!).
Apareció también el lenguaje C#, diseñado específicamente para .NET y basado en C++ y Java. (Enlace a Wikipedia)

Muchos usuarios que querían aprender a programar en Visual C++ .NET 2002 se vieron envueltos en algún pequeño dilema: ¿cómo programo en VC++? ¿En código nativo, usando la MFC, programando en consola o programando en C#? ¿Qué diferencia hay entre uno y otro?


Con Microsoft Visual C++(C#) puedes programar tanto en código nativo, usando la MFC, usando la consola o en C#, entre otros.

 

  • Código nativo: Cuando programamos de esta forma, lo hacemos directamente usando las API de Windows y programando para Windows. Yo suelo programar así. Un ejemplo de este código lo tienes aquí:
    Shell Code Generator - Ejemplo C++
    La gran ventaja de programar de este modo es principalmente la velocidad. Como es posible añadir directamente código ensamblador, podemos crear aplicaciones rapidísimas y que consuman muy pocos recursos. Si has programado con MASM32 en ensamblador te darás cuenta que es similar pero además tienes la ventaja de la programación en C++ y puedes aprovecharte de esto en vez de trabajar directamente en asm. No te pongas por ejemplo a programar la gestión de una base de datos de este modo, porque yo lo intenté en su día y verás que hay poca información y es difícil. Puedes crear aplicaciones con el fin de evitar dependencias e instalaciones, en fin aplicaciones donde necesites toda la potencia del procesador: programas de análisis, búsquedas.  Si yo tuviera que diseñar un antivirus, lo programaría de este modo.
  • MFC:  Ya he hablado antes un poco de esta librería de clases. Antes de que apareciera el .NET Framework, si querías programar algo más complejo(o no) o simplemente crear una aplicación para gestionar una base de datos, una buena opción era realizarlo con Visual C++ 6.0 usando la MFC. Desde VC ++ 6.0 tienes un asistente que te proporciona un código base para que puedas comenzar a programar. Sin embargo, tras la aparición de la plataforma .NET y de la programación en C#, Microsoft como te puedes imaginar,  redujo el interés de MFC a favor de .NET Framework. Los últimos MFC unen elementos de MFC con .NET Framework para ayudar a los programadores a la migración a .NET. Sin embargo, y aunque Microsoft quiere que programes en .NET, mucha gente programa todavía usando la MFC: tal vez por la costumbre, tal vez por el no uso de los .NET Framework… no lo sé habría que preguntárselo a estos desarrolladores, yo con MFC sólo he hecho cosas básicas para conocer su funcionamiento. Con la MFC puedes programar todo lo que se te ocurra.
  • .NET (C#): C# es un lenguaje diseñado específicamente para .NET. Lo habrás oido como C sharp, que es como se pronuncia.Tiene, lógicamente, la dependencia de las librerías de .NET Framework: esta pienso que es la principal desventaja. La aplicación que tú creas necesita estas librerías para funcionar y dependiendo de la compilación necesitarás una versión u otra. Por ejemplo, si tu programa necesita para funcionar .NET 4, tienes que saber que ni Windows 7 lo tiene por defecto, ya que me lo acabo de descargar e  instalar ahora mismo. ¿Ventajas? Yo creo que tiene todas. También te interesaría saber que existen implementaciones de.NET para poder ejecutar programas compilados con .NET en otras plataformas distintas de Windows, como Linux y Mac. Tal vez te interese en un futuro crear aplicaciones para estas plataformas. Lo dejo aquí porque yo no soy el más indicado para hablar de .NET.
  • Consola: Hay que mencionar también la programación de consola, también muy utilizada para crear aplicaciones en distintas plataformas programando sólo en C++ y aprovechando las características de C++.

 

La versión gratuita de Microsoft Visual C++ y C#

Microsoft Visual ++ Express

A partir de la versión 2005, si no me equivoco, Microsoft hizo algo que nos motivó a todos los programadores a usar VC++: sacó una versión llamada Microsoft Visual Studio Express ¡GRATUITA! (registración gratuita). Lógicamente con unas limitaciones respecto a las versiones de pago.
Con estas versiones Express podemos programar de cualquier forma explicada en este tutorial aunque en algunos casos se necesitarán determinadas configuraciones. A partir de ahora me voy a centrar en la última versión de Microsoft Visual C++(C#) Express que a fecha de este tutorial es la 2010. Cualquier proyecto realizado en una versión anterior se puede actualizar a 2010. Para la programación en C++ tenemos dos versiones:


1.- Microsoft Visual C++ 2010 Express
2.- Microsoft Visual C# 2010 Express


que puedes descargar de aquí:
http://www.microsoft.com/express/Downloads/
Como puedes imaginar VC++ 2010 suele ser para aplicaciones Win32 (aunque no es cierto totalmente, ¿has oído hablar de C++/CLI?) y VC# 2010 para aplicaciones en .NET.

  • Como yo suelo programar con VC++ 2010 en código nativo, hablaremos más detenidamente en el siguiente artículo y veremos su instalación.
  • Respecto al uso de MFC en VC++ 2010 y recompilación de códigos de versiones anteriores, realmente no tengo la experiencia suficiente para mostrártelo y de momento no tengo mucho interés, así que te puede interesar algún enlace:
    http://www.codeproject.com/KB/MFC/MFCinVisualStudioExpress.aspx
  • Sobre C# (C sharp) hay en la red muchísima información. Después de realizar varios proyectos con Visual C#, relacionados principalmente con bases de datos, puedo asegurar que los programas que se generan son muy estables, prácticamente sin errores graves. El uso de bases de datos no es sencillo ni básico para empezar y no es conveniente usar el primer código que encuentres, existen muchas alternativas.
    Según he podido hablar con profesionales que trabajan en el sector de aplicaciones en servidor, C sharp es un lenguaje muy utilizado (por ejemplo para aplicaciones de escritorio que se conecten al servidor) y muchos otros programadores comentan que ven cerca el final de VB .NET a favor de C#.

 

Conclusiones

Espero que este artículo te haya servido de orientación a la hora de crear tu proyecto. Ciertamente, hoy estoy retocando algunas cosas que he ido aprendiendo desde que escribí el artículo y veo que todo esto va muy rápido, tal vez demasiado rápido. A partir de la versión 2013 se permite la descarga de Visual Studio (VS) para aplicaciones de la tienda y Windows Phone, la descarga de VS para escritorio o la programación con Windows Presentation Foundation (WPF)... Habrá que hacer una segunda parte...

En el siguiente tutorial veremos la instalación de Microsoft Visual C++ 2010 Express.

Última actualización: Lunes, 16 Febrero 2015

No tiene privilegios para responder a los comentarios.


 
Visitas: 8487562