Capturando la potencia de C++

Análisis de un lenguaje casi estándar

Ninguna herramienta de desarrollo es capaz de crear aplicaciones más potentes y con mayor rapidez -ni requiere tanta sofisticación ni tanta dedicación para ser utilizada- como la actual generación de compiladores C++ de alto nivel.

Los paquetes C++ más populares, cargados con herramientas de alta utilidad como depuradores de errores, perfiladores y frameworks de aplicaciones, contienen todo lo que se necesita para crear prácticamente cualquier aplicación. Sin embargo, C++ no es para todo el mundo, y no es de ninguna forma el mejor lenguaje para todos los proyectos. Tradicionalmente, ha sido considerado un "lenguaje para hackers", y además, aprenderlo requiere meses y dominarlo años. Por otra parte, es un lenguaje que en general perdona los errores y permite a veces que pasen desapercibidos, hasta que aparecen en el producto final. Por lo tanto, si su objetivo es producir una aplicación pequeña, simple o adecuada para una herramienta de desarrollo rápido de aplicaciones (RAD) ya existente (como por ejemplo un generador front-end de base de datos, Visual Basic de Microsoft o Delphi de Borland International), utilizar C++ es francamente una pérdida de tiempo, esfuerzo y dinero.

Pero si sus programadores poseen la experiencia y capacidad necesarias y su aplicación es grande, no encaja en ninguna categoría de aplicación estándar, o requiere la velocidad que sólo un compilador de optimización avanzado puede ofrecer, C++ es la herramienta a elegir.

Lo que viene en la caja

Supongamos que se ha decidido por C++ como lenguaje de desarrollo de aplicaciones. ¿Qué paquete deberá elegir?

Los vendedores están revisando y modificando constantemente sus ofertas de productos, así que cualquier evaluación que señale a un producto específico como el mejor está condenada a una obsolescencia inmediata. De todas formas, hay algunas cosas que debe contar con encontrar al recibir el producto, y otras que podría ser conveniente buscar.

Todos los principales paquetes C++ comienzan obviamente con un compilador de optimización C++. Sin embargo, los compiladores de los diversos vendedores poseen todos sus propios puntos fuertes.

Por ejemplo, el de Borland ha sido conocido siempre por su rápida compilación, mientras que los de MetaWare y Watcom tienen la reputación de producir la codificación más ajustada y de más rápida ejecución. (También en este caso las ofertas cambian casi semanalmente, así que es conveniente comprobar los tests comparativos más recientes para conocer las puntuaciones de rendimiento.)

Por otra parte, los vendedores difieren ampliamente en su soporte a las funciones más recientes requeridas por el estándar de lenguaje en cuestión, incluyendo las plantillas o templates, tratamiento de situaciones de excepción, e información de tipo runtime. Todos estos medios son importantes. Las plantillas permiten la utilización de algoritmos con nuevos tipos de datos, ahorrando potencialmente muchas horas de re-codificación manual. En el tratamiento de situaciones de excepción se detectan errores y fallos, cosa que pocas aplicaciones pueden hacer bien por sí solas. Y la información tipo runtime hace más fácil la conexión de C++ a funciones de sistema operativo orientadas a objetos.

Entre los principales vendedores de compiladores es Microsoft -sorprendentemente- el que ha ido más por detrás de los demás y, hasta el release de los compiladores de 32 bits, no soportaba ni situaciones de excepción ni plantillas. (Su nuevo release de compilador de 16 bits sigue sin soportarlas). Y ningún compilador Microsoft soporta información de tipo runtime.

También será necesario recibir en el paquete un linker (un programa que convierte a un fichero ejecutable la codificación generada por el compilador), un depurador de errores o debugger, y una utilidad Make que crea automáticamente la aplicación.

Diferencias menos visibles

Aunque todos los productos soportan ciertas funciones y características básicas, lo hacen de formas muy diferentes. La primera diferencia que se observa es el interface que se presenta al programador.

La mayoría de los vendedores ofrecen sofisticados entornos de desarrollo integrado, IDEs (Integrated Development Environments), que permiten a los programadores editar, compilar y depurar sus aplicaciones dentro de un atractivo entorno de interface gráfico (GUI).

Algunos vendedores, no los ofrecen. Estos vendedores asumen, quizás correctamente, que cualquier programador experimentado tiene ya un editor preferido, y que le gustaría continuar utilizándolo. Algunos entornos están orientados a caracteres, y no son de orientación gráfica, y muchos programadores prefieren la claridad visual de un interface orientado a caracteres. Como los interfaces de usuario son siempre una cuestión de preferencia personal, deben comprobarse todos los posibles candidatos antes de elegir un producto con el que va a ser necesario convivir.

La mayoría de los IDEs C++ contienen también un browser de clases, que es un medio que permite explorar mediante clicks la jerarquía de clases C++ de un programa. (El C++ 7.0 de Symantec va un paso más allá que la mayoría de los otros productos, ya que permite reordenar la jerarquía de clases desde dentro del browser.)

Y hay varios productos que contienen editores de recursos mejorados, que automatizan la tarea de diseñar los elementos gráficos utilizados en programas Windows. (El Resource Workshop de Borland fue uno de los primeros en este grupo, pero Symantec y otros tienen ahora los suyos propios.)

La mayoría de los compiladores Windows pueden encapsular en objetos C++ controles a medida Visual Basic, VBXs (Visual Basic Custom Controls), que son los componentes añadibles popularizados por Visual Basic. Esta es una extraordinaria ventaja para los programadores que establecen prototipos de sus interfaces de usuario en Visual Basic y después crean el producto final en C++.

También resulta útil cuando se necesita un componente de programa particularmente complejo -como un driver TWAIN, un botón animado o una rejilla parecida a una hoja de cálculo- que requeriría mucho más tiempo codificarla que importarla como un VBX previamente creado.

Para quienes desearían dejar totalmente a cargo de la máquina algunas tareas de programación difíciles, los Wizards de Microsoft y los Experts de Borland ofrecen capacidades parciales de generación de codificación, que son particularmente útiles cuando se necesita añadir a la aplicación ciertas funciones y características avanzadas, como codificación de servidor OLE 2.0 para Windows.

Los frameworks de aplicación que se incluyen con muchos compiladores permiten manejar la codificación pre-escrita y depurada de otros programadores al escribir aplicaciones que utilizan menús, ratones y ventanas.

Los paquetes de compilador están complementados por algunos otros productos convenientes. La mayoría incluyen perfiladores de ejecución de codificación, aunque algunos no, mientras que otros incluyen herramientas de desarrollo bajo licencia para entornos específicos, como el Windows Resource Compiler y Help Compiler, o las Foundation Classes de Microsoft. Para otros, se espera que el usuario adquiera el kit de desarrollo de software para el entorno de destino (lo cual es una expectativa razonable, ya que es difícil programar para cualquier entorno sin esta información).

Otro producto adicional que resulta útil y que no es incluido por todos los vendedores es un depurador de errores o "debugger remoto", que funciona en un sistema diferente del programa que se está depurando.

Borland incluye en todos los paquetes C++ un Turbo Assembler, que resulta útil cuando se está creando codificación en lenguaje de máquina optimizada manualmente para esos bucles internos.

Symantec C++ 7.0 incluye dos capacidades nuevas: gestión de

Viñeta publicada el 20 de febrero de 1870 en La Flaca n.º 35 Tendencias

ny2 ACTUALIDAD

ny2 Sociedad de la información

Día de la Movilidad y el BYOD Coffee Break