Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

52
Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552

Transcript of Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Page 1: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Lenguajes de Programación

Sesión 1: Introducción a Lenguajes

FIEC01552

Page 2: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 2

Lenguajes de Programación

Los lenguajes de Programación son el corazón de la Ciencia de la Computación.

Son herramientas que usamos no solo para comunicarnos con las máquinas sino también con

las personas.

“el valor de un lenguaje se debe juzgar según la forma en que afecta la producción de Software y a la facilidad con la que puede integrarse a otras

herramientas”

Page 3: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 3

Objetivos

Adquirir habilidad de apreciar y evaluar lenguajes, identificando sus límites y posibilidades.

Habilidad para elegir, para diseñar, implementar o utilizar un lenguaje.

Enfatizar la abstracción.

Page 4: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 4

Contenido:

¿Por qué estudiar Lenguajes?

Historia de los Lenguajes

Paradigmas en Lenguajes

Criterios para evaluar los lenguajes de programación

– ¿Qué hace a un Lenguaje bueno?

Page 5: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 5

¿Por qué estudiar Lenguajes?

Aumentar la capacidad para producir software.

– Conocer profundamente las características de los lenguajes permite aprovechar su potencia y evitar errores, minimizando esfuerzo

Page 6: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 6

¿Por qué estudiar Lenguajes?

Mejora la habilidad para desarrollar mejores algoritmos.

– Aprendemos a elaborar los algoritmos más eficientes en concordancia con el lenguaje que estamos utilizando.

– Ejemplo: Recursión

Page 7: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 7

¿Por qué estudiar Lenguajes?

Mejora el uso de su lenguaje de programación preferido.

– Si se entiende como se implementa cada característica se mejora la capacidad para escribir programas eficientes.

– Ejemplo: Orientación a Objetos (Herencia)

Page 8: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 8

¿Por qué estudiar Lenguajes?

Incrementar el vocabulario– El lenguaje

• equivale a comunicación.

• es una ayuda y una limitación al pensamiento.

• permite expresar y estructurar el pensamiento

– Incrementamos la capacidad para expresar ideas

Page 9: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 9

¿Por qué estudiar Lenguajes?

Incrementa el conocimiento de construcciones posibles.

– Libera la mente para poder pensar en términos del problema y no de determinado lenguaje.

– Ejemplo: Tratar de resolver todo en termino de las capacidades de C.

Page 10: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 10

¿Por qué estudiar Lenguajes?

Permite elegir mejor el lenguaje a utilizar para cada tarea.– Conocer las fortalezas y debilidades de los

diferentes lenguajes nos permite saber que problema podemos resolver más fácilmente con cada uno y por lo tanto se reduce el esfuerzo de codificación. • CGI de Internet vs. Programar un controlador de

dispositivo.

• calculo ADA – Fortran

• inteligencia artificial Prolog - ML

Page 11: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 11

¿Por qué estudiar Lenguajes?

Hace más fácil aprender nuevos lenguajes de programación.

– Un conocimiento de la estructura de los lenguajes de programación reduce considerablemente la curva de aprendizaje de un lenguaje nuevo.

Page 12: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 12

¿Por qué estudiar Lenguajes?

Hace más fácil el diseño e implementación de lenguajes.

– El programador puede convertirse en diseñador o implementador de un lenguaje.

– O no necesariamente nuevos lenguajes de programación, pero cuando programamos muchas veces necesitamos crear códigos de comunicación.

– Ejemplo: Manejo de formas en Internet

Page 13: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 13

Contenido:

¿Por qué estudiar Lenguajes?

Historia de los Lenguajes

Paradigmas en Lenguajes

Criterios para evaluar los lenguajes de programación

– ¿Qué hace a un Lenguaje bueno?

Page 14: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 15

ENIAC

15

Page 15: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 17

IBM 29: Oct /1964

Page 16: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 22

Historia de los Lenguajes

Page 17: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 23

Contenido:

¿Por qué estudiar Lenguajes?

Historia de los Lenguajes

Paradigmas en Lenguajes

Criterios para evaluar los lenguajes de programación

– ¿Qué hace a un Lenguaje bueno?

Page 18: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 24

Paradigmas de Lenguajes

Se reconoce generalmente 4 paradigmas de programación:

– Imperativo (Estructurado)

– Aplicativo (Funcional)

– Orientado a Objetos

– Lógico

Page 19: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 25

Lenguajes Imperativos

Su objetivo es entender y definir el estado de la máquina (conjunto de posiciones de memorias, cada una conteniendo un valor).

Lenguajes orientados a instrucciones

El programa consiste en elaborar un conjunto de instrucciones para que la máquina llegue a la respuesta.

Ejemplos: C, Fortran, Pascal, Cobol

Sintaxis: S1, S2, S3, S4, …

Page 20: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 26

Lenguajes Imperativos

Programación: serie de pasos (input, cálculo, ouput).

Elementos: abstracción procedural, asignación, loops, secuencias, condicionales.

Page 21: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 27

Lenguajes Funcionales

Su objetivo es entender la función que produciría la respuesta deseada.

Es orientada hacia la composición de funciones.Programar consiste en construir la función que halle la respuesta.

Ejemplos: ML, Lisp, Scheme, Haskell Sintaxis: F1(F2(F3(x)))

Page 22: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 28

Lenguajes Funcionales

Programación: colección de funciones que se combinan en formas complejas para construir nuevas funciones.

Elementos: alto orden, composición, recursión.

Page 23: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 29

Orientados a Objetos

Su objetivo es modelar el problema con elementos similares a los realmente presentes.

Programar significa generar objetos que intercambian mensajes entre si para resolver un problema.

Ejemplos: Smalltalk, C++, Java, Squeak, C#

Sintáxis: O1 ->mensaje-> O2.

Page 24: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 30

Orientados a Objetos

Lenguajes imperativos que unen diseños aplicativos con sentencias imperativas.

Sintaxis: Conjunto de objetos (clases) conteniendo datos (concepto imperativo) y métodos (conceptos aplicativos).

Programación: colección de objetos que interactúan pasándose mensajes que transforman estados.

Elementos: modelado de objetos, clases, herencia, encapsulamiento.

Page 25: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 31

Lenguajes Lógicos

Definen reglas para decidir cuando la respuesta ha sido alcanzada.

Utiliza un conjunto de reglas para deducir los atributos de la respuesta.

Ejemplos: Prolog

Sintaxis: Regla -> Conclusión

Page 26: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 32

Contenido:

¿Por qué estudiar Lenguajes?

Historia de los Lenguajes

Paradigmas en Lenguajes

Criterios para evaluar los lenguajes de programación

– ¿Qué hace a un Lenguaje bueno?

Page 27: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 33

Page 28: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 34

Facilidad de Escritura

La facilidad de escritura es la medida de cuan fácil resulta usar un lenguaje para construir soluciones.

Simplicidad

Claridad

Ortogonalidad

Soporte de Abstracción

Page 29: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 35

Facilidad de Escritura

Simplicidad

– El lenguaje debería ser lo suficientemente pequeño y simple para ser entendido en su totalidad

• Un pequeño número de construcciones primitivas.

• Un conjunto consistente de reglas para combinarlas (ortogonalidad).

– ¿Qué tienen de malo los lenguajes “grandes” y “complejos”?

• Contienen tantas características que muchas de ellas nunca llegan a usarse ni a entenderse.

• La complejidad del lenguaje crece de forma no lineal con el número de características que incorpora.

Page 30: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 36

Facilidad de Escritura

Simplicidad

– Sin embargo,

• El lenguaje más usado (C++) es complejo.

• Uno de los más recomendados (Ada) es grande y complejo.

• Java, que nació con vocación de ser simple, tiende a hacerse más grande y complejo.

Page 31: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 37

Facilidad de Escritura

Claridad– Un programador sólo puede escribir programas fiables si

entiende con toda claridad lo que significa (implica) cada una de las estructuras del lenguaje.

– La especificación del lenguaje y la calidad de su documentación es absolutamente crítica en este aspecto:

• Debe evitarse cualquier ambigüedad.

• No debe ser necesario escribir y ejecutar fragmentos de código para descubrir el significado de una característica del lenguaje.

– .

Page 32: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 38

Facilidad de Escritura

Ortogonalidad

– El efecto de la combinación de características debe entenderse fácilmente y ser predecible.

– Proporciona un mayor grado de generalidad sin restricciones ni casos especiales.

– Las reglas del lenguaje deben tener las mínimas excepciones posibles.

– El usuario comprende mejor si tiene un pequeño número de primitivas y un conjunto consistente de reglas de combinación.

Page 33: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 39

Facilidad de Escritura

Ortogonalidad Si es ortogonal, un lenguaje es fácil de aprender y usar.

Por ejemplo: Asignación y Tipos

X=5

F(x)=x+3

A[y]=8

Page 34: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 40

Facilidad de Escritura

Ortogonalidad– ¿Qué tienen de malo la falta de ortogonalidad?

• Que hace imposible deducir nuevas propiedades del lenguaje de las que ya se conocen.

• Que va en contra de la claridad.– Ejemplos de falta de ortogonalidad:

• En Pascal todos los tipos escalares pueden leerse y escribirse, excepto los booleanos que sólo pueden escribirse.

• En C las funciones pueden retornar “structs” pero no “arrays”

• En C los parámetros se pasan a las funciones por valor, excepto los arrays que se pasan por referencia.

Page 35: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 41

Facilidad de Escritura

Soporte de Abstracción

– La abstracción es la capacidad para definir y utilizar estructuras y operaciones muy complicadas de forma que la complejidad quede oculta.

– Concepto clave para manejar la complejidad.

– Abstracción de procesos y de datos.

– Principio de diseño: Ocultamiento de la información

Page 36: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 42

Legibilidad

Fácil de leer a las personas (equipo)

SEMANTICA

SINTAXIS

DEFINICION

ESTRUCTURAS DE DATOS

ESTRUCTURAS DE CONTROL

Page 37: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 43

Legibilidad

Semántica

– La semántica de un lenguaje especifica el significado algorítmico de un programa y se define como un conjunto de reglas que describen el comportamiento de ese lenguaje en tiempo de ejecución.

Page 38: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 44

Legibilidad

Sintaxis– La sintaxis determina la forma en que se combinan los elementos del

lenguaje para construir sentencias y programas.

– Unas reglas sintácticas adecuadas son fundamentales para que los programas sean legibles.

• Documentación y comentarios

• Elección de nombres

• Uso de constantes

• If-then-else anidados

• Separación de sentencias

• Indentación

Page 39: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 45

Legibilidad

Sintaxis

– Ejemplos de una “mala” sintaxis:

• Restringir el tamaño de los identificadores.

• Uso del símbolo = para realizar asignaciones.

• Palabras reservadas con más de un significado (static en en C).

• Uso de llaves {... ...} para delimitar bloques.

Page 40: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 46

Legibilidad

Definición del lenguaje

– Precisión en la definición de la sintaxis y de la semántica

– Ambigüedad: ejemplo, M(i) puede significar un elemento del arreglo M ó una llamada a la función M

– Portabilidad

– Definiciones formales

Page 41: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 47

Legibilidad

Estructuras de control

– Programación estructurada

Estructuras de datos

– Facilidades para expresar los datos del problema

Page 42: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 48

Confiabilidad

Correcto: cumple con las especificaciones

Verificación de programas: probar su corrección

Chequeo de tipos

Robusto

Page 43: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 49

Confiabilidad

Chequeo de tipos

– Chequeos estáticos y dinámicos

Robusto

– Capacidad de prevenir situaciones

– Manejo de excepciones

Page 44: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 50

Mantenibilidad

Modificabilidad

Factoreo

Localidad

Page 45: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 51

Mantenibilidad

Mantenible

– Modificabiliad: facilidad de introducir cambios

– Factoreo: una sola vez y luego rehusar

– Localidad: el efecto de una característica se restringirse a una porción local del programa

Page 46: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 52

Eficiencia

Tiempo y Espacio

Esfuerzo humano

Optimizable

Page 47: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 53

Contenido:

¿Por qué estudiar Lenguajes?

Historia de los Lenguajes

Paradigmas en Lenguajes

Criterios para evaluar los lenguajes de programación

– ¿Qué hace a un Lenguaje bueno?

Page 48: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 54

¿Qué hace a un lenguaje bueno?

Naturalidad de la aplicación

– La estructura del programa refleja la estructura lógica del algoritmo.

– Cada lenguaje generalmente se especializa en un campo de acción determinado y es más fácil resolver ciertos problemas con él.

Page 49: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 55

¿Qué hace a un lenguaje bueno?

Facilidad de verificación

– Debe proveer una manera de corroborar que el programa efectivamente realiza su tarea.

– Una sintaxis sencilla facilita la verificación.

Page 50: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 56

¿Qué hace a un lenguaje bueno?

Ambiente de programación

– Debe contar con un entorno que facilite la programación en el lenguaje.

– Generalmente lenguajes no tan buenos, pero que tienen un buen entorno de programación, son más usados en el mercado.

Page 51: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 57

¿Qué hace a un lenguaje bueno?

Portabilidad

– Que tan fácil se puede transportar la aplicación de la máquina en que se desarrolló a otras máquinas donde va a ser ejecutada.

– El mejor ejemplo de esto es programación para Internet.

Page 52: Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552.

Slide 58

¿Qué hace a un lenguaje bueno?

Costo de uso

– Costo de ejecución

– Costo de traducción

– Costo de creación, prueba y uso

– Costo de mantenimiento