Download Paradigmas de la programacion

Document related concepts

Programación funcional wikipedia , lookup

Wolfram (lenguaje de programación) wikipedia , lookup

JavaScript wikipedia , lookup

Oz (lenguaje de programación) wikipedia , lookup

Ocaml wikipedia , lookup

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