Paradigmas de La Programacion

INSTITUTO TECNOLOGICO DE LÁZARO CÁRDENAS Paradigmas de programación Características de los paradigmas de programación

Views 116 Downloads 6 File size 395KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INSTITUTO TECNOLOGICO DE LÁZARO CÁRDENAS

Paradigmas de programación Características de los paradigmas de programación

Alumno: Ricardo Omar Lugo Vargas Grupo: 82T Programación Lógica y Funcional Osvaldo Lira Díaz

Ciudad y Puerto Lázaro Cárdenas Michoacán 01 de Febrero del 2017

Contenido Resumen............................................................................................................................3 Marco Teórico....................................................................................................................4 Historia de la programación...........................................................................................4 Lenguajes de programación...........................................................................................4 Clasificación de los lenguajes de programación............................................................5 Lenguaje Binario............................................................................................................5 Lenguaje de bajo nivel...................................................................................................5 Lenguaje de alto nivel...................................................................................................6 Desarrollo..........................................................................................................................7 Un paradigma de programación es................................................................................7 Clasificación por paradigmas de programación.............................................................7 Paradigma Imperativo................................................................................................7 Paradigma Declarativo...............................................................................................8 Paradigma Estructurado.............................................................................................9 Paradigma Orientado a Objetos.................................................................................9 Paradigma Funcional................................................................................................10 Paradigma lógico......................................................................................................11 Otros paradigmas y subparadigmas.........................................................................13 Cuadro Comparativo de los Paradigmas de la Programación......................................14 Conclusiones....................................................................................................................15 Bibliografía......................................................................................................................16 Documentos anexos.........................................................................................................17

Resumen En el siguiente trabajo se realizó una investigación sobre los diferentes y más importantes paradigmas de programación en el cual se busca definir y comprender el funcionamiento de cada uno de ellos, además se buscara dar al lector las bases para obtener una idea mas profunda del significado de “paradigmas de la programación”. Como objetivo general se realizara una tabla comparativa entre los paradigmas de esta investigación así como profundizar un poco más en las características y aspectos relevantes de cada uno de ellos.

Marco Teórico Historia de la programación El conjunto de ordenes e instrucciones que se dan al ordenador para que resuelva un problema o ejecute una determinada misión, recibe el nombre de programa. En los primeros tiempos de la informática, la programación se efectuaba en el único lenguaje que entiende el microprocesador: su propio código binario, también denominado lenguaje maquina o código máquina. A principios de los 50 se creó una notación simbólica, denominada código de ensamblaje (ASSEMBLY), que utiliza una serie de abreviaturas para representar las operaciones ADD (sumar), STORE (copiar), etc.. Conforme los ordenadores fueron introduciéndose en el mundo empresarial y académico, aquellos primitivos lenguajes fueron sustituidos por otros más sencillos de aprender y más cómodos de emplear.   

Pascal Basic C

Estos lenguajes, llamados de alto nivel, tienen una estructura que se adapta mas al pensamiento humano que a la forma de trabajar del ordenador. Lenguajes de programación La computadora fue inventada para facilitar el trabajo intelectual. Si el hombre tiene algún problema, el diseñador define el algoritmo que resuelve el problema, el programador lo codifica en un lenguaje de programación, el cual la computadora es capaz de "entender", luego la computadora ejecuta el algoritmo expresado como programa en el lenguaje de programación en cuestión, y entrega al hombre la respuesta. Los lenguajes de programación son el medio de comunicación entre el hombre y la máquina, por lo tanto son una forma de representación del conocimiento.

Un lenguaje de programación es un conjunto de reglas, notaciones, símbolos y/o caracteres que permiten a un programador poder expresar el procesamiento de datos y

sus estructuras en la computadora. Cada lenguaje posee sus propias sintaxis. También se puede decir que un programa es un conjunto de órdenes o instrucciones que resuelven un problema específico basado en un Lenguaje de Programación. Clasificación de los lenguajes de programación Los programadores escriben instrucciones en diversos lenguajes de programación. La computadora puede entender directamente algunos de ellos, pero otros requieren pasos de traducción intermedios. Hoy día se utilizan cientos de lenguajes de computadora. Los Lenguajes de Programación pueden clasificarse de acuerdo con su uso en: 1. Lenguajes desarrollados para el cálculo numérico. Tales como FORTRAN, Mathematica y Matlab. 2. Lenguajes para sistemas. Como C, C++ y ensamblador. 3. Lenguajes para aplicaciones de Inteligencia Artificial. Tales como Prolog, y Lisp. También se pueden clasificar de acuerdo con el tipo de instrucciones de que constan. En esta clasificación se tiene al lenguaje máquina, al lenguaje ensamblador y al lenguaje de alto nivel. Se presenta a continuación una descripción de cada uno de ellos. Lenguaje Binario Una computadora sólo puede entender el lenguaje máquina. El lenguaje de máquina ordena a la computadora realizar sus operaciones fundamentales una por una. Dicho lenguaje es difícil de usar para lar persona porque trabajar con números no es muy cómodo además de que estos números están en formato binario. Lenguaje de bajo nivel Para facilitar y agilizar su labor a los programadores, se buscaron nuevos lenguajes. Cuando abstraemos los opcodes y los sustituimos por una palabra que sea una clave de su significado, se tiene el concepto de Lenguaje Ensamblador. Así, el lenguaje ensamblador representa las acciones del ordenador mediante pequeñas abreviaturas de palabras en inglés. Podemos entonces definir al Lenguaje Ensamblador de la siguiente forma: “Lenguaje Ensamblador consiste en asociar a los opcodes palabras clave que faciliten su uso por parte del programador No obstante, el lenguaje ensamblador requiere de muchas instrucciones para realizar simples operaciones”.

Lenguaje de alto nivel Para acelerar aún más el proceso de programación se desarrollaron los lenguajes de alto nivel, en los que se puede escribir un sólo enunciado para realizar tareas sustanciales. Los lenguajes de alto nivel permiten a los programadores escribir instrucciones que asemejan al inglés cotidiano y contiene notaciones matemáticas de uso común. A partir de FORTRAN, se han desarrollado innumerables lenguajes que siguen el mismo concepto: buscar la mayor abstracción posible y facilitar la vida al programador, aumentando la productividad. Entre estos lenguajes de alto nivel se encuentra el lenguaje C++ que servirá de base para el desarrollo del curso.

Imagen 1.- Representación de ejemplo en diferentes niveles de programación.

Desarrollo Un paradigma de programación es un modelo básico de diseño e implementación de programas. Un modelo que permite desarrollar programas conforme a ciertos principios o fundamentos específicos que se aceptan como válidos. En otras palabras, es una colección de modelos conceptuales que juntos modelan el proceso de diseño, orientan la

forma de pensar y solucionar los problemas y, por lo tanto, determinan la estructura final de un programa. Un paradigma de programación provee (y determina) la visión y métodos de un programador en la construcción de un programa o subprograma. Diferentes paradigmas resultan en diferentes estilos de programación y en diferentes formas de pensar la solución de problemas (con la solución de múltiples “problemas” se construye una aplicación). Los lenguajes de programación son basados en uno o más paradigmas Por ejemplo: Smalltalk y Java son lenguajes basados en el paradigma orientado a objetos. El lenguaje de programación Scheme, en cambio, soporta sólo programación funcional. En cambio Python, soporta múltiples paradigmas.

Clasificación por paradigmas de programación Paradigma Imperativo: describe la programación como una secuencia instrucciones o comandos que cambian el estado de un programa. El código máquina en general está basado en el paradigma imperativo. Su contrario es el paradigma declarativo. En este paradigma se incluye el paradigma procedimental (procedural) entre otros. La Programación Imperativa es la más común y más conocida. Los programas imperativos son un conjunto de instrucciones que le indican a la computadora cómo realizar una tarea .Está representada por C, Basic, Fortran, etc. Se describen las siguientes características acerca de este paradigma.  

Describe cómo debe realizarse el cálculo, no el porqué. Un cómputo consiste en una serie de sentencias, ejecutadas según un control de



flujo explícito, que modifican el estado del programa. Las variables son celdas de memoria que contienen datos (o referencias), pueden

 

ser modificadas, y representan el estado del programa. La sentencia principal es la asignación. Basado en el modelo de cómputo de máquinas de Turing y sobre todo en las



máquinas RAM (registro + acceso aleatorio a memoria) La gran mayoría de procesadores siguen un versión de ese modelo de cómputo + arquitectura Von Neumann.

Ensamblador

El antecesor de los lenguajes imperativos  

Tipos de instrucciones de código máquina: Mover datos de registros a direcciones de memoria y viceversa (con mecanismos

     

de indirección) Operaciones aritméticas sencillas sobre registros Tests y saltos condicionales El ensamblador establece una capa de abstracción: Identificadores de operaciones (opcodes), valores, direcciones de memoria Secciones de datos Directivas, macros

Ejemplo:

Paradigma Declarativo: No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso), sino que describe (declara) cómo es algo. En otras palabras, se enfoca en describir las propiedades de la solución buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solución. Es más complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución de determinados problemas. Los paradigmas declarativos se basan en desarrollar programas especificando o “declarando” un conjunto de proposiciones, condiciones, restricciones, afirmaciones, ecuaciones o transformaciones que caracterizan al problema y describen su solución. A partir de esta información el sistema utiliza mecanismos internos de control que evalúan y relacionan adecuadamente dichas especificaciones, de manera de obtener la solución. No se necesita de la puntualización de los pasos a seguir para alcanzar una solución, ni instrucciones de control que conformen algoritmos. Estos paradigmas permiten utilizar variables para almacenar valores intermedios, pero no para actualizar estados de información. Si bien sus variables se relacionan con posiciones de memoria, no existe el concepto asignaciones destructivas. Las variables son usadas en expresiones, funciones o procedimientos, se unifican con diferentes valores, pero siempre con transparencia referencial, es decir, sin efecto de lado.

Como estos paradigmas especifican la solución sin indicar cómo construirla, en principio, eliminan la necesidad de probar que el valor calculado es el valor solución. En otras palabras, se basan en “qué” es necesario especificar.

Ejemplo:

Paradigma Estructurado: la programación se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre sí. Además la programación se controla con secuencia, selección e iteración. Permite reutilizar código programado y otorga una mejor compresión de la programación. Es contrario al paradigma inestructurado, de poco uso, que no tiene ninguna estructura, es simplemente un “bloque”, como por ejemplo, los archivos batch (.bat). Paradigma Orientado a Objetos: está basado en la idea de encapsular estado y operaciones en objetos. En general, la programación se resuelve comunicando dichos objetos a través de mensajes (programación orientada a mensajes). Se puede incluir aunque no formalmente- dentro de este paradigma, el paradigma basado en objetos, que además posee herencia y subtipos entre objetos. Ej.: Simula, Smalltalk, C++, Java, Visual Basic .NET, etc. Su principal ventaja es la reutilización de códigos y su facilidad para pensar soluciones a determinados problemas. Paradigma Funcional: este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace

hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones. La Programación Funcional es la que emplea un lenguaje matemáticamente elegante, empleando principalmente funciones aritméticas y pertenece también al grupo de lenguajes declarativos; algunos ejemplos son Haskell, Miranda y Scheme. La principal base teórica del paradigma funcional es el cálculo lambda (lambda calculus en inglés) desarrollado en la década de los 30 por Alonzo Church como modelo de computación con el mismo poder computacional que una Máquina de Turing. El cálculo lambda proporciona una notación muy simple (pero bastante críptica al mismo tiempo) de definición de funciones matemáticas. Sólo son necesarias tres reglas sintácticas para definir las expresiones del cálculo lambda Ejemplo:

La abstracción sirve para construir nuevas funciones matemáticas en base a expresiones previamente definidas. La aplicación, como su nombre indica, denota la aplicación de una función. Veamos algunos ejemplos simplificados (necesitaríamos algo más de tiempo para explicar la versión real). Una función es una construcción matemática que acepta una entrada y produce una salida.

Paradigma lógico: se basa en la definición de reglas lógicas para luego, a través de un motor de inferencias lógicas, responder preguntas planteadas al sistema y así resolver los problemas. Ej.: prolog. El programador especifica hechos y propiedades del problema, no como debe resolverse; es el sistema quién debe buscar la solución, usando:  

Hechos o asertos y reglas para representar la información Deducciones para responder consultas, y generar nuevos hechos, a partir de sus componentes lógicos y secuencias de control del sistema, automatizando así la



corrección del programa. Verificación de las transformaciones, evaluadas partiendo de metas. Si se prueba que se ajustan a hechos o se deducen de alguna regla, entonces sus antecedentes



se convierten en nuevas metas. La solución final resulta de aplicar resultados intermedios de las variables de la meta inicial, usando un proceso iterativo, que concluye cuando las sub-metas son probadas.

Robert Kowalski crea el paradigma lógico, basado en las cláusulas de Horn, registradas en formato restrictivo, como un subconjunto de la Lógica de Predicados de primer orden. Desde el Imperial College de Londres uso tal formato restrictivo, provisto de una conclusión por cláusula, expresando mediante notación causal, proposiciones condicionales que combinan variables, constantes y expresiones de la forma: Casado ( x , y ) SI esposo ( y , x ) o Esposa (x , y )

La programación lógica además de ser técnica que expresa adecuadamente hechos y reglas que definen un problema; es una estructura de componentes lógicos de un algoritmo, donde el sistema provee la secuencia de control y que al separarse de la lógica, el programa migra a un conjunto de declaraciones formales de especificaciones correctas por definición, así la eficiencia del programa queda probada automáticamente. La evaluación empieza definiendo una meta, luego probando que esta se ajusta a un hecho o se deduce de alguna regla. Si la transformación existente es verificada por sus

antecedentes, entonces estos se convierten en nuevas metas a equipararse con hechos o bien, resolverse vía otras reglas. Y así, el proceso termina cuando todas las sub-metas han sido probadas y la solución final se determina aplicando a las variables de la meta inicial, los resultados intermedios obtenidos. Si se selecciona una regla, existirá tal regla para alcanzar la solución, que se logrará si existe un conjunto apropiado de reglas y sustituciones que aplicadas, generaran un conjunto de reglas base que permitiran deducir las metas desde hechos conocidos. El problema es definir el mecanismo de búsqueda adecuado para seleccionar las reglas, para ello: 

Busca primero en profundidad con un algoritmo de BackTracking ó Método de resolución, el cual, cuando requiere elegir una regla, selecciona la primera que



encuentra. Si la regla elegida conduce a un punto muerto, selecciona la segunda y así hasta que hayan sido probadas todas las alternativas.

El Paradigma Lógico se basa en la creación de reglas por parte del programador, que luego serán aplicadas para resolver ciertos problemas dados y en los que se pueden destacar los siguientes aspectos:      

Ejecución: Meta que intenta probarse a partir de los hechos y reglas. Aplicación de reglas por backtracking: Método de resolución. Soporte de la información: Lista. Lógica: Asertos y reglas. Control: Mecanismo de resolución. Estructuras de datos: Constantes, variables y listas.

Otros paradigmas y subparadigmas son: paradigma orientado al sujeto, paradigma reflectante, programación basada en reglas, paradigma basado en restricciones, programación basada en prototipos, paradigma orientado a aspectos, etc.

Paradigma

Función

Año

Promotor

Imperativo

Describe cómo debe realizarse el cálculo, no el porqué, describen sentencias que modifican el estado de un programa

1950

Von Neuma

Declarativo

describe la lógica de computación necesaria para resolver un problema sin describir un flujo de control

1973

Robert Pasero y Phili

Estructurado

Bloques que pueden comunicarse o no entre sí.

1960

Orientado a objetos

Objetos se agrupan en clases, clases de agrupan en jerarquías

1970

Funcional

Basado en los modelos de cómputo cálculo lambda (Lisp, Scheme) y

1930

Bohm y Jaco

Ole-Johan Dahl y K

Alonso Chu

lógica combinatoria (familia ML, Haskell)

Lógico

Basado en la lógica de predicados de primer orden

Cuadro Comparativo de los Paradigmas de la Programación Conclusiones Existen muchos lenguajes de programación desde que se creó la computadora para resolver diferentes tipos de problemas con los que el ser humano se ha topado. Los paradigmas de programación surgieron para poder facilitar los diferentes y grandes problemas que existen en la programación y la computación. Cada uno de los paradigmas mencionados anteriormente tiene una manera de trabajar (resolver los problemas) a partir de ciertas características únicas entre ellos, existen grandes diferencias como las que algunos son más difíciles de comprender que otros, unos utilizan la elaboración de algoritmos para su resolución mientras que otros aplican la contestación de cuestionamientos para obtener el resultado a un esquema especifico.

Robert Kowa

Bibliografía http://www.acta.es/medios/articulos/informatica_y_computacion/034083.pdf http://www.iqcelaya.itc.mx/~vicente/Programacion/Lenguajes.pdf http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/4/informatica_4.pdf http://labsys.frc.utn.edu.ar/ppr-2009/Unidad%20I%20-%20POO%20Avanzada/Apunte/Unidad %20I%20-%20POO%20Avanzada.pdf https://edumin-pdp-fb6.wikispaces.com/file/view/NT5-Programacion+logica-1.pdf https://edumin-pdp-fb6.wikispaces.com/file/view/NT5-Programacion+logica-1.pdf http://es.slideshare.net/JFREDYOLAYARAMOS/paradigma-logico?next_slideshow=1 http://es.slideshare.net/JFREDYOLAYARAMOS/paradigma-imperativo-39302522 http://es.slideshare.net/mayibarra10/paradigmas-de-programacin-14133043 https://www.infor.uva.es/~cvaca/asigs/docpar/imperativo.pdf https://rua.ua.es/dspace/bitstream/10045/4032/1/tema02.pdf

Documentos anexos