Está en la página 1de 15

Lenguajes de Programaci

on: Captulo 1. Introducci


on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Indice del captulo


Lenguajes de Programacion: Captulo 1.
Introduccion

Lenguajes de Programaci
on: Captulo 1. Introducci
on

1. El concepto de Lenguaje de Programaci


on
2. Criterios de dise
no

Carlos Ure
na Almagro
3. Paradigmas de Programaci
on
Dpt. Lenguajes y Sistemas Inform
aticos
ETSI Inform
atica y de Telecomunicaci
on
Universidad de Granada

Curso 2010-11

4. Antecedentes
5. Los primeros lenguajes de programaci
on

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 1/1.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 2/1.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

Indice de la seccion

El concepto de Lenguaje de Programacion

Seccion 1
El concepto de Lenguaje de Programaci
on

Un lenguaje de programaci
on es un convenio entre personas que
puede definirse as:
Conjunto de reglas o normas que permiten asociar a cada
programa correcto un calculo que sera llevado a cabo por
un ordenador (sin ambig
uedades).

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 3/59.

por tanto, un lenguaje de programaci


on es un convenio o
acuerdo acerca de como se debe de interpretar el significado
de los programas de dicho lenguaje

muchas veces se confunden los lenguajes con los compiladores,


interpretes o con los entornos de desarrollo de software
Autor: Carlos Ure
na. Fecha creaci
on: September 30, 2010. P
agina: 4/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

El concepto de Lenguaje de Programaci


on

Estandarizacion de los lenguajes


El convenio suele estar reflejado en un documento (un libro) que se
hace p
ublico y mediante el cual se determinan las reglas de
interpretacion correcta de los programas
I

algunos lenguajes estan definidos por un documento


estandarizado en un organismo oficial como ISO (p.ej. C++
es el estandard ISO/IEC 14882, de 1998 )

en otros casos la descripci


on del lenguaje no esta oficialmente
estandarizada, el lenguaje se define por el documento de
referencia que lo describe (pej. Java, descrito en este libro

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

que es un programa ?
En este contexto, un programa es una:
Secuencia finita de dgitos y caracteres, directamente
legible por las personas y por el ordenador

estas secuencias se suelen almacenar en uno o varios archivos


de texto ASCII o UNICODE.

tambien es posible almacenar programas en formatos


alternativos de archivos, como XML u otros, aunque en stos
casos los archivos no son directamente legibles por las
personas, s son legibles mediante herramientas de traducci
on.

http://java.sun.com/docs/books/jls/ )

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 5/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

Cada lenguaje tiene asociado un conjunto (que debe estar bien


definido en el lenguaje) de programas correctos.

Las reglas de cada lenguaje deben definir ese conjunto sin


ambig
uedades.
Para esto se suelen usar metodos mas o menos formales. La
validez de un programa se define a varios niveles con tecnicas
distintas:
I
I
I

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

que es un programa correcto ?

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 6/59.

lexico : expresiones regulares


sintaxis : gramaticas libres de contexto
semantica : descripciones o reglas no formales

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 7/59.

que es un calculo ?
Es necesario definir adecuadamente que se entiende por calculo,
podemos verlo desde dos perspectivas:
I

en sentido amplio:
Cualquier proceso automatico de recogida,
manipulaci
on, y difusi
on de informaci
on

en sentido formal:
Cualquier proceso automatico cuyos aspectos
relevantes puedan ser modelados matematicamente
con una maquina de turing

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 8/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

que es el significado de un programa ?

que es el significado de un programa ?

Al calculo asociado por un lenguaje a un programa correcto se le


considera el significado del programa.

Ejemplo de significado: consideremos este programa


1

a las metodologas para especificar el significado de los


programas se les llama semantica de los lenguajes de
programaci
on.
las reglas de cada lenguaje deben permitir establecer el
significado sin ambig
uedad alguna, de forma clara y concisa

2
3
4
5
6
7
8
9
10
11

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 9/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

que es el significado de un programa ?


El significado del anterior programa es el calculo necesario para
evaluar una determinada funci
on f .
I

La funcion f es la que asocia, a una secuencia de n


umeros
enteros, otra secuencia que contiene el factorial de cada uno
de ellos.
f

N
N
(a1 , . . . , an ) f (a1 , . . . , an ) = (a1 !, . . . , an !)

Existen varias aproximaciones a la semantica de los lenguajes


de programaci
on.

Lo que hemos visto se denomina semantica denotacional (un


programa denota una funci
on)
Autor: Carlos Ure
na. Fecha creaci
on: September 30, 2010. P
agina: 11/59.

int fact ( int n)


{
i f ( n>0) r e t u r n n f a c t ( n1) ;
else
return 1 ;
}
i n t main ( )
{
int n ;
w h i l e ( c i n >> n )
c o u t << f a c t ( n ) ;
}

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 10/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

El lenguaje como una funcion que asigna significado

Programas
posibles
Programas
correctos

Lenguajede
programacin

P1
P2

Significados
posibles

C1
C2

C1 = f (P1 )
C2 = f (P2 )

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 12/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

El concepto de Lenguaje de Programaci


on

El concepto de Lenguaje de Programaci


on

Programas equivalenes

Ambiguedad en los programas

Distintos programas pueden tener el mismo significado (seran


equivalentes)

Lenguaje
deprogramacin

Programas
correctos

Los lenguajes deben ser no ambiguos:

Clculos
posibles

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 13/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

para que sirven los lenguajes de programacion ?


Esencialmente:
para comunicar a un ordenador un procesamiento que va
a llevarse a cabo en dicho dispositivo (de forma c
omoda
para la persona que escribe el programa).

En cuanto a la correcci
on: debe ser posible calcular si un
programa es correcto o no

En cuanto al significado: el significado de un programa debe


ser u
nico.

Un ejemplo de ambiguedad es la siguiente expresion de C/C++


1
2

C = f (A) = f (B)

int a = 3 ;
c o u t << ((++a ) + ( a =2)) ;

// 4+8 o 7+6

Seg
un el estandard, puede denotar dos calculos distintos: se puede
imprimir 12 o 13 como salida.
Autor: Carlos Ure
na. Fecha creaci
on: September 30, 2010. P
agina: 14/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
El concepto de Lenguaje de Programaci
on

como deben ser los lenguajes de programacion ?


Como toda actividad de dise
no en ingeniera, un lenguaje de
programaci
on debe ser dise
nado siguiendo unos principios basicos.

Pero tambien:
para comunicar entre personas informaci
on no ambigua
sobre algoritmos matematicos o procesos reales

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 15/59.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 16/59.




Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Indice de la seccion

Criterios de diseno de LL.PP.

Seccion 2
Criterios de dise
no

A continuaci
on se incluyen una serie de caractersticas deseables de
los lenguajes de programaci
on:
I

Casi siempre, lograr una de ellas nos acerca a otras


caractersticas relacionadas, pero inevitablemente tambien nos
aleja de otras caractersticas contrapuestas a la primera.

Cada dise
no de un lenguaje supone un compromiso o
equilibrio entre las caractersticas deseables.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 17/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 18/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Facilidad de lectura y escritura


Facilidad de escritura (writability)
Facilidad para expresar un calculo de forma clara,
correcta, concisa, y rapida. (es una caracterstica muy
generica, que se concreta en otras)

Generalidad y Ortogonalidad
Generalidad
Las caractersticas o construcciones del lenguaje deben
ser aplicables uniformemente y con la mnimas
restricciones en todos los contextos posibles.
Ortogonalidad (independencia)

Legibilidad
El dise
no del lenguaje debe permitir que la lectura de los
programas lleve facilmente a una compresi
on correcta del
calculo que significan.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 19/59.

Las diferentes caractersticas deben ser lo mas


independientes posible entre ellas, en el sentido de que el
uso de una no debe modificar, limitar o impedir el uso
simultaneo o combinado de otra.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 20/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Uniformidad y Simplicidad
Uniformidad

Expresividad y fiabilidad
Expresividad

Caractersticas parecidas deberan tener apariencias


parecidas.
Caractersticas distintas no deberan tener la misma
apariencia
Simplicidad
El numero de caractersticas o posibilidades distintas o
independientes debera ser el mnimo posible. No debera
haber caractersticas distintas pero muy parecidas.

El lenguaje es expresivo cuando permite expresar con


facilidad procesos o estructuras complejos.
Fiabilidad
El lenguaje debe hacer facil la construcci
on de programas
fiables, y debe impedir o dificultad la construcci
on de
programas no fiables.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 22/59.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 21/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Criterios de dise
no

Definicion correcta y portabilidad


Defincion precisa y clara
Como ya se ha comentado, la correctitud y el significado
de todo programa deben estar definidos sin
ambig
uedades, y ademas, estas definiciones deben
facilmente legibles y comprensibles.
Independencia de la maquina y el S.O.
En general, el lenguaje debe permitir la construcci
on con
la maxima facilidad posible de programas usables en
arquitecturas hardware y SS.OO. distintas con un mnimo
de cambios.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 23/59.

Eficiencia
Eficiencia en la traducci
on
El dise
no del lenguaje debe permitir facilmente la
construcci
on de traductores e interpretes que sean
eficientes en uso de tiempo y memoria
Eficiencia de ejecuci
on
El dise
no del lenguaje no debe dar lugar a que la
interpretaci
on o ejecuci
on de los programas traducidos
conlleve un alto gasto en tiempo o memoria.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 24/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on

Indice de la seccion

Paradigmas de Programacion

Seccion 3
Paradigmas de Programaci
on
3.1. Lenguajes Imperativos
3.2. Lenguajes Funcionales
3.3. Lenguajes Declarativos

Constituyen tres categoras de los lenguajes de programaci


on:
I

Imperativos

Funcionales (o aplicativos)

L
ogicos (o declarativos)

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 25/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 26/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on
Lenguajes Imperativos

que es un paradigma de programacion ?


I

Cada uno de estos paradigmas se caracteriza por un modelo


formal distinto de lo que constituye un calculo.

El conjunto de calculos realizables es igual en los tres casos


(los que se pueden hacer con maquinas de turing)

Lenguajes Imperativos
Un calculo es un conjunto de instrucciones que establecen
explcitamente como se debe manipular la informaci
on digital
presente en memoria, y/o como se debe recoger o enviar
informaci
on desde/hacia los dispositivos
Ejemplos:

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 27/59.

Ejemplos de lenguajes imperativos: Fortran, Algol, Pascal, C,


Ada, C++, Java, C#

La mayora de los lenguajes usados para desarrollo de software


comercial son imperativos

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 28/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Paradigmas de Programaci
on

Paradigmas de Programaci
on

Lenguajes Imperativos

Lenguajes Imperativos

Ejemplo en C (1/2)

1
2
3
4
5
6
7
8
9
10
11
12
13

Ejemplo en C (2/2)


i n t mcd ( i n t x , i n t y )
{
i f ( x == 0 && y == 0 )
{ printf ( error ! ); exit (1);
}
i f ( x < 0 ) x = x ;
i f ( y < 0 ) y = y ;
w h i l e ( y != 0 )
{ int r = x % y ;
x = y ; y = r ;
}
return x ;
}


1
2
3
4

i n t main ( )
{
p r i n t f (%d\n , mcd ( 1 0 , 1 0 2 ) ) ;
}

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 29/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 30/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on

Lenguajes Funcionales

Lenguajes Funcionales

Lenguajes Funcionales (o aplicativos)

Los programas en los Lenguajes Funcionales

Un calculo es el proceso de aplicar una funci


on recursiva a un valor
de su dominio para obtener el correspondiente valor del rango (el
resultado).

Un programa en estos lenguajes consiste en una especificaci


on de
la funci
on recursiva que queremos calcular, junto con los
argumentos sobre los que se aplica.

El termino funci
on recursiva debe entenderse aqu seg
un se
introduce en la teora de la computabilidad, es decir, como una
funcion calculable con una maquina de turing (no como un
subprograma que se invoca a si mismo)

Normalmente, dicha funci


on estara especificada en terminos de
otras, que tambien se incluyen en el programa

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 31/59.

Ejemplos:
I

Ejemplos de lenguajes funcionales son: Lisp, Scheme, ML,


Miranda, Haskell

Menos difundidos que los imperativos para el desarrollo de


software comercial

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 32/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Paradigmas de Programaci
on

Paradigmas de Programaci
on

Lenguajes Funcionales

Lenguajes Declarativos

Ejemplo de programa en Haskell


En este lenguaje, el maximo com
un divisor se calcula con la
funcion mcd


1
2
3
4
5

mcd 0 0
mcd x y
where
mcd1
mcd1

Lenguajes Declarativos (logicos


Un calculo es el proceso de encontrar que elementos de un dominio
cumplen determinada relaci
on definida sobre dicho dominio, o bien
determinar si un determinado elemento cumple o no dicha relaci
on.

= e r r o r mcd no e s t a d e f i n i d o p a r a 0 , 0
= mcd1 ( abs x ) ( abs y )
x 0 = x
x y = mcd1 y ( r e s t o x y )

6
7

mcd 10 1 0 2 ;

Un programa en estos lenguajes consiste en una especificaci


on
de la relaci
on que queremos calcular

Normalmente, dicha relaci


on estara especificada en terminos
de otras, que tambien se incluyen en el programa

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 33/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 34/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Paradigmas de Programaci
on

Lenguajes Declarativos

Lenguajes Declarativos

El lenguaje Prolog

Ejemplo de programa en Prolog

El lenguaje declarativo por excelencia es Prolog


I

Ejecutar un programa consiste en buscar recursivamente en


una base de datos de relaciones
Prolog esta especialmente indicado para aplicaciones muy
especficas como:
I
I
I
I

sistemas expertos
demostracion de teoremas
consulta de bases de datos relaccionales,
procesamiento del lenguaje natural

En este caso, mcd es una relacci


on entre tres valores enteros (se
cumple si el tercero es el m.c.d. de los dos primeros)


1
2
3
4
5
6

mcd1 ( x , y , r ) : y i s 0 , r i s x
mcd1 ( x , y , r ) : nx i s y , r e s t o ( x , y , ny ) ,
mcd1 ( nx , ny , r )
mcd ( x , y , r ) : a b s ( x , ax ) , a b s ( y , ay ) ,
mcd1 ( ax , ay , r )
? mcd ( 1 0 , 1 0 2 , z ) .

Para estos casos, los programas en prolog son mas cortos y


claros que los equivalentes en otros paradigmas

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 35/59.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 36/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Paradigmas de Programaci
on

Paradigmas de Programaci
on

Lenguajes Declarativos

Lenguajes Declarativos

Los paradigmas de prog. en la asignatura.


I

Esta asignatura se centra en el paradigma de programaci


on
imperativa, con algunas menciones a caractersticas de
lenguajes funcionales

No trataremos aspectos de programaci


on declarativa

Puntos en comun entre paradigmas.


I

Algunos conceptos de los lenguajes de programaci


on son
comunes a la programaci
on imperativa y la funcional

Algunos de los conceptos surgidos en la programaci


on
imperativa se han incorporado a los lenguajes funcionales (y
viceversa)

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 37/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Antecedentes

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 38/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Antecedentes

Indice de la seccion

Antecedentes

Seccion 4
Antecedentes
4.1. Plankalk
ul
4.2. Shortcode
4.3. A-0

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 39/59.

Los primeros lenguajes de programaci


on surgen debido a las
dificultades de la programaci
on directa en c
odigo maquina o
con ensambladores basicos.

Revisaremos tres de los primeras construcciones que pueden


llamarse lenguajes de programaci
on

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 40/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Antecedentes

Antecedentes

Plankalk
ul

Plankalk
ul

El lenguaje Plankalkul
Puede considerarse el primer lenguaje especficamente dise
nado
para la programaci
on de ordenadores.

Conceptos que introduce


Introduce varios de los conceptos basicos de la programaci
on de
alto nivel:

Dise
nado por Konrad Zuse en Alemania, entre 1943 y 1945.
Inicialmente pensado para sus ordenadores Z1, Z2, que fueron
de los primeros de la historia.

Variables: sin declaraci


on explcita, con nombres de una letra
(R,V o Z) seguida de un dgito.

Expresiones con operadores infijos

No se pudo implementar un compilador o interprete para los Z


por los problemas de la postguerra alemana.

Sentencia de asignaci
on de una expresi
on a una variable

Ejecuci
on condicional de sentencias (if sin else)

No se public
o hasta 1972, y el primer (y u
nico) interprete se
implement
o en 2000.

Bucles indefinidos (mediante sentencias equivalentes a


continue o break, no con una expresi
on l
ogica)

Subprogramas que producen un resultado

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 41/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Antecedentes

Shortcode

Conceptos que introduce: tipos de datos

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Antecedentes

Plankalk
ul

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 42/59.

Tipos de datos definidos por el usuarios (con declaraci


on
explcita de la representaci
on como secuencias de bits),
tambien llamados estructuras
Tipos de datos (estructuras) predefinidos: enteros, enteros en
BCD, reales, n
umeros complejos, n
umeros racionales (con y
sin signo)
Pares, arrays y listas (con elementos de tipo arbitrario),
implementados usando arboles binarios.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 43/59.

El lenguaje Shortcode
Es el lenguaje usado por el primer programa interprete conocido..
I

Desarrollado en EE.UU por John Mauchly en 1949, fue usado


en el UNIVAC I.

El ordenador UNIVC I tena una longitud de palabra de 72


bits. Las instrucciones de asignaci
on con expresiones
complejas se codifican en dichas palabras de 72 bits.

Se buscaba la facilidad de programaci


on a cambio de perder
eficiencia en tiempo (ya que se interpretaba)

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 44/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Antecedentes

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on

A-0

El lenguaje A-0

Indice de la seccion

Dise
nado e implementado por Grace Hopper entre 1951 y 1953
para la compa
na UNIVAC, se dise
no para el primer compilador
(que generaba c
odigo maquina a partir de especificaciones de mas
alto nivel en A-0)
I

La entrada del compilador es un programa con llamadas a


subrutinas:
I
I

Secci
on 5
Los primeros lenguajes de programaci
on
5.1. Fortran
5.2. Algol
5.3. Simula

Las subrutinas se identifican por nombres


Podan incluir lecturas o escrituras sobre parametros formales.

La salida es c
odigo maquina con las subrutinas expandidas en
el lugar de las llamadas, y con las referencias a los parametros
particularizadas a los actuales

Esto se haca antes manualmente, con muy alta probabilidad


de errores.
Autor: Carlos Ure
na. Fecha creaci
on: September 30, 2010. P
agina: 45/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 46/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Los primeros lenguajes de programaci


on

Los primeros lenguajes de programaci


on

Lenguajes pioneros

El lenguaje Fortran

Fortran

Existen multitud de lenguajes, y la mayora se han dise


nado
incorporando nuevos conceptos

En los primeros lenguajes casi todos los conceptos eran nuevos


Seleccionamos tres por la relevancia a largo plazo de los
conceptos que introdujeron:

I
I
I

Fortran: introduce la programaci


on de alto nivel
Algol: Introduce la programaci
on estructurada
Simula: Introduce la programaci
on orientada a objetos

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 47/59.

Es el primer lenguaje de alto nivel con amplia difusi


on y amplia
disponibilidad de compiladores. La motivaci
on de su dise
no fue
sustituir la programaci
on en ensamblador.
I

Dise
nado e implementado por primera vez entre 1955 y 1957
en IBM, para el IBM 704.

Ha tenido una amplsima difusi


on y uso

Durante muchos a
nos se ha considerado el lenguaje por
excelencia para aplicaciones cientficas, ha tenido muchas
ampliaciones.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 48/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on

Fortran

Fortran

Conceptos introducidos en Fortran


I

Ejemplo de programa en Fortran


Calcula el producto y la suma de los elem. de un array, e imprime
0 (producto suma), o 1 (producto > suma) :

Variables cuyo nombre seria de hasta 6 caracteres (2


inicialmente). El nombre determina implcitamente el tipo,
que solo poda ser entero o de coma flotante.


1

Sentencia de asignaci
on con expresiones infijas a la derecha
(incluyendo sub-expresiones entre parentesis.

Vectores o arrays uni o bi-dimensionales.

Sentencias IF-GOTO con expresiones aritmeticas, incluyendo


operadores aritmeticos relacionales

Sentencia DO (bucles definidos).

Subrutinas definidas por el usuario (sin compilaci


on separada)

Entrada y de salida con formato.

8
9
10
11

100
200
250
300
500


Autor: Carlos Ure
na. Fecha creaci
on: September 30, 2010. P
agina: 50/59.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 49/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on

Algol

Algol

El lenguaje Algol

Conceptos introducidos en Algol

Es el lenguaje que introduce lo que hoy conocemos como


programacion estructurada. La motivaci
on inicial era mejorar
algunas limitaciones de Fortran.

Declaraci
on explcita de variables y parametros, incluyendo su
tipo.

Arrays multidimensionales, con posibilidad de fijar el rango de


ndices.

Agrupaci
on de sentencias en sentencias compuestas
delimitadas por las palabras clave begin-end (estructura de
bloques).

Definido por un comite internacional en varias reuniones entre


1958 y 1962.

Es el primer lenguajes descrito formalmente por BNFs

No fue apoyado por IBM, y se difundi


o poco, aunque se uso
mucho para comunicar algoritmos

Sentencia if-else, bucles definidos e indefinidos con posibilidad


de anidamiento arbitrario.

Tuvo un impacto enorme en posteriores lenguajes: Pascal,


Modula, Ada, C, Simula

Variables de ambito restringido a los bloques.

Paso de parametros por valor y por nombre

Procedimientos recursivos.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 51/59.

DIMENSION A( 1 0 )
ISUM = 0
IPROD = 1
DO 100 I =1 ,10
ISUM = ISUM + A( I )
IPROD = IPROD A( I )
IF ( IPRODISUM ) 2 0 0 , 2 0 0 , 3 0 0
PRINT 0
GOTO 500
PRINT 1

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 52/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Los primeros lenguajes de programaci


on

Los primeros lenguajes de programaci


on

Algol

Algol

Ejemplo de (sub)programa en Algol (1/2)

Ejemplo de (sub)programa en Algol (2/2)




Subprograma de nombre ejemplo que acepta dos parametros


enteros:


1

procedure ejemplo (a , b ) ;

6
7

begin
integer k ;
real
e ;
....

6
7
8
9

value
a, b ;
integer a , b ;

2
3

....
f o r k := a /2 s t e p 2 u n t i l b do
begin
e := i f e s p r i m o ( k ) then 0 e l s e 1 ;
i f e == 0 then
p u t l i s t ( k , e s primo )
else
p u t l i s t ( k , no e s primo )
end

8
9
10

end

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 53/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on

Simula

El lenguaje Simula

Conceptos introducidos en Simula

Es el lenguaje que introduce los conceptos esenciales de la


programacion orientada a objetos.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on

Simula

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 54/59.

Basado en Algol para todos los aspectos de la programaci


on
estructurada.
Su dise
no fue motivado por la necesidad de crear software de
simulaci
on.
Fue dise
nado e implementado en el Centro de Computaci
on
Noruego de Oslo entre 1962 y 64, por Kristen Nygaard y
Ole-Johan Dahl.
No se ha usado mucho para software comercial, s para
comunicar algoritmos.
Influencia decisiva en lenguajes OO: Smalltalk, Eiffel, C++,
Java.
Autor: Carlos Ure
na. Fecha creaci
on: September 30, 2010. P
agina: 55/59.

Definici
on de clases como variables de instancia mas metodos
para acceder a ellas

Los objetos como variables instancias de una clase

Herencia o extensi
on de clases.

Metodos virtuales (polimorfismo de herencia).

Corutinas (es un concepto de la programaci


on concurrente)

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 56/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.

Los primeros lenguajes de programaci


on

Los primeros lenguajes de programaci


on

Simula

Simula

Ejemplo de programa en Simula (1)

Ejemplo de programa en Simula (2)




Clase de nombre rectangulo con dos atributos reales (ancho y


alto) y un metodo que devuelve un valor l
ogico (escuadrado).


1
2

begin
f i g u r a c l a s s R e c t a n g u l o ( ancho , a l t o ) ;
real

7
8
9
10

8
9
10

end o f R e c t a n g u l o ;
....

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 57/59.

Lenguajes de Programaci
on: Captulo 1. Introducci
on.
Los primeros lenguajes de programaci
on
Simula

fin del captulo.

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 59/59.

i f ( r . e s C u a d r a d o ) then
begin
OutText ( e s un c u a d r a d o ) ;
OutImage ;
end

ancho , a l t o ;

boolean procedure e s C u a d r a d o ;
e s C u a d r a d o := ancho=a l t o ;

ref ( rectangulo ) r ;
r : new r e c t a n g u l o ( 2 . 0 , 2 . 0 ) ;

5
6

3
4

....

11
12

end o f program

Autor: Carlos Ure


na. Fecha creaci
on: September 30, 2010. P
agina: 58/59.