You are on page 1of 4

Segn la definicin terica, como lenguaje se entiende a un sistema de comunicacin que

posee una determinada estructura, contenido y uso. La programacin es, en el vocabulario


propio de la informtica, el procedimiento de escritura del cdigo fuente de un software. De
esta manera, puede decirse que la programacin le indica al programa informtico qu
accin tiene que llevar a cabo y cul es el modo de concretarla.
Lenguaje de programacin
Con estas nociones en claro, podemos afirmar que un lenguaje de programacin es aquella
estructura que, con una cierta base sintctica y semntica, imparte distintas instrucciones
a un programa de computadora.
A la hora de establecer el origen del lenguaje de programacin tenemos que hacer
referencia, sin lugar a dudas, a Ada Lovelace que est considerada como la primera
programadora de computadoras conocida en todo el mundo. De ah, curiosamente que se
hablara en su honor del lenguaje de programacin Ada. Y es que dicha figura llev a cabo
no slo la manipulacin de una serie de smbolos para una mquina del cientfico britnico
Charles Babbage sino tambin la consecucin del establecimiento de las instrucciones
necesarias para que un computador pudiera realizar una serie de clculos iniciales.
Dentro de lo que es el lenguaje de programacin es muy importante subrayar que los
profesionales que se dedican a desarrollar este trabajan con un conjunto de elementos que
son los que dan forma y sentido al mismo, los que permiten que aquellos funcionen y logren
sus objetivos. Entre los mismos se encontraran, por ejemplo, las variables, los vectores,
los bucles, los condicionantes, la sintaxis o la semntica esttica.
Compilador
Definicin:
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje
de programacin a otro lenguaje de programacin, generando un programa equivalente que
la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de
mquina, pero tambin puede ser un cdigo intermedio, o simplemente texto. Este proceso
de traduccin se conoce como compilacin.
Un compilador es un programa que permite traducir el cdigo fuente de un programa en
lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina).
De esta manera un programador puede disear un programa en un lenguaje mucho ms
cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms
manejable por una computadora.
Partes del Compilador:
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).

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.
Tipos de compiladores

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.
El Intrprete
Definicin:
En ciencias de la computacin, intrprete o interpretador es un programa informtico capaz
de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes
se diferencian de los compiladores en que mientras estos traducen un programa desde su
descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los
intrpretes slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin
por instruccin, y normalmente no guardan el resultado de dicha traduccin.
Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en
sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un
solo archivo fuente puede producir resultados iguales solo si es compilado a distintos
ejecutables especficos a cada sistema.
Los programas interpretados suelen ser ms lentos que los compilados debido a la
necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexibles
como entornos de programacin y de puracin (lo que se traduce, por ejemplo, en una
mayor facilidad para reemplazar partes enteras del programa o aadir mdulos
completamente nuevos), y permiten ofrecer al programa interpretado un entorno no
dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que
se conoce comnmente como mquina virtual).
Compilacin justo a tiempo
Para desdibujar ms la distincin entre los interpretadores, los interpretadores de bytecode
y la compilacin, est la compilacin justo a tiempo (o JIT), una tcnica en la cual la
representacin intermedia es compilada a cdigo de mquina nativo en tiempo de
ejecucin. Esto confiere la eficiencia de ejecutar el cdigo nativo, al costo de tiempo de
inicio y de un uso creciente de la memoria cuando el bytecode o el AST es compilado por
primera vez. La optimizacin adaptativa es una tcnica complementaria en la cual el
interpretador hace un anlisis de desempeo del programa que est corriendo (profiling) y
compila sus partes ms frecuentemente ejecutadas a cdigo nativo. Ambas tcnicas tienen
algunas dcadas, apareciendo en lenguajes tales como Smalltalk en los aos 1980.
En aos recientes, la compilacin justo a tiempo ha ganado la atencin de la mayora de
los implementadores de lenguajes de programacin, con Java, Python, y el Microsoft .NET
Framework todos ahora incluyendo JITs.