Programación Concurrente y Programación Paralela
Introducción
Es sencillo confundirse con estos dos términos, incluso son temas ligados a la tecnología con la que desarrollamos, es decir, hay runtimes/interpretes/librerías que nos prometen poder realizar más de una tarea al mismo tiempo pero en ocasiones por conveniencia/limitaciones/configuración terminan siendo concurrentes o paralelas sin darnos ni cuenta.
Esta entrada de blog no está enfocada a ningún lenguaje de programación, la intención es explicar qué son y cómo se aplican estas técnicas, así mismo es como el "Hola Mundo", ambas técnicas tienen mucha tela de la cual cortar y dan para varias entradas de blog cada una.
Definición
¿Qué es la programación concurrente?
Es una técnica de programación en la cual definimos el comportamiento necesario para que uno sólo hilo realice más de una tarea alternando entre ellas.
Analogía
Imagina que deseas prepararte una taza de café soluble (Por simplicidad del ejemplo), ¿Qué pasos seguimos para preparar café?
- Calentamos agua
- Servimos el agua caliente en una taza
- Añadimos el café junto con cualquier otro aditamento que nos agrade
- Encender tu calentador/estufa/etc
- Poner a calentar el agua
- Verificar el estado/temperatura del agua
- Juntar todos los ingredientes/materiales (Azúcar, cucharas, leche, etc)
- Lavar los aditamentos (Posiblemente tu taza estaba sucia)
- Lavar todo lo necesario
- Poner a hervir agua
- Mientras el agua hierve juntar los ingredientes adicionales
- Realizar preparativos (Tal vez te guste servir el café antes que el agua)
- Añadir el agua
¿Qué es la programación paralela?
Es una técnica de programación en la que desplegamos múltiples hilos para realizar múltiples tareas, así efectivamente podemos realizar más de una tarea al mismo tiempo.
Analogía
Tomemos de base la analogía de programación concurrente pero añadamos otra persona, tu mamá por ejemplo.
¿Cuándo usar cada una?
Principalmente va a depender de la capacidad de tu hardware y de tu lenguaje de programación, es importante entender que se pueden combinar, tú no puedes hacer que tu computador realice más tareas de las que es capaz al mismo tiempo, osea que si tu CPU es de 8 Cores, no podrás tener más de 8 tareas en paralelo, eso quiere decir que en la vida real nuestro computador tira de ambas al mismo tiempo, la técnica que une ambos mundos se llama Programación Asíncrona y ya estaré escribiendo al respecto en el blog.
Comentarios
Publicar un comentario