Lenguajes de Programación
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
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.
Slide 4
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
¿Por qué estudiar Lenguajes?
Aumentar la capacidad para producir software.
– Conocer profundamente las características de los
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.
¿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.
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
¿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
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
¿Por qué estudiar Lenguajes?
Hace más fácil aprender nuevos lenguajes de
programación.
– Un conocimiento de la estructura de los lenguajes
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.
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
Slide 15
ENIAC
Slide 22
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
Slide 24
Paradigmas de Lenguajes
Se reconoce generalmente 4 paradigmas de programación:
– Imperativo (Estructurado)
– Aplicativo (Funcional)
– Orientado a Objetos
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
Slide 26
Lenguajes Imperativos
Programación: serie de pasos (input, cálculo, ouput).
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
Slide 28
Lenguajes Funcionales
Programación: colección de funciones que se combinan en formas complejas para construir nuevas funciones.
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#
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.
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
Slide 32
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
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
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.
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.
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.
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
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
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”
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.
Slide 42
Legibilidad
Fácil de leer a las personas (equipo)
SEMANTICA
SINTAXIS
DEFINICION
ESTRUCTURAS DE DATOS
Legibilidad
Semántica
– La semántica de un lenguaje especifica el significado
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
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).
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
Legibilidad
Estructuras de control
– Programación estructurada
Estructuras de datos
Slide 48
Confiabilidad
Correcto: cumple con las especificaciones
Verificación de programas: probar su corrección
Chequeo de tipos
Confiabilidad
Chequeo de tipos
– Chequeos estáticos y dinámicos
Robusto
– Capacidad de prevenir situaciones
Slide 50
Mantenibilidad
Modificabilidad
Factoreo
Mantenibilidad
Mantenible
–
Modificabiliad: facilidad de introducir
cambios
–
Factoreo: una sola vez y luego rehusar
–
Localidad: el efecto de una característica
Slide 52
Eficiencia
Tiempo y Espacio
Esfuerzo humano
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
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
¿Qué hace a un lenguaje bueno?
Facilidad de verificación
– Debe proveer una manera de corroborar que el programa
efectivamente realiza su tarea.
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
¿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.
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