You are on page 1of 34

INSTITUTO TECNOLGICO DE SALINA CRUZ

Carrera:
Ingeniera En Electrnica

Unidad: 1
Materia:
Programacin Estructurada

Tarea:
Trabajo de investigacin Tipos de Lenguaje de Programacin

Profesora:
Romn Njera Susana Mnica
Alumno:
Bentez Celaya Rafael

Numero de control: 1 4 1 0 2 0 4 6 1
Semestre: 3

Grupo: C

Salina Cruz Oaxaca

ndice
Introduccin

1 Lenguaje de Programacin

1.1. Lenguajes Naturales y lenguajes de programacin

1.2. Paradigmas en lenguajes de programacin

1.3. Razones de estudio de lenguajes de programacin

1.4. Evolucin de los lenguajes de programacin

1.4.1 Origen. (Auto cdigos)

12

1.4.2 Inicio. (FORTRAN, COBOL, ALGOL60, LISP, APL, BASIC)

13

1.4.3 Consolidacin. (PL/1,SIMULA67,ALGOL68,PASCAL)

16

1.4.4 Lenguajesdelos80s. (Prolog, SmallTalk, C, Modula-2,Ada)

17

14.5 Dominio de Aplicacion

21

1.4.5 Definicin de un lenguaje de programacin. (sintaxis, semntica, metalenguaje, especificacin, gramtica)

21

1.4.5.1. Sintaxis

22

1.4.5.2. Semntica

22

1.4.5.3. Gramtica

23

1.4.6.1. Compilacin

23

1.4.6.2. Anlisis del programa fuente

24

1.4.6.3. Anlisis lxico

24

1.4.6.4. Anlisis sintctico

25

1.4.6.5. Anlisis semntico

25

1.4.6.6. Tabla de smbolos

25

1.4.6.7. Sntesis del programa objeto

26

1.4.6.8. Generacin de cdigo

26

1.4.6.9. Programa objet

27

1.4.7 Interpretacin

27

Otras Fuentes

34

Unidad I.

LENGUAJES DE PROGRAMACIN

Introduccin.
Lenguajes de programacin hay en gran cantidad, algunos han evolucionado a lo largo del tiempo y
siguen vigentes en el transcurso de muchos aos, mientras que otros han sido operativos durante un
perodo ms o menos largo y actualmente no se usan.
Dada esta gran variedad de lenguajes, no se pretende dar una visin de todos, sino una clasificacin
en diversos tipos y concretar algunos de ellos. En general un lenguaje es un mtodo conveniente y
sencillo de describir las estructuras de informacin y las secuencias de acciones necesarias para
ejecutar una tarea concreta.
Los lenguajes de programacin utilizan juegos de caracteres "alfabeto" para comunicarse con las
computadoras. Las primeras computadoras slo utilizaban informaciones numricas digitales
mediante el cdigo o alfabeto digital, y los primeros programas se escribieron en ese tipo de cdigo,
denominado cdigo mquina basado en dos dgitos 0 y 1, por ser entendible directamente por la
mquina (computadora). La enojosa tarea de programar en cdigo mquina hizo que el alfabeto
evolucionase y los lenguajes de programacin comenzaran a utilizar cdigos o juegos de caracteres
similares al utilizado en los lenguajes humanos. As, hoy da la mayora de las computadoras
trabajan con diferentes tipos de juegos de caracteres de los que se destacan el cdigo ASCII y el
EBCDIC.
De este modo, una computadora a travs de los diferentes lenguajes de programacin utilizan un
juego o cdigo de caracteres que sern fcilmente interpretados por la computadora y que pueden
ser programados por el usuario.
Dos son los cdigos ms utilizados actualmente en computadoras, ASCII (American Standard Code
for Information Interchan-c) y EBCDIC (Extended Binary Coded Decimal Intercha-@ige Code).
El cdigo ASCII bsico utiliza 7 bits (dgitos binarios. 0,1) para cada carcter a representar, lo que
supone un total de 27 (128) caracteres distintos. El cdigo ASCII ampliado utiliza 8 bits y en ese
caso consta de 256 caracteres. Este cdigo ASCII ha adquirido una gran popularidad. ya que es el
estndar en todas las familias de computadoras personales.
El cdigo EBCDIC utiliza 8 bits por carcter v por consiguiente consta de 256 caracteres distintos.
Su notoriedad reside en ser el utilizado por la firma. En general un carcter ocupara un byte de
almacenamiento de memoria.
Al igual que los lenguajes humanos, tales como el ingls o el espaol, los lenguajes de
programacin poseen una estructura (gramtica o sintaxis) y un significado (semntica). La
gramtica espaola trata de los diferentes, modos (reglas) en que pueden ser combinados los
diferentes tipos de palabras para formar sentencias o frases aceptables en espaol. Los lenguajes de
computadoras tienen menos combinaciones aceptables que los lenguajes naturales, sin embargo,
estas combinaciones deben ser utilizadas correctamente; ello contrasta con los lenguajes naturales
que se pueden utilizar aunque no sigan reglas gramaticales e incluso aunque no sean comprendidos.
Finalmente, un lenguaje de programacin lo definiremos, como un conjunto de reglas, smbolos y
palabras especiales que permiten construir un programa.

Unidad I.

1.1. Lenguajes Naturales y lenguajes de programacin.


Lengujes naturales
Los lenguajes naturales son aquellos con los cuales hablamos y escribimos en nuestras actividades
cotidianas. Entre sus ventajas podemos citar que es fcil de usar y de entender: no debemos
aprendernos ningn lenguaje nuevo y cualquiera puede leer la especificacin y comentarla o
criticarla. Entre los inconvenientes estn la imprecisin y la ambigedad. Aunque el anlisis de
requisitos se haya realizado correctamente, una especificacin en lenguaje natural puede dar lugar a
que la implementacin final no cumpla estos requisitos. Adems, debido a su propia facilidad de
uso e imprecisin, las especificaciones suelen ocultar lagunas que slo se pondrn de manifiesto a la
hora de programar, es decir, al traducir la especificacin a un lenguaje de programacin. El uso de
subconjuntos del lenguaje, como el llamado ingls estructurado, atena estas deficiencias pero
sigue sin resolver problemas como la correccin, consistencia o completitud de la propia
especificacin o de los programas desarrollados a partir de ella.
Los lenguajes de programacin ocupan una posicin intermedia entre los lenguajes naturales
humanos y los precisos lenguajes de mquina.
Gracias a la progresiva complejidad de los lenguajes traductores que permiten convertir las
instrucciones de un lenguaje de programacin al lenguaje de mquina, la programacin puede usar
lenguajes de computacin que se parecen cada vez ms a los lenguajes naturales.
Tambin se habla de lenguajes naturales para referirse al software que permite que los sistemas de
computacin acepten, interpreten y ejecuten instrucciones en el lenguaje materno o "natural" que
habla el usuario final, por lo general el ingls. La mayor parte de los lenguajes naturales
comerciales estn diseados para ofrecer a los usuarios un medio de comunicarse con una base de
datos corporativa o con un sistema experto.
Podemos resumir que los lenguajes naturales se distinguen por las siguientes propiedades:
Desarrollados por enriquecimiento progresivo antes de cualquier intento de formacin de
una teora.
La importancia de su carcter expresivo debido grandemente a la riqueza de el componente
semntico (polisemntica).
Dificultad o imposibilidad de una formalizacin completa.

Lenguajes de programacin
Un lenguaje de programacin consiste en un conjunto de rdenes o comandos que describen el
proceso deseado. Cada lenguaje tiene sus instrucciones y enunciados verbales propios, que se
combinan para formar los programas de cmputo.
Los lenguajes de programacin no son aplicaciones, sino herramientas que permiten construir y
adecuar aplicaciones.

Unidad I.

Existen muchos lenguajes de programacin con caractersticas y aptitudes muy diferenciadas. Todo
ello se encuentra en dos grandes grupos:
Los lenguajes mquina.
Los lenguajes simblicos. Lenguaje de programacin en el que las instrucciones de los
diferentes programas se codifican utilizando los caracteres de las lenguas naturales. La
ejecucin de un programa.
Entre los primeros se encuentran los denominados lenguajes en cdigo mquina. En estos lenguajes,
la codificacin de estos lenguajes se hace utilizando un lenguaje binario de ceros y unos que son los
nicos smbolos que puede entender cualquier computador. Cada sistema fsico tiene su cdigo
mquina distinta por lo que un programa escrito en un determinado cdigo mquina slo vale para
un sistema fsico.
A los lenguajes mquina les sucedieron, los lenguajes simblicos los cuales utilizan caracteres
naturales para escribir las instrucciones de los programas. Los lenguajes simblicos se dividen a su
vez en:
Lenguajes simblicos de bajo nivel o ensambladores.
Lenguajes simblicos de alto nivel.

Dentro de los segundos se puede distinguir a su vez los lenguajes procedurales y los relacionales.
1.

2.

Un lenguaje procedural es aquel lenguaje de programacin en el que hay que sealar


tanto lo que se quiere hacer como el modo de hacerlo. Los lenguajes de tercera
generacin son de tipo procedural.
Un lenguaje relacional es un tipo de lenguaje de programacin en el que slo hay que
especificar lo que se quiere obtener, sin necesidad de especificar a su vez el camino a
seguir para obtener los resultados deseados. Este tipo de lenguaje son de muy alta
productividad en desarrollo pero muy ineficientes en ejecucin.

La diferencia entre uno y otro es que los primeros exige que se diga tanto lo que se quiere hacer
como la forma en que hay que hacerlo mientras que los relacionales slo exigen que se diga lo que
se quiere hacer, pero no es necesario que se exprese el camino para realizarlo.
A medida que se va subiendo de nivel los lenguajes son ms sencillos y ms productivos en
desarrollo, pero en contra partida son menos eficientes a la hora de su ejecucin.
Los programas escritos en lenguajes simblicos se denominan programas fuente y los programas no
son directamente ejecutables su ejecucin implica su previa traduccin a cdigo mquina para
obtener los denominados programas objeto o absolutos. Esta traduccin se hace a travs de los
ensambladores, compiladores o intrpretes, a los lenguajes que de forma genrica se les denomina
procesadores de lenguajes.

Unidad I.

A los lenguajes mquina se les conoce como lenguajes de primera generacin. Los ensambladores
son los lenguajes de segunda generacin. Los simblicos de alto nivel de tipo procedural se les
denomina de tercera generacin y a los relacionales se considera que son de cuarta generacin.
A la tercera generacin pertenecen lenguajes conocidos como el FORTRAN, COBOL, RPG,
BASIC, PL1, SIMULA, ALGOL, PASCAL, ADA, C, LISP, PROGOL, etc. Estos lenguajes de
tercera generacin son de tipo universal.
A diferencia de los lenguajes de tercera generacin, los de cuarta generacin no son tan universales
y van asociados a determinados sistemas operativos y en muchos casos a determinados sistemas de
almacenamiento de informacin, lo que les resta uno de los mayores intereses de los lenguajes de
tercera generacin.. La mayor ventaja de los lenguajes relacionados es que son muy productivos en
desarrollo a alcanzar niveles de productividad de hasta 6 y 8 veces superior a los que alcanzan los
de tercera generacin.
Entre los lenguajes de cuarta generacin tenemos el CSP de IBM asociado al sistema de gestin de
base de datos DB2; el NATURAL de SOFTWARE AG asociado al sistema de datos ADABAS; el
SQL que es un lenguaje convertido en estndar mundial como lenguaje de cuarta generacin para la
consulta de bases relacionales; etc.
Adems de los lenguajes sealados hay que hacer referencia a una serie de lenguajes orientados a
objetos y cuya utilizacin tiene preferentemente lugar en los puestos cliente. Entre estos destaca el
Visual Basic de Microsoft, el Power Builder y el Delphi.
Adems hay que prestar una seria atencin al lenguaje de programacin Java, desarrollado por SUN
y cuya misin fundamental es dar la posibilidad de desarrollar aplicaciones altamente interactivas
bajo la modalidad de Web, en el contexto de Internet.
En pocos aos y como consecuencia del desarrollo que est teniendo la inteligencia artificial se
podr programar, con ciertas limitaciones sintcticas, en los lenguajes naturales

1.2. Paradigmas en lenguajes de programacin.


Existen diversos lenguajes y paradigmas de programacin que se han diseado para facilitar la tarea
de la programacin en diferentes mbitos. Por ejemplo, la programacin orientada a objetos es un
paradigma dirigido al mejoramiento en la calidad del software por medio de la observacin de
aspectos tales como la correccin, robustez, extensibilidad, compatibilidad y sobre todo la
reusabilidad del software. La programacin lgica, por su parte, es un paradigma orientado a la
expresin de los problemas en trminos lgicos para su posterior solucin por mtodos de
inferencia y otras tcnicas lgicas.
En la prctica, cada paradigma de programacin es implementado a travs de diversos lenguajes.
Slo como un ejemplo, la programacin orientada a objetos encuentra su recipiente en lenguajes
tales como Java, C++, Eiffel, Objective C, el paquete CLOS de Common Lisp, etc.

Unidad I.

Existen cuatro modelos bsicos de computacin que describen casi todos los lenguajes de
programacin actuales: el imperativo, el aplicativo, el lenguaje con base en reglas y el orientado a
objetos. Se describe en forma breve cada uno de estos modelos.
Lenguajes imperativos. Los lenguajes imperativos o de procedimiento son lenguajes controlados
por mandatos u orientados a enunciados (instrucciones).
Un programa se compone de una serie de
enunciados, y la ejecucin de cada enunciado hace que el intrprete cambie el valor de una
localidad o ms en su memoria, es decir, que pase a un nuevo estado.
El desarrollo de programas consiste en construir los estados de mquina sucesivos
que se
necesitan para llegar a la solucin. sta suele ser la primera imagen, que se tiene de la
programacin, y muchos lenguajes de uso amplio (por ejemplo, C, C++, FORTRAN, ALGOL,
PL/I, Pascal, Ada, Smalltalk, COBOL) manejan este modelo.
Lenguajes aplicativos. Un punto de vista alternativo de la computacin representado por un
lenguaje de programacin consiste en examinar la funcin que el programa representa y no slo los
cambios de estado conforme el programa se ejecuta, enunciado por enunciado. Esto se puede
conseguir observando el resultado deseado en vez de los datos disponibles. En otras palabras, en
vez de examinar la serie de estados a travs de los cuales debe pasar la mquina para obtener una
respuesta, la pregunta que se debe formular es: Cul es la funcin que se debe aplicar al estado de
mquina inicial accediendo al conjunto inicial de variables y combinndolas en formas especficas
para obtener una respuesta? Los lenguajes que hacen nfasis en este punto de vista se conocen
como lenguajes aplicativos o funcionales.
Lenguajes base en reglas. Los lenguajes con base en reglas se ejecutan verificando la presencia
de una cierta condicin habilitadora y, cuando se satisface, ejecutan una accin apropiada. El
lenguaje ms comn con base en reglas es Prolog, que tambin se conoce como de programacin
lgico, puesto que las condiciones habilitadoras bsicas son ciertas clases de expresiones lgicas de
predicados. La ejecucin de un lenguaje reglas es similar a la de un lenguaje imperativo, excepto
que los enunciados no secuenciales.
Programacin orientada a objetos. En este tipo de lenguaje, se construyen objetos complejos de
datos y luego designa un conjunto limitado de funciones para que operen con esos datos. Los
objetos complejos se designan como extensiones de objetos ms simples y heredan propiedades del
objeto ms sencillo. Al construir objetos a concretos de datos, un programa orientado a objetos
gana la eficiencia de los lenguajes imperativos, y al construir clases de funciones que utilizan un
conjunto restringido de objetos de datos, se construye la flexibilidad y confiabilidad del modelo
aplicativo.

1.3. Razones de estudio de lenguajes de programacin.


Cualquier notacin para la descripcin de algoritmos y estructuras de datos puede llamarse lenguaje
de programacin; sin embargo nosotros requerimos adems que un lenguaje de programacin sea
implementado (implantado) en una computadora. Cientos de lenguajes de programacin se han
diseado e implementado. Ya en 1969, Samment enumer 120 que han sido usados ampliamente y
muchos otros se han desarrollados desde entonces . Sin embargo la mayora de los programadores

Unidad I.

nunca se aventuran a usar ms de unos cuantos lenguajes y muchos limitan su programacin a uno o
dos.
A continuacin se describen seis razones primordiales para el estudio de los lenguajes de
programacin:
1. Mejorar la habilidad para desarrollar algoritmos eficaces. Muchos lenguajes tienen ciertas
caractersticas que , usadas adecuadamente , benefician al programador pero cuando se usan
en forma inadecuada pueden desperdiciar grandes cantidades de tiempo de computadora o
de conducir al programador a errores lgicos que hacen perder mucho tiempo , adems, el
costo de la reclusin vara segn la implementacin del lenguaje.
2. Mejorar el uso del lenguaje de programacin disponible. A travs de entendimiento de
cmo se implementan las caractersticas del lenguaje que uno usa, se mejora grandemente
la habilidad para escribir programas ms eficientes.
3. Enriquece su vocabulario de construcciones tiles de programacin. Con frecuencia se
nota que los lenguajes sirven tanto para una ayuda como para pensar como para construir,
los lenguajes sirven tambin para estructurar lo que uno piensa, hasta el punto que es difcil
pensar en alguna forma que no permita la expresin directa con palabras. El entendimiento
de las tcnicas de implementacin es particularmente, por que para emplear un constructor
mientras se programa en un lenguaje que no proporciona directamente el programador debe
dar su propia implementacin del nuevo constructor en trminos de los elementos
primitivos ofrecidos realmente por el lenguaje.
4. Permite una mejor seleccin de lenguaje de programacin. Cuando la situacin lo amerita,
el conocimiento de una variedad de lenguajes permite la seleccin de lenguaje correcto para
un proyecto particular por tanto, reduce enormemente el esfuerzo de codificacin requerido.
5. Hace ms fcil el aprendizaje de un nuevo lenguaje. Un lingista, a travs de un
conocimiento de las estructuras en que se basan los lenguajes naturaleza, puede aprender un
lenguaje extranjero ms rpido y fcil que el esforzado principiante que entiende poco de su
estructura lengua natal
6. Facilita el diseo de un nuevo lenguaje. Pocos programadores piensan en s mismos como
diseadores; es ms ningn programa tiene una interfaces del usuario que es, en realidad,
una forma de lenguaje. La interfase del usuario consiste en unos formatos y comandos que
son proporcionados por el para comunicarse con el programa. El diseador de la interfase
del usuario de un programa tal como un editor de textos, un sistema, operativo o un paquete
de grficas debe estar familiarizado con mucho de los resultados que estn presentes en el
diseo de un lenguaje de programacin de propsitos generales.

1.4. Evolucin de los lenguajes de programacin.


Los diseos de lenguaje y los mtodos de implementacin han evolucionado de manera continua
desde que aparecieron los primeros lenguajes de alto nivel en la dcada de 1950.
Los lenguajes principales FORTRAN; LISP y COBOL fueron diseados originalmente en los aos
cincuenta, PL/I, SNOBOLA Y APL se empezaron a usar en los aos 60, Pascal, Prolog, Ada, C y
Smalltalk son diseos que datan de los aos 70, y C++, ML datan de los aos ochenta.
En las
dcadas de 1960 y 1970, se solan desarrollar nuevos lenguajes como parte de proyectos
importantes de desarrollo de software.

Unidad I.

Los lenguajes ms antiguos han experimentado revisiones peridicas para reflejar la influencia de
otras reas de la computacin; los ms nuevos reflejan una composicin de experiencias adquiridas
en el diseo y de usos de estos y cientos de otros lenguajes ms antiguos.

Algunas de las principales influencias en la evolucin de diseos de lenguajes se listan a


continuacin:

1. Capacidades de las computadoras. Las computadoras han evolucionado de las mquinas


pequeas lentas y costosas mquinas de tubos de vaco de los aos 50 a las
supercomputadoras y microcomputadoras de hoy .

2. Aplicaciones. El uso de la computadora se ha difundido rpidamente, de la concentracin


original de aplicaciones militares crticas, cientficas, negocios industriales de los aos 50
donde el costo podra estar justificado en los juegos en computadora, en computadoras
personales y aplicaciones en casi todas las reas de la actividad humana de hoy.

3. Mtodos de programacin. Los diseos de lenguajes han evolucionado para reflejar, nuestra
cambiante comprensin de los buenos mtodos para escribir programas largos y complejos
y para reflejar los cambios en el entorno en el cul se efecta la programacin.

4. Mtodos de implementacin. El desarrollo de mejores mtodos de implementacin ha


influido en la seleccin de las caractersticas que se habrn de incluir en los nuevos diseos.

5. Estudios tericos. La investigacin de las bases conceptuales del diseo e implementacin


de lenguajes , a travs del uso de mtodos de matemticos formales, ha profundizado
nuestro entendimiento de las fortalezas y debilidades de las caractersticas de los lenguajes
y , por tanto, ha influido en la inclusin de estas caractersticas en los nuevos diseos de
lenguaje.

6. Estandarizacin. La necesidad de lenguajes estndar que se puedan implementar con


facilidad en una variedad de computadoras y que permita que los programas sean
transportados de una computadora a otra ejerce una fuerte influencia conservadora sobre la
evolucin de los diseos de lenguajes.

Unidad I.

A continuacin se muestran algunas influencias importantes sobre los lenguajes de


programacin:

Ao
1951-55

Influencias y Nueva Tecnologa


Hardware: Computadoras de tubos de vaco; memorias de lnea aplazada de
mercurio.
Mtodos: Lenguajes ensamblador; conceptos base: subprogramas, estructuras
de datos.
Lenguajes: Uso experimental de compiladores de expresin.

1956-60

Hardware: Almacenamiento en cinta magntica; memorias de ncleo; circuitos


de transistores.
Mtodos: Tecnologa de compiladores inicial; gramticas BNF; optimizacin
de cdigo; intrpretes; mtodos de almacenamiento dinmicos y procesamiento
de listas.
Lenguajes: FORTRAN, ALGOL 58, ALGOL 60, COBOL, LISP.

1961-65

Hardware: Familias de arquitecturas compatibles, almacenamiento en discos


magnticos
Mtodos: Sistemas operativos de multiprogramacin, compiladores de sintaxisdirigida.
Lenguajes: COBOL-61, ALGOL 60 (revisada), SNOBOL, JOVIAL, notacin
APL

Unidad I.

1966-70

Hardware: Aumento de tamao y velocidad y reduccin de los costes; mini


computadoras, microprogramacin; circuitos integrados.
Mtodos:

Sistemas interactivos y tiempos-compartidos; compiladores

optimizados; sistemas de escritura traductores.


Lenguajes: APL, FORTRAN 66, COBOL 65, ALGOL 68, SNOBOL 4,
BASIC, PL/I, SIMULA 67, ALGOL-W
1971-75

Hardware: Microcomputadores; Edad de mini computadoras; sistemas de


almacenamiento pequeos; declive de las memorias de ncleo y crecimiento de
memorias de semiconductores
Mtodos: Verificacin de programas; programacin estructurada; inicio del
crecimiento de ingeniera de software como disciplina de estudio
Lenguajes: Pascal, COBOL 74, PL/I (standar), C, Scheme, Prolog

1976-80

Hardware: Microcomputadores de calidad comercial, sistemas de gran


almacenamiento; computacin distribuida.
Mtodos: Abstraccin de datos; semnticas formales; tcnicas de programacin
en tiempo real, concurrencia y fijos.
Lenguajes: Smalltalk, Ada, FORTRAN 77, ML.

Unidad I.

10

Ao
1981-85

Influencias y Nueva Tecnologa


Hardware: Computadores personales; primeras estaciones de trabajo; juegos de
vdeo; redes de rea local; Arpanet.
Mtodos: Programacin orientada a objetos; entornos interactivos; editores de
sintaxis dirigida.
Lenguajes: Turbo Pascal, Smalltalk-80, crecimiento de Prolog, Ada 83,
Postscript.

1986-90

Hardware: Edad de microcomputadores; crecimiento de estaciones de trabajo


de ingenieras; arquitectura RISC; redes globales; Internet.
Mtodos: computacin cliente/servidor.
Lenguajes: FORTRAN 90, C++, SML (ML Standar).

1991-95

Hardware: Estaciones de trabajo y microcomputadores mucho ms


econmicos; arquitectura paralelas masivas; voz, vdeo, fax, multimedia.
Mtodos: Sistemas abiertos; entorno de ventanas; Infraestructura de
Informacin Nacional ("autopistas de la informacin").
Lenguajes: Ada 95, lenguajes de procesos (TCL, PERL).

La evolucin de los lenguajes de programacin ha estado guiada por la evolucin de:


Las computadoras y sus sistemas operativos.
Las aplicaciones.
Los mtodos de programacin.
Los fundamento tericos.
La importancia dada a la estandarizacin.

Unidad I.

11

Los lenguajes de programacin han evolucionado a travs de generaciones. En cada nueva


generacin, van necesitndose menos instrucciones para indicarle a la computadora que tarea
efectuar. Es decir, un programa escrito en un lenguaje de primera generacin (maquina y/o
ensamblador) puede requerir mas de 100 instrucciones; ese mismo programa requerir menos de 25
instrucciones en un lenguaje de tercera generacin (Alto nivel).

1.4.1

Origen. (Autocdigos).

Los primeros lenguajes de programacin surgieron de la idea de Charles Babagge a mediados del
siglo XIX. Consista en lo que el denominaba la maquina analtica, pero que por motivos tcnicos
no pudo construirse hasta mediados del siglo XX.
Con la colaboracin de Ada Lovelace, la cual es considerada como la primera programadora de la
historia, pues realizo programas para aquella supuesta maquina de Babagge, en tarjetas perforadas.
Como la maquina no llego nunca a construirse, los programas de Ada, lgicamente, tampoco
llegaron a ejecutarse, pero si suponen un punto de partida de la programacin.
En 1936, Turing y Post introdujeron un formalismo de manipulacin de smbolos (la denominada
mquina de Turing) con el que se puede realizar cualquier cmputo que hasta ahora podemos
imaginar.
Esta fue una va de comunicacin entre los problemas formales de la computacin y de la
matemtica. La unin permiti demostrar que no existe ninguna mquina de Turing que pueda
reconocer si una sentencia es o no un teorema de un sistema lgico formal; pero tambin permiti
demostrar que si un clculo puede explicitarse sin ambigedad en lenguaje natural, con ayuda de
smbolos matemticos, es siempre posible programar un computadora digital capaz de realizar el
clculo, siempre que la capacidad de almacenamiento de informacin sea la adecuada.
Desde el punto de vista de la ingeniera, los progresos en lenguajes de programacin han sido
paralelos a los diseos de las nuevas computadoras. Babbage ya escribi programas para sus
mquinas, pero los desarrollos importantes tuvieron lugar, igual que en las computadoras, alrededor
de la segunda guerra mundial.
Cuando surgi la primera computadora, el famoso Eniac, su programacin se basaba en
componentes fsicos, o sea, que se programaba, cambiando directamente el Hardware de la
maquina, lo que se hacia era cambiar cables de sitio para conseguir as la programacin binaria.
Los "Lenguajes Maquina" y los "Lenguajes Ensambladores" (primera y segunda generacin) son
dependientes de la maquina. Cada tipo de maquina, tal como VAX de digital, tiene su propio
lenguaje maquina distinto y su lenguaje ensamblador asociado. El lenguaje ensamblador es
simplemente una representacin simblica del lenguaje maquina asociado, lo cual permite una
programacin menos tediosa que con el anterior. Sin embargo, es necesario un conocimiento de la
arquitectura mecnica subyacente para realizar una programacin efectiva en cualquiera de estos
niveles de lenguajes.

Unidad I.

12

1.4.2

Inicio. (FORTRAN, COBOL, ALGOL 60, LISP, APL, BASIC).

FORTRAN
En los aos 50 se realizaron varios compiladores primitivos y fue en 1957 cuando apareci el
primer compilador de FORTRAN. El compilador de FORTRAN (FORmula TRANslator) estaba
diseado para traducir a lenguaje mquina expresiones y operaciones matemticas, e incluso
permita la manipulacin de matrices.
La aparicin del FORTRAN fue un gran cambio para los programadores que no todos aceptaron de
buen grado. No les gustaba que sus programas fueran tratados por la computadora como meros
datos, y argumentaban que el cdigo mquina generado por el compilador nunca podra ser tan
eficiente como el escrito por ellos directamente.
Esto no era generalmente as, puesto que el FORTRAN no fue diseado pensando en crear un
lenguaje bien estructurado sino pensando en crear un traductor de expresiones aritmticas a cdigo
mquina muy eficiente. Por ello, el diseo lgico de la computadora IBM 704 para el que fue
creado casi puede deducirse del lenguaje FORTRAN.
En diferentes versiones, cada vez ms estructuradas, el lenguaje FORTRAN se ha utilizado
extensivamente desde que apareci hasta hoy en da, y puede considerarse el lenguaje estndar del
clculo cientfico.
COBOL
(COmmon Business Oriented Langauge = lenguaje orientado a negocios comunes). Se ha usado
mucho desde los aos 60 en aplicaciones de computadoras aplicadas a la administracin.
Cobol ha a evolucionado a travs de revisiones del diseo, que empez con la primera versin en
1960 y que condujo a la ultima revisin en 1974 (COBOL 1974).
La implementacin y el uso difundido de COBOL ha conducido a esfuerzos por estandarizar la
definicin del lenguaje. La primera definicin estndar de COBOL se publico en 1968; la ltima
definicin revisada y actualizada apareci en 1974.
El aspecto ms impresionante en un programa de COBOL es al organizacin en cuatro divisiones.
Esta organizacin es en gran parte el resultado de dos objetivos del diseo: el de separar los
elementos del programa dependientes de la maquina y el de separar las descripciones de los
algoritmos , para que cada uno pueda modificarse sin afectar al otro. El resultado es una
organizacin tripartita de programa.
Las representaciones de datos de COBOL , tienen un sabor definitivo de aplicacin a los negocios
pero son bastantes flexibles. La estructura de datos bsica es el registro.
Los nmeros y las cadenas de caracteres son los tipos de datos elementales bsicos. Las operaciones
primarias integradas incluyen operaciones aritmticas simples, lgicas y relacinales.

Unidad I.

13

El lenguaje es notable por su sintaxis parecida al ingles, lo que ase que los programas sean
relativamente fciles de leer. La mayora de los compiladores de COBOL anteriores eran muy
lentos, pero las mejoras resientes en las tcnicas de compilacin han conducido a compiladores de
COBOL relativamente rpidos, lo que produce un cdigo ejecutable bastante eficiente.

ALGOL60
Algoritmie Languge (lenguaje algortmico)
Lenguaje de programacin creado en los aos 60s que se usaba principalmente para el diseo de
aplicaciones de calculo, la versin ms conocida data del ao 1968 que se conoci con el nombre de
Proporciona recursos para estructurar datos, similares a los que se pueden encontrar en lenguajes
derivados de ALGOL 60 como Pascal, C o Modula-2. Permite sobrecarga de operadores y colocar
una declaracin en cualquier lugar donde pueda aparecer un enunciado (como en C++).

LISP
El lenguaje LISP lo diseo e implement primero John Mc Carthy y un grupo del instituto de
tecnologa de Massachusetts al rededor de 1960. El lenguaje se usa mucho en las investigaciones
computacionales en forma mas prominente en el rea de inteligencia artificial (robtica, proceso del
lenguaje natural prueba de teoremas, sistemas de inteligencia , etc.). LISP es diferente a la mayora
de los otros lenguajes en muchos aspectos. Lo ms impresionante es la equivalencia de formas entre
los programas y los datos en el lenguaje en el cual se permite que las estructuras de datos se
ejecuten como programas y que los programas se ejecuten como datos. LISP ofrece una amplia
variedad de primarias para la creacin, destruccin y modificacin de listas (incluyendo las listas de
propiedad). Las primarias bsicas de las operaciones aritmticas se proporcionan. Las estructuras de
control en LISP son relativamente simples. Las expresiones usadas para construir programas se
escriben en estricta forma polaca de cambrdge pueden incluir ramificacin condicional.
Las referencias de LISP ase basan principalmente en la regla de asociacin ms reciente para
referencias forneas, que con frecuencia se implementan usando una simple lista enlazada de
asociaciones actuales. LISP se implementa ms fcilmente con un interprete de software y
simulacin de software para todas las primarias la mayora de las implementaciones tambin
proporcionan un compilador que puede usarse para compilar las definiciones de la funcin
seleccionada en cdigo de mquina. Estas funciones compiladas son ejecutables entonces por el
interprete de hardware (pero sigue requirindose la simulacin de software para muchas
operaciones).

APL
Sus siglas significan (A Programming Language). Un lenguaje de programacin.
Este programa fue desarrollado por Kenneth Inverson a mediados de la dcada de 1960 para
resolver problemas matemticos.
Este lenguaje se caracteriza por su brevedad y por su capacidad de generacin de matrices y se
utiliza en el desarrollo de modelos matemticos.

Unidad I.

14

APL tiene dos caractersticas que lo distinguen y lo apartan de los otros lenguajes:
Lenguaje interactivo. APL es el nico lenguaje que est diseado expresamente para ser
interactivo.
Proceso directo de estructuras completas de datos. En APL las operaciones primarias
aceptan arreglos completos como argumentos y producen arreglos completos como
resultados. Por lo tanto, la unidad bsica de datos tiende a ser un arreglo completo.

APL se basa en estructuras en datos de arreglos homogneos, con componentes de tipo numrico o
carcter. El tipo es estrictamente dinmico y no tiene relacin directa con el programador. Est
integrada una gran clase de operadores primarios, incluyendo muchos que crean, destruyen y
modifican arreglos. Todas las primarias de APL se definen como funciones que regresan un valor.

BASIC
Begginers All Purpose Symbolic Instruction Code (cdigo de Instrucciones Simblicas de Todo
Propsito para Principiantes).
Lenguaje simblico de programacin de tercera generacin desarrollado en la dcada de los 60s y
destinado en sus inicios a la enseanza de la programacin
Por su sencillez fue el lenguaje bsico utilizado inicialmente en los computadores personales. En
general, y al contrario de lo que suele suceder con los ms importantes lenguajes simblicos de
programacin, en BASIC se suele trabajar en modo intrprete.
El tiempo de ejecucin que emplea el programa compilado puede ser hasta diez veces inferior que
el empleado en el caso de actuar bajo intrprete. Mientras se est en fase de desarrollo es muy
conveniente trabajar en intrprete porque la inmediata ejecucin del programa en cada momento
permite detectar los errores con gran rapidez, lo que es muy positivo en un lenguaje destinado a
principiantes que lgicamente cometen un gran nmero de errores al desarrollar un programa.
El BASIC es un lenguaje poco estandarizado y hay diferencias bastantes apreciables del que se
utiliza en unos y otros sistemas.
Aunque es un lenguaje poco utilizado en la informtica profesional, se ha empleado mucho en los
microcomputadores y mientras en los primeros aos de los 80s fue el lenguaje en el que se solan
desarrollar las aplicaciones en micros.
Hay una versin avanzada del BASIC, denominada QUICK BASIC que adems de dar mayores
prestaciones presenta las caractersticas de un lenguaje de programacin algo estructurado, evitando
as el desarrollo de los tpicos programas espagueti.
A fines de los 90s el BASIC ha dejado de utilizarse. Su heredero, aunque ya casi irreconocible, es
el Visual Basic cuya orientacin a objetos lo ha hecho casi imprescindible en la programacin de la
parte cliente de cualquier sistema cliente servidor.

Unidad I.

15

1.4.3

Consolidacin. (PL/1, SIMULA 67, ALGOL 68, PASCAL) .

PL/1.
PL1 son una sigla de Portfolio Lenguage One (Lenguaje de portafolio uno). es un lenguaje de
programacin creado por la compaa Atari. y su computadora de portafolio.
PL1 usa slo 12 Kb de espacio y es ms de 10 veces mas rpido que PBASIC. Soporta grficos
animados, marcos, lneas, conjuntos de caracteres, archivo y funciones del cordn, precisin doble
la aritmtica del punto flotante y programacin estructurada. Para los usuarios ms experimentados.
Es un idioma fcil para usar; la sintaxis es sencilla, y las reglas son uniformes. Tiene muchas
funciones de ayuda dentro de la programacin. Es un excelente primer idioma, y mantiene un
camino de crecimiento excelente el profesional. PL/I puede usarse por resolver una gama amplia de
problemas numricos en cualquier esfera en donde se desarrolle la informtica, puede ser en
matemticas, en la ingeniera, en cualquier ciencia, como en la medicina, etc.
PL/I est en casa en cualquier aplicacin comercial. Los archivos son fciles de usar. Usted puede
hacer un informe en la pantalla, e introducir datos por medio del teclado.
El lenguaje tambin incluye un conjunto complejo de caractersticas para soportar el uso de
archivos externos para la entrada y salida. La compilacin de los programas en PL/l es difcil por la
complejidad del lenguaje y la necesidad de compilar en forma eficiente el cdigo ejecutable.

SIMULA67.
Esta versin surgi en 1967 es una extensin de Algol 60 bastante diferente a su predecesor (Simula
I), que era bsicamente un lenguaje de simulacin de procesos. Simula 67 es un lenguaje de
programacin de propsito general que surge de los modelos de simulacin. Parte del xito de este
lenguaje se debe a que se realizaron implementaciones para ordenadores IBM, DEC, Control Data y
UNIVAC.
SIMULA 67 fue el primer lenguaje de programacin que incorpor el concepto de clase. La clase
de Simula se puede considerar como una generalizacin muy flexible del concepto de bloque de
ALGOL. Su mecanismo de definicin de subclases permite establecer jerarquas de clases.
Influy directamente en las clases de C++ y SMALLTALK e indirectamente, a travs de MESA, en
los mdulos de Modula-2. Su concepto de clase tambin de adapt en lenguajes como CLU o
ALPHARD.

ALGOL 68
Tercera revisin de ALGOL. Van Wijngaarden (E.U) propona ampliar ALGOL, crear un "ALGOL
Generalizado". Se basaba en la idea de que la complejidad de los lenguajes era la causa de sus
limitaciones.
La premisa de que un lenguaje no debera estar enterrado entre reglas sintcticas, sino apoyado por
ellas, condujo a un lenguaje en el que un fallo en la lgica de un programa era prcticamente

Unidad I.

16

indetectable. Por otra parte, Niklaus Wirth prefera simplificar el lenguaje para que resultase ms
operativo. Wirth consideraba un error considerar una caracterstica esencial de un lenguaje de alto
nivel la capacidad de expresar un programa de la forma ms breve posible.
ALGOL 68 se ha utilizado muy poco, en parte debido a que su informe original utilizaba una
terminologa nueva y era difcil de leer. Por ejemplo, llama modos (modes) a los tipos de datos y
unidades (units) a las expresiones. No obstante, ALGOL 68 fue decisivo para la aparicin de Pascal.
El lenguaje incorpora un conjunto relativamente pequeo de conceptos ortogonales. Se minimizan
las restricciones acerca del uso combinado de sus distintas caractersticas.
ALGOL 68 utiliz la notacin VWF (Van Wijngaarden Form) para definir su sintaxis e ingls semiformal para especificar su semntica. La notacin utilizada es ms completa y adecuada para la
definicin de un lenguaje de programacin que la BNF.

PASCAL.
El lenguaje de programacin Pascal fue desarrollado originalmente por Niklaus Wirth, un miembro
de la International Federation of Information Processing (IFIP) El Profesor Niklaus Wirth desarroll
Pascal para proporcionar rasgos que estaban faltando en otros idiomas en ese entonces.
Sus principales objetivos para Pascal eran para el lenguaje eran ser eficiente para llevarse a cabo y
correrse los programas, permita bien el desarrollo de estructuras y tambin organizar programas, y
para servir como un vehculo para la enseanza de los conceptos importantes de programacin de la
computadora.
Pascal que se nombr gracias al matemtico Blaise Pascal,. el original idioma de Pascal apareci en
1971 con ltima revisin publicada en 1973.
Fue diseado para ensear las tcnicas de programacin y otros temas a los estudiantes de la
universidad y era el idioma de opcin de los aos 60 a los 80s.
Pascal es un lenguaje estructurado en bloques. Un programa en Pascal est formado siempre por un
solo bloque de programas principal, que contiene dentro de l definiciones del subprograma usado.
La parte ms innovadora del diseo descansa en el trato de los tipos de datos. Una gran seccin de
diferentes tipos de datos se proporciona: enteros, reales, carcter, enumeraciones, boolianos,
arreglos, registros, archivos cuenciales y una forma limitada de conjuntos. Pascal permite que se d
por el programador la definicin separada de un tipo de datos.
Pascal puede implementarse en forma eficiente sobre computadoras convencionales. La traduccin
se hace en el cdigo de mquina ejecutable, a pesar de que algunas implementaciones en Pascal
traduce al cdigo de mquina virtual, que interpreta y ejecuta un intrprete del software.
1.4.4

Lenguajes de los 80s. (Prolog, Small Talk, C, Modula-2, Ada).

PROLOG
(programacin lgica)

Unidad I.

17

En Octubre de 1981, el gobierno japons y ms concretamente el Ministerio Japons de Comercio


Internacional e Industria (MITI), anuncia la puesta en marcha de un proyecto revolucionario
equiparable a la carrera del espacio norteamericana.
Estn dispuestos a ofrecer al mundo la siguiente generacin, la Quinta Generacin de
computadoras. Unas mquinas de Inteligencia Artificial que pueden pensar, sacar conclusiones,
emitir juicios e incluso comprender las palabras escritas y habladas.
La Quinta Generacin prev mquinas diseadas para el tratamiento lgico, de capacidades
anlogas a las capacidades de anteriores generaciones de computadoras para tratar operaciones
aritmticas. Se trata de computadoras que tienen el PROLOG como lenguaje nativo (lenguaje
mquina), con capacidad para procesar millones de inferencias lgicas por segundo (LIPS).
La programacin lgica, representada por lenguajes como Prolog, permite utilizar un subconjunto
de la lgica de primer orden, concretamente las clusulas de Horn, para especificar sistemas. Su
base formal permite razonar sobre estas especificaciones, que pueden ser interpretadas directamente
mediante resolucin, con lo que podemos realizar pruebas de la especificacin. Adems su propio
carcter de declarativos permite representar el qu, en lugar del cmo.
Sin embargo, el inconveniente de Prolog es que no est orientado al proceso. Al tratarse de un
lenguaje secuencial, no permite especificar sistemas que interactan con el entorno o sistemas
compuestos por muchas partes que funcionan concurrentemente. Existen lenguajes lgicos
concurrentes, como Parlog, que subsanan estas deficiencias.
Otro inconveniente que presentan estos lenguajes es que no admiten tipos de datos, ni siquiera
definiciones de datos, por lo que son poco adecuados para especificaciones complejas. Podemos
decir, por tanto, que, aunque a veces hayan sido usados para la especificacin, los lenguajes lgicos
no son lenguajes de especificacin propiamente dichos.

C
El lenguje c, es un lenguaje de programacin de tercera generacin diseada para poder crear
aplicaciones de todo tipo inicialmente se usaba en entornos de tipo UNIX aunque despus s
extendi en todas las plataformas. Su creador fue Dennis Ritchie.
El lenguaje C rene caractersticas de programacin intermedia entre los lenguajes ensambladores y
los lenguajes de alto nivel; con gran podero basado en sus operaciones a nivel de bits (propias de
ensambladores) y la mayora de los elementos de la programacin estructurada de los lenguajes de
alto nivel, por lo que resulta ser el lenguaje preferido para el desarrollo de software de sistemas y
aplicaciones profesionales de la programacin de computadoras.
Su diseo incluyo una sintaxis simplificada, la aritmtica de direcciones de memoria (permite al
programador manipular bits, bytes y direcciones de memoria) y el concepto de apuntador; adems,
al ser diseado para mejorar el software de sistemas, se busco que generase cdigos eficientes y uno
portabilidad total, es decir el que pudiese correr en cualquier mquina. Logrados los objetivos
anteriores, C se convirti en el lenguaje preferido de los programadores profesionales.
En 1980 Bjarne Stroustrup de los laboratorios Bell de Murray Hill, New Jersey, inspirado en el
lenguaje Simula67 adiciono las caractersticas de la programacin orientada a objetos (incluyendo
la ventaja de una biblioteca de funciones orientada a objetos) y lo denomino C con clases.
Para 1983 dicha denominacin cambio a la de C++. Con este nuevo enfoque surge la nueva
metodologa que aumenta las posibilidades de la programacin bajo nuevos conceptos.

Unidad I.

18

MODULA-2
Modula-2 es descendiente directo de Pascal. Modula-2 tiene poderosas extensiones, especialmente
su concepto de modelo (el cul permite la compilacin independiente y la creacin de libreras de
programas) y el permitir el procesamiento asncrono. A pesar de su potencia, existen eficientes
implementaciones de Modula-2 y junto con C y Ada, debe considerarse un importante candidato
para las futuras aplicaciones de programacin de sistemas. Modula-2, estuvo influenciado por las
necesidades especilaes de la programacin de sistemas, especialmente la necesidad de la
compilacin independiente de procedimiento.
SMALLTACK.
Smalltalk es un verdadero lenguaje de programacin orientado a objetos integrado con un entorno
de desarrollo multiventana. Smalltalk no es solo un hermoso lenguaje de computacin orientado a
objetos.
El entorno de desarrollo merece similar valoracin y ha sido copiado muchas veces, desde el
Sistema Operativo de Apple hasta MS Windows y Borland Pascal ( en una menor extensin ).
Muchos conceptos de Smalltalk como los browsers y las tcnicas de browsing han encontrado hoy
su rumbo en muchas herramientas de desarrollo de la generacin X.
Los entornos integrados de desarrollo Smalltalk poseen un factor "divertido-de-usar" que no estaba
disponible previamente en lenguajes que requeran de las etapas de edicin-compilacindepuracin. Los cambios se graban instantneamente y los mismos pueden probarse rpidamente.
El modelo de desarrollo incremental est realmente adoptado en Smalltalk. Smalltalk fue
desarrollado dentro del Grupo de Investigacin del Aprendizaje en el Centro de Investigacin de
Xerox en Palo Alto a comienzos de los 70'. Las principales ideas de Smalltalk se le atribuyen
generalmente a Alan Kay con races en Simula, LISP y SketchPad. Dan Ingalls escribi el cdigo
de las primeras ventanas solapables, los pop-up mens y la clase BitBlt.
Adele Goldberg y Dave Robson escribieron los manuales de referencia para Smalltalk y fueron
miembros clave del equipo de desarrollo. Un programa de licenciamiento de Xerox y Xerox Special
Information Systems distribuy el entorno de desarrollo Smalltalk a un limitado nmero de
desarrolladores y grandes compaas. Sin embargo la distribucin generalizada a la comunidad de
desarrollo no sucedi hasta la fundacin de una nueva compaa llamada ParcPlace Systems Inc.,
dirigida por Adele Goldberg. Un segundo Smalltalk (Smalltalk/V) fue desarrollado por Digitalk en
los Angeles California, con financiamiento de Ollivetti y otros clientes.
Este Smalltalk estaba dirigido a cubrir la necesidad de un producto pequeo, de alta velocidad,
basado en PC. Antes de la adquisicin por parte de ParcPlace Systems Inc., Digitalk era el lder en
volumen de ventas. Object Technology International Inc. (OTI) desarroll un conjunto de
herramientas de manejo para todos los Smalltalks llamado ENVY/Developer para proveer el control
de versiones y el manejo de configuraciones en grandes proyectos.
OTI desarroll una mquina virtual de 32-bits para el producto de Digitalk para Apple y particip
en una amplia gama de proyectos de investigacin, desde herramientas cliente servidor orientadas a
objetos, Smalltalk integrado, y procesamiento de imgenes de radar para operaciones militares hasta
sistemas con restricciones y generadores de mquinas virtuales portables. IBM desarroll la familia
de productos VisualAge para Smalltalk en colaboracin con Object Technology International Inc.
Hoy, ObjectShare (antiguamente ParcPlace-Digitalk) e IBM permanecen como los distribuidores
dominantes de entornos de desarrollo en Smalltalk. Algunos nuevos Smalltalks se hallan en etapa
de desarrollo.

Unidad I.

19

ADA.
Nombrado en honor de la primera persona programador de computadoras del mundo, Augusta Ada
Byron King, Condesa de Lovelace, e hija del poeta ingles Lord Byron.
Ada es un idioma de la programacin de alto nivel pensado para las aplicaciones en vas de
desarrollo donde la exactitud, seguridad, fiabilidad, y manutencion son primeras metas.
Ada es un fuertemente del tipo orientado a Objeto. Se piensa que trabaja bien en un ambiente del
multi-lenguaje y ha standarizado los rasgos para apoyar la unin a otros idiomas.
La Razn de Ada proporciona una descripcin de los rasgos principales del idioma y sus bibliotecas
y explicaciones de las opciones hecha por los diseadores del idioma.
El desarrollo del lenguaje Ada sigui un patrn nico en la historia de los lenguajes ms
importantes de la programacin. En los aos 70s el Departamento de Defensa de Estados Unidos se
comprometi a desarrollar un lenguaje de programacin estndar para aplicaciones en sistemas
incorporados, en los cuales en una o ms computadoras son parte de un sistema ms grande tal
como un sistema de aeroplanos, barcos o de comunicaciones, se produjo un conjunto detallado de
especificaciones que describan varias de las capacidades requeridas. Estas se volvieron a definir en
forma progresiva a travs de una serie de documentos preliminares conocidos como " Strawman ", "
Woodenman ", "Tinman", "Ironman" y por ltimo "Steelman". Cada uno de las especificaciones
preliminares eran criticadas por un numeroso grupo de expertos en lenguajes de programacin.
Despus de algunas revisiones de estos diseos, se sostuvo otra vez una critica extensa, que en 1979
condujo a la seleccin final de un diseo que despus se llamo "Ada" (por Ada Lovelace, una
pionera en computacin). Whitaker (1978) da una historia ms extensa del desarrollo del Ada.
El diseo del Pascal fue el punto de inicio para el diseo de Ada, pero el lenguaje resultante es
diferente de l en muchos aspectos importantes. Como el lenguaje no ha tenido un uso muy extenso
todava, son probables algunos cambios posteriores como se gane ms experiencia.
Se intenta que Ada soporte la construccin de programas grandes por medio de equipos de
programadores, un programa en Ada se disea por lo regular como una coleccin de "componentes
de software" ms grandes llamados paquetes.
Un paquete contiene un conjunto integrado de definiciones de tipo, datos objeto y subprogramas
para manipular estos datos objeto. Esta naturaleza especial de Ada y de la programacin en Ada
viene de esta nfasis en la construccin de programas que usan paquetes.
El programa en Ada puede incluir un conjunto de tareas separadas que se van a ejecutar en forma
concurrente.
Las estructuras del control de secuencias dentro de un subprograma Ada utiliza expresiones de
estructuras de control de nivel de las proposiciones similares a las de Pascal. El aspecto ms notable
de las caractersticas de control de secuencia de Ada es la provisin de tareas que puede ejecutarse
en forma concurrente y pueden controlarse usando un reloj y otros mecanismos de planeacin.
Las estructuras del control de datos en Ada utiliza la organizacin de estructura en bloque esttica
para hacer referencias forneas dentro de grupos pequeos de subprogramas, como Pascal.

Unidad I.

20

Dominios de aplicacin de los lenguajes de programacin.


El lenguaje apropiado que se use a menudo, depende del dominio de la aplicacin que resuelve el
problema. El lenguaje adecuado que conviene usar para diversos dominios de alicacin ha
evolucionado a lo largo de los ltimos30 aos. A continuacin se muestra una tabla con algunos de
los lenguajes ms importantes para diversos dominios de aplicacin.

Epoca
Aos
Sesenta

Hoy

Aplicacin
Negocios
Cientfica
Sistemas
IA
Negocios
Cientfica
Sistemas

Lenguajes principales
Cobol
FORTRAN
Ensamblador
Lisp
COBOL, hoja de clculo
FORTRAN; C; C++
C,C++

IA
Edicin

LISP, Prolog
TeX, Postscript,
procesamiento de texto
Shel de UNIX, TCL,
PERL
ML, Smalltalk

Proceso
Nuevos Paradigmas

1.4.5

Definicin de un lenguaje de programacin.


metalenguaje, especificacin, gramtica).

Otros lenguajes
Ensamblador
ALGOL, BASIC, APL
JOVIAL, Forth
SNOBOL
C, PL/1, 4GL
BASIC, Pascal
Pascal, Ada, BASIC,
Modula

Marvel
Eiffel

(sintaxis,

semntica,

Un lenguaje de programacin como lo definimos anteriormente es como un conjunto de reglas,


smbolos y palabras especiales que permiten construir un programa.
Un lenguaje de programacin es un lenguaje especial, no natural, diseado con un vocabulario,
morfologa y sintaxis muy simples y rgidas y orientado a la programacin de instrucciones
elementales cuya ejecucin por un determinado sistema fsico da lugar a la realizacin de una tarea

1.4.5.1. Sintaxis
La sintaxis es el conjunto de reglas que gobiernan la construccin o formacin de sentencias
(instrucciones) vlidas en un lenguaje. La sintaxis de un lenguaje de programacin es el aspecto
que ofrece el programa. Proporcionar las reglas de sintaxis para un lenguaje de programacin
significa decir cmo se escriben los enunciados, declaraciones y otras construcciones de lenguaje.
La sintaxis, cuya definicin sera "la disposicin de palabras como elementos en una oracin para
mostrar su relacin,"' describe la serie de smbolos que constituyen programas vlidos.

Unidad I.

21

Solamente las sentencias correctamente sintcticas pueden ser traducidas por un lenguaje de
programacin, y los programas que contienen errores de sintaxis son rechazados por la
computadora. Cada lenguaje de programacin posee sus propias reglas sintcticas.
El vocabulario de un lenguaje es un conjunto de smbolos (en ocasiones se denominan smbolos
terminales). Los smbolos usuales son: letras, dgitos, smbolos especiales (, ; : / & + - *, etc.),
palabras reservadas o claves if (si), then(entonces), repeat (repetir), for (o), begin (inicio), end (fin).
Las reglas sintcticas son los mtodos de produccin de sentencias o instrucciones vlidas que
permitirn formar un programa. Las reglas sintcticas permiten reconocer si una cadena o serie de
smbolos es correcta gramaticalmente y a su vez informacin sobre su significado o semntica.
Las reglas sintcticas deben definir los conceptos de sentencia (instruccin), expresin,
identificador, variables, constantes, etc., y deben permitir de modo fcil verificar si una secuencia
de smbolos es una sentencia, expresin, etc., correcta del lenguaje.
Para definir las reglas sintcticas se suelen utilizar dos tipos de notaciones: la formalizacin de
Backus-Naur-Form (BNF) y los diagramas o grafos sintcticos. La notacin o formalizacin BNF,
es uno de los mtodos empleados para la definicin de reglas sintcticas y se concibi para que se
permitiera decidir en forma algortmica cundo una sentencia es vlida o no en un lenguaje. Esta
notacin fue ideada por P. Naur que junto con otro grupo de cientficos desarrollaron en 1960 el
lenguaje de programacin ALGOL 60.
El estilo sintctico general de un lenguaje, esta dado por la seleccin de diversos elementos
sintcticos bsicos. Los ms destacados son los siguientes:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Conjunto de caracteres.
Identificadores.
Smbolos de operadores.
Palabras clave y palabras reservadas.
Comentarios
Espacios en blanco.
Delimitadores y corchetes.
Formato de campos libres y fijos.
Expresiones.
Enunciados.

1.4.5.2. Semntica.
La semntica es el conjunto de reglas que proporcionan el significado de una sentencia o instruccin
del lenguaje. La semntica de un lenguaje de programacin es el significado que se da a las diversas
construcciones sintcticas. Por ejemplo, para proporcionar la sintaxis que se usa en Pascal para
declarar un vector de 10 elementos, V, de enteros se dara una declaracin en Pascal, como:
V: array[0..9] of entero;
Por otra parte, en C, se especificara como:
int V[10];
Si bien ambos crean objetos de datos similares en el tiempo de ejecucin, su sintaxis es muy
diferente. Para entender el significado de la declaracin, se necesita conocer la semntica tanto de
Pascal como de C para esta clase de declaraciones de arreglo.

Unidad I.

22

1.4.5.3. Gramtica.
La definicin formal de la sintaxis de un lenguaje de programacin se conoce ordinariamente como
una gramtica, en analoga con la terminologa comn para los lenguajes naturales. Una gramtica
se compone de un conjunto de reglas (llamadas producciones) que especifican las series de
caracteres (o elementos lxicos) que forman programas permisibles en el lenguaje que se est
definiendo. Una gramtica formal es simplemente una gramtica que se especifica usando una
notacin definida de manera estricta.
Las dos clases de gramticas tiles en tecnologa de
compiladores incluyen la gramtica BNF (o gramtica libre del contexto) y la gramtica normal.

1.4.6

Translacin de lenguajes de programacin. (compilacin, programa fuente,


anlisis lxico, anlisis sintctico, anlisis semntico, tabla de smbolos,
generacin de cdigo, programa objeto).

El proceso de traduccin de un programa, de su sintaxis original a una forma ejecutable medular en


toda implementacin de lenguajes de programacin. La traduccin puede ser bastante sencilla,
como en el caso de los programas en Prolog o LISP, pero con frecuencia, el proceso puede ser
bastante complejo. Casi todos los lenguajes se podran implementar con slo una traduccin trivial
si uno estuviera dispuesto a escribir un intrprete de software y a aceptar velocidades lentas de
ejecucin. En la mayora de los casos, sin embargo la ejecucin eficiente es un objetivo tan
deseable que se hacen esfuerzos importantes para traducir los programas, a estructuras ejecutables
con eficiencia, en especial cdigo de mquina interpretable por hardware. El proceso de traduccin
se vuelve gradualmente ms complejo a medida que la forma ejecutable del programa se aleja ms
en cuanto a estructura respecto al original

1.4.6.1. Compilacin.
Los traductores se agrupan de acuerdo con el nmero de pasos que efectan sobre el programa
fuente. El compilador estndar emplea tpicamente dos pasos sobre el programa fuente. El primer
paso de anlisis descompone el programa en los componentes que lo constituyen y obtiene
informacin, como el uso de nombres de variables, del programa.
El segundo paso genera
tpicamente un programa objeto a partir de esta informacin recogida.
Traduccin (compilacin). En trminos generales un traductor denota cualquier procesador de
lenguajes que acepta programas en cierto lenguaje fuente (que puede ser de alto o de bajo nivel)
como entrada y produce programas funcionalmente en otro lenguaje objeto (que tambin puede ser
de alto o de bajo nivel) como salida:
Hay varios tipos especializados de traductores:
Un ensamblador es un traductor cuyo lenguaje objeto es tambin alguna variedad de lenguaje
mquina para una computadora real pero cuyo lenguaje fuente, un lenguaje ensamblador, constituye
en gran medida una representacin simblica del cdigo de mquina objeto. Casi todas las
instrucciones en el lenguaje fuente se traducen una por una a instrucciones en el lenguaje objeto.

Unidad I.

23

Un compilador es un traductor cuyo lenguaje fuente es un lenguaje de alto nivel y cuyo lenguaje
objeto se aproxima al lenguaje de mquina de una computadora real, ya sea que se trate de un
lenguaje ensamblador o alguna variedad de lenguaje mquina. El C por ejemplo, se compila
comnmente a un lenguaje ensamblador, el cul es convertido luego en lenguaje de mquina por un
ensamblador.
Un cargador o editor de vnculos es un traductor cuyo lenguaje objeto es un cdigo de mquina real
y cuyo lenguaje fuente es casi idntico; y est compuesto por lo general de programas en lenguaje
de mquina en forma reubicable junto con tablas de datos que especifican puntos donde el cdigo
reubicable se debe modificar para volverlo autnticamente ejecutable.
Un preprocesador o un macroprocesador es un traductor cuyo lenguaje objeto es la forma ampliada
de un lenguaje de alto nivel como C++ o Pascal y cuyo lenguaje objeto es la forma estndar del
mismo lenguaje. El programa objeto que produce un prepocesador queda listo entonces para ser
traducido y ejecutado por los procesador lenguaje estndar. La traduccin de un lenguaje fuente de
alto nivel a programas ejecutables en lenguaje de mquina suele implicar ms de un paso de
traduccin

1.4.6.2. Anlisis del programa fuente.


Para un traductor, el programa fuente se presenta inicialmente como una serie larga y no
diferenciada de smbolos, compuesta de miles o decenas de miles de caracteres. Desde luego, un
programador que ve un programa as lo estructura casi de inmediato en subprogramas, enunciados,
declaraciones, etc. Para el traductor nada de esto es manifiesto. Durante la traduccin se debe
construir laboriosamente, carcter por carcter, un anlisis de la estructura del programa.

1.4.6.3. Anlisis lxico.


La fase fundamental de cualquier traduccin es agrupar esta serie de caracteres en sus
constituyentes elementales: identificadores, delimitadores, smbolos de operadores, nmeros,
palabras clave, palabras pregonadas, espacios en blanco, comentarios, etc. Esta fase se conoce como
anlisis lxico, y las unidades bsicas de programa que resultan del anlisis lxico se llaman
elementos (o componentes) lxicos. Tpicamente, el analizador (o revisor) es la rutina de entrada
para el traductor; lee renglones sucesivos del programa de entrada, los descompone en elementos
lxicos individuales y alimenta estos elementos lxicos a las etapas posteriores del traductor para su
uso en los niveles superiores de anlisis. El analizador lxico debe identificar el tipo de cada
elemento lxico (nmero, identificador, delimitador, operador, etc.) y adjuntar una marca de tipo.
Adems, se suele hacer la conversin a una representacin interna de elementos como nmeros
(que se convierten a forma binaria interna de punto fijo o flotante) e identificadores (que se guardan
en una tabla de smbolos y se usa la direccin de la entrada de la tabla de smbolos en lugar de la
cadena de caracteres). El modelo bsico que se usa para proyectar analizadores lxicos es el autma
de estados finitos.
.
Si bien el concepto de anlisis lxico es sencillo, esta fase de la traduccin suele requerir una mayor
proporcin del tiempo de traduccin que cualquier otra. Este hecho se debe en parte simplemente a
la necesidad de explorar y analizar el programa fuente carcter por carcter.

Unidad I.

24

1.4.6.4. Anlisis sintctico.


La segunda etapa de la traduccin es el anlisis sintctico (parsing). En ella se identifican las
estructuras de programa ms grandes (enunciados declaraciones, expresiones, etc.) usando los
elementos lxicos producidos por el analizador lxico. El anlisis sintctico se alterna
ordinariamente con el anlisis semntico. Primero, el analizador sintctico identifica una serie de
elementos lxicos que forman una unidad sintctica como una expresin, enunciado, llamada de
subprograma o declaracin. Se llama entonces a un analizador semntico para que procese esta
unidad. Por lo comn, el analizador sintctico y el semntico se comunican usando una pila. El
analizador sintctico introduce en la pila los diversos elementos de unidad sintctica hallada y el
analizador semntico los recupera y los procesa. Gran cantidad investigacin se ha enfocado al
descubrimiento de tcnicas eficientes de anlisis sintctico, en particular tcnicas basadas en el uso
de gramticas formales.

1.4.6.5. Anlisis semntico.


El anlisis semntico es tal vez la fase medular de la traduccin. Aqu, se procesan las estructuras
sintcticas reconocidas por el analizador sintctico y la estructura del cdigo objeto ejecutable
comienza a tomar forma. El anlisis semntico es, por tanto, el puente entre las partes de anlisis y
de sntesis de la traduccin. En esta etapa tambin ocurre un cierto nmero de otras funciones
subsidiarias importantes, entre ellas el mantenimiento de las tablas de smbolos, la mayor parte de la
deteccin de errores, la expansin de macros y la ejecucin de enunciados de tiempo de
compilacin. El analizador semntico puede producir en efecto el cdigo objeto ejecutable en
traducciones sencillas, pero es ms comn que la salida de esta etapa sea alguna forma interna del
programa ejecutable final, la cual es manipulada luego por la etapa de optimizacin del traductor
antes que se genere efectivamente cdigo ejecutable.

1.4.6.6. Tabla de smbolos.


El analizador semntico divide ordinariamente en un conjunto de analizadores semnticos ms
pequeos, cada uno de los cuales maneja un tipo particular de construccin de programa. Los
analizadores semnticos interactan entre ellos mismos a travs de informacin que se guarda en
diversas estructuras de datos, en particular en la tabla central de smbolos.
Por ejemplo un
analizador semntico que procesa declaraciones de tipo para variables sencillas suele poder hacer
poco ms que introducir los tipos declarados en la tabla de smbolos. Un analizador semntico
posterior que procesa expresiones aritmticas puede usar luego los tipos declarados para generar las
operaciones aritmticas apropiadas especficas de tipo para el cdigo objeto. Las funciones exactas
de los analizadores semnticos varan considerablemente, segn el lenguaje y la organizacin lgica
del traductor. Algunas de las funciones ms comunes se pueden describir como sigue:
Mantenimiento de tablas de smbolos. Una tabla de smbolos es una de las estructuras de datos
medulares de todo traductor. La tabla de smbolos contiene tpicamente una entrada por cada
identificador diferente encontrado en el programa fuente.
El analizador lxico efecta las
introducciones iniciales conforme explora el programa de entrada, pero los analizadores semnticos
tienen la responsabilidad principal a partir de ese momento. La entrada de tabla de smbolos

Unidad I.

25

contiene ms que slo el identificador mismo; contiene datos adicionales respecto a los atributos de
ese identificador: su tipo (variable simple, nombre de arreglo, nombre de subprograma, parmetro
formal, etc.), tipo de valores (enteros, reales, etc.), entorno de referimiento, y cualquier otra
informacin disponible a partir del programa de entrada a travs de declaraciones y uso. Los
analizadores semnticos introducen esta informacin en la tabla de smbolos conforme procesan
declaraciones, encabezados de programa y enunciados de programa. Otras partes del traductor usan
esta informacin para construir cdigo ejecutable eficiente.
La tabla de smbolos de los traductores para lenguajes compilados se suele desechar al final de la
traduccin. Sin embargo, puede retenerse durante la ejecucin, por ejemplo, en lenguajes que
permiten crear nuevos identificadores durante la ejecucin o como ayuda para la depuracin. Todas
las implementaciones de ML, Prolog y LISP utilizan una tabla de smbolos creada inicialmente
durante la traduccin como una estructura de datos central definida por el sistema en tiempo de
ejecucin.
Deteccin de errores. Los analizadores sintcticos y semnticos deben esta para manejar programas
tanto incorrectos como correctos.
En cualquier punto el analizador lxico puede enviar al
analizador sintctico un elemento sintctico que no encaja en el contexto circundante (por ejemplo,
un delimitador de enunciado en medio de una expresin, una declaracin a la mitad de una serie de
enunciados, un smbolo de operador donde se espera un identificador).

1.4.6.7. Sntesis del programa objeto


Las etapas finales de la traduccin se ocupan de la construccin del programa ejecutable a partir de
las salidas que produce el analizador semntico. Esta fase implica necesariamente generacin de
cdigo y tambin puede incluir optimizacin del programa generado. Si los subprogramas se
traducen por separado, o si se emplean subprogramas de biblioteca, se necesita una etapa final de
vinculacin y carga para producir el programa completo listo para ejecutarse.
Optimizacin. El analizador semntico produce ordinariamente como salida el programa ejecutable
traducido y representado en algn cdigo intermedio.
A partir de esta representacin interna, los generaciones de cdigo pueden crear el cdigo objeto de
salida con el formto apropiado. Sin embargo, antes de la generacin de cdigo, se lleva a cabo
ordinariamente cierta optimizacin del programa en la representacin interna. Tipicamente el
analizador semntico genera la forma del programa interno en forma irregular conforme se analiza
cada segmento del programa de entrada.

1.4.6.8. Generacin de cdigo.


Despus que se ha optimizado el programa traducido en la representacin interna, se debe
transformar en los enunciados en lenguaje ensamblador, cdigo de mquina u otra forma de
programa objeto que va a constituir la salida de la traduccin. Este proceso implica dar el formato
apropiado a la salida con base en la informacin que contiene la
representacin interna de]
programa. El cdigo de salida puede ser directamente ejecutable o puede haber otros pasos de
traduccin por seguir, por ejemplo, ensamblado o vinculacin y carga.

Unidad I.

26

1.4.6.9. Programa objeto.


Vinculacin y carga. En la etapa final optativa de la traduccin, los fragmentos de cdigo
que
son resultado de las traducciones individuales de subprogramas se funden en el programa final
ejecutable. La salida de las fases de traduccin precedentes consiste tpicamente en programas
ejecutables en una forma casi final, excepto cuando los programas hacen referencia a
datos
externos u otros subprogramas. Estas ubicaciones incompletas en el cdigo se especifican en las
tablas de cargador anexas que produce el traductor. El cargador vinculador (o editor de vnculos)
carga los diversos segmentos de cdigo traducido en la memoria y luego usa las tablas de cargador
anexas para vincularlos correctamente entre s introduciendo datos y direcciones de subprograma en
el cdigo segn se requiere. El resultado es el programa ejecutable final listo para usarse.

1.4.7

Interpretacin.

En cualquier Lenguaje de alto nivel en que se escriba un programa, ste debe ser traducido a
lenguaje mquina antes de que pueda ser ejecutado. Esta conversin de instrucciones de alto-nivel
a, instrucciones a nivel de mquina se hace por programas de software del sistema, denominados
compiladores e intrpretes. Estos programas especiales se denominan en general traductores.
El proceso de traduccin y su conversin en programa objeto, difiere segn que el programa sea
compilador o intrprete.

Compiladores.
Un compilador es un programa que traduce el programa fuente (conjunto de instrucciones de un
lenguaje de alto nivel, por ejemplo COBOL o Pascal) a programa objeto (instrucciones en lenguaje
mquina que la computadora pueda interpretar y ejecutar).
El compilador efecta slo la
traduccin, no ejecuta el programa. Una vez compilado el programa, el resultado en forma de
programa objeto ser directamente ejecutable.

Intrpretes
Los lenguajes de programacin adems de ser compilados pueden ser interpretados. Un intrprete
es un programa que procesa los programas escritos en un lenguaje de alto nivel, sin embargo, est
diseado de modo que no existe independencia entre la etapa de traduccin y la etapa de ejecucin.
Un. intrprete traduce cada instruccin o sentencia del programa escrito en un lenguaje L a
cdigo mquina e inmediatamente se ejecuta, y a continuacin se ejecuta la siguiente sentencia.
Ejemplos de intrpretes son las versiones de BASIC que se utilizan en la mayora de las
microcomputadoras bien en forma residente (en memoria ROM), bien en forma no residente (en
disco).
El intrprete est diseado para trabajar con la computadora en modo conversacional o interactivo,
en realidad se le dan rdenes al procesador a travs del intrprete con ayuda, por ejemplo de un
teclado y un programa denominado editor. El procesador ejecuta la orden una vez que sta es

Unidad I.

27

traducida, si no existe ningn error de sintaxis y se devuelve el control al programador con


indicacin de mensajes (errores de sintaxis, de ejecucin, etc.).
El intrprete no traduce todo el programa fuente en un solo paso, sino que ejecuta cada instruccin
del programa fuente antes de traducir y ejecutar la siguiente.
El intrprete se sita en memoria principal (RAM), junto con el programa del usuario. De este
modo el programa no se ejecutar directamente traducido a lenguaje mquina, sino a travs de la
interpretacin que se producir al ejecutarse el programa interpretador en una especie de traduccin
simultnea.

Comparacin entre intrpretes y compiladores


Los intrpretes y compiladores tienen ventajas e inconvenientes derivados de sus peculiares
caractersticas. La principal ventaja de los interpretes sobre los compiladores reside en que el
anlisis sintctico del programa, se puede ir realizando a medida que se introduce por teclado o bien
cuando se interpreta. El intrprete proporciona un error e incluso un mensaje de diagnstico que
indica la naturaleza del problema. El programador puede ir directamente al error y corregirlo; de
este modo los programas pueden ser comprobados y corregidos durante el desarrollo de los mismos.
Las restantes caractersticas a destacar que diferencian un intrprete de un compilador se resumen a
continuacin.
Los lenguajes compiladores presentan la ventaja considerable frente a los intrpretes de la velocidad
de ejecucin, por lo que su uso ser mejor en aquellos programas probados en los que no se esperan
cambios y que deban ejecutarse muchas veces. As mismo, en general, ocuparn menos memoria
en el caso de programas cortos ya que en el caso de interpretacin, el interpretador que tendr un
tamao considerable debe residir siempre en memoria.
Los lenguajes intrpretes encuentran su mayor ventaja en la interaccin con el usuario, al facilitar el
desarrollo y puesta a punto de programas, ya que los errores son fciles de detectar y sobre todo de
corregir. Por el contrario, como el intrprete no produce un programa objeto, debe realizar el
proceso de traduccin cada vez que se ejecuta un programa y por ello ser ms lento el intrprete.

En la actualidad los programadores suelen aprovechar con frecuencia las ventajas tanto de
intrpretes como de compiladores. En primer lugar desarrollan y depuran los programas utilizando
un intrprete interactivo (por ejemplo, MBASIC intrprete); despus compilan el programa
terminado a fin de obtener un programa objeto (por ejemplo, MBASIC compilador).

El intrprete ocupa un lugar central en la operacin de una computadora. Tpicamente el intrprete


ejecuta el algoritmo cclico del diagrama siguiente. Durante cada ciclo, el intrprete obtiene la
direccin de la instruccin siguiente del registro de direcciones de programa (e incrementa el valor
del registro para que sea la direccin de instruccin que sigue), toma la instruccin designada de la
memoria, decodifica la instruccin a un cdigo de operacin y un conjunto de designadores de
operando, toma los operandos designados (si es necesario) e invoca la operacin designada con los
operandos designados como argumentos. La operacin primitiva puede modificar datos de la
memoria o los registros, acceder a dispositivos de entrada/salida o cambiar el orden de ejecucin

Unidad I.

28

modificando el contenido del registro de direcciones de programa. Despus de la ejecucin de la


primitiva, el intrprete repite simplemente el ciclo anterior.

Tomar
prxima instruccin

Decodificar instruccin
(determinar los designadores
de opracin y operandos

Tomar operandos
designados

Saltar a operacin
designada

Ejecutar
Operacin
Primitiva 1

Ejecutar
Operacin
Primitiva 2

Ejecutar
Operacin
Primitiva k

Ejecutar
Operacin
de detener

Detener

Interpretacin y ejecucin e programas

Interpretacin y ejecucin de programas

Unidad I.

29

LENGUAJE

C++

HTML

VISUAL
BASIC

QUE ES?
Lenguaje de
programacin orientada
a objetos creado por
Bjarne Stroustrup
Lenguaje utilizado para
la creacin de pginas
web. HTML significa
hypertext mark-up
language, que significa,
lenguaje para el
formato de documentos
de hipertexto, es decir,
texto presentado de
forma estructurada y
agradable, con enlaces
(hyperlinks) que
conducen a otros
documentos o fuentes

Es un lenguaje de
programacin dirigido
por eventos,
desarrollado por el
alemn Alan Cooper
para Microsoft.

VENTAJAS

DESVENTAJAS

No es atractivo
Es potente en cuanto a lo que se
visualmente
refiere a creacin de sistemas
complejos un lenguaje muy
No soporta para creacin
robusto
de pginas web

IDE
DEV C++
BORLAND C
TURBO C

SISTEMA
OPERATIVO
Sirve para todos los
sistemas operativos
pero cada uno con
su respectiva versin
para dicho sistema

Lenguaje esttico.
Sencillo que permite describir
hipertexto.

La interpretacin de cada
navegador puede ser
diferente.

Notepad++
Eclipse

Archivos pequeos.
Lenguaje de fcil aprendizaje.
Lo admiten todos los
exploradores

Guarda muchas etiquetas Netbeans


que pueden convertirse en
basura y dificultan la
DreamWeaver
correccin.
Y muchos mas
Lento para ejecutar
archivos pesados

Las crticas hechas en las


Posee una curva de aprendizaje ediciones de visual Basic
muy rpida.
anteriores a vb.net son
variadas, se citan entre
ellas:Problema de
Integra el diseo e
implementacin de formularios versionado asociado con
varias libreras DLL,
de Windows.
conocido como DLL
HELL.
Permite usar con facilidad la
plataforma de los sistemas
Pobre soporte para
Windows, dado que tiene
acceso prcticamente total al api programacin orientada a
de Windows, incluidas libreras objetos
actuales.
Incapacidad para crear
Es uno de los lenguajes de uso aplicaciones multihilo, sin
tener que recurrir a
ms extendido, por lo que
llamadas del api de
resulta fcil encontrar
Windows.

Se pueden ver en
todos los sistemas
operativos, pero la
interpretacin vara
segn el navegador
que est utilizando.

Entorno de desarrollo
Existe un nico entorno de
desarrollo para visual Basic,
desarrollado por Microsoft:
Microsoft visual Basic x.0 para
Sirve para hacer
versiones desde la 1.0 hasta la
6.0, (con las diferencias entre las aplicaciones de
escritorio
versiones desde la 1.0 (MSDOS/Windows 3.1) hasta la 3.0
(16 bits, Windows 3.1/95) y las
de la 4.0 (16/32 bits, Windows
3.1/95/nt) hasta la 6.0 (32 bits,
Windows
9x/me/nt/2000/XP/2003 server).

informacin, documentacin y
fuentes para los proyectos.
Fcilmente extensible mediante
libreras DLL y componentes
ActiveX de otros lenguajes.

C#

XML

Declaraciones en el espacio de
nombres: al empezar a
programar algo, se puede definir Se tiene que conseguir una
Es un lenguaje de
una o ms clases dentro de un versin reciente de visual
programacin orientado.
mismo espacio de nombres.
studio .net, por otra parte
se tiene que tener algunos
A objetos desarrollado y
Tipos de datos: en c# existe un requerimientos mnimos
estandarizado por
rango ms amplio y definido de del sistema para poder
Microsoft como parte de
Visual Studio.NET
tipos de datos que los que se
trabajar adecuadamente
su plataforma net.
encuentran en c, c++ o java.
tales como contar con
Windows nt 4 o superior,
Los programadores le
Atributos: cada miembro de una tener alrededor de 4 gigas
consideran el primo
clase tiene un atributo de acceso de espacio libre para la
hermano de JAVA
pura instalacin, etc.
del tipo pblico, protegido,
interno, interno protegido y
privado.
Es un estndar.Crea sus
propias etiquetas
permitiendo la
definicin, transmisin,
Permite la estructuracin de la
validacin e
informacin
interpretacin de datos
entre aplicaciones y
Es la base de la nueva
entre organizaciones.
generacin de aplicaciones
webintercambio de datos
XML define datos
portables al igual que
Poder etiquetar los datos con su
java define cdigo
significado
portable
Lenguaje abierto,
estndar derivado de
SGML optimizando
para su uso en la web

Un lenguaje extendible

El mayor informe que las


aplicaciones XML. Es que
Visual Studio
el navegador o el
visualizador que el usuario
.NET
utilice no cuente con un
parcer capas de visualizar
Notepad++
el contenido del
documento

La plataforma .Net
Sirve para hacer
aplicaciones de
escritorio,
aplicaciones web y
mviles.
Sistema operativo
Windows

Todos los Sistemas


Operativos

JAVA

Se pueden realizar distintos


aplicativos, como son applets,
que son aplicaciones especiales,
Es un lenguaje orientado que se ejecutan dentro de un
a objetos, de una
navegador al ser cargada una
plataforma
pgina HTML en un servidor
independiente, fue
web, por lo general los applets
desarrollado por la
(Ya son historia) son programas
compaa SUN
pequeos y de propsitos
Microsystems ahora es especficos.
propietario ORACLE.
Eclipse
Puede desarrollar aplicaciones
Maneja algunas
de escritorio que se ejecutan en Esperar la actualizacin
plataformas de
forma independiente, es decir
siguiente para que sea ms Netbeans
desarrollo:
con la programacin java, se
rpido.
pueden realizar aplicaciones
Power buider
Java Platform, Standard como un procesador de
palabras, una hoja que sirva
Edition o Java SE
para clculos, una aplicacin
Java Platform Enterprise grfica, etc.
Edition o Java EE
Se puede realizar soluciones
empresariales en un entorno
Java Platform Micro
web
Edition o Java ME

Sirve para todos los


sistemas operativos
y si no es la versin
adecuada para dicho
sistema, la misma
aplicacin java se
encarga de
descargas o
actualizar versin
para un excelente
desempeo en el pc.
Algunos de los
sistemas operativos
ms destacados en
los que funciona la
aplicacin:
Unix, Linux,
Solaris,
Windows, mac.

Soporta el desarrollo de
aplicaciones mviles

PHP

Como es un lenguaje que


se interpreta en ejecucin,
para ciertos usos puede
Es un lenguaje multiplataforma.
PHP es un lenguaje de
resultar un inconveniente
Eclipse
programacin
que el cdigo fuente no
Orientado al desarrollo de
interpretado, diseado
pueda ser ocultado. La
Netbeans
aplicaciones web dinmicas con
originalmente para la
ofuscacin es una tcnica
acceso a informacin
creacin de pginas web
que puede dificultar la
almacenada en una base de
DreamWeaver
dinmicas
lectura del cdigo pero no
datos.
la impide y, en ciertos
casos, representa un costo
en tiempos de ejecucin.

Se usa
principalmente para
la interpretacin del
lado del servidor,
pginas web y CMS
Se usa en todos los
sistemas operativos

Otras Fuentes

Alejandro Morales Gmez, Manolo Aguado, Javier Mendoza, Victor Tejada Yau. (Diciembre de 1999).
Tipos de Lenguajes de Programacin. Febrero del ao 2000,
de Desarrollo apps Android Sitio web: http://www.desarrolloweb.com/articulos/2358.php

Unidad I.

34

You might also like