Compiladores

El Lenguaje C es un lenguaje de programación de propósito general que ofrece economía sintáctica, controlde flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no está especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.

Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistemaoperativo ni a ninguna máquina concreta. Se le suele llamar lenguaje de programación desistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar cualquier tipo de aplicación.

La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, números enteros y en coma flotante, de varios tamaños. Además se pueden crear tipos derivados mediante la utilización de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribió el propio sistema operativo en C.

C trabaja con tipos de datos que son directamente tratables por el hardware de la mayoría decomputadoras actuales, como son los caracteres, números y direcciones. Estos tipos de datospueden ser manipulados por las operaciones aritméticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los básicos, debiendo ser el programador el que los desarrolle. Esto permite que elcódigo generado sea muy eficiente y de ahí el éxito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros mecanismos dealmacenamiento de datos que no sea el estático y no proporciona mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y loscompiladores de fácil implementación en distintos sistemas. Por contra, estas carencias se compensan mediante la inclusión de funciones de librería para realizar todas estas tareas, que normalmente dependen del sistema operativo.

Originariamente, el manual de referencia del lenguaje para el gran público fue el libro de Kernighan y Ritchie, escrito en 1977. Es un libro que explica y justifica totalmente el desarrollo de aplicaciones en C, aunque en él se utilizaban construcciones, en la definición de funciones, que podían provocar confusión y errores de programación que no eran detectados por el compilador. Como los tiempos cambian y las necesidades también, en 1983 ANSI establece el comité X3J11 para que desarrolle una definición moderna y comprensible del C. El estándar está basado en el manual de referencia original de 1972 y se desarrolla con el mismo espíritu de sus creadores originales. La primera versión de estándar se publicó en 1988 y actualmente todos los compiladores utilizan la nueva definición. Una aportación muy importante de ANSI consiste en la definición de un conjunto de librerías que acompañan al compilador y de las funciones contenidas en ellas. Muchas de las operaciones comunes con el sistema operativo se realizan a través de estas funciones. Una colección de ficheros de encabezamiento, headers, en los que se definen los tipos de datos y funciones incluidas en cada librería. Los programas que utilizan estas bibliotecas para interactuar con el sistema operativo obtendrán un comportamiento equivalente en otro sistema.

Seguramente sería exacto indicar que existe un compilador C y/o C++ para casi cualquier máquina que se haya construido (ordenador de uso dedicado o general).  Algunos pueden conseguirse gratuitamente en la Red, al menos para uso didáctico y personal.  Otros son productos comerciales que tienen un precio.

 

Dev-C++ de BloodshedSoftware  www.bloodshed.net

Un entorno integrado de desarrollo IDE ("Integrated Development Environment") distribuido con licencia GNU para la creación de aplicaciones C/C++ utilizando los compiladores GNU gcc/g++ (incluidos en el paquete).  Dispone de muchas de las opciones que son frecuentes en otros entornos "de pago". Incluyendo, entre otros, un editor altamente configurable con posibilidad de auto-completar las palabras clave, y de mantener proyectos grandes de distintos tipos: aplicaciones Windows (gráficas); aplicaciones de consola (modo texto), y construcción de librerías estáticas y dinámicas (DLLs). Existen binarios para su utilización en Windows y Linux, y cuenta con gran cantidad de módulos adicionales que pueden instalarse selectivamente. Su sistema de actualización on-line y de mantenimiento de paquetes instalados, es realmente notorio.

La versión para Windows incluye MinGW, un conjunto de utilidades para desarrollar aplicaciones en Windows utilizando una interfaz POSIX (Unix/Linux).  Es una buena forma de utilizar C++ en Windows utilizando herramientas de código abierto. Por supuesto no esperéis el nivel de sofisticación y refinamiento de otras plataformas "de pago", como Builder por ejemplo, pero en ocasiones la simplicidad y la sencillez son más una virtud que un defecto.  La versión Dev-C++ que utilizo es la 4.9.9.2, que incluye de la versión 3.4.2-20040916-1 de los compiladores gcc/g++ y la versión 5.2.1-1 de GDB, que es el depurador GNU.

Ya dentro del sitio, "The Compilers resources page"  www.bloodshed.net/compilers contiene una buena relación de compiladores gratuitos (no solo C/C++) y enlaces interesantes.

Relo www.fifsoft.com

Si desea desarrollar aplicaciones Windows con el compilador Borland C++ o MinGW,  aconsejaría echar un vistazo a esta plataforma.  Relo es un sistema integrado de desarrollo de código libre para los compiladores señalados, aunque la versión actual (2006) permite trabajar también con los compiladores MS Visual C++ y Digital Mars.  Su editor es altamente configurable y capaz de identificar palabras clave de una gran cantidad de lenguajes actuales, incluyendo por supuesto C++.  El paquete no incluye compilador, por lo que debe proveerse de alguno de los anteriores. Si no tiene otra preferencia, le aconsejaría MinGW, que es GNU.

Stroustrup:  An incomplete list of C++ compilers www.research.att.com

A pesar del inconveniente de estar en inglés, me parece que una buena referencia a este asunto de los compiladores es la página que el autor del lenguaje mantiene con este mismo fin.  Así que mejor que inventar de nuevo la pólvora os remito directamente e ella.  Por supuesto que el Sr. Stroustrup no se "moja" en esta cuestión. Se limita a proporcionar una lista sin comentarios u opiniones de ponderación, pero estad seguros que el mero hecho de que un compilador aparezca en su lista, es señal de que es un producto más que aceptable.

Insight sources.redhat.com

Para los que trabajéis en el entorno GNU [1] cabría añadir que le echéis un vistazo a este proyecto. Insight es una interfaz gráfica (GUI) de GDB, que es el depurador de GNU.  Este producto fue desarrollado inicialmente por Red Hat y donado después al público bajo la GLP (GNU Public License).

Visual C++ Express edition

Aunque no sea muy devoto de los productos de Redmond, en esta ocasión, hay algo que puede ser interesante para los estudiantes. Microsoft ha publicado una versión gratuita (de libre descarga desde la Web) de su entorno de desarrollo Visual C++.  Además también está disponible para su descarga una versión del SDK. Es decir, de la documentación necesaria para desarrollar aplicaciones Windows (especialmente interesante porque contiene información sobre la API de este Sistema).  Naturalmente está orientado a desarrollos para los entornos Windows, y el único "pero" que se me ocurre es que esta versión de C++ contiene extensiones no incluidas en el Estándar, aunque desde luego en lo que respecta a su cumplimiento, es quizás uno de los que puede presumir de ser prácticamente 100 % "compliant".  Desde luego puede representar una inestimable ayuda para los interesados en la programación C++ para Windows [2] y una herramienta que podríamos calificar de imprescindible para el desarrollo profesional de aplicaciones para los Sistemas de Redmond.

Borland C++ C++ Compiler 5.5

Durante mucho tiempo fue mi favorito, aunque actualmente utilizo "Visual" para mis desarrollos (Standard y Professional Editions). Durante mucho tiempo fue uno de los mejores compiladores C++, si no el mejor, si bien actualmente ha sido claramente desplazado por el equivalente de Microsoft. Es el mismo que utiliza el "Builder" de este afamado fabricante de software, aunque sin las utilidades "de pago", que son fundamentalmente el entorno gráfico de desarrollo y las herramientas RAD.  La versión que aquí señalamos es una versión Windows para ser utilizada mediante líneas de comandos desde el Shell del sistema (una ventana DOS). Está disponible para su descarga libre desde la Web, aunque para acceder al fichero de instalación (un auto-instalable de 8.52 MB) hay que sufrir un proceso de "registro" algo tedioso [3].  El paquete contiene todas las herramientas para desarrollar aplicaciones C++, incluyendo la Librería Estándar de Plantillas (STL).  Existen tres páginas de ayuda que permiten hacerse una idea del contenido y comenzar rápidamente con las primeras pruebas.  Aconsejo echarles un vistazo antes de la descarga e instalación:

What is included

Supplementary information

Using the C++ Builder Compiler

El paquete contiene distintos ejemplos que pueden servir de modelo, pero solo un fichero de ayuda (bcb5tool.hlp).  El resto de la documentación puede encontrarse en esta página. Seleccionar el fichero B5std.zip (C++ Builder 5 core help files).

Borland Turbo C++ www.turboexplorer.com

Después de un tiempo de inactividad, Builder había quedado algo desfasado, por lo que la compañía ha decidido resucitar alguna de sus viejas glorias. En concreto la serie "turbo" que antaño le dieran fama y liderazgo en el mundo de la programación.  Aunque hay quién dice que el esfuerzo es "too few and too late", quizás le interese echar un vistazo a la nueva versión del compilador. Existe una versión Profesional y otra, denominada Explorer, que es gratuita.  Es un completo sistema de desarrollo (IDE) que permite construir aplicaciones nativas para Windows-32 con una adaptación bastante perfecta al estándar ISO/ANSI C++ y soporte para las librerías Boost ( Librerías) que resultaban algo dificultosas de integrar en Builder.

[Delorie]  Compilador DJGPP www.delorie.com/djgpp

Se trata de un completo sistema de desarrollo de código abierto para construir programas C y C++ 32-bit.  El entorno necesita un PC con procesador Intel 80386 y superior bajo DOS.  Está disponible para descarga gratuita.

TheFreeCountry.com thefreecountry.com

Si lo que buscas son recursos gratuitos, quizás te convenga echar un vistazo a estas páginas. No solo compiladores C/C++; también librerías, intérpretes, bibliografía, etc., y enlaces a otras fuentes de información (buen sitio para seguir tirando del hilo).