Sunteți pe pagina 1din 40

Visión General de los

Lenguajes de programación

Prof. Dr. Dennis Barrios Aranibar


dennisbarrios@gmail.com
Concepto de Lenguaje de
Programación
Según Kenneth Louden:
Generalmente se dice que es  “Una notación para comunicarle a 
la computadora que es lo que queremos que ella haga”.
Sin embargo una mejor definición es que “Un lenguaje de 
programación es un sistema notacional para describir 
computación en una forma legible tanto por computadoras 
cuanto por humanos”. 
Computación?:
Cualquier proceso que puede ser realizado por una 
computadora
Legible por la computadora?
Lenguaje con una estructura lo suficientemente simple para 
permitir una traducción eficiente (Lenguajes Libres del Contexto)
Historia de Los Lenguajes de
Programación

§ Los primeros lenguajes de programación


aparecieron en la década de 1950.
§ Ada, C, Pascal, Prolog y Smalltalk datan de
los años 70. C++ y ML datan de los años 80.
§ Los Lenguajes Visuales datan de los 90 en
adelante. En la actualidad existen más de
700 a más lenguajes de programación.
Pioneros de la Programación

Charles Babbage: Inventó la Máquina analítica.

Ada Augusta Lovelace, es considerada la


primera programadora que entendió la
máquina analítica de Charles Babbage.

Konrad Zuse: Diseñó Plankalkül


Esta notación nunca fue implementada, tiene
características que pueden ser encontradas en
muchos lenguajes de programación
Clasificación de los LP

Lenguajes

Naturales De Programación

De Máquina Simbólicos

Bajo nivel Alto Nivel


• Imperativos
• Funcionales
• Lógicos
• OO
Clasificacion según su generalidad de
uso

Lenguajes de Programación de propósito


general
La mayoría de los lenguajes están en esta
categoría
Lenguajes de programación especializada
Lenguajes de bases de datos
Clasificación según su complicación,
abstracción y nivel

Lenguajes de bajo nivel: lenguajes de máquina


y lenguajes Assembler
Lenguajes de alto nivel (mayoría)
Lenguajes de muy alto nivel (Prolog es algunas
veces listado en esta categoría, y algunos
lenguajes especializados)
Clasificación por área de aplicación

Aplicaciones Científicas
Primeros computadores digitales aparecieron en 1940
Características: Alta tasa de cálculos aritméticos de punto
flotante
Primer lenguaje exitoso de alto nivel: Fortran
Aplicaciones de Negocio
Comenzó en 1950
Características: facilidades de generar reportes, maneras
precisas de describir y almacenar números decimales y
caracteres, y la capacidad de especificar operaciones
aritméticas
Primer lenguaje exitoso de alto nivel: COBOL (1960)
Clasificación por área de aplicación

Inteligencia Artificial
Características: cálculo simbólico en vez de
numérico
Primer lenguaje exitoso de alto nivel: LISP
(1965)
Programación de Sistemas
Características: ejecución continua y eficiente
UNIX es escrito casi por completo en C
Clasificación por área de aplicación

Lenguaje de Scripting
Lista de comandos, que son llamadas a
subprogramas del sistema para realizar
funciones, tales como gestión de archivos
Procesamiento de texto:
● Perl
● Python
● Ruby ..

Programación Web
● JavaScript
● PHP
● Ruby …
Fundamentos de los lenguajes de
Programación
La distinción entre estático y dinámico
El alcance de una declaración de x es la región del
programa en la que los usos de x se refieren a ésta
declaración
Alcance estático ó léxico
static en Java
Habilidad del compilador para determinar la ubicación de
memoria en la que puede encontrarse la variable.
public static int x;
Alcance dinámico. En tiempo de ejecución
Cada objeto de la clase tendría su propia ubicación en la
que se guardará x, y el compilador determinará esos
lugares en tiempo de ejecución
…Fundamentos de los lenguajes de
Programación

Entornos y estados
Un objeto de datos representa un
recipiente para valores de datos, un
lugar donde los valores se pueden
guardar y luego recuperar.
Se caracteriza por un conjunto de
atributos, el mas importante es el tipo
de dato.
Un valor de datos esta representado por un
patrón de bits.
…Fundamentos de los lenguajes de
Programación

…Entornos y estados
0000000000001001
A: 1001 A:
a) Objeto de datos c) Variable enlazada
b) Valor de datos

 Cada objeto de datos tiene un


tiempo de vida durante el cual
puede usarse para guardar
valores de datos.
…Fundamentos de los lenguajes de
Programación

…Entornos y estados

nombres ubicaciones valores


l – value r- value
variables

#define ARRAYSIZE 1000 es una excepción


…Fundamentos de los lenguajes de
Programación

Nombre, Identificador y variables


Identificador: Cadena de caracteres que
identifica a un objeto.
Nombre: Todos los identificadores son
nombres pero no todos los nombres son
identificadores
x y z son identificadores
x.z nombres “calificados”

Variable: se refiere a una ubicación específica


en memoria
…Fundamentos de los lenguajes de
Programación

…Entornos y estados
1. Entornos.- Es una asignación de
nombres a ubicación de memoria
2. Estados.- Es una asignación de las
ubicaciones en memoria a sus
valores
Los entornos cambian de acuerdo a las
reglas de alcance de sus lenguajes ,
son dinámicas en su mayoría
(Dynamic Binding Time)
…Fundamentos de los lenguajes de
Programación

Alcance Estático
Control Implícito .-secuencia física de sentencias,
reglas de precedencia, etc. Las define el lenguaje.
Public
Private
Protected
Estructura de Bloque
{ }, begin – end,
Procedimientos, funciones y métodos
Anidamiento
Alcance Estático

Variable globales: dentro de toda la clase o
 módulo
Variables locales: se encuentran dentro de un 
Procedimiento o subrutina

Las variables que están afuera si pueden ser vistas adentro,
pero las de adentro no pueden ser vistas afuera.
…Fundamentos de los lenguajes de
Programación

Control de Acceso Explícito.- las usa el


programador para modificar la secuencia
implícita
Las clases y las estructuras introducen un
nuevo alcance para sus miembros.
Mediante public, private, y protected, éstas
palabras clave soportan el
encapsulamiento
…Fundamentos de los lenguajes de
Programación

Alcance Dinámico.- Si se basa en un factor o


factores que puedan conocerse sólo cuando se
ejecute el programa.
Declaraciones y definiciones
Ejemplo
int i declaración de i
i=1 definición de i
declaración de métodos, firma del método,
definir método ( se proporciona código para
ejecutar el método)
…Fundamentos de los lenguajes de
Programación

…Alcance Dinámico.-
·# define a (x+1)
int x=2;
void b(){ int x =1;printf(“%d\n”,a);}
void c(){printf(“%d\n”,a);}
void main() {b(); c();}

Una macro para la cual se debe calcular el alcance


de sus nombres en forma dinámica
La resolución dinámica del alcance es esencial en
los procedimientos polimórficos
…Fundamentos de los lenguajes de
Programación

Analogía entre Alcance estático y dinámico


La regla dinámica es para el tiempo lo que
la regla estática es para el espacio.
…Fundamentos de los lenguajes de
Programación

En POO el alcance dinámico es la habilidad de


cada objeto de invocar el método apropiado en
respuesta a un mensaje.
Cuando se ejecuta X.m() depende de la
clase denotada por ese objeto
Es imposible en tiempo de compilación
saber si X será de una clase determinada.
DuckTyping. En Ruby, el comportamiento o
capacidades de un objeto puede desviarse de
aquellos definidos en su clase.
…Fundamentos de los lenguajes de
Programación

En Ruby, se confia menos en el tipo (o clase) de un


objeto y más en sus capacidades.
DuckTyping significa que el tipo de un objeto está
definido por lo que puede hacer, no por lo que es.
DuckTyping se refiere a la tendencia de Ruby de
preocuparse menos por la clase de un objeto y más
por los métodos que pueden ser llamados por él y
las operaciones que se pueden realizar con él.
Ruby se utiliza el método respond_to? o
simplemente pasamos un objeto a un método y
sabemos que se generará una excepción si se
utiliza inapropiadamente.
…Fundamentos de los lenguajes de
Programación
Mecanismos para el paso de parámetros

Cuando un subprograma transfiere el control a otro subprograma,


debe haber una asociación del parámetro actual del subprograma que
llama con el parámetro formal del subprograma llamado.
Existen varios métodos para transmitir parámetros, de los cuales los
más usados son:
Por valor: el valor del parámetro actual se pasa al parámetro
formal.
Por dirección: el parámetro formal y el parámetro actual
referencian a la misma dirección.
Por nombre: este mecanismo requiere que el parámetro
actual se sustituya literalmente por el parámetro formal en
su código como si el parámetro formal fuera una macro que
representa al parámetro actual
…Fundamentos de los lenguajes de
Programación

Alias: Cuando un objeto de datos es visible a


través de más de un nombre en el mismo ambiente
de referenciación, cada uno de esos nombres se
denomina alias del objeto de datos. Cuando un
objeto de datos tiene múltiples nombres, pero un
único nombre en cada ambiente de referenciación
en el cual aparece, no existen problemas.
Problemas:
• para el programador: dos nombres distintos no
significan objetos de datos distintos.
• para el implementador: puede interferir en el
reordenamiento de operaciones o eliminación de
operaciones innecesarias.
…Fundamentos de los lenguajes de
Programación
Breve Revisión de los Paradigmas de
Programación

Clasificación por el paradigma


Imperativo ó Procedural: ¿Cómo resolvemos un
problema? ¿Cuáles son los pasos de la solución?
Lógico: ¿Qué hacemos para resolver el problema?
(el lenguaje decide cómo hacerlo)
Funcional: ¿Qué operaciones simples pueden ser
aplicadas para resolver un problema? ¿Cómo están
ellas mutuamente relacionadas y cómo pueden ser
combinadas?
Orientado al objeto: ¿Qué objetos juegan roles
en el problema, qué pueden ellos hacer, y cómo
ellos interactúan para resolver el problema?
Orientada a Aspectos
…Breve Revisión de los Paradigmas
de Programación
Lenguajes imperativos
Los primeros LP fueron creados en los 50's: Fortran,
Pascal, C, Ada
Se denominan también, procedurales
Los LP que tienen a ForTran y COBOL como raíz, se
denominan imperativos.
Tienen como característica cambiar el estado de las
variables por asignación.
Están influenciados por la máquina en la que deben
"correr": Máquina de Von Neuman.
Sentencias del programa son comandos
Operaciones claves: asignación, looping
Calza la arquitectura von Neumann
Ejemplos: Fortran, C, Pascal, Turing
…Breve Revisión de los Paradigmas
de Programación

Lenguajes Funcionales
Sentencias del programa describen el valor de
expresiones, usando esencialmente frases sustantivas
Los primeros aparecieron en los 60's: Lisp, Apl, Forth
Se denominan también aplicativos.
Aplican funciones, ya sea, recursivamente o por
composición.
Se caracterizan por una programación sin asignaciones ,
ie, puramente funcional.
Los usuarios de los LP funcionales NO deben
preocuparse de manejar el almacenamiento de datos.
“Ejemplos: Lisp, Scheme, ML
…Breve Revisión de los Paradigmas
de Programación

Lenguajes Lógicos
Son LP diseñados principalmente para
aplicaciones de IA, máquinas de 5° generación.
Los LP lógicos revisan la presencia de una
determinada condición, la que, si es verdadera
se ejecuta una acción apropiada
Se basa en la noción de definir objetos y
relaciones de inferencia en clases de objetos.
…Breve Revisión de los Paradigmas
de Programación
Lenguajes orientados a objetos

Programas que describen comunicación entre objetos

Operaciones claves: paso de mensajes, herencia

Puede ser imperativo o funcional

Ejemplos de estos lenguajes son: Smalltalk, Eiffel, C++, Java.

Son LP que incorporan nuevas formas de pensar con respecto a cómo


estructurar la información dentro del computador

Se construyen complejos objetos de datos y se diseña un conjunto de funciones


para operar con tales datos.

Principios Básicos

Abstracción

Encapsulamiento

Herencia

Polimorfismo
Niveles de Lenguaje de Programación
Lenguaje de Máquina
Operaciones son cosas simples tales como
● Mover contenidos de la memoria ubicada en 08125 al registro
7
● Adicionar contenidos de la memoria ubicada en 08125 al
registro 7
● Saltarse la próxima instrucción si el registro 1 es cero
Instrucciones son codificadas como números
No variables: operandos son direcciones de memoria o registros
numerados
Programación requiere un entendimiento profundo acerca de la
arquitectura de la máquina
Programas no son portables porque las instrucciones y su codificación
son específicos a una arquitectura
Programas son extremadamente difíciles de leer, depurar y escribir
Niveles de Lenguaje de Programación

Lenguaje Ensamblador
Operaciones pueden tener nombres simbólicos
Puede usar macros para secuencias de código comunes
Un ensamblador traduce a código de máquina
También es dependiente de la máquina
Igual de difícil que escribir que código de máquina
Niveles de Lenguaje de Programación
Lenguajes de Alto Nivel
Ejemplos: C, Lisp, Java, Fortran …
if ( x == 3 )
<instrucciones>
else
<otras instrucciones>

Tener constructores de alto nivel


Lenguaje usualmente soporta type checking y otras revisiones que
ayudan a detectar errores de programación
Programas son más fáciles de escribir, depurar, y leer
Programas son independientes de la máquina
Aunque aún pueden haber programas con dependencias de la
implementación del lenguaje
Antes del primer compilador Fortran (1957) se creía que cualquier
compilador produciría código tan ineficiente como no usable
Los efectos de la escalabilidad en las
metodologías
de programación
Escalabilidad referente al software
Capacidad de responder correctamente al
crecimiento en el volumen de datos que maneja
una aplicación
Escalabilidad referente al lenguaje Programación
Capacidad de incluir nuevas abstracciones,
extensiones del lenguaje
Escalabilidad referente a las metodologías de
programación
…Los efectos de la escalabilidad en
las metodologías
de programación
Programación Concurrente
Programación Basada en Eventos
Programacion Orientada a Aspectos

S-ar putea să vă placă și