Paradigmas de Programación

Slides:



Advertisements
Presentaciones similares
Prof. Ing.Maria Rosa Damaso Rios
Advertisements

Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
1.3. PROGRAMACION PARALELA
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
LENGUAJES DE PROGRAMACIÓN Y ALGORITMOS
TEMA 3 Parte A Lenguajes de programación. Criterios de clasificación según su nivel de abstracción según la forma de ejecución según el paradigma de programación.
Facultad de Ciencias de la Computación
Ing. Enrique Meneses. Son las instrucciones detalladas que controlan el funcionamiento de un sistema de computación. Funciones: 1. Administrar los recursos.
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
Lenguajes de programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Lenguajes de programación
Introducción a la Programación
Profesor: Ing. Matías Vallerga Ayudante: Lic. Cristian Kenny
Programación 1 Introducción
INTRODUCCIÓN A LA PROGRAMACIÓN
Pablo Cesar Tapia Catacora
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
TRADUCTOR DE UN PROGRAMA
Lenguaje C.
Semana 5 Subprogramas..
M.C. Meliza Contreras González
Computadoras analógicas Miden magnitudes físicas que se distribuyen en escala continua como pueden ser la temperatura y la presión. Este tipo de computadoras.
Estructura de un programa C
Introducción a la Programación. Lenguaje de Máquina.
INTRODUCCIÓN A LA COMPUTACIÓN
Programación de Memoria Compartida
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.
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
SOFTWARE DE PROGRAMACIÓN
Lenguajes de programación
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
Historia de los lenguajes de programación
FUNDAMENTOS DE PROGRAMACIÓN ISC. GABRIEL ZEPEDA MARTÍNEZ EST. ABRAHAM F. MACHUCA VAZQUEZ.
 Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas.
1.4 Traductor y Su estructura
Procesadores de Lenguajes
MÁQUINAS MULTINIVEL NIVEL 5 Lenguajes de alto nivel
LENGUAJES DE PROGRAMACIÓN
U1. Introducción a la programación
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
INTEGRANTES LINA JIMÉNEZ LOZANO ROSA ELENA REINA CARLOS VILLADIEGO MARIANO SEPULVEDA.
PROGRAMACIÓNPROGRAMACIÓN FCC-BUAP. 1. INTRODUCCIÓN A LA PROGRAMACIÓN.
M.C. Juan Carlos Olivares Rojas
Estructuras de Datos y Algoritmos
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
 Un LENGUAJE DE PROGRAMACION es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas al cabo por maquinas como las computadoras.
Tema 6. Introducción a la programación
Estructura de un programa C. 1 Lenguajes de Programación 1.- Lenguaje de alto nivel 2.- Lenguaje de bajo nivel (ensamblador) 3.- Lenguaje de máquina.
Ing. Rodolfo Junior Miranda Saldaña CIP: Chimbote- 2013
Lenguajes de programación
Tipo de Errores.
Lenguajes de Programación
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Metodología de la programación
“PARADIGMAS Y LENGUAJES DE PROGRAMACION”
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
HISTORIA DE LENGUAJES DE PROGRAMACIÓN
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
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
LENGUAJES DE 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.
Curso: Programación I Grado: 4to. Bachillerato Prof. Gerardo Barrientos.
Aspectos de diseñó de los lenguajes de programación
Fundamentos de Programación Unidad I Conceptos Básicos.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
Transcripción de la presentación:

Paradigmas de Programación Prof. Wilmer Pereira Universidad Católica Andrés Bello Universidad Simón Bolívar

Primeros pasos en los lenguajes de alto nivel El primer computador (1940) tenía el poder cálculo de una calculadora actual. No fue ENIAC sino COLOSSUS (1938). Primer lenguaje de alto nivel FORTRAN (IBM 1957) y LISP (John McCarthy en 1958) con traducción directa del lenguaje alto nivel al lenguaje de máquina. Entre los lenguajes lógicos el principal representante es Prolog desarrollado en Marseille (A. Colmerauer & P. Roussel). Comenzo como un programa para procesamiento de lenguaje natural. Fue la base para el proyecto japones de 5ta generación de computadores con Prolog como lenguaje de máquina (decada de los 80). También en Francia se desarrolló el lenguaje funcional ML que generó CAML La primera versión se creó en 1987 por Ascander Suarez. Haskell es un versatil lenguaje funcional desarrollado en las universidades de Glasgow y Yale. Es un proyecto que pretende conjugar todas las tendencias en programación funcional.

¿Por qué hay tantos lenguajes? Evolución de las instrucciones o primitivas de uso: Ciclos estilo lenguajes ensamblador (goto) Ciclos estructurados (while, repeat) Orientación a objetos Programación concurrente ... Especificidad en función a la aplicación a programar: C como lenguajes cercano al bajo nivel LISP para manipulación de símbolos Prolog para aplicaciones con relaciones lógicas en la data Preferencias personales: Recursión vs iteración Apuntadores o no ...

¿Qué hace a un lenguaje exitoso? Poder expresivo: aunque todos tienen el poder de computo de una Máquina de Turing ... hasta el lenguaje ensamblador Facilidad de uso para los novatos: LOGO es intencionalmente sencillo Para algunos BASIC y PASCAL también lo son ... Estandarización: Aunque los diferentes desarrolladores agregan ciertas características casi todos respetan el mínimo del estandar. Código abierto: Casi todos los lenguajes tiene al menos un compilador o interpretador Buenos compiladores: FORTRAN es reconocido en este aspecto Apadrinamiento: ADA por ejemplo fue impulsado, sin mucho, exito por el departamento de defensa. En cambio JAVA tuvo exito siendo una propuesta de una compañía privada ...

Tipos de Lenguajes ... Inicialmente se anteponen los declarativos vs los imperativos. Los declarativos se consideran de más alto nivel … … pero los imperativos ofrecen mejor rendimiento Imperativos dan énfasis al como: Estructurados bajo el modelo Von Neumann (C) Orientados a Objetos inspirados en simula (JAVA) Orientados a Strings con énfasis en prototipado rápido (PERL) Declarativos se centran en el que: Funcionales inspirado en lambda cálculo (HASKELL) Lógicos provenientes del cálculo de predicado simplificado (PROLOG) Flujos de datos inherentemente concurrente (VAL) CONCURRENTES: Estos lenguajes son independiente de la clasificación anterior En muchos casos se estila tener librerías que permiten desarollar aplicaciones concurrentes en lenguajes secuenciales También depende de la arquitectura (Cluster, Grid, ...)

Máximo común divisor ... PROLOG: mcd(A,B,X) :- A @> B, C is A - B, mcd(C,B,X). mcd(A,B,X) :- B @> A, C is B - A, mcd(A,C,X). mcd(A,A,A). HASKELL: mcd :: Int -> Int -> Int mcd a b | (a == b) = a | (a > b) = mcd (a-b) b | otherwise = mcd a (b-a) C: #include <stdio.h> #include <stdlib.h> int gcd (int a, int b) { printf("El MCD de a = %d y b = %d es ",a,b); while (a!=b)if (a>b) a=a–b; else b=b-a; printf("%d.\n",a); } main (int argc, char **argv) { gcd(atoi(argv[1]),atoi(argv[2]));

¿ Por qué estudiar diferentes lenguajes de programación? Entender aspectos obscuros ... herencia múltiple, union, etc. Esto hace más fácil comprenderlo cuando se desean utilizar Saber seleccionar entre diferentes maneras de escribir un proceso o instrucción para generar código más eficiente Hacer uso eficiente de depuradores (debuggers), enlazadores. Saber ciertos detalles permite descubrir errores dificiles. Usar buenas prácticas o funcionalidades en lenguajes que no las ofrecen. Por ejemplo, armar código estructurado en FORTRAN o usar iteradores. Hacer buen uso de la tecnología de lenguajes

Filosofías de traducción ... Los lenguajes de programación pueden ser compilados, interpretados o bajo un paradigma de máquina virtual Compilación pura: El código fuente es traducido directamente a lenguaje de máquina El programa objeto opera indepedientemente sobre el procesador Son más eficiente a cambio de un costo previo de procesamiento Interpretación pura: La traducción se realiza paso a paso, ejecutandose directamente sobre el procesador Cada línea es analizada y ejecutada con sus entradas y salidas Los programas tienen menos velocidad de ejecución pero son más flexible en el diagnóstico

Compilación + Interpretación El código fuente es traducido a una representación intermedia de más bajo nivel El código intermedio es interpretado por una máquina que ejecuta sobre el procesador La calidad de la traducción y la expresividad del lenguaje intermedio combinado con la implantación eficiente de la máquina virtual, permite un buen compromiso: velocidad de ejecución y velocidad de desarrollo

Compilación ... Código fuente Compilador Entrada Código Objeto Salida

Interpretación ... Código fuente Interpretador Salida Entrada

Compilación + Interpretación ... Código fuente Compilador Código Intermedio Interpretador Salida Entrada

Compilación + Librería + Enlazador ... Código fuente En un lenguaje puramente compilado, el enlazador resuelve las dependencias estáticamente. Compilador En un lenguaje puramente interpretado, el enlazador resuelve las dependencias dinámicamente, agregando las librerías durante la ejecución. Código fuente incompleto Enlazador Código objeto Librerías

Preprocesador ... Código fuente Expande macros Enriquece código fuente Elimina código condicionado Preprocesador Código fuente modificado Compilador Código objeto

¿Cómo escribir un compilador del lenguajes con el propio? Niklaus Wirth adaptó para distribuir PASCAL una estrategia conocida como bootstrapping BOOTSTRAPPING: En vez de escribir compilador de código fuente a ensamblador, escribir un interpretador que es más sencillo Ahora escribir un compilador del lenguaje X en X Correr el compilador en el intrepretador dandole como entrada el compilador anterior El programa objeto opera indepedientemente sobre el procesador son más eficiente a cambio de un costo previo de procesamiento Técnica de PASCAL: Compilador para PASCAL escrito en PASCAL que genera p-code Compilador para PASCAL traducido en p-code Interpretador de p-code escrito en PASCAL Ahora basta con traducir ese interpretador en un lenguaje local ...