Download Paradigmas de la programacion
Document related concepts
Transcript
“Paradigmas de la Programación: JavaScript y Python” Ana Lilia Careaga Mercadillo, Agosto 2010 Abstract The word paradigm refers to a dynamic field or "world” of concepts —such that it represents a union between intelligent inquiry and some particular kind of world view. The term has been used in linguistics and science to describe distinct concepts. It comes from Greek"παράδειγμα" (paradeigma), that means "pattern, example, sample” From the 1960s onward, the word has referred to thought pattern in any Scientific discipline or other epistemological context. The historian of science Thomas Kuhn gave paradigm its contemporary meaning when he adopted the word to refer to the set of practices that define a scientific discipline at any particular period of time and defines it in his book “ The Structure od Scientific Revolutions” as “what is to be observed and scrutinized “ and “the kind of questions that are supposed to be asked and probed for answers in relation to this subject “.A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program (such as objects, functions, variables, constraints, etc.) and the steps that compose a computation (assignment, evaluation, continuations, data flows, etc.). A programming language can support multiple paradigms. A multi-paradigm programming language is a programming language that supports more than one programming paradigm, as Python and JavaScript.In this article I will describe the concept of programming paradigms and will give a short description of JavaScript and Python. ------------------------------------------------------------------------------------------------------------Introducción Hace cincuenta años hubiera resultado extraño usar la palabra paradigma. Si en ese tiempo se le hubiera pedido a un profesional una definición de ello, muy difícilmente hubiera dado una respuesta satisfactoria. Por el contrario en estos tiempos es común hablar de paradigmas; sin embargo, aun presenta muchas confusiones. La palabra paradigma procede del griego paradeigma, que significa “ejemplo” o “modelo”. En principio, se aplicaba a la gramática (para definir su uso en un cierto contexto) y a la retórica (para referirse a una parábola o fábula). A partir de la década de los ’60tas, comenzó a utilizarse para definir a un modelo o patrón en cualquier disciplina científica o contexto epistemológico. Página 1 Thomas S. Kuhn (1962) 1 en su libro “La Estructura de las Revoluciones Científicas”, considera que el paradigma es un ejemplo o un esquema básico de interpretación de la realidad, que ha sido verificado por un proceso de investigación científica, es decir aplicando leyes, teorías, modelos, métodos y técnicas; aplicando e instrumentando; y además, sobre la base de este ejemplo se proporcionan modelos científicos. Si un investigador comparte un paradigma con otro es obvio que ambos estarán regidos por los mismos patrones en la práctica científica. Por otra parte, Adam Smith 2 en “Los Poderes de la Mente”, precisa que el paradigma es “un conjunto compartido de suposiciones.” De esta definición podemos desprender que un paradigma ayudará a crear una visión del futuro. Cuando estamos en medio de un paradigma, es difícil imaginar cualquier otro paradigma. Pero cuando un paradigma ya no puede satisfacer las necesidades de una ciencia (por ejemplo, ante nuevos descubrimientos que invalidan conocimientos previos), es sucedido por otro. Se dice entonces que hay un cambio de paradigma, el cual es algo dramático para las ciencias, ya que éstas aparecen como estables y maduras. Sabemos que la ciencia es analítica y especializada, es clara y precisa….verificable y comunicable. Todo conocimiento científico es sistemático y sobre todo, metódico. Sabemos que el método de la ciencia es el método científico el cual se basa en factores fundamentales como la objetividad. Por otro lado, un paradigma científico establece aquello que se debe observar; el tipo de interrogantes que hay que formular para hallar las respuestas en relación al objetivo; cómo deben estructurarse dichos interrogantes y cómo deben interpretarse los resultados de la investigación científica. ¿Entonces…cómo es que pueden existir estos cambios de paradigmas en la ciencia? La verdad es que, desde mi punto de vista, en la actualidad, después de varios siglos bajo el imperio del método, hipnotizados aún por el discurso Moderno 3 , estamos comenzando, - aunque todavía tímidamente - a sacudirnos el yugo de este hechizo metódico, a navegar en los mares de la incertidumbre y la creatividad. Pero el precio que tenemos que pagar para ello incluye la renuncia a la ilusión de un saber garantizado y absoluto. Esta no es una tarea sencilla, por el contrario requiere de la aceptación de nuestra finitud, de nuestra limitación, del poco alcance de nuestro conocer. Sin embargo, esa es la única forma de abrir las puertas a la invención, a la imaginación, al azar y a la diferencia. En nuestros días se acepta que han aparecido nuevos paradigmas como el de la Teoría de la Complejidad con sus ramificaciones de la Teoría del Caos y de los Fractales, el de la Termodinámica del No Equilibrio y el de la Mecánica Cuántica, ya que éstas han 1 Historiador de la Ciencia americano .Kuhn, T. S. (1970): The Structure of Scientific Revolutions, Chicago, University of Chicago Press 2 Economista y flósofo escosés. “Power of the Mind”, New York, Ballantine Books 3 La Edad Moderna es el periodo en que triunfan los valores de la razón, el progreso y la comunicación, identificándose con los valores de la época clásica, y es el período donde las ciencias se desarrollan notablemente. La postmodernidad puede ser entendida como un conjunto de fenómenos e ideas que emergen desde la segunda mitad del siglo XX, y que configuran el mundo de forma determinante a principios del siglo XXI se opone al discurso Moderno centrándose en la “reconstrucción etimológica de los relatos con los que la Modernidad se cuenta a si misma” Página 2 modificado sustancialmente el concepto de certeza científica como sinónimo de ajuste a la realidad. El mismo concepto de realidad comenzó a someterse a un más profundo escrutinio lingüístico y sobre todo filosófico. La indeterminación cuántica introducida por Heisenberg y la incertidumbre de la complejidad advertida por Lorenz, Poincaré y Prigogine avivó la disquisición filosófica sobre lo que se entiende por realidad y sobre su existencia o no 4 . La filosofía positivista y sus vertientes como el instrumentalismo, el pragmatismo y el convencionalismo 5 , sostienen o bien la no existencia de la realidad o la imposibilidad de su conocimiento. Los adherentes a esta forma de pensar consideran que las teorías científicas sólo constituyen hipótesis de trabajo que se utilizan como herramientas para la investigación mientras no presenten contradicciones o se muestren inoperantes. Puede decirse que ambos paradigmas cambiaron el pensamiento científico haciéndolo mas cauteloso y también, ¿porqué no?, menos arrogante. Renunciar a la idea de un método único que nos conduzca siempre a la verdad y que la garantice no implica de ninguna manera que estamos dispuestos a desistir de la utilización de instrumentos o dispositivos, técnicas y procedimientos. Sólo implica que no antepondremos el método a la experiencia, que no creemos que haya un solo camino o un solo dispositivo adecuado para pensar, explorar, inventar...conocer. Sólo estamos ampliando nuestras posibilidades… En el contexto de los paradigmas de programación, se establece que existen diferentes formas y estilos de programar que representan un enfoque particular o filosofía para la construcción del software. No es mejor un lenguaje de programación que otro sino que cada uno tiene sus ventajas y sus inconvenientes. A continuación expondré los paradigmas más importantes de la programación, haciendo un énfasis particular en dos lenguajes de programación: Javascript y Python. 4 Citado por González Álvarez Joaquín en “ Temas Escogidos sobre Física y el Concepto de Realidad” UNAM El pragmatismo rechaza la existencia de verdades absolutas, o lo que es lo mismo, significados invariables; las ideas son provisionales y están sujetas al cambio a la luz de la investigación futura- El instrumentalismo es una posición filosófica que sostiene que las teorías y modelos científicos no pretenden o no deben intentar representar la realidad, sino que son o deben ser instrumentos para manejarse en el mundo .El convencionalismo es una corriente de filosofía del lenguaje que defiende la arbitrariedad de las palabras. 5 Página 3 -------------------------------------------------------------------------------------------------------------Paradigmas de la Programación Edward Sapir 6 , antropólogo y lingüista americano define al lenguaje como “un método exclusivamente humano, y no instintivo, de comunicar ideas, emociones y deseos por medio de un sistema de símbolos producidos de manera deliberada”.Un lenguaje formal no sólo consta de “palabras”, sino también de su pronunciación y los métodos para combinar las palabras en frases y oraciones. Las combinaciones posibles deben respetar un conjunto de reglas sintácticas establecidas, a lo que se le denomina Sintaxis y además deben tener determinado sentido para poder ser comprendidas por un grupo humano en un contexto dado, es decir, deben tener Semántica. Los lenguajes de programación son lenguajes formales porque poseen un conjunto de reglas (sintácticas y semánticas), notaciones, símbolos y/o caracteres que permiten a un programador poder expresar el procesamiento de datos y sus estructuras en una computadora. Mediante los lenguajes de programación, el ser humano puede comunicarse con una computadora y decirle qué es lo que tiene que hacer y, al mismo tiempo, sirven para comunicarse con otros seres humanos y expresarles qué es lo que se quiere que haga una computadora. En el contexto de las ciencias de la computación, los paradigmas de programación fue aplicado por primera vez por Robert Floyd 7 (eminente científico de las Ciencias de la Computación, reconocido por haber desarrollado el algoritmo gráfico que lleva su nombre) en coautoría con Richard Beigel en donde se definió el concepto de Paradigma de Programación como un proceso de diseño que va más allá de una gramática, semántica y algoritmos, sino que es un conjunto de métodos sistemáticos aplicables en todos los niveles de diseño de programas. Actualmente existen una gran variedad de paradigmas de programación, pero una clasificación general podría ser la siguiente 8 : 6 Sapir, Edward,” Language”. Estados Unidos: BiblioBazaar, 2008. Página 17. Citado también por por González Álvarez Joaquín en “ Temas Escogidos sobre Física y el Concepto de Realidad” UNAM 7 Floyd Robert, Beigel, Richard The Language of Machines: an Introduction to Computability and Formal Languages (1994, W.H. Freeman and Company) 8 Citado por González Álvarez Joaquín en “ Temas Escogidos sobre Física y el Concepto de Realidad” UNAM Página 4 FUENTE: Zárate Rea , Héctor: “Paradigmas de la Programación” La Programación Declarativa está basada 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 solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla, por ejemplo Prolog y Lisp. 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 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 Programación Lógica permite formalizar hechos del mundo real y forma parte de los programas declarativos. El lenguaje lógico por excelencia es Prolog, que a la vez es declarativo. La Programación Orientada a Objetos intenta simular el mundo real a través del significado de objetos que contiene características y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generación y forman parte de la programación imperativa. Se basa en la idea de un objeto, que es una combinación de variables locales y procedimientos llamados métodos que juntos conforman una entidad de programación. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos. Página 5 Ejemplos de estos lenguajes son C++, Java, Smalltalk, Ruby on Rails, Python y JavaScript, entre muchos otros .A continuación haré una descripción breve de los dos últimos. JavaScript JavaScript es un lenguaje de programación que se utiliza principalmente para crear páginas Web dinámicas. Una página Web dinámica es aquella que incorpora efectos como texto que aparece y desaparece, animaciones, acciones que se activan al pulsar botones y ventanas con mensajes de aviso al usuario; a diferencia de las páginas estáticas en donde el puro lenguaje HTML sólo puede mostrar textos con estilos pero es incapaz de ofrecer interactividad. Técnicamente, JavaScript es un lenguaje de programación interpretado 9 , multiplataforma, orientado a eventos o scripts 10 , es decir, estrictamente no se considera que está orientado a objetos pero tiene la capacidad de manejarlos. Su código se incluye directamente en el mismo documento usado para el desarrollo de aplicaciones cliente-servidor en paginas HTML, por lo que no es necesario compilar los programas para ejecutarlos. En otras palabras, los programas escritos con JavaScript se pueden probar directamente en cualquier navegador sin necesidad de procesos intermedios. A pesar de su nombre, JavaScript no guarda ninguna relación directa con el lenguaje de programación Java 11 , pero ambas son marcas legalmente registradas de la empresa Sun Microsystems. Asimismo, es importante hacer diferencia con JScript que es la versión similar que lanzó Microsoft para competir. JavaScript es simple, no hace falta tener amplios conocimientos de programación. Como se mencionó, estrictamente no es un lenguaje orientado a objetos (solo maneja scripts), ya que carece de los conceptos como herencia y métodos que tienen lenguajes como C++ y Java, pero es posible definir un objeto dentro de la página Web y sobre ese objeto definir a su vez diferentes eventos que producirán la aplicación o salida deseada ofreciendo la posibilidad de crear aplicaciones “on-.line” o modificar páginas Web en tiempo real, por ejemplo, cambiar el aspecto de la página Web . Otras aplicaciones comunes son responder 9 Un lenguaje interpretado es un lenguaje de programación que está diseñado para ser ejecutado por medio de un intérprete, en contraste con los lenguajes compilados 10 En informática, un script es un programa usualmente simple, que por lo regular se almacena en un archivo de texto plano. Los scripts son casi siempre interpretados. 11 Lenguaje de programación orientada a objetos desarrollado por Sun Microsystems parecido a C++ Página 6 a eventos locales al dar clic con el mouse, realización de cálculos y validación de formularios dentro de la página, personalización, contadores de visitas página Web e inclusión de relojes y calendarios. Actualmente, todos los navegadores incluyen JavaScript y es uno de los lenguajes más populares para la Web. Con el surgimiento de lenguajes como PHP 12 (Hypertext Pre-processor) del lado del servidor y JavaScript del lado del cliente, surgió AJAX 13 (Asynchronous JavaScript And XML) que combina varias tecnologías para crear aplicaciones Web interactivas. JavaScript es considerado por muchos desarrolladores Web como la fundación para la próxima generación de aplicaciones Web dinámicas del lado del cliente. Python Ahora quiero presentarles un lenguaje de programación de propósito general, cuya expansión y popularidad es relativamente reciente. Se trata de Python, una apuesta por la simplicidad, versatilidad y rapidez de desarrollo. Python es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis limpia que favorezca un código legible. Es un lenguaje de programación multiparadigma ya que soporta no sólo orientación a objetos sino programación imperativa y funcional Es un lenguaje interpretado porque no requiere de compilador y además es multiplataforma (corre en plataformas UNIX, GNU/Linux, Mac, Windows). Posee licencia de código abierto y es compatible con la licencia pública general de GNU. Fue desarrollado a finales de los años ochenta por Guido van Rossum en los Países Bajos y su nombre proviene de su afición por los humoristas británicos, creadores también de Spamalot, llamados Monty Python. Python posee una sintaxis realmente curiosa que emplea tabuladores para marcar bloques de código, destaca por la claridad y legibilidad de sus programas. Dispone de una estructura minimalista, ya que todo el lenguaje está desarrollado a partir de unos componentes básicos, los cuales también pueden ser modificados. En conclusión, Python es un lenguaje en franco proceso de popularización que ya destaca por la amplia biblioteca de módulos y scripts que pueden ser libremente descargados. 12 Lenguaje de programación interpretado , diseñado originalmente para la creación de páginas Web dinámicas. Es usado principalmente en interpretación del lado del servidor 13 Es una técnica de desarrollo Web para crear aplicaciones interactivas Página 7 -----------------------------------------------------------------------------------------------------------CONCLUSIONES Ahora sabemos que las coordenadas cartesianas nos permiten ubicar dos puntos cualesquiera en el globo terráqueo y unirlos con una línea. Pero esto no implica de ninguna manera que sea posible llegar desde uno al otro caminado rectamente. La simplicidad de los mapas no es correlativa a la del territorio: es una abstracción geométrica que descarta el relieve concreto, el clima y sus vaivenes, los predadores y sus afanes, los pantanos, las bifurcaciones y sus acechanzas. Desde luego, tampoco es posible “unir esos puntos” en una trayectoria completamente lineal con un avión u otro medio de transporte pues ellos no circulan por el espacio abstracto, isótropo y homogéneo de la física clásica, sino por un medio híbrido, irregular y cambiante; ya se trate de las irregularidades terrestres, las corrientes marinas o las burbujas de aire. Es preciso saltar las alambradas conceptuales creadas por las disciplinas modernas - regidas por la pretensión metódica - y abrir un espacio de pensamiento multidimensional capaz de producir sentidos ricos y fértiles, pero no garantizados ni absolutos. ---- En la programación, es necesario abrirnos a diferentes paradigmas, aceptar sus cambios que los definen y abrirnos a la invención, a la imaginación y a la creatividad ilimitadas. Página 8