1. Lenguajes de Programacion

17
30/03/2015 - Aula SA403 - 1 Lenguajes de Programación Ms. Ing Carlos Castillo Diestra La unión de una secuencia de instrucciones que un computador puede interpretar y ejecutar y un conjunto de estructuras de datos que almacenan la información sobre la que la operan las instrucciones Programa

description

todo sobre el lengua de programacion

Transcript of 1. Lenguajes de Programacion

Page 1: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

1

Lenguajes de Programación

Ms. Ing Carlos Castillo Diestra

• La unión de una secuencia de

instrucciones que un computador puede

interpretar y ejecutar y un conjunto de

estructuras de datos que almacenan la

información sobre la que la operan las

instrucciones

Programa

Page 2: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

2

Lenguaje de Programación

Un lenguaje de programación es una notación para

escribir programas, a través de los cuales podemos

comunicarnos con el Hardware y dar así las órdenes

adecuadas para la realización de un determinado

proceso.

Un lenguaje viene definido por una gramática o

conjunto de reglas que se aplican a un alfabeto

constituido por el conjunto de símbolos utilizados.

• Ejemplos:

Visual Basic

C/C++

JAVA

FORTRAN

LISP

Ejemplos de LP

Page 3: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

3

5

Atributos de un buen lenguaje• Claridad, sencillez y unidad (legibilidad): La sintaxis del lenguaje afecta la

facilidad con la que un programa se puede escribir, por a prueba, y más tarde entender y modificar.

• Ortogonalidad: Capacidad para combinar varias características de un lenguaje en todas las combinaciones posibles, de manera que todas ellas tengan significado.

• Naturalidad para la aplicación: La sintaxis del programa debe permitir que la estructura del programa refleje la estructura lógica subyacente.

• Apoyo para la abstracción: Una parte importante de la tarea del programador es proyectar las abstracciones adecuadas para la solución del problema y luego implementar esas abstracciones empleando las capacidades más primitivas que provee el lenguaje de programación mismo.

• Facilidad para verificar programas: La sencillez de la estructura semántica y sintáctica ayuda a simplificar la verificación de programas.

• Entorno de programación: Facilita el trabajo con un lenguaje técnicamente débil en comparación con un lenguaje más fuerte con poco apoyo externo.

• Portabilidad de programas

• Costo de uso:– 1. Costo de ejecución del programa.

– 2. Costo de traducción de programas.

– 3. Costo de creación, prueba y uso de programas.

– 4. Costo de mantenimiento de los programas: costo total del ciclo de vida.

Clasificación de los LP

Los lenguajes de programación se pueden clasificar

atendiendo a varios criterios, los principales son:

● Según el nivel de abstracción

● Según la forma de ejecución

● Según el paradigma de programación

Page 4: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

4

Clasificación de los LPSegún el nivel de abstracción

Lenguajes de máquina y de bajo nivelLos lenguajes de máquina están escritos en códigos (código

máquina) directamente inteligibles por la máquina

(computadora), siendo sus instrucciones cadenas binarias (0 y 1).

Lenguaje ensambladorUsan abreviaturas

Lenguajes de alto nivel y de muy alto nivelLos lenguajes de programación de alto nivel se caracterizan por

expresar los algoritmos de una manera adecuada a la capacidad

cognitiva humana, en lugar de estar orientados a su ejecución en

las máquinas.

Clasificación de los LPSegún el nivel de abstracción

Alto nivel Pascal

C++

C

Lenguaje ensamblador

Lenguaje máquina (Objeto) / Lenguaje de bajo nivel – {0 / 1}

Page 5: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

5

Clasificación de los LPSegún la forma de ejecución

● Lenguajes compilados: Antes de poder utilizarse el

programa debe utilizarse un traductor llamado

“compilador” que se encarga de traducir (“compilar”) el programa

original (“código fuente”) al programa equivalente escrito en

lenguaje de máquina

.

● Lenguajes interpretados: Cada vez que se usa el programa

debe utilizarse un traductor llamado “intérprete”

que se encarga de convertir (“interpretar”) las instrucciones del

programa original (“código fuente”) a código máquina según van

siendo utilizadas. Para el funcionamiento del programa siempre

es necesario disponer del código original y del intérprete.

Clasificación de los LPSegún el paradigma de programación

Un paradigma de programación representa un enfoque particular o

filosofía para la construcción del software. Si bien puede seleccionarse la

forma pura de estos paradigmas a la hora de programar, en la práctica es

habitual que se mezclen, dando lugar a la programación multiparadigma.

Los diferentes paradigmas de programación son:

● Algorítmico, Imperativo o Por procedimientos. El más

común y está representado, por ejemplo, por C.Describe la programación en términos del estado del programa y

sentencias que cambian dicho estado. Los programas imperativos son un

conjunto de instrucciones que le indican al computador cómo realizar una

tarea.

La implementación de hardware de la mayoría de computadores es

imperativa ya que el hardware está diseñado para ejecutar código de

máquina que es imperativo.

Page 6: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

6

Clasificación de los LPSegún el paradigma de programación

● Declarativo o Predicativo. Basado en la utilización de

predicados lógicos (lógico) o funciones matemáticas(funcional), su objetivo es conseguir lenguajes expresivos en los

que no sea necesario especificar cómo resolver el problema

(programación convencional imperativa), sino qué problema se

desea resolver. Los interpretes de los lenguajes declarativos

tienen incorporado un motor de inferencia genérico que resuelve

los problemas a partir de su especificación.

○ Lógico. Un ejemplo es PROLOG. El mecanismo de inferencia

genérico se basa en los procedimientos de deducción de formulas válidas

en un sistema axiomático

○ Funcional. Representado por la familia de lenguajes LISP (en

particular Scheme), ML o Haskell.

El mecanismo de inferencia genérico se basa en la reducción de una

expresión funcional a otra equivalente simplificada.

Clasificación de los LPSegún el paradigma de programación

● Orientado a Objetos. Cada vez más utilizado, sobre

todo en combinación con el imperativo.

De hecho los lenguajes orientados a objetos permiten la

programación imperativa. Algunos ejemplos de lenguajes

orientados a objetos son C++, Java, Python. Usa objetos y

sus interacciones para diseñar aplicaciones y programas de

computadora. Está basado en varias técnicas, incluyendo

herencia, modularidad, polimorfismo y encapsulamiento.

Page 7: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

7

Evolución de los Lenguajes de Programación

Primera Generación ( 1954 – 1958)

•FORTRAN 1

•ALGOL 58

•FLOWMATIC

•IPL V

Datos Globales

Un nivel de subprograma

Evolución de los Lenguajes de Programación

Segunda Generación: ( 1959 – 1961):

•FORTRAN II

•ALGOL 60

•COBOL

•LISP

Datos Globales

Varios niveles de subprograma

Formas de pasar parámetros

Estructuras de control

Programación estructurada

Page 8: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

8

Evolución de los Lenguajes de Programación

Tercera Generación ( 1962 – 1970)

•PL/1

•ALGOL 68

•PASCAL

•SIMULA

Módulo

Compilación separada

Datos Abstractos

Evolución de los Lenguajes de Programación

Lenguajes Orientados a Objetos ( 1970 – )

•SMALLTALK

•C++

•OBJECT PASCAL

•ADA

•CLOS

Orientado a datos

Encapsulado

Clases

Objetos

Page 9: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

9

Genealogía de los lenguajes de objetos según Sebesta

Características de los LPOO

Puro vs híbrido

Los lenguajes puros fueron construidos desde sus

inicios como lenguajes Orientado a Objetos.

Los lenguajes híbridos son extensiones de lenguajes

prexistentes.

Page 10: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

10

Características de los LPOO

Compilado e Interpretado

Los programas escritos en lenguajes compilados se

convierten en programas de lenguaje máquina.

Los programas interpretados son ejecutados por una

máquina virtual.

Compilado Interpretado

Características de los LPOO

Fuertemente tipado vs. Débilmente tipado

Tipificación o tipado: proceso una variable

Los lenguajes fuertemente tipados requieren que a

todas las variables les sea asignado un tipo de

variable.

Los débilmente tipados permiten que las variables

tomen el tipo que convenga.

Page 11: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

11

Características de los LPOO

Liga estática vs. Liga dinámica

La liga (binding) es el proceso en que se

determina el receptor de un mensaje. Puede

ser tan temprano como en tiempo de

compilación ( Liga estática) o tan tarde como

durante la ejecución. ( Liga dinámica)

Características de los LPOO

Herencia simple vs. Herencia múltiple

La herencia simple implica que una clase sólo

puede tener una superclase. En el caso de la

herencia múltiple una clase puede tener dos o

más superclases y hereda todos los métodos y

atributos de todas las superclases.

Page 12: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

12

Características de los LPOO

Lenguaje vs. AmbienteAlgunos lenguajes incluyen un extenso ambiente de

desarrollo mientras otros sólo incluyen un compilador (o

intérprete).

El hecho de no contar con un ambiente integrado y

consistente puede ser compensado por la facilidad de

escoger un ambiente adecuado a las necesidades

específicas.

Perfiles de los Lenguajes de

Programación Orientado a Objetos

Lenguaje C++

Puro

Compilado

Fuertemente Tipado

Liga Estática

Herencia Simple

Lenguaje

Hibrido

Interpretado

Débilmente Tipado

Liga Dinámica

Herencia Múltiple

Ambiente

Page 13: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

13

Perfiles de los Lenguajes de

Programación Orientado a Objetos

Vendedores de C++

•Microsoft

•Borland

•IBM

•SYMANTEC

•Photon

•Watcom, etc

Perfiles de los Lenguajes de

Programación Orientado a Objetos

Lenguaje Smalltalk

Puro

Compilado

Fuertemente Tipado

Liga Estática

Herencia Simple

Lenguaje

Hibrido

Interpretado

Débilmente Tipado

Liga Dinámica

Herencia Múltiple

Ambiente

Page 14: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

14

Perfiles de los Lenguajes de

Programación Orientado a Objetos

Vendedores de Smalltalk

•ParcPlace

•Samlltalk 80

•Digitalk

•Smalltalk/V

•IBM

•Visualage

Taxonomía de los LPOO de Wegner

Page 15: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

15

•Basado en ObjetosSu sintaxis y semántica soportan la creación de objetos

•Basado en clasesEs basado en objetos y soporta además la creación de clases

•Orientación a objetosEs basado en clases y soporta la herencia

Taxonomía de los LPOO de Wegner

Criterios de Meyer en LPOO y basados en Objetos

Page 16: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

16

Ejercicio

Perfiles de los Lenguajes de Programación

Orientado a Objetos

Lenguaje JAVA

Puro

Compilado

Fuertemente Tipado

Liga Estática

Herencia Simple

Lenguaje

Hibrido

Interpretado

Débilmente Tipado

Liga Dinámica

Herencia Múltiple

Ambiente

Perfiles de los Lenguajes de

Programación Orientado a Objetos

Lenguaje JAVA

Puro

Compilado

Fuertemente Tipado

Liga Estática

Herencia Simple

Lenguaje

Hibrido

Interpretado

Débilmente Tipado

Liga Dinámica

Herencia Múltiple

Ambiente

Page 17: 1. Lenguajes de Programacion

30/03/2015 - Aula SA403 -

17

Perfiles de los Lenguajes de

Programación Orientado a Objetos

Vendedores de JAVA

Se obtiene gratuitamente

de ORACLE (SUN

Microsystems)