PARADIGMAS DE LA COMPUTACION

Anuncio
PARADIGMAS DE LA COMPUTACION
David Elias Martínez M.
Escuela Nacional de Estudios Profesionales, Acatlán
Los requerimientos de una organización de contar con sistemas de información a la medida
de las
necesidades de los usuarios y con lo último en tecnología y telecomunicaciones, ha
orientado los esfuerzos de los ingenieros de software para automatizar procesos de
información con métodos y herramientas cada vez más sofisticados y específicos para cada
área de aplicación.
La ingeniería de software es la aplicación de herramientas, técnicas y metodologías para el
diseño de software flexible con calidad, menos costoso y confiable; sin embargo, también
es importante determinar el tipo de aplicación y la tecnología de información disponible
para el tipo de software.
El diseño de software se puede llevar a cabo usando las fases del ciclo de vida de un
sistema; análisis, diseño e implementación; o las etapas en espiral, en la que los
requerimientos y el diseño se reestructuran conforme se desarrolla la aplicación y las
necesidades del usuario y del sistema son resueltas y continúamente se corrige el análisis,
diseño y la implementación.
Un proceso de desarrollo de software involucra también lenguajes y ambientes de
desarrollo. Editores interactivos para crear y guardar programas; compiladores y ligadores;
bibliotecas de módulos de programas; depuradores, etc. Un ambiente integral de desarrollo
de software debería de apoyar todas las fases y actividades del proceso de software. Las
herramientas CASE (Computer Aided Software Engineering) ofrecen la ayuda
automatizada al desarrollo de software, es decir, ofrecen soluciones puntuales en cada una
de las etapas del desarrollo del software.
Los lenguajes y métodos de diseño son la guía para producir el diseño de un sistema. Un
método de diseño es la forma de producir el diseño de un sistema. Los métodos más usados
son: estructurado, diseño "desde arriba hacia abajo" (top-down) y diseño orientado a
objetos.
No obstante estas metodologías de diseño, dentro de los lenguajes es común encontrar
paradigmas de programación. Los lenguajes que soportan un paradigma específico de
computación se puede clasificar como orientado al paradigma de computación. Así, se
encuentra FORTRAN y Pascal, definidos originalmente como lenguajes procedurales
porque utilizan el concepto de rutina como la unidad de modularización. Eiffel y Smalltalk
son lenguajes orientados a objetos; su programas se expresan en términos de clases y
objetos como unidades de modularización. En general, esta relación puede no ser uno a
uno. Se puede disponer de C++ que soporta el paradigma procedural y el orientado a
objetos. Y podemos clasificarlo como neutral al paradigma.
Si el método de diseño y el paradigma del lenguaje coinciden, entonces el mapeo entre las
abstracciones del diseño y las abstracciones del lenguaje es directo, en el caso contrario, los
costos del mapeo pueden ser muy altos.
Los lenguajes de programación convencionales son una abstracción de la arquitectura de la
computadora subyacente. El modelo abstracto consiste en la ejecución secuencial, paso por
paso, de las instrucciones que cambian el estado de la computación vía la modificación del
almacén de valores.
Los lenguajes convencionales basados en el modelo computacional de Von Newman se
llaman imperativos, basados en instrucciones o, simplemente, lenguajes Von Newman;
Basic, Pascal, Fortran y Lenguaje C fueron los lenguajes imperativos de mayor influencia
cuando aparecieron.
Los paradigmas de lenguajes:
Programación declarativa: la descomposición de un problema hasta su implementación
algorítmica.
Programación por módulos: enfatiza el concepto de módulo como agrupación de variables,
procedimientos, funciones y tipos. El programa se compone de un conjunto de módulos.
Programación genérica: este estilo enfatiza la definición de módulos genéricos, los cuales
pueden ser instanciados a la hora de compilación o en tiempo de ejecución, es el caso de
C++ y Ada.
Un paradigma que corresponde a los lenguajes de cuarta generación es la inteligencia
artificial, que se ha resuelto con lenguajes de programación como PROLOG y LISP; el
primero, desarrollado en 1956-1962 por J. McArthy y el segundo por A. Colmerauer en
1972, para el desarrollo de inteligencia artificial, que corresponden ambos a la definición de
lenguajes funcionales o aplicativos. El lenguaje LISP original es libre de conceptos Von
Newmann, como las variables cuyos valores se modifican, instrucción de asignación,
instrucción de goto, etc. La lista es el único tipo de estructura de datos que permite LISP.
Los programas de LISP también son listas. Esta uniformidad entre la estructura de datos y
los programas permite definir intérpretes de LISP de una manera sencilla. Este lenguaje
incluyó conceptos menos consolidados en esa época, como son el manejo de excepciones y
las multi-tareas.
APL es otro lenguaje basado en las matemáticas. Contiene un conjunto nutrido de
operadores sobre arreglos que eliminan la programación tediosa de ciclos.
SNOBOL4 también es ejemplo de un lenguaje no convencional. Proporciona facilidades
para la manipulación de cadenas (strings) y aparcamiento de patrones (pattern matching).
Apoya la programación declarativa.
LISP, APL y SNOBOL4 son grandes consumidores de recursos computacionales (tiempo y
espacio), por lo tanto se dificulta su eficiencia en máquinas convencionales. A pesar de
esto, han llegado a ser muy exitosos para cierto tipo de aplicaciones y tienen sus usuarios
devotos. Por ejemplo, LISP es ampliamente usado en aplicaciones de Inteligencia Artificial.
APL se usa para hacer prototipos rápidos en aplicaciones financieras o científicas que
implican el uso de operaciones sobre matrices.
La mayor contribución de LISP y SNOBOL4 fue el énfasis en la computación simbólica.
En la mayoría de las aplicaciones actuales sólo una pequeña parte de ellas está dedicada a
los cálculos numéricos. El resto, en su mayoría, ocupa el procesamiento simbólico tal como
el manejo de bases de datos o el procesamiento de textos.
LISP ha seguido desarrollándose en la versión del lenguaje SCHEME, el cual fue diseñado
como lenguaje educativo para cursos introductorios y como una alternativa de comparación
con los lenguajes convencionales.
Otra nueva definición de lenguajes de programación ha propiciado el desarrollo de la
tecnología, el procesamiento en paralelo, y los biochips en lo que se denomina Quinta
Generación, paradigma inicialmente desarrollado en Japón en la década de los 80's y que
durante los 90's alcanzaría su máximo desarrollo en lo que se conoce como robótica y los
sistemas expertos. Bajo este esquema PROLOG fue seleccionado por el gobierno de Japón
para realizar su proyecto de inteligencia artificial.
Los lenguajes de programación funcionales y lógicos han abandonado el modelo
computacional de Von Neumann, es el caso de Prolog y Scheme, ambos tienen fundamento
en las matemáticas y no en la arquitectura subyacente del hardware (modelo Von
Newman). Por lo tanto, no pueden aspirar a los mismos niveles de eficiencia que los
lenguajes imperativos. LISP y ML, el último diseñado en 1984, son lenguajes basados en el
modelo computacional funcional. Entre sus características tenemos: Cálculo Lambda,
Expresiones tipo S y tipo M, Símbolos atómicos, Funciones elementales, Listas,
Composición de funciones, Recursividad, Programación y expresión de algoritmos en Lisp,
Intérpretes, Extensiones del lenguaje.
Algunas de las características de los lenguajes lógicos son: Cláusulas de Horn, Variables,
hechos y reglas. La programación lógica como paradigma para especificaciones; lenguajes
de especificación, generalización de bases de datos relacionales, mecanismos de deducción.
Parámetros de eficiencia.
¿Qué significa entonces, el paradigma de un lenguaje de programación?
Al manejar un lenguaje dentro del diseño de software implica un costo para mapear la
relación software-lenguaje. De manera que para problemas científicos y métodos numéricos
FORTRAN y LENGUAJE C son la mejor alternativa por aritmética de punto flotante y
soporte para varias plataformas. De la misma forma, tendría la posibilidad de usar Java,
ASP o Perl para aplicaciones de telecomunicaciones, en este caso, mediante protocolos de
transferencia y acceso a datos vía Internet.
El manejo de los lenguajes SQL, C++ Builder, Delphi o Visual Basic para el manejo de
registros de una base de datos, o LISP y PROLOG para inteligencia artificial.
Los compiladores de Prolog y LISP están disponibles en la red, Visual Prolog 5 es posible
obtenerlo de la Facultad de Ciencias, <ftp://ftp.fciencias.unam.mx/>ftp.fciencias.unam.mx
y LISP en su versión Common Lisp es (posiblemente) el intérprete más extendido, y está
disponible para distintas plataformas. Su página Web es
<http://www.clisp.sourceforge.net/>www.clisp.sourceforge.net TL3 es otro intéprete de
Lisp, que tiene un Graphics Toolkit y es multiplataforma. Su página Web es
<http://www.research.att.com/~leonb/TL3/>www.research.att.com/~leonb/TL3/.
"En el desarrollo tecnológico de la informática es imprescindible el manejo de lenguajes
para apuntalar las ventajas que ofrece una aplicación: funcionalidad, facilidad de estructura,
seguridad y robustecimiento; un lenguaje que propicie estas características permitirá
desarrollar aplicaciones que controlen un robot, un biochip, un procesamiento en paralelo o
una red neuronal".
Fuente: http://morgan.iia.unam.mx/usr/humanidades/211/columnas/MARTINEZ
Descargar