Está en la página 1de 6

Ejemplos de compiladores

C++Builder
C++Builder es un entorno de desarrollo rpido de aplicaciones en lenguaje C++ para
Windows inicialmente propiedad de la empresa Borland, y actualmente de la empresa
Embarcadero Technologies, quien compr de Borland la divisin Codegear encargada del
producto. Codegear inicialmente se denominaba DTG='Developer Tools Group' hasta que
adquiri el nombre oficial CodeGear previo a la venta.
C++Builder combina la biblioteca Visual Component Library y el IDE escrito en Delphi con
un compilador de C++. El ciclo de lanzamiento es anual. Incluye herramientas que permiten
desarrollo visual de arrastrar-y-soltar componentes sobre la aplicacin e incorpora
constructor de interfaz grfica WYSIWYG en su IDE.
Historia.
Lanzado en 1997, despus de Delphi, y con un entorno similar a ste. Muchos componentes
de Delphi pueden utilizarse en C++. En 1999 Borland anunci la versin 4.0; poco tiempo
despus anunci que Borland C++ sera discontinuado en favor del C++Builder.
En 2000 sali publicada la versin 5.0 y en 2002 la versin 6.0. Para aquella poca las
versiones de C++Builder salan un ao o un poco ms de su contraparte Delphi.
En 2003 Borland publica C++BuilderX (CBX), que usaba el entorno de desarrollo (Galileo)
de un producto hermano: JBuilder y tena poca similitud con C++Builder o Delphi, pues
propona como framework a wxWindows (en lugar de OWL, OWLNext o VCL). Este
producto estaba dirigido a grandes organizaciones y no tuvo mucha aceptacin. Al final del
2004 Borland anuncio que continuara desarrollando el C++Builder e incluirlo junto con la
suite de desarrollo de Delphi development suite, abandonando el C++BuilderX.
Cerca de un ao despus del anuncio Borland publico 'Borland Developer Studio 2006' que
inclua el Borland C++Builder 2006 que provea un administrador de configuracin mejorado
y varias correcciones. Borland Developer Studio 2006 es un paquete que incluida Delphi,
C++Builder, y C#Builder.
En 2006 Borland's Developer Tools Group, la divisin encargada del C++Builder, fue
transformada en una organizacin independiente (subsidiaria) denominada CodeGear.
En 2007 Borland publico C++Builder 2007, proveyendo completo soporte para la API de
Microsoft Vista, soporte mejorado a ANSI C++, y hasta 500% mejor rendimiento en el
proceso de compilacin desde el IDE, soporte para MSBuild, arquitectura de base de datos
DBX4, "VCL for the Web" que permite el desarrollo visual de aplicaciones AJAX, y la
biblioteca OWLNext. El soporte de la API de Microsoft Vista incluye aplicaciones 'temadas'
y soporte a la interfaz Aero y Vista Desktop. CodeGear RAD Studio 2007 incorporo
C++Builder 2007 y Delphi. Tambin en 2007 Borland revivi la lnea "Turbo" y lanzo dos

ediciones "Turbo" de C++Builder: Turbo C++ Professional, y Turbo C++ Explorer (no
disponible actualmente de CodeGear), basado en Borland C++Builder 2006.
En 2008 CodeGear fue adquirida por Embarcadero Technologies, quien continuo el
desarrollo. C++Builder 2009 fue publicado en agosto del 2008, las caractersticas agregadas
ms importantes fueron el soporte completo a Unicode tanto en la VCL como en la RTL,
adopcin anticipada del standard C++0x, soporte al ITE (Entorno de Traduccin Integrado),
componentes Ribbon y la inclusin de la biblioteca Boost.
C++Builder 2010 fue publicado en agosto del 2009, fue el primer entorno de desarrollo que
incluy soporte a Windows 7, permitiendo desarrollar aplicaciones que soportan la interfaz
'Multitouch'. CodeGear ha anunciado sus planes de desarrollo que incluiran soporte a OSX
y Linux.
BlueJ
BlueJ es un entorno integrado de desarrollo (de sus siglas en ingls IDE - Integrated
Development Environment) para el lenguaje de programacin Java, desarrollado
principalmente con propsitos educacionales, pero tambin es adecuado para el desarrollo de
software a pequea escala.
BlueJ fue desarrollado para apoyar la enseanza y el aprendizaje de la programacin
orientada a objetos, y como resultado, su diseo difiere de otros entornos de desarrollo.2 La
pantalla principal muestra grficamente la estructura de clases de una aplicacin en desarrollo
(en un diagrama muy parecido a UML), y los objetos pueden ser creados y probados
interactivamente. Combinado con una interfaz de usuario simple, esta facilidad de
interaccin permite experimentar de manera fcil con los objetos en desarrollo. Los
conceptos de la orientacin a objetos (clases, objetos, comunicacin a travs de llamadas a
mtodos) son representadas visualmente en el diseo de interaccin en la interfaz.
Caractersticas.
Las caractersticas de BlueJ difieren de las de otros entornos, bien por su ausencia, bien por
su presencia imprevista. Sus principales caractersticas son:

Representacin de orientacin a objetos los conceptos de clases y objetos son


presentados en forma visual. Ambas tiene distintas representaciones visuales, y es
fcil demostrar que un cdigo est asociado directamente con una clase, que un objeto
tiene un tipo de clase, y que el tipo de clase de un objeto determina directamente los
mtodos y campos disponibles, as como su comportamiento. * Simplicidad de la
interfaz La interfaz grfica de usuario es ms simple que en ambientes de alta escala
profesionales, y por ello ms fcil de aprender. El objetivo es que el entorno de
desarrollo "desaparezca". Los alumnos deberan ser capaces de concentrarse en las
tareas de programacin sin necesidad de pelear con el entorno.
Interaccin con objetos Los programadores son capaces de experimentar con
objetos crendolos en el banco de objetos ("Object Bench") y usando mtodos
individuales interactivamente (incluyendo paso de parmetros e inspeccin de

resultados). Con esto se pretende incentivar la realizacin temprana y frecuente de


pruebas y experimientos para ayudar a entender el modelo de programacin.
El "Code Pad" El code pad es una herramienta que evala instantneamente
expresiones y frases arbitrarias escritas en Java.
Testeo de regresin BlueJ soporta pruebas de regresin gracias a su integracin con
JUnit. Adems de la escritura a mano de clases JUnit classes, se pueden grabar tests
interactivos y se pueden crear a partir de ellos casos de prueba JUnit.
Soporte de trabajo en grupo BlueJ proporciona soporte simple para trabajo grupal
va un subconjunto de funcionalidad CVS y Subversion.
Soporte de Java ME Los proyectos Java ME (Micro Edition) pueden ser
desarrollados e implementados desde BlueJ.
Sistema de extensiones flexibles Las extensiones (a.k.a. Plug-Ins) se pueden
desarrollar usando una API de extensiones pblicas para extender la funcionalidad
del entorno bsico del programa.
Creacin de archivos Jar y applets Se pueden crear archivos ejecutables jar y
applets.
Traducciones La interfaz del sistema BlueJ ha sido traducida a al menos 14 idiomas
naturales, entre ellos el espaol.

Las funciones de interaccin visual de BlueJ estn diseadas para permitir a uno retrasar la
introduccin de ciertos conceptos programticos considerados complicados o dificultosos
por los educadores. Esto incluye:

Sintaxis tal como public static void main(String[] args) que requiere introducir
innecesariamente las palabras clave public y static, as como argumentos de mtodo
y arrays. BlueJ permite a las clases arbitrarias ser instanciadas y a los mtodos
arbitrarios ser invocados interactivamente.
Input/output del programa. En BlueJ tanto los valores del parmetro como los valores
de retorno desde llamadas del mtodo se pueden introducir e inspeccionar
directamente, as que los estudiantes no tiene que luchar con terminales I/O o escribir
interfaces grficas de usuario uando an estn aprendiendo los conceptos bsicos de
la programacin informtica.

Algunas de las funciones pioneras de BlueJ en entornos modernos de desarrollo son:


interactive instantiation, interaccin directa con objetos, grabado de unidades de prueba,
visin de navegacin del editor, y scope highlighting. Son normalmente tiles para desarrollo
de software, pero sin embargo no se encuentran habitualmente en otros entornos de
desarrollo. Otras aplicaciones informticas han intentado replicar algunas de stas funciones.
Por ejemplo, el Visual Studio de Microsoft implement una especie de banco de objetos
similar al de BlueJ, sin embargo permaneci de alguna manera oscuro porque no est incluido
en todas las versiones de dicho programa.

GCC
El GNU Compiler Collection (coleccin de compiladores GNU) es un conjunto de
compiladores creados por el proyecto GNU. GCC es software libre y lo distribuye la Free
Software Foundation (FSF) bajo la licencia general pblica GPL.
Estos compiladores se consideran estndar para los sistemas operativos derivados de UNIX,
de cdigo abierto y tambin de propietarios, como Mac OS X. GCC requiere el conjunto de
aplicaciones conocido como binutils para realizar tareas como identificar archivos objeto u
obtener su tamao para copiarlos, traducirlos o crear listas, enlazarlos, o quitarles smbolos
innecesarios.
Originalmente GCC significaba GNU C Compiler (compilador GNU de C), porque slo
compilaba el lenguaje C. Posteriormente se extendi para compilar C++, Fortran, Ada y
otros.
Historia.
Richard Stallman comenz a escribir GCC en 1985. Aadi elementos extendiendo un
compilador preexistente de C. El compilador originalmente compilaba Pastel, un dialecto
extendido, no portable de Pascal, y estaba escrito en el propio Pastel. Fue reescrito en C por
Len Tower y Stallman,2 y publicado en 19873 como el compilador del Proyecto GNU, para
tener un compilador disponible que fuera software libre. Su desarrollo fue supervisado por la
Free Software Foundation (FSF).4
En 1991, GCC 1.x haba logrado un punto de estabilidad, pero limitaciones en la arquitectura
impedan muchas mejoras deseadas, as que la FSF empez a trabajar en GCC 2.x.
Como GCC era software libre, haba programadores que queran trabajar en otras
direcciones, por ejemplo, escribiendo interfaces para otros lenguajes distintos de C, stos
fueron libres de desarrollar sus propios forks del compilador. Mltiples bifurcaciones trajeron
ineficiencia e inmanejabilidad, sin embargo, la dificultad de producir cdigo que fuera
aceptado por el proyecto oficial de GCC era altamente frustrante para muchos puesto que la
FSF guardaba un frreo control en qu era aadido a la versin oficial de GCC 2.x. Esto hizo
que GCC fuera citado como ejemplo del modelo de desarrollo "catedral" de software
mencionado en el ensayo de Eric S. Raymond titulado La catedral y el bazar.
Desde la publicacin de la versin 4.4. de BSD en 1994, GCC se convirti en el compilador
por defecto de los sistemas BSD.
Lenguajes.
En su versin 4.6 incluye front ends para C (gcc), C++ (g++), Java (gcj), Ada (GNAT),
Objective-C (gobjc), Objective-C++ (gobjc++) y Fortran (gfortran).5 Tambin esta
disponible, aunque no de forma estndar, soporte para Go (gccgo), Modula-2, Modula-3,
Pascal (gpc), PL/I, D (gdc), Mercury, y VHDL

Compiladores
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje
de programacin a otro lenguaje de programacin.1 Usualmente el segundo lenguaje es
lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o
simplemente texto. Este proceso de traduccin se conoce como compilacin.
La construccin de un compilador involucra la divisin del proceso en una serie de fases que
variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del
programa fuente y la sntesis del programa objeto.

Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e incluye


las fases correspondientes al Anlisis lxico (que consiste en la descomposicin del
programa fuente en componentes lxicos), anlisis sintctico (agrupacin de los
componentes lxicos en frases gramaticales ) y anlisis semntico (comprobacin de
la validez semntica de las sentencias aceptadas en la fase de anlisis sintctico).
Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y
suele estar formado por una o varias combinaciones de fases de generacin de cdigo
(normalmente se trata de cdigo intermedio o de cdigo objeto) y de optimizacin de
cdigo (en las que se busca obtener un cdigo lo ms eficiente posible).

Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar
en Front-end y Back-end:

Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el


rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser
independiente de la plataforma o sistema para el cual se vaya a compilar, y est
compuesta por las fases comprendidas entre el anlisis Lxico y la generacin de
cdigo intermedio.
Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma, a
partir de los resultados de la fase de anlisis, realizada por el Front End.

Historia.
En 1946 se desarroll la primera computadora digital. En un principio, estas mquinas
ejecutaban instrucciones consistentes en cdigos numricos que sealaban a los circuitos de
la mquina los estados correspondientes a cada operacin, lo que se denomin lenguaje
mquina.
Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus
programas mediante claves ms fciles de recordar que esos cdigos; al final, todas esas
claves juntas se traducan manualmente a lenguaje mquina. Estas claves constituyen los
llamados lenguajes ensambladores.
Pese a todo, el lenguaje ensamblador segua siendo el de una mquina, pero ms fcil de
manejar. Los trabajos de investigacin se orientaron hacia la creacin de un lenguaje que
expresara las distintas acciones a realizar de una manera lo ms sencilla posible para una

persona. El primer compilador fue escrito por Grace Hopper, en 1952 para el lenguaje de
programacin A-0. En 1950 John Backus dirigi una investigacin en IBM sobre un lenguaje
algebraico. En 1954 se empez a desarrollar un lenguaje que permita escribir frmulas
matemticas de manera traducible por un ordenador; le llamaron FORTRAN (FORmulae
TRANslator). Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la
computadora IBM modelo 704.
Surgi as por primera vez el concepto de un traductor como un programa que traduca un
lenguaje a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de
alto nivel y el lenguaje traducido de bajo nivel, se emplea el trmino compilador.
La tarea de realizar un compilador no fue fcil. El primer compilador de FORTRAN tard
18 aos-persona en realizarse y era muy sencillo. Este desarrollo de FORTRAN estaba muy
influenciado por la mquina objeto en la que iba a ser implementado. Como un ejemplo de
ello tenemos el hecho de que los espacios en blanco fuesen ignorados, debido a que el
perifrico que se utilizaba como entrada de programas (una lectora de tarjetas perforadas) no
contaba correctamente los espacios en blanco.
Tipos de compiladores
Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber
compiladores que se adscriban a varias categoras:

Compiladores cruzados: generan cdigo para un sistema distinto del que estn
funcionando.
Compiladores optimizadores: realizan cambios en el cdigo para mejorar su
eficiencia, pero manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica
lectura del cdigo fuente.
Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de
poder producir el cdigo mquina.
Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del
cdigo segn se necesitan.

Pauta de creacin de un compilador: En las primeras pocas de la informtica, el software de


los compiladores era considerado como uno de los ms complejos existentes.
Los primeros compiladores se realizaron programndolos directamente en lenguaje mquina
o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas
versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese
compilador.

También podría gustarte