Está en la página 1de 31

Fundamentos de Lenguajes

de Programación
Historia de los Lenguajes de
Programación(1)
 Charles Babbage fue un
matemático que se dedicó a la
docencia e investigación en la U. de
Cambridge, Inglaterra

 Diseñó la Máquina Analítica en


1833.

 Este sería el primer computador de


uso general, pero no se pudo
construir hasta 100 años más tarde.
Historia (2)
 La máquina analítica
funcionaría con tarjetas
o cintas perforadas.

 Babbage tomó la idea


de Joseph Jackard que
las inventó para los
telares.

 Babbage no pudo
concretar su proyecto
por diversos motivos.
Historia (3)

 La Máquina Analítica consideraba 5 unidades


básicas:
– Unidad de Entrada: para introducir datos e
instrucciones;
– Memoria: donde se almacenaban datos y
resultados intermedios
– Unidad de control: para regular la secuencia de
ejecución de las operaciones
– Unidad Aritmético-Lógica: que efectúa las
operaciones
– Unidad de Salida: encargada de comunicar al
exterior los resultados.
Historia (4)
 Ada Lovelace fue la primera
persona en escribir un programa
para la Máquina Analítica.

 Su primer programa describía los


pasos para calcular los números de
Bernoulli.

 Previó la capacidad de las


computadoras para ir más allá de
los simples cálculos de números.
 Más información
http://es.wikipedia.org/wiki/Ada_Lovelace#Programas
Historia (5)
 Las primeras
computadoras con
programas
almacenados y con
un procesador
central que ejecutaba
instrucciones dadas
por un programador
fueron construidas en
los años 40 por un
equipo dirigido por
John von Neumann ENIAC
Qué es un Lenguaje de
Programación

 Sistema de escritura para la


descripción precisa de algoritmos o
programas informáticos
 Es el medio a través del cual le damos
instrucciones a un computador
Tipos de Lenguajes

– Lenguaje de Alto Nivel


– Lenguaje ensamblador
– Lenguaje de Máquina

Computador
Aplicaciones de los LP

 Aplicaciones Científicas
 Aplicaciones Comerciales

 Inteligencia Artificial

 Programación de Sistemas

 Lenguajes para Scripting

 Lenguajes de propósito especial


Paradigmas de Programación
 Es una forma de representar y
manipular el conocimiento.
 Representa un enfoque particular
para la construcción del SW.
 Un lenguaje de programación
específico soporta los elementos de
un determinado paradigma.
Los principales paradigmas
de Programación
 Programación Imperativa
 Programación Funcional Programación
declarativa
 Programación Lógica
 Programación Orientada al Objeto

Otros:
 Programación Dirigida por Eventos
Programación Imperativa
 Se basa en el modelo de Von Neumman.
 Una instrucción tras otra en forma secuencial.
 Se opera sobre datos almacenados en variables.
 Un programa imperativo parte de valores
almacenados en variables, los transforma y el
resultado se deja en las mismas u otras
variables.
 Ej: C, Pascal, Fortran

Indica a la computadora cómo resolver


un problema
Programación Funcional
 Al ser declarativo no dice cómo resolver un
problema sino qué es lo que se desea resolver.
 Los programas escritos en un lenguaje funcional
están constituidos únicamente por definiciones de
funciones matemáticas.
 No existen las asignaciones a variables
 No existen construcciones estructuradas como la
secuencia o la iteración.
 La repetición se lleva a cabo por medio de
funciones recursivas.
 Ej: LISP, ML, Caml
Programación
Funcional

Puro: Híbrido:
- Menos dogmático (permite
-Dogmático asignación a variables e
-Potencia expresiva instrucciones secuenciales)
- Menos potencia expresiva
-Transparencia referencial - Transparencia referencial
no se cumple siempre.
Programación Lógica
 Se trabaja de forma descriptiva, estableciendo
relaciones entre entidades, indicando no cómo
hacerlo, sino qué hacer.
 La idea esencial de la programación lógica es:
algoritmos = lógica + control.
 Un algoritmo se construye especificando
conocimiento en un lenguaje formal (lógica de
primer orden), y el problema se resuelve
mediante un mecanismo de inferencia (control)
que actúa sobre aquél.
 Está basado en el cálculo de predicados de primer
orden.
 Ej: Prolog (clásico de la Inteligencia Artificial)
Programación Orientada a Objetos
 Extensión de los lenguajes imperativos.
 Se basa en el concepto de Clases y
Objetos.
 Una clase tiene atributos y métodos que
permiten accesar dichos atributos.
 Un objeto es una instancia de una clase.
 Ej: C++, JAVA, C#
 Permite abordar aplicaciones de mayor
envergadura.
 Los programas son más fáciles de
escribir, mantener y reutilizar.
Programación Dirigida por Eventos
 La estructura y la ejecución de los
programas están determinados por
los sucesos que ocurran en el
programa durante su ejecución.
 Es el usuario el que dirige el flujo de
ejecución del programa.
 Ej: Visual Basic, Visual C
Evolución
Fortran- 1958
 Lenguaje “FORmula TRANslation” (Diseñado por Johan
Backus en IBM)

 Primer LP de alto nivel desarrollado para el IBM 704.

 LLega a ser ampliamente usado.

 Todavía se usa en Aplicaciones Científicas y de la Ingeniería.

 El código es muy rápido


- No tiene habilidad para el manejo de strings
- No tiene manejo de memoria dinámica

 Más reciente versión: Fortran 90.


IMPLICIT INTEGER (A-Z)
DIMENSION ORD(N),POPLST(2,20)
INTEGER X,XX,Z,ZZ,Y
INTEGER A(N)
NDEEP=0
U1=N
L1=1
DO 1 I=1,N
1 ORD(I)=I
2 IF (U1.LE.L1) RETURN
3 L=L1
U=U1
4 P=L
Q=U
X=A(ORD(P))
Z=A(ORD(Q))
IF (X.LE.Z) GO TO 5 ….
5
Lisp- 1959
 Lenguaje “LISt Processing” (Diseñado en el MIT por John
McCarthy)

 La investigación en I.A. necesitaba un lenguaje que:


1. Procesará listas de datos (en vez de arrays)
2. Computación Simbólica (en vez de numérica)

 Solamente posee 2 tipos de datos: átomos y listas

 Control está dado vía recursión y expresiones


condicionales

 Todavía usado en el contexto de I.A.

 COMMON LISP es el más reciente standard


Ejemplo de Lisp

==>(define lado 4) ==>(define (areacuad lado) (* lado


lado lado))
==>lado areacuad
4
==>(areacuad 5)
==>(define area (* lado lado))
area 25
==>area
16
Cobol- 1960
 Diseñado por un comité formado por el departamento de
defensa de U.S.A. como un lenguaje para negocios común.

 Permite largos nombres de variables y guiones entre partes de


un nombre.

 Permite fácil I/O.

 No permitía subprogramas/funciones con parámetros.

 Todavía usado principalmente para aplicaciones comerciales.


* IDENTIFICATION DIVISION
ENVIRONMENT DIVISION.
* CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-4381.
OBJECT-COMPUTER. IBM-4381.
DATA DIVISION.
* WORKING-STORAGE SECTION.
* 01 INPUT-FIELD.
05 INPUT-VALUE PIC 99 VALUE ZERO.
01 CALCULATION-FIELD.
05 SUM-VALUE PIC 9(03) VALUE ZERO.
05 AVERAGE-VALUE PIC 9(03)V99 VALUE ZERO.
01 OUTPUT-FIELD.
05 EDIT-FIELD PIC ZZ9.99 VALUE ZERO.
PROCEDURE DIVISION.
* 1000-MAIN.
PERFORM 2000-INPUT-ADD 10 TIMES.
Prolog-1972
 Desarrollado en la Universidad de Aix-Marseille, por
Comerauer y Roussel, con ayuda de Kowalski en la U de
Edinburgh.

 Basado en lógica formal.

 No-procedural.

 Puede ser pensado como un sistema de base de datos inteligente


que usa un proceso de inferencia lógica para obtener el valor de
verdad de una consulta dada.
Ejemplo de Prolog

Hechos: Consultas:
padre(juan,amanda)
?- padre(X,juan)
madre(ximena,amanda)
padre(andres,juan)
padre(patricio,bonifacio) Reglas:
padre(juan,patricio)
¿Quién es abuelo?
padre(juan,ana)
madre(ximena,ana) abuelo(X,Y):-padre(X,Z),padre(Z,Y)

madre(laura,juan) abuelo(X,Y):-padre(X,Z),madre(Z,Y)
Traductores
 Compiladores

 Intérpretes
Compilador
 Recibecomo entrada un programa
fuente, lo traduce y obtiene como
resultado un programa objeto.

Programa Programa
Fuente Compilador Objeto
(Leng. Alto (Leng. Maq)
Nivel)
Etapas en la compilación
Programa
Análisis Léxico
Fuente

Análisis Tabla de
Sintáctico símbolos

Análisis
Semántico Código Objeto de
otras Compilaciones

Generación de Código Vinculación Código


Código (linking) Ejecutable
Objeto
Intérprete
 Va traduciendo las instrucciones y
ejecutándolas, línea a línea.
 No genera un archivo con el código
objeto.
 Hay instrucciones que se traducen
varias veces como las que están
dentro de una iteración.
Comparación
Compilador Intérprete

Realiza una ejecución más Ejecución deficiente por tener


eficiente que repetir, tal vez muchas
veces la misma traducción.
Una vez generado el programa Siempre se requiere del
ejecutable ya no se necesita el intérprete para producir la
compilador ejecución del programa
Más complejos de construir Más simple de construir

La detección y corrección de Más simple de corregir y


errores en el programa fuente detectar errores
es complicado

También podría gustarte