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

Joe Armstrong on Erlang

Erlang es un lenguaje de programación semifuncional que posee una estructura dinámica, permite dar asignaciones únicas a variables, y de acuerdo a su definición, es tolerante a fallas, así como posee una característica que es de suma importancia para este blog, es que tiene incorporado el soporte para trabajos concurrentes. En entradas anteriores hablábamos del cambio de paradigma, que es algo que de hecho hemos insistido hasta el cansancio en casi todas las entradas, pues el reto ya no es conseguir el hardware capaz de trabajar con multiprocesamiento, o en el caso de Erlang, concurrencia, y este lenguaje de programación es un acercamiento bastante acertado al mundo del paralelismo; sin embargo, paralelismo y concurrencia no son inherentemente lo mismo. A pesar de que hablamos de conceptos algo distintos, el interés es muy similar pues la concurrencia nos ha ayudado a alcanzar algo así como “un paralelismo falso”. Podemos explicarlo de la manera más sencilla retomando un...

¿Sueñan los androides con ovejas eléctricas?

Siempre he pensado que el concepto de humanidad, para los seres humanos puede llegar a ser un misterio de manera muy cotidiana. A lo largo de la historia, el protagonista Rick Deckard cuestiona, la caracterización del “humano”, pues aún cuando es un género que recurre en gran medida a la fantasía, el “Cyberpunk” nos ayuda a que estas cuestiones tengan un verdadero sentido, especialmente en el mundo actual, donde lo cibernético puede quedar más a la vista como algo cotidiano. En el mundo donde la novela toma lugar, los robots son parte de la vida cotidiana, androides y animales cibernéticos conviven y ayudan a los seres humanos a realizar sus labores diarias. Dichos robots son descritos con un aspecto muy apegado a la naturaleza de lo que pretenden ser, razón por la que muchas veces suelen ser confundidos con sus contrapartes naturales; sin embargo, a pesar de que los a los androides tienen un aspecto y comportamiento humano no logran desarrollar lo que se define c...