Lenguajes de Programación

Slides:



Advertisements
Presentaciones similares
INTELIGENCIA ARTIFICIAL
Advertisements

Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
Introducción a la Programación
INTELIGENCIA ARTIFICIAL
Universidad San Martín de Porres
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Aladdín-respuestas 1.Vivía 2.Era 3.Amaba 4.Quería 5.Gustaban 6.Se sentía 7.Salía 8.Tenía 9.Decidió 10.escapó 11. Se vistió 12. Conoció 13. Vio 14. Pensó
Respuestas Buscando a Nemo.
¿Qué es Sofware? Son el conjunto de instrucciones que dirigen las actividades del Hardware Consiste en programas, módulos de soporte y archivos de datos,
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
Fundamentos de Diseño de Software INFT.1
Conceptos preliminares
60 razones para seguir vivo
1 Reporte Componente Impacto Por Orden Territorial Por Departamento No Disponible ND *Los indicadores para el año 2008 no fueron calculados.
50 principios La Agenda 1.- Presentar un único interlocutor a los clientes. 2.- Tratar de modo distinto a las diferentes clases de clientes. 3.- Saber.
INTRODUCCIÓN A JAVA.
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
PROGRAMACIÓN.
Lenguajes de programación
Parte 3. Descripción del código de una función 1.
FUNCIONES DE UNA VARIABLE REAL
Resolución de Problemas Algoritmos y Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
EL OSO APRENDIZ Y SUS AMIGOS
50 principios 1. Los clientes asumen el mando.
1 PROYECTO DE PRESUPUESTO DE EGRESOS DE LA FEDERACION 2002 COORDINACIÓN DE POLITICA ECONOMICA GP-PRD.
Clasificación de los indicadores por categoría
Ecuaciones Cuadráticas
DISEÑO E IMPLEMENTACIÓN DE UN HORNO AUTOMÁTICO DE SECADO Y ENVEJECIDO DE ARROZ PARA LA PROCESADORA DE PROYELEC INGENIERIAS. FASE 1.
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
¡Primero mira fijo a la bruja!
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
INTRODUCCIÓN A LA PROGRAMACIÓN
Programas Son una serie o secuencia de instrucciones entendibles por los ordenadores que permiten la realización de las acciones o tareas para las que.
Módulo 2: Condiciones Generales de Trabajo
METODOLOGIA DE LA PROGRAMACION
Programación 1 (01) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento (GIDyC) Escuela de Ingeniería.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Estructuras de control
FUNDAMENTOS DE CALIDAD EN LA GESTIÓN PÚBLICA
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
Ingeniería de Software
Inteligencia artificial
1 LENGUAJES DE PROGRAMACIÓN Javier Martín Centro Asociado de Móstoles UNED.
Tema 1 Entorno de la programación. Conceptos elementales Algoritmo  Secuencia ordenada de pasos exentos de ambigüedad que conduce a la resolución de.
LENGUAJE DE PROGRAMACIÓN
Programación Orientada a Objetos
Lenguaje de Programación II
Metodología para solución de problemas
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL Y LOS SISTEMAS EXPERTOS
Facultad de Ingeniería
Lenguajes de Programación
“PARADIGMAS Y LENGUAJES DE PROGRAMACION”
Prof. Flor Narciso Departamento de Computación
Lenguajes de Programación
INTRODUCCIÓN LI & MSC OSCAR RAMÍREZ CORTÉS U NIVERSIDAD DE LA H UASTECA V ERACRUZANA L ENGUAJES DE P ROGRAMACIÓN.
Lenguaje programación
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Fundamentos de Programación Unidad I Conceptos Básicos.
Transcripción de la presentación:

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

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”

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.

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?

¿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

¿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

¿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)

¿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

¿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.

¿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

¿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.

¿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

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?

Historia de los Lenguajes “Pre-historia” Programar consistía en abrir o cerrar contactos mecánicos para que la máquina se comportara de manera diferente. Primera programadora: Ada Byron (Lady Lovelace).

ENIAC

Historia de los Lenguajes Lenguajes numéricos 20s-60s Hardware: Primeras computadoras. Programar consistía en abrir o cerrar contactos eléctricos que manipulaban las válvulas al vacío. Más tarde se pasó a tarjetas perforadas que hacían esto automáticamente.

IBM 29: Oct /1964

Historia de los Lenguajes Lenguajes numéricos 20s-60s Grace Hopper desarrollo A-0 para la Univac. John Backus Speed-Coding para la IBM 701 1955: FORTRAN por Backus. Formula Translator 1958: ALGOL desarrollado por Peter Naur.

Historia de los Lenguajes Negocios 50s-70s Diseñados para popularizar la computación en los negocios. 1955: Flowmatic por Grace Hoper 1960: COBOL (Common Business Oriented Language).

Historia de los Lenguajes Inteligencia Artificial: 50s – 90s 1950: IPL (Information Processing Language) por Rand Corporation Lenguaje más representativo: LISP por John McCarthy del MIT LISP = List Processing Otros lenguajes: Prolog, Comit

Historia de los Lenguajes Propósito General: 70s - hoy 1969: Pascal por Nicklaus Wirth 1970: BASIC 1970: C por Ken Thompson 1972: SmallTalk Alan Kay en XPARC 1984: C++ 90s: Perl, Java, Python, Squeak

Historia de los Lenguajes

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?

Paradigmas de Lenguajes Se reconoce generalmente 4 paradigmas de programación: Imperativo (Estructurado) Aplicativo (Funcional) Orientado a Objetos Lógico

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, …

Lenguajes Imperativos Programación: serie de pasos (input, cálculo, ouput). Elementos: abstracción procedural, asignación, loops, secuencias, condicionales.

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)))

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.

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.

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.

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

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?

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

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.

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.

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. .

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.

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

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.

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

Legibilidad Fácil de leer a las personas (equipo) SEMANTICA SINTAXIS DEFINICION ESTRUCTURAS DE DATOS ESTRUCTURAS DE CONTROL

Semántica Legibilidad 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.

Sintaxis Legibilidad Documentación y comentarios Elección de nombres 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

Sintaxis Legibilidad 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.

Definición del lenguaje 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

Estructuras de control Legibilidad Estructuras de control Programación estructurada Estructuras de datos Facilidades para expresar los datos del problema

Confiabilidad Correcto: cumple con las especificaciones Verificación de programas: probar su corrección Chequeo de tipos Robusto

Confiabilidad Chequeo de tipos Robusto Chequeos estáticos y dinámicos Capacidad de prevenir situaciones Manejo de excepciones

Mantenibilidad Modificabilidad Factoreo Localidad

Modificabiliad: facilidad de introducir cambios 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

Eficiencia Tiempo y Espacio Esfuerzo humano Optimizable

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?

¿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.

¿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.

¿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.

¿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.

¿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