En 1988 McGraw y Axelrod identificaron cuatro formas
distintas de desarrollar software (aplicaciones) para las computadoras
paralelas:
-
Extender o enriquecer un compilador existente para que traduzca programas secuenciales en programas paralelos.
-
Extender o enriquecer un lenguaje existente con nuevas operaciones que permita a los usuarios expresar el paralelismo.
-
Agregar una nueva capa de lenguaje paralelo encima de un lenguaje secuencial existente.
-
Definir totalmente un nuevo lenguaje paralelo así como su compilador.
Tercer enfoque: AGREGAR UNA CAPA DE PROGRAMACIÓN PARALELA
Se puede pensar en la programación paralela como
tener dos capas. La capa inferior contiene el núcleo (core) del cómputo, en
donde un proceso manipula su parte de los datos para producir su parte del
resultado. Un lenguaje de programación secuencial existente se adaptaría para
expresar esta parte de la actividad. La capa superior controla la creación y
sincronización de los procesos y la partición de los datos entre los procesos.
Estas acciones podrían ser programadas usando un lenguaje paralelo (quizá un
lenguaje de programación visual). El compilador sería responsable de traducir
estas dos capas del programa paralelo en código listo para su ejecución sobre
una computadora paralela.
Dos ejemplos de este enfoque son el ambiente CODE
(Computationally Oriented Display Environment) y el ambiente HENCE
(Heterogeneous Network Computing Environment). Estos sistemas permiten al
usuario representar un programa paralelo como un grafo dirigido, donde los nodos
representan procedimientos secuenciales y los arcos representan dependencias de
datos entre los procedimientos.
Este enfoque requiere que el programador aprenda y
use un nuevo sistema de programación paralelo, lo cual puede ser la razón por la
que no ha captado mucha atención en la comunidad de programación paralela.
Mientras que los prototipos de investigación están siendo distribuidos, no se
conoce ningún sistema comercial basado en esta filosofía.
Cuarto enfoque: CREAR UN LENGUAJE PARALELO
El cuarto enfoque es darle al programador la
habilidad de expresar explícitamente operaciones paralelas.
Una forma de soportar la programación paralela
explícita es desarrollar un lenguaje paralelo desde cero. El lenguaje de
programación OCCAM es un ejemplo famoso de este enfoque. Con una sintaxis
sorprendentemente diferente de los lenguajes tradicionales imperativos, este
lenguaje soporta tanto la ejecución de procesos en paralelo como secuenciales,
así como la comunicación y la sincronización entre ellos.
Otra forma de soportar el paralelismo explícito es
agregar construcciones paralelas a un lenguaje ya existente. Ejemplos de este
enfoque son los lenguajes FORTRAN 90, HIGH PERFORMANCE FORTRAN y C*.
Anteriormente se mencionó la ironía de un programador
codificando un algoritmo inherentemente paralelo en lenguaje de programación
secuencial y un compilador trabajando para redescubrir el paralelismo. Un
lenguaje que soporte el paralelismo explícito cambia la relación entre el
programador y el compilador de adversarios a aliados.
Agregar construcciones paralelas a un lenguaje de
programación existente o crear por completo un nuevo lenguaje de programación
paralelo requiere el desarrollo de nuevos compiladores. Aún y cuando se adopte
un lenguaje estándar, típicamente les lleva años a los vendedores desarrollar
compiladores de alta calidad para sus sistemas paralelos.
Algunos lenguajes paralelos, tales como C*, no fueron
adoptados como estándar. En esta situación muchos vendedores en competencia
decidieron no proporcionar compiladores para el lenguaje en sus máquinas. Cuando
esto pasa, la portabilidad de códigos se encuentra severamente en
peligro.
Otra barrera para la adopción de nuevos lenguajes de
programación es la resistencia del usuario. Cuando nuevas construcciones
paralelas se agregan a un lenguaje de programación, los programadores deben
aprender cómo usar estas nuevas construcciones. Muchos programadores están
renuentes a tomar esta transición.
Más Ejemplos:
*Concurrent Pascal: diseñado por Brinch Hansen en 1975.
*Chapel: desarrollado en el 2010
*X10: basado en java y desarrollado en el 2004 por la IBM.
* NESL
*Cilk
*ZPL
*Linda
*Parlog
Referencias
-http://es.slideshare.net/neztooor7/presentacin-lenguajes-paralelos
-Elfego Gutierrez. "Programación Paralela y Distribuida".
No hay comentarios.:
Publicar un comentario