1. Lenguajes de Programacion
-
Upload
deivi-gomez -
Category
Documents
-
view
2 -
download
0
description
Transcript of 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
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
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
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}
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.
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.
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
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
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.
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.
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.
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
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
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
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
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
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)