Carretera Acuaco - Zacapoaxtla Km. 8, Colonia Totoltepec, C. P. 73680, Zacapoaxtla, Puebla.
Tel/Fax 01 (233) 317 50 00, e-mail: tecnologico@itsz.edu.mx www.itsz.edu.mx Hacia la excelencia con calidez humana y calidad integral Instituto Tecnolgico Superior De Zacapoaxtla Divisin En Ingeniera En Informtica Catedrtico: Dr. Rigoberto Jurez Salazar Asignatura: Fundamentos de Programacin
Los diferentes Paradigmas de Programacin y sus caractersticas principales Antonio Rafael Hernndez Huerta Un paradigma de programacin es una propuesta tecnolgica que es adoptada por una comunidad de programadores cuyo ncleo central es incuestionable en cuanto a que nicamente trata de resolver uno o varios problemas claramente delimitados. Es un estilo de programacin empleado. La resolucin de estos problemas debe suponer consecuentemente un avance significativo en al menos un parmetro que afecte a la ingeniera de software. Tiene una estrecha relacin con la formalizacin de determinados lenguajes en su momento de definicin. Un paradigma de programacin est delimitado en el tiempo en cuanto a aceptacin y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente. Un paradigma provee (y determina) la visin y mtodos de un programador en la construccin de un programa o subprograma. Diferentes paradigmas resultan en diferentes estilos de programacin y en diferentes formas de pensar la solucin de problemas (con la solucin de mltiples problemas se construye una aplicacin). Los lenguajes de programacin son basados en uno o ms paradigmas. Por ejemplo: Smalltalk y Java son lenguajes basados en el paradigma orientado a objetos. El lenguaje de programacin Scheme, en cambio, soporta solo programacin funcional. En cambio Python, soporta mltiples paradigmas. Algunos de estos paradigmas son: Paradigma imperativo o por procedimientos Paradigma funcional Paradigma lgica Paradigma declarativo Paradigma orientada a objetos Paradigma dinmica Carretera Acuaco - Zacapoaxtla Km. 8, Colonia Totoltepec, C. P. 73680, Zacapoaxtla, Puebla. Tel/Fax 01 (233) 317 50 00, e-mail: tecnologico@itsz.edu.mx www.itsz.edu.mx Hacia la excelencia con calidez humana y calidad integral
2
1. Introduccin
Desde las pocas coloniales, la mayora de los problemas matemticos tenan limitaciones para poder llegar a un resultado exacto o tan solo aproximado, eso fue muy malo, ya que si las personas queran ser equitativas no podan dividir o repartirse todo por igualdad. Tambin se habla de las empresas y trabajos que no tenan un rpido y efectivo modo de resolver sus operaciones fciles y difciles. Aunque si tendran resultados, era muy desgastante y lento llegar a ellos. La administracin de las empresas estaba no realmente muy bien organizada, haba unos cuantos pequeos detalles que despus se iran resolviendo gracias a la invencin de la computadora y de la computadora moderna, que hoy en da es muy efectiva para la organizacin de empresas y eventos. Cuando todo se moderniz, le atribuimos todo a la invencin de la Computadora y de sus diferentes programas para la facilitacin de organizacin, resolucin de problemas matemticos y ahora poder llevar a todas partes informacin guardada en dispositivos extrables y de fcil uso. Hoy parece que la vida se nos ha resuelto mucho gracias a la invencin de las computadoras porttiles, tablets y celulares que podemos llevar a cualquier lado y conectarlas a Internet e investigar sobre cualquier tema en especfico. Podemos buscar entretenimiento e informacin, lo que queramos. Aunque todo parece bueno, an nos falta mucho por investigar, conocer y crear para todava resolver a lo que an no encontramos solucin, como el ltimo nmero decimal de PI, o la raz cuadrada de 2 o problemas de razonamiento matemtico. Para todo ello, es que los informticos estudian y crean programas para resolver todo lo que manualmente no podramos hacer.
3
2. Desarrollo PARADIGMA DE PROGRAMACIN Un paradigma de programacin es una propuesta tecnolgica que es adoptada por una comunidad de rogramadores cuyo ncleo central es incuestionable en cuanto a que nicamente trata de resolver uno o varios problemas claramente delimitados. Es un estilo de programacin empleado. La resolucin de estos problemas debe suponer consecuentemente un avance significativo en al menos un parmetro que afecte a la ingeniera de software. Tiene una estrecha relacin con la formalizacin de determinados lenguajes en su momento de definicin. Un paradigma de programacin est delimitado en el tiempo en cuanto a aceptacin y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente. El paradigma de programacin que actualmente es el ms usado es la orientacin a objetos. El ncleo central de este paradigma es la unin de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto". Tradicionalmente datos y procesamiento se han separado en reas diferente del diseo y la implementacin de software. Esto provoc que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptacin a los cambios y escalabilidad. Con la orientacin a objetos y caractersticas como el encapsulado, polimorfismo o la herencia se permiti un avance significativo en el desarrollo de software a cualquier escala de produccin. Un paradigma de programacin representa un enfoque particular o filosofa para disear soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los elementos involucrados en un problema, as como en los pasos que integran su solucin del problema, en otras palabras, el cmputo. La orientacin a objeto parece estar ligada en sus orgenes con lenguajes como Lisp y Simula aunque el primero que acu el ttulo de programacin orientada a objetos fue Smalltalk.
A continuacin se presentan los diferentes paradigmas de programacin y sus caractersticas que los conforman:
4
Programacin imperativa Describe la programacin en trminos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cmo realizar una tarea. La implementacin de hardware de la mayora de computadores es imperativa; prcticamente todo el hardware de los computadores est diseado para ejecutar cdigo de mquina, que es nativo al computador, escrito en una forma imperativa. Los lenguajes imperativos de alto nivel usan variables y sentencias ms complejas, pero an siguen el mismo paradigma. Las recetas y las listas de revisin de procesos, a pesar de no ser programas de computadora, son tambin conceptos familiares similares en estilo a la programacin imperativa; donde cada paso es una instruccin. Algunos lenguajes imperativos BASIC C D Fortran Pascal Perl PHP Lua Java Python Go
Programacin funcional En ciencias de la computacin, la programacin funcional es un paradigma de programacin declarativa basado en la utilizacin de funciones aritmticas que no maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en contraste con el estilo de programacin imperativa, que enfatiza los cambios de estado. La programacin funcional tiene sus races en el clculo lambda, un sistema formal desarrollado en los aos 1930 para investigar la definicin de funcin, la aplicacin de las funciones y la recursin. Muchos lenguajes de programacin funcionales pueden ser vistos como elaboraciones del clculo lambda. Los lenguajes de programacin funcional, especialmente los que son puramente funcionales, han sido enfatizados en el ambiente acadmico principalmente y no tanto en el desarrollo de software comercial. La programacin funcional tambin es utilizada en la industria a travs de lenguajes de dominio especfico como R (estadstica), Mathematica (matemticas simblicas), J y K (anlisis financiero), F# en Microsoft.NET y XSLT (XML). Lenguajes de uso especfico usados comnmente como SQL y Lex/Yacc, utilizan algunos elementos de programacin funcional, especialmente al procesar valores mutables. Las hojas de clculo tambin pueden ser consideradas lenguajes de programacin funcional.
5
Programacin lgica La programacin lgica es un tipo de paradigmas de programacin dentro del paradigma de programacin declarativa. El resto de los subparadigmas de programacin dentro de la programacin declarativa son: programacin funcional, programacin con restricciones, programas DSL (de dominio especfico) e hbridos. La programacin funcional se basa en el concepto de funcin (que no es ms que una evolucin de los predicados), de corte ms matemtico. La programacin lgica gira en torno al concepto de predicado, o relacin entre elementos. El lenguaje de programacin lgica por excelencia es Prolog, que cuenta con diversas variantes. La ms importante es la programacin lgica con restricciones, que posibilita la resolucin de ecuaciones lineales adems de la demostracin de hiptesis.
Programacin declarativa La Programacin Declarativa, en contraposicin a la programacin imperativa es un paradigma de programacin que est basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solucin. La solucin es obtenida mediante mecanismos internos de control, sin especificar exactamente cmo encontrarla (tan slo se le indica a la computadora qu es lo que se desea obtener o qu es lo que se est buscando). No existen asignaciones destructivas, y las variables son utilizadas con Transparencia referencial. Existen varios tipos de lenguajes declarativos: Los lenguajes lgicos, como Prolog. Los lenguajes algebraicos, como Maude y SQL
Programacin orientada a objetos La programacin orientada a objetos es un paradigma surgido en los aos 70, que utiliza objetos como elementos fundamentales en la construccin de la solucin. Un objeto es una abstraccin de algn hecho o ente del mundo real, con atributos que representan sus caractersticas o propiedades, y mtodos que emulan su comportamiento o actividad. Todas las propiedades y mtodos comunes a los objetos se encapsulan o agrupan en clases. Una clase es una plantilla, un prototipo para crear objetos; en general, se dice que cada objeto es una instancia o ejemplar de una clase. La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa los objetos en sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, cohesin, abstraccin, polimorfismo, acoplamiento y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe una gran variedad de lenguajes de programacin que soportan la orientacin a objetos. Lenguajes orientados a objetos ABAP -> SAP Lenguaje orientado a eventos ABL Lenguaje de programacin de OpenEdge de Progress Software ActionScript ActionScript 3 Ada C++ C# Clarion Clipper D Object Pascal (Embarcadero Delphi) Gambas Genie Harbour Eiffel Fortran 90/95 Java JavaScript Lexico Objective-C Ocaml Oz R Perl PHP PowerBuilder Python Ruby Self Smalltalk Magik (SmallWorld) Vala VB.NET Visual FoxPro Visual Basic 6.0 Visual DataFlex Visual Objects XBase++ Lenguaje DRP Scala
7
Programacin dinmica En informtica, la programacin dinmica es un mtodo para reducir el tiempo de ejecucin de un algoritmo mediante la utilizacin de subproblemas superpuestos y subestructuras ptimas, como se describe a continuacin. El matemtico Richard Bellman invent la programacin dinmica en 1953 que se utiliza para optimizar problemas complejos que pueden ser discretizados y secuencializados. Una subestructura ptima significa que se pueden usar soluciones ptimas de subproblemas para encontrar la solucin ptima del problema en su conjunto. Por ejemplo, el camino ms corto entre dos vrtices de un grafo se puede encontrar calculando primero el camino ms corto al objetivo desde todos los vrtices adyacentes al de partida, y despus usando estas soluciones para elegir el mejor camino de todos ellos. En general, se pueden resolver problemas con subestructuras ptimas siguiendo estos tres pasos: 1. Dividir el problema en subproblemas ms pequeos. 2. Resolver estos problemas de manera ptima usando este proceso de tres pasos recursivamente.
3. Usar estas soluciones ptimas para construir una solucin ptima al problema original. En resumen, la programacin hace uso de: Subproblemas superpuestos Subestructuras ptimas Memoizacin
8
3. Conclusiones
Despus de haber ledo todos estos diferentes tipos de paradigmas, podemos percatarnos que tenemos muchas posibilidades y formas para la programacin. Tenemos para poder resolver ecuaciones aritmticas, geomtricas, algebraicas y de todo tipo que existen, adems de problemas de lgica. Ya contamos con la facilidad de crear nuestros propios programas para resolver nuestros problemas en la vida, desde poder organizar alfabticamente nombres, hasta ecuaciones y como calcular una derivada. Gracias a todo esto, es posible la programacin y la informtica.
9
4. Referencias
J.W. Lloyd, Foundations of Logic Programming, Springer-Verlag, 1991.
C. Hogger, Clarendon Press, Essentials of Logic Programming, Oxford, 1990.
J.H. Gallier, Logic for Computer Science: Foundations of Automatic Theorem Proving, John Wiley and Sons, 1987.
J. Cuena, Lgica Informtica, Editorial Alianza, 1985.
P. Julin, M. Alpuente, Programacin Lgica. Teora y Prctica, Pearson Prentice Hall, 2007.