Ir al contenido principal

Motivación

La motivación de la programación concurrente surge por la necesidad de realizar aplicaciones de tiempo real, por la aparición del paradigma de programación orientada a objetos, por la naturaleza concurrente de los problemas reales que hay que resolver (sistemas operativos, GUIs, operaciones de entrada y salida, sistemas multimedia, control de sistemas físicos etc.) y por la arquitectura hardware con muchos núcleos de computación distribuidos que deben ser aprovechados de forma eficiente.
Un programa se compone de sentencias y la línea de flujo de control (i.e thread) que establece el orden en el que se ejecutan las sentencias. Según el número de líneas de flujo de control y los requerimientos temporales un programa puede ser secuencial, concurrente o de tiempo real. Los programas concurrentes tienen varias líneas de flujo de control. Las sentencias no se ejecutan con un orden estricto, la secuencia de sentencias se suceden entre puntos de sincronización (con o sin intercambio de datos) La situación se puede describir como un conjunto de procesos que colaboran y/o compiten entre sí por los recursos de computación y comunicación. Todo esto dificulta enormemente la verificación de tales programas (en comparación un programa secuencial con un orden estricto de ejecución de sentencias en donde el tiempo de ejecución de cada sentencia no influye en el resultado la verificación es más sencilla).

Comentarios

Entradas populares de este blog

Origen

La programación concurrente tiene sus raíces en los sistemas operativos. En los años 60’s se introdujeron en las computadoras dispositivos controladores independientes de entrada-salida llamados canales. La programación de sistemas con capacidades de concurrencia se hacía a bajo nivel, en ensamblador. Los pioneros en este campo fueron:  EdsgerWybe Dijkstra fue un científico de la computación de los Países Bajos. Per Brinch Hansen fue un informático danés-estadounidense conocido por la teoría de la programación concurrente. Charles Antony Richard Hoare también conocido familiarmente como Tony Hoare, es un científico británico en computación.

Programación Concurrente

Para definirla correctamente, debemos diferencias entre programa y proceso. ·          Programa: Conjunto de sentencias/instrucciones que se ejecutan secuencialmente. Se asemeja al concepto de clase dentro de la POO. Es por tanto un concepto estático. ·          Proceso : Básicamente, se puede definir como un programa en ejecución. Líneas de código en ejecución de manera dinámica. Se asemeja al concepto de objeto en POO.

Lenguajes

Elixir  Elixir es lenguaje de programación de propósito general, concurrente; este lenguaje es funcional. Además está construido sobre la MV de Erlang y aprovecha esto para construir sistemas distribuidos y tolerantes a fallos con baja latencia. Ada Uno de los pocos lenguajes que provee estructuras embebidas para programación concurrente y provee herramientas para diseño de software de seguridad crítica y proyectos grandes que requieran portabilidad y mantenimiento. Por esta razón la mayoría de software para aviación está programado en Ada que también fue el primer lenguaje orientado a objetos aceptado mundialmente. El lenguaje lleva este nombre en honor a Ada Byron que fue el primer programador del que se tiene registros, siendo este una mujer e hija del poeta Lord Byron [ARA]. Occam Es un lenguaje de procesamiento paralelo diseñado por un equipo en INMOS en conjunto con el diseño del p...