Ir al contenido principal

Teaching Concurrency with Erlang


Como presentamos anteriormente en la entrada correspondiente a Erlang, nos queda claro que el Paralelismo aunque es diferente a la concurrencia, ambos nos ayudan a alcanzar nuestro deseado objetivo de tener un paradigma de desarrollo de software más enfocado al aprovechamiento de recursos listos para multiproceso.
A medida que la tecnología avanza, el interés por hacer programas Concurency-Oriented incrementa debido a que cada vez se integra tecnología más compleja y completa que satisface diversas necesidades que han surgido con el tiempo, así como la miniaturización, la eficiencia y por supuesto la potencia. Actualmente tenemos procesadores que tienen al menos dos núcleos, y gracias a un poco de astucia mercantil e ingenieril, podemos decir que ambos núcleos se pueden sentir como cuatro. Así mismo contamos con teléfonos móviles que cuentan con hasta 8 núcleos y tienen arquitecturas interesantes como BIGlittle; sin embargo esta necesidad por “tirar más núcleos al problema” no surgió de la noche a la mañana, así como hemos venido trabajando la idea de incrementar el rendimiento, históricamente en algún momento alguien pensó erróneamente que para nuestros tiempos terminaríamos con procesadores que alcanzaran frecuencias de hasta 7, 10, o incluso 20 Giga Hertz. De acuerdo al paradigma que ha ido cambiando poco a poco, nos enfrentamos a una cuestión de suma importancia, cómo se puede enseñar programación orientada a la concurrencia teniendo en cuenta lo difícil que ya hemos destacado en todas las entradas que es el cambio en el pradigma. En el paper “Teaching Concurrency-Oriented Programming with Erlang”, Ariel Ortiz destaca una serie de bondades que el lenguaje Erlang posee con el fin de facilitar el proceso de aprendizaje, incluso podemos notar que las actividades y prácticas que se proponen no son muy diferentes a las que llevaría cualquier curso de programación lineal, sin embargo se introduce un enfoque importante a no solo aprovechar las bondades del lenguaje, sino también superar algunas de las deficiencias que tiene, para que el “aprendiz” pueda realmente entender el panorama de la programación en paralelo, cómo aún no se tienen todas las respuestas, así como las ventajas en tiempo de ejecución que la concurrencia y el paralelismo tienen parael futuro.

Comentarios

Entradas más populares de este blog

The Free Lunch Is Over

En las últimas décadas, miles de desarrolladores e investigadores han dedicado sus vidas a mejorar la forma en la que vivimos, así como la manera en la que realizamos ; sin embargo, seguir el mismo camino hasta su última consecuencia implica un límite, pues normalmente los materiales que usamos, los teoremas que aplicamos, funcionan bajo un conjunto de circunstancias limitadas. No es una tarea sencilla buscar otra manera, en gran medida desarrollar algo "mejor", suele ir de la mano con un cambio de paradigma (nada sencillo). En la entrada pasada habábamos de FairChild, una compañía que encontró una mejor manera de desarrollar electrónica, y concluímos en cómo la hoy llamada Intel, ha encontrado algunos inconvenientes en reducir su proceso de fabricación pues a pesar de que durante las últimas décadas ha controlado el mercado del silicio, se han dado cuenta que éstamos llegando a los límites que habían previsto, aún cuando su competencia ha logrado llegar al proceso de...

Parallel Computing on any Desktop

OpenCL, CUDA, Tensor, etcétera… Hace tiempo la arquitectura de prácticamente cualquier computadora corría en una suerte de una única frecuencia de reloj que funcionaba en un único paquete de silicio, incluso casi cualquier pieza de software estaba escrita de tal manera en la que se aprovechara ese único núcleo al máximo, incluso gran parte del software que utilizamos hasta nuestros días, está optimizado para un único tiempo de ejecución. De cierto modo Ami Marowka plantea que todo es acerca de qué tan accesible se puede volver la tecnología, tenemos la idea de que Microsoft se volvió el rey de la accesibilidad con su filosofía, y de cierto modo va de acuerdo a la primera ley del paralelismo masivo, el punto importante de Ami es que gracias a la revolución tecnológica en el cómputo de sobremesa, la tecnología es cada vez más accesible. Incluso para desarrollos tecnológicos importantes tenemos RISC5 por el lado del Open Source, que ya no solo se limita a software. Inc...

The State of Parallel Programming

Anteriormente hemos hablado del gran reto de cambiar el paradigma del desarrollo del software, pues este ha logrado mantenerse al grado de que la misma comunidad que lo mantiene fue poco a poco integrando algunos elementos del paralelismo, y a pesar de esto el “mindset” que se requiere para paralelizar procesos durante el desarrollo no se encuentra normalizado. Tal como el caso de los lenguajes de programación más populares, buscando la forma de ofrecer las funciones más actuales. No obstante, al paralelizar con estas herramientas no soluciona el principal problema, de lo que el cambio de paradigma refiere. Según UBM TechWeb, necesitamos más y mejores herramientas para paralelizar tareas en especial cuando nos involucramos con código lo suficientemente complejo como para necesitar debuggeo intensivo, pues muchas veces podemos recaer en paralelización incorrecta, incluso aunque las estadísticas nos digan que un buen número de programadores están familiarizados con...