Anda di halaman 1dari 10

Proceso de creacin del software

Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la solucin de un
problema u obtencin de un producto, en este caso particular, para lograr un producto
software que resuelva un problema especfico.
Lenguajes de programacin
Un lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que
definen su estructura y el significado de sus elementos y expresiones. Es utilizado para
controlar el comportamiento fsico y lgico de una mquina.
Los primeros lenguajes de programacin surgieron de la idea de Charles Babagge, la cual se le
ocurri a este hombre a mediados del siglo XIX, predijo muchas de las teoras en que se basan
los actuales ordenadores. Consista en lo que l denominaba la maquina analtica, pero que
por motivos tcnicos no pudo construirse hasta mediados del siglo XX. Con l colaboro Ada
Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo
programas para aqulla supuesta mquina de Babagge, en tarjetas perforadas.
Los lenguajes de programacin son los medios de comunicacin entre los programadores o
usuarios y la computadora. Con ellos se construyen los programas que despus sern
ejecutados por la computadora.
Clasificacin de los lenguajes de programacin.
Un lenguaje de programacin es un conjunto limitado de palabras y de smbolos que
representan procedimientos, clculos, decisiones y otras operaciones que pueden ejecutar una
computadora.
Lenguajes de Programacin segn su nivel.
Clasificamos los lenguajes segn su nivel de programacin en:
Lenguajes de mquina
El lenguaje mquina de una computadora consta de cadenas de nmeros binarios (ceros y
unos) y es el nico que "entienden" directamente los procesadores. Todas las instrucciones
preparadas en cualquier lenguaje de mquina tienen por lo menos dos partes. La primera es el
comando u operacin, que dice a la computadora cul es la funcin que va a realizar. Todas las
computadoras tienen un cdigo de operacin para cada una de sus funciones. La segunda
parte de la instruccin es el operando, que indica a la computadora dnde hallar o almacenar
los datos y otras instrucciones que se van a manipular; el nmero de operandos de una
instruccin vara en las distintas computadoras.
Segn los estndares actuales, las primeras computadoras eran poco tolerantes. Los
programadores tenan que traducir las instrucciones de manera directa a la forma de lenguaje
de mquina que comprendan las computadoras. Por ejemplo, un programador que escribiera
la instruccin "SUMAR 0814" para una de las primeras mquinas IBM hubiera escrito:
000100000000000000000000000010111000
Adems de recordar las docenas de cdigos numricos para los comandos del conjunto de
instrucciones de la mquina, el programador tena que conocer las posiciones donde se
almacenan los datos y las instrucciones. La codificacin inicial muchas veces requera meses,
por lo que era costosa y era frecuente que originara errores.
Lenguajes ensambladores
A principios de la dcada de 1950, y con el fin de facilitar la labor de los programadores, se
desarrollaron cdigos nemotcnicos para las operaciones y direcciones simblicas. La palabra
nemotcnico se refiere a una ayuda para la memorizacin. Uno de los primeros pasos para
mejorar el proceso de preparacin de programas fue sustituir los cdigos de operaciones
numricos del lenguaje de mquina por smbolos alfabticos, que son los cdigos
nemotcnicos.
La computadora sigue utilizando el lenguaje de mquina para procesar los datos, pero los
programas ensambladores traducen antes los smbolos de cdigo de operacin especificados a
sus equivalentes en lenguaje de mquina.
Ms adelante se hizo otra mejora. Se dej a la computadora la tarea de asignar y recordar las
direcciones de las instrucciones. Lo nico que tena que hacer el programador era indicar a la
computadora la direccin de la primera instruccin, y el programa ensamblador se encargaba
de almacenar, de manera automtica, todas las dems en forma secuencial a partir de ese
punto. As, si se agregaba ms tarde otra instruccin al programa, no era necesario modificar
las direcciones de todas las instrucciones que seguan al punto de insercin. En vez de ello, el
procesador ajustaba automticamente las localidades de memoria la prxima vez que se
ejecutaba el programa. En la actualidad, los programadores no asignan nmeros de direccin
reales a los datos simblicos, simplemente especifican dnde quieren que se coloque la
primera localidad del programa, y el programa ensamblador se encarga de lo dems: asigna
localidades tanto para las instrucciones como para los datos. Estos programas de ensamble, o
ensamblador, tambin permite a la computadora convertir las instrucciones en lenguaje
ensamblador del programador en su propio cdigo de mquina. Un programa de instrucciones
escrito en lenguaje ensamblador por un programador se llama programa fuente. Despus de
que el ensamblador convierte el programa fuente en cdigo de mquina a ste se le denomina
programa objeto.
Los lenguajes ensambladores tienen ventajas sobre los lenguajes de mquina. Ahorran tiempo
y requieren menos atencin a detalles. Se incurren en menos errores y los que se cometen son
ms fciles de localizar.
Lenguajes de alto nivel
Los primeros programas ensambladores producan slo una instruccin en lenguaje de
mquina por cada instruccin del programa fuente. Para agilizar la codificacin, se
desarrollaron programas ensambladores que podan producir una cantidad variable de
instrucciones en lenguaje de mquina por cada instruccin del programa fuente. Dicho de otra
manera, un sola macroinstruccin poda producir varias lneas de cdigo en lenguaje de
mquina. Por ejemplo, el programador podra escribir "LEER ARCHIVO", y el programa
traductor producira una serie detallada de instrucciones al lenguaje de mquina previamente
preparada, con lo que se copiara un registro del archivo que estuviera leyendo el dispositivo
de entrada a la memoria principal. As, el programador no se tena que ocupar de escribir una
instruccin por cada operacin de mquina realizada.
El desarrollo de las tcnicas nemotcnicas y las macroinstrucciones condujo, a su vez, al
desarrollo de lenguajes de alto nivel que a menudo estn orientados hacia una clase
determinada de problemas de proceso. A diferencia de los programas de ensamble, los
programas en lenguaje de alto nivel se pueden utilizar con diferentes marcas de computadores
sin tener que hacer modificaciones considerables. Esto permite reducir sustancialmente el
costo de la reprogramacin cuando se adquiere equipo nuevo. Otras ventajas de los lenguajes
de alto nivel son:
o Son ms fciles de aprender que los lenguajes ensambladores.
o Se pueden escribir ms rpidamente.
o Permiten tener mejor documentacin.
o Son ms fciles de mantener.
o Un programador que sepa escribir programas en uno de estos lenguajes no est
limitado a utilizar un solo tipo de mquina.
Lenguajes compilados.
Un programa que se escribe en un lenguaje de alto nivel tambin tiene que traducirse a un
cdigo que pueda utilizar la mquina. Los programas traductores que pueden realizar esta
operacin se llaman compiladores. stos, como los programas ensambladores avanzados,
pueden generar muchas lneas de cdigo de mquina por cada proposicin del programa
fuente. Se requiere una corrida de compilacin antes de procesar los datos de un problema.
Los compiladores son aquellos cuya funcin es traducir un programa escrito en un
determinado lenguaje a un idioma que la computadora entienda (lenguaje mquina con
cdigo binario).
Al usar un lenguaje compilado, el programa desarrollado nunca se ejecuta mientras haya
errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el
cdigo.
Lenguajes interpretados
En vez de traducir el programa fuente y grabar en forma permanente el cdigo objeto que se
produce durante la corrida de compilacin para utilizarlo en una corrida de produccin futura,
el programador slo carga el programa fuente en la computadora junto con los datos que se
van a procesar. A continuacin, un programa intrprete, almacenado en el sistema operativo
del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin
del programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el
proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instruccin, se le debe interpretar otra vez y traducir a
lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo,
cada instruccin del ciclo tendr que volver a ser interpretado cada vez que se ejecute el ciclo,
lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va revisando el
cdigo en tiempo de ejecucin) pero ms rpido en tiempo de diseo (porque no se tiene que
estar compilando a cada momento el cdigo completo). El intrprete elimina la necesidad de
realizar una corrida de compilacin despus de cada modificacin del programa cuando se
quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado
con antelacin deber ejecutarse con mucha mayor rapidez que uno que se debe interpretar a
cada paso durante una corrida de produccin.
Lenguajes de programacin declarativos.
Se les conoce como lenguajes declarativos en ciencias computacionales a aquellos lenguajes
de programacin en los cuales se le indica a la computadora qu es lo que se desea obtener o
qu es lo que se est buscando.
La programacin declarativa es una forma de programacin que implica la descripcin de un
problema dado en lugar de proveer una solucin para dicho problema, dejando la
interpretacin de los pasos especficos para llegar a dicha solucin a un intrprete no
especificado. La programacin declarativa adopta, por lo tanto, un enfoque diferente al de la
programacin imperativa tradicional.
En otras palabras, la programacin declarativa provee el "qu", pero deja el "cmo" liberado a
la implementacin particular del intrprete. Por lo tanto se puede ver que la programacin
declarativa tiene dos fases bien diferenciadas, la declaracin y la interpretacin.
Los lenguajes declarativos estn orientados a buscar la solucin del problema, sin preocuparse
por la forma de llegar a ello; es decir, el programador debe concentrarse en la lgica del
algoritmo, ms que en el control de la secuencia. Los programas estn formados por un
conjunto de definiciones o ecuaciones, las cuales describen lo que debe ser calculado, no en s
la forma de hacerlo. Las variables slo pueden tener asignado un solo valor a lo largo de la
ejecucin del programa, lo cual implica que no puede existir asignacin destructiva.

Entre los lenguajes declarativos podemos clasificar:
Programacin lgica
La lgica es declarativa porque sirve para especificar qu problema resolver.
En la programacin lgica, se especifican las condiciones que satisfacen las soluciones, se
deducen las soluciones a partir de las condiciones y el nfasis de todo est en qu problema
resolver. El problema se describe especificando qu caracteriza a sus posibles soluciones.
La programacin lgica, junto con la funcional, forma parte de lo que se conoce como
programacin declarativa. En los lenguajes tradicionales, la programacin consiste en indicar
cmo resolver un problema mediante sentencias; en la programacin lgica, se trabaja de
forma descriptiva, estableciendo relaciones entre entidades, indicando no cmo, sino qu
hacer. Se establece entonces que la idea esencial de la programacin lgica es: algoritmos =
lgica + control. Es decir, un algoritmo se construye especificando conocimiento en un
lenguaje formal y el problema se resuelve mediante un mecanismo de inferencia que acta
sobre aqul.
Programacin funcional
El objetivo de la programacin funcional es conseguir lenguajes expresivos y
matemticamente elegantes, en los que no sea necesario bajar al nivel de la mquina para
describir el proceso llevado a cabo por el programa.
Los programas escritos en un lenguaje funcional estn constituidos nicamente por
definiciones de funciones, entendiendo stas no como subprogramas clsicos de un lenguaje
imperativo, sino como funciones puramente matemticas, en las que se verifican ciertas
propiedades como la transparencia referencial, y por tanto, la carencia total de efectos
laterales.
Otras caractersticas propias de estos lenguajes son la no existencia de asignaciones de
variables y la falta de construcciones estructuradas como la secuencia o la iteracin. Existen
dos grandes categoras de lenguajes funcionales: los funcionales puros y los hbridos. La
diferencia entre ambos estriba en que los lenguajes funcionales hbridos son menos
dogmticos que los puros, al permitir conceptos tomados de los lenguajes imperativos, como
las secuencias de instrucciones o la asignacin de variables. En contraste, los lenguajes
funcionales puros tienen una mayor potencia expresiva, conservando a la vez su transparencia
referencial, algo que no se cumple siempre con un lenguaje hbrido.
Programacin orientada a bases de datos
Las bases de datos son programas que administran informacin y hacen ms ordenada la
informacin, aparte de hacer la fcil de buscar y por supuesto de encontrar.
Las caractersticas de las bases de datos pueden ser ventajosas o desventajosas: pueden
ayudar a almacenar, organizar, recuperar, comunicar y manejar informacin en formas que
seran imposibles sin las computadoras, pero tambin afecta de alguna manera ya que existen
enormes cantidades de informacin en bases de datos de las que no se tiene control del
acceso.
Las bases de datos tienen muchos usos: facilitan el almacenamiento de grandes cantidades de
informacin; permiten la recuperacin rpida y flexible de informacin, con ellas se puede
organizar y reorganizar la informacin, as como imprimirla o distribuirla en formas diversas.
Es claro que los lenguajes orientados a bases de datos son declarativos y no imperativos, pues
el problema es "qu" se quiere hacer o "qu" se necesita buscar y encontrar en la base de
datos, y no se enfatiza el "cmo".
Lenguajes de programacin imperativos.

Se llama lenguajes imperativos a aquellos en los cuales se le ordena a la computadora cmo
realizar una tarea siguiendo una serie de pasos o instrucciones. El proceso anterior se puede
realizar con un lenguaje imperativo como por ejemplo BASIC, C, C++, Java, Clipper, Dbase, C#,
PHP, Perl, etc.
Dentro de la programacin imperativa, se tiene un conjunto de instrucciones que le indican al
computador cmo realizar una tarea.
Los lenguajes imperativos se basan en comandos u rdenes que se le dan a la computadora
para que haga algo, con el fin de organizar o cambiar valores en ciertas partes de la memoria.
La ejecucin de estos comandos se realiza, en la mayor parte de ellos, secuencialmente, es
decir, hasta que un comando no ha sido ejecutado no se lee el siguiente. Segn el dominio, o
mejor dicho con el propsito que se utiliza el programa, se puede hablar de lenguajes de
dominio especfico y de dominio general.
Lenguajes imperativos procedurales es la aplicacin quien controla qu porciones de cdigo se
ejecuta, y la secuencia en que este se ejecuta. La ejecucin de la aplicacin se inicia con la
primera lnea de cdigo, y sigue una ruta predefinida a travs de la aplicacin, llamando
procedimientos segn sea necesario. Los lenguajes procedurales estn fundamentados en la
utilizacin de variables para almacenar valores y en la realizacin de operaciones con los datos
almacenados.
En este tipo de lenguajes, la arquitectura consta de una secuencia de celdas, llamadas
memoria, en las cuales se pueden guardar en forma codificada, lo mismo datos que
instrucciones; y de un procesador, el cual es capaz de ejecutar de manera secuencial una serie
de operaciones, principalmente aritmticas y booleanas, llamadas comandos.
Lenguajes de programacin orientados a objetos

En la Programacin Orientada a Objetos se definen los programas en trminos de "clases de
objetos", objetos que son entidades que combinan estado (es decir, datos) comportamiento
(esto es, procedimientos o mtodos) e identidad (propiedad del objeto que lo diferencia del
resto). La programacin orientada a objetos expresa un programa como un conjunto de estos
objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas
mdulos ms fciles de escribir, mantener y reutilizar.
un objeto contiene toda la informacin, (los denominados atributos) que permite definirlo e
identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de la
misma clase, al poder tener valores bien diferenciados en sus atributos). A su vez, dispone de
mecanismos de interaccin (los llamados mtodos) que favorecen la comunicacin entre
objetos (de una misma clase o de distintas), y en consecuencia, el cambio de estado en los
propios objetos. Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no
se separan (ni deben separarse) informacin (datos) y procesamiento (mtodos).

Las principales diferencias entre la programacin imperativa y la programacin orientada a
objetos:
La programacin orientada a objetos es ms moderna, es una evolucin de la
programacin imperativa plasmada en el diseo de una familia de lenguajes conceptos que
existan previamente, con algunos nuevos.
La programacin orientada a objetos se basa en lenguajes que soportan sintctica y
semnticamente la unin entre los tipos abstractos de datos y sus operaciones (a esta unin se
la suele llamar clase).
La programacin orientada a objetos incorpora en su entorno de ejecucin
mecanismos tales como el polimorfismo y el envo de mensajes entre objetos.

Traductores.

Definicin.

Un traductor (compilador o intrprete) es un software que lee un programa escrito en un
lenguaje (lenguaje fuente) y lo traduce a un programa equivalente en otro lenguaje (lenguaje
objeto). Como parte importante de este proceso de traduccin, el traductor informa a su
usuario de la presencia de errores en el programa fuente. (Fig. 1.4)

Figura 1. 4. Traductor.

Etapas del proceso de traduccin.

El proceso de traduccin se divide en dos fases o etapas:
Fase de anlisis.- La parte del anlisis divide al programa fuente en sus elementos
componentes y crea una representacin intermedia del programa fuente.
Fase de sntesis.- La parte de la sntesis construye el programa objeto deseado a partir
de la representacin intermedia.

De las dos partes, la sntesis es la que requiere las tcnicas ms especializadas.
Adems de un traductor, se pueden necesitar otros programas para crear un programa objeto
ejecutable. Un programa fuente se puede dividir en mdulos almacenados en archivos
distintos. La tarea de reunir el programa fuente a menudo se confa a un programa distinto,
llamado preprocesador. El preprocesador tambin puede expandir abreviaturas, llamadas a
macros, a proposiciones del lenguaje fuente.
Fase de Anlisis

Anlisis lxico

El anlisis lxico constituye la primera fase, aqu se lee el programa fuente de izquierda a
derecha y se agrupa en componentes lxicos (tokens), que son secuencias de caracteres que
tienen un significado. Adems, todos los espacios en blanco, lneas en blanco, comentarios y
dems informacin innecesaria se elimina del programa fuente. Tambin se comprueba que
los smbolos del lenguaje (palabras clave, operadores,...) se han escrito correctamente.
Como la tarea que realiza el analizador lxico es un caso especial de coincidencia de patrones,
se necesitan los mtodos de especificacin y reconocimiento de patrones, y estos mtodos son
principalmente las expresiones regulares y los autmatas finitos. Sin embargo, un analizador
lxico tambin es la parte del traductor que maneja la entrada del cdigo fuente, y puesto que
esta entrada a menudo involucra un importante gasto de tiempo, el analizador lxico debe
funcionar de manera tan eficiente como sea posible.

Anlisis sintctico

En esta fase los caracteres o componentes lxicos se agrupan jerrquicamente en frases
gramaticales que el compilador utiliza para sintetizar la salida. Se comprueba si lo obtenido de
la fase anterior es sintcticamente correcto (obedece a la gramtica del lenguaje). Por lo
general, las frases gramaticales del programa fuente se representan mediante un rbol de
anlisis sintctico.
La estructura jerrquica de un programa normalmente se expresa utilizando reglas recursivas.
Por ejemplo, se pueden dar las siguientes reglas como parte de la definicin de expresiones:
1. Cualquier identificador es una expresin.
2. Cualquier nmero es una expresin.
3. Si expresin1 y expresin2 son expresiones, entonces tambin lo son:
expresin1 + expresin2
expresin1 * expresin2
( expresin1 )
Las construcciones lxicas no requieren recursin, mientras que las construcciones sintcticas
suelen requerirla. No se requiere recursin para reconocer los identificadores, que suelen ser
cadenas de letras y dgitos que comienzan con una letra. Normalmente, se reconocen los
identificadores por el simple examen del flujo de entrada, esperando hasta encontrar un
carcter que no sea ni letra ni dgito, y agrupando despus todas las letras y dgitos
encontrados hasta ese punto en un componente lxico llamado identificador. Por otra parte,
esta clase de anlisis no es suficientemente poderoso para analizar expresiones o
proposiciones. Por ejemplo, no podemos emparejar de manera apropiada los parntesis de las
expresiones, o las palabras begin y end en proposiciones sin imponer alguna clase de
estructura jerrquica o de anidamiento a la entrada.

Anlisis semntico

La fase de anlisis semntico revisa el programa fuente para tratar de encontrar errores
semnticos y rene la informacin sobre los tipos para la fase posterior de generacin de
cdigo. En ella se utiliza la estructura jerrquica determinada por la fase de anlisis sintctico
para identificar los operadores y operandos de expresiones y proposiciones.
Un componente importante del anlisis semntico es la verificacin de tipos. Aqu, el
compilador verifica si cada operador tiene operandos permitidos por la especificacin del
lenguaje fuente. Por ejemplo, las definiciones de muchos lenguajes de programacin requieren
que el compilador indique un error cada vez que se use un nmero real como ndice de una
matriz. Sin embargo, la especificacin del lenguaje puede imponer restricciones a los
operandos, por ejemplo, cuando un operador aritmtico binario se aplica a un nmero entero
y a un nmero real.

Fase de sntesis

Consiste en generar el cdigo objeto equivalente al programa fuente. Slo se genera cdigo
objeto cuando el programa fuente est libre de errores de anlisis, lo cual no quiere decir que
el programa se ejecute correctamente, ya que un programa puede tener errores de concepto o
expresiones mal calculadas. Por lo general el cdigo objeto es cdigo de mquina relocalizable
o cdigo ensamblador. Las posiciones de memoria se seleccionan para cada una de las
variables usadas por el programa. Despus, cada una de las instrucciones intermedias se
traduce a una secuencia de instrucciones de mquina que ejecuta la misma tarea. Un aspecto
decisivo es la asignacin de variables a registros.

Generacin de cdigo intermedio

Despus de los anlisis sintctico y semntico, algunos compiladores generan una
representacin intermedia explcita del programa fuente. Se puede considerar esta
representacin intermedia como un programa para una mquina abstracta. Esta
representacin intermedia debe tener dos propiedades importantes; debe ser fcil de producir
y fcil de traducir al programa objeto.
La representacin intermedia puede tener diversas formas. Existe una forma intermedia
llamada "cdigo de tres direcciones" que es como el lenguaje ensamblador de una mquina en
la que cada posicin de memoria puede actuar como un registro. El cdigo de tres direcciones
consiste en una secuencia de instrucciones, cada una de las cuales tiene como mximo tres
operandos. Esta representacin intermedia tiene varias propiedades:
Primera.- Cada instruccin de tres direcciones tiene a lo sumo un operador, adems de
la asignacin, por tanto, cuando se generan estas instrucciones, el traductor tiene que decidir
el orden en que deben efectuarse las operaciones.
Segunda.- El traductor debe generar un nombre temporal para guardar los valores
calculados por cada instruccin.
Tercera.- Algunas instrucciones de "tres direcciones" tienen menos de tres operandos,
por ejemplo, la asignacin.

Optimizacin de cdigo

La fase de optimizacin de cdigo consiste en mejorar el cdigo intermedio, de modo que
resulte un cdigo mquina ms rpido de ejecutar. Esta fase de la etapa de sntesis es posible
sobre todo si el traductor es un compilador (difcilmente un interprete puede optimizar el
cdigo objeto). Hay mucha variacin en la cantidad de optimizacin de cdigo que ejecutan los
distintos compiladores. En los que hacen mucha optimizacin, llamados "compiladores
optimizadores", una parte significativa del tiempo del compilador se ocupa en esta fase. Sin
embargo, hay optimizaciones sencillas que mejoran sensiblemente el tiempo de ejecucin del
programa objeto sin retardar demasiado la compilacin.

Tipos de traductores

Existen dos tipos importantes de traductores:
Los que van adaptando las instrucciones conforme son encontradas. A este proceso se
lo llama interpretar y a los programas que lo hacen se los conoce como intrpretes. La
traduccin es simultnea y se produce de forma dialogada con el programador.
Los que convierten el conjunto de instrucciones en lenguaje de programacin, al
programa equivalente escrito en lenguaje de mquina. A ese proceso se lo llama compilar y al
programa traductor se le denomina compilador. No se realiza simultneamente y no hay un
dialogo con el programador durante la programacin.

Intrprete

Un intrprete 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 mquina del sistema destino, los primeros (los intrpretes) slo realizan la traduccin a
medida que sea necesario, tpicamente, instruccin por instruccin, y normalmente no
guardan el resultado de dicha traduccin.
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 depuracin (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).
Compilador

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 cdigo mquina, pero
tambin puede ser 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 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.
Normalmente los compiladores estn divididos en dos partes (Fig. 1.5):
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.
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.



Figura 1. 5. Partes de un compilador


Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de
varios lenguajes de programacin distintos y que el mismo Front End que sirve para analizar el
cdigo fuente de un lenguaje de programacin concreto sirva para generar cdigo mquina en
varias plataformas distintas.
El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que
necesita ser enlazado por un programa enlazador (linker).

Podemos notar que a inicios la programacin era no estructurada. Este estilo de Programacin
No Estructurada, consista en un solo programa principal, el cual se establece como una
secuencia de comandos o instrucciones que modifican datos que son a su vez globales en el
transcurso de todo el programa.
Esta tcnica de programacin no estructurada ofrece tremendas desventajas una vez que el
programa se hace suficientemente grande. Por ejemplo, si la misma secuencia de instrucciones
se necesita en diferentes situaciones dentro del programa, la secuencia debe ser repetida. Esto
ha llevado a la idea de extraer estas secuencias, dando origen a nuevas tcnicas como lo son la
programacin procedimental y modular, conducindonos a un estilo de programacin
estructurada.
La Programacin Estructurada es un mtodo de programacin basado sobre el concepto de la
unidad y del alcance. La programacin estructurada ofrece muchas ventajas sobre la
programacin secuencial, es ms fcil de leer y ms conservable; siendo muy flexible,
facilitando el buen diseo de programas.
La programacin estructurada, es un estilo de programacin con el cual el programador
elabora programas, cuya estructura es la ms clara posible, mediante el uso de tres estructuras
bsicas de control lgico: secuencia, seleccin e iteracin.

Anda mungkin juga menyukai