<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>programacion-orientada-a-concurrencia &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/programacion-orientada-a-concurrencia/</link>
	<description>Feed of posts on WordPress.com tagged "programacion-orientada-a-concurrencia"</description>
	<pubDate>Thu, 24 Dec 2009 20:33:28 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Erlang prevalecerá]]></title>
<link>http://ocurrenciashabituales.wordpress.com/2008/05/12/erlang-prevalecera/</link>
<pubDate>Mon, 12 May 2008 20:01:53 +0000</pubDate>
<dc:creator>Manuel Abeledo</dc:creator>
<guid>http://ocurrenciashabituales.wordpress.com/2008/05/12/erlang-prevalecera/</guid>
<description><![CDATA[Buscando información sobre Rails y Django, me he topado con un artículo que ilustra los puntos débil]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignright" style="float:right;" src="http://www.erlang.org/images/erlang.gif" alt="" width="114" height="96" />Buscando información sobre Rails y Django, me he topado con un artículo que ilustra los puntos débiles del marco de desarrollo web de moda e introduce lo que podría ser el nuevo <em>hype</em> de la programación o, por fin, una alternativa a los grandes del sector: <a title="Permalink of " href="http://blog.bwtaylor.com/2007/09/23/ruby_meet_erlang">Rails, the 15 minutes is Almost Up. Meet Erlang</a>.</p>
<p><a href="http://www.erlang.org/">Erlang</a> es un lenguaje de alto nivel, funcional, de asignación única y dinámico, como Ruby. Ha sido desarrollado en los laboratorios de Ericsson partiendo de tres premisas fundamentales: tolerancia a fallos, concurrencia y sencillez. Las aplicaciones Erlang pueden correr sobre una máquina virtual o ser traducidas a código nativo gracias a un compilador de alto rendimiento llamado, irónicamente, HiPE.</p>
<p>A pesar de su origen, desde 1998 tanto la implementación del lenguaje como el conjunto de bibliotecas OTP son libres bajo la licencia EPL.</p>
<p>Total, que tenemos una plataforma peculiar cuya liberación cumple diez años. ¿Por qué es especial?</p>
<p><!--more--></p>
<p>Pues por muchos motivos. Pero la expectación creada alrededor de Erlang tiene poco que ver con el lenguaje en si. Al fin y al cabo, hemos tenido una década para evaluarlo. Lo verdaderamente importante es el momento tecnológico que estamos viviendo. El paralelismo es ya el modelo indiscutible para alcanzar el máximo rendimiento, la guerra de los gigahertzios hace tiempo que terminó y la nueva guerra, la de los núcleos, está comenzando.</p>
<p>El soporte a la programación concurrente en los lenguajes tradicionales sigue siendo primitivo, muy propenso a errores. En este campo, Erlang es el rey. Puede crear y manejar cientos de miles de procesos sin despeinarse, incluso millones, evitándole al programador dolores de cabeza. El mismo lenguaje evita un montón de fallos gracias a la evaluación estricta o la asignación única de variables. Y si algo falla, ¡no hay problema! Erlang permite el cambio en caliente del código.</p>
<p>El lenguaje no viene solo. Trae bajo el brazo las ya mencionadas bibliotecas OTP (Open Telecom Platform), una metodología de programación (programación orientada a concurrencia), guías de diseño y patrones. Todo está probado y corriendo. De hecho, es muy probable que si realizas una llamada a través de tu teléfono móvil, alguno de los componentes que la harán posible esté construido sobre Erlang.</p>
<p>Más de uno se preguntará por qué coño no estamos todos alabando al dios Erlang y programando aplicaciones en este lenguaje como locos. Bueno, digamos que por muy bueno que sea, tiene algunas <em>peculiaridades</em> insalvables.</p>
<p>Para empezar, nos ha costado más de diez años adoptar el paradigma de objetos y no existe una disposición clara a cambiar de nuevo. Hemos pasado de los lenguajes estructurados a los orientados a objetos con sumo cuidado. Una muestra de ello es que C++ es casi una extensión de C y Java está inspirado en C++. ¿Y las metodologías? ¿Tendríamos que adaptar las herramientas de ingeniería de software?</p>
<p>Erlang da miedo porque no está respaldado por un paradigma y un lenguaje generalistas. Java llegó con la vitola de ser un C++ <em>mejorado</em>, lo cual demostró tener mucho peso en la comunidad de programadores. Era más sencillo, menos propenso a errores y tenía una extensísima biblioteca de clases. Sin embargo, ¿podríamos vender un <a href="http://es.wikipedia.org/wiki/Scheme">Scheme</a> <em>mejorado</em>? ¿Un <a href="http://es.wikipedia.org/wiki/Lisp">Lisp</a> <em>mejorado</em>? No es plausible. La industria está introduciendo lentamente los lenguajes funcionales como complemento de otros, como <a href="http://es.wikipedia.org/wiki/LINQ">Linq</a>, y las instituciones educativas ya les han hecho un hueco. A mí me enseñaron <a href="http://es.wikipedia.org/wiki/Caml">Caml</a>, por ejemplo.</p>
<p>Y es que ya no estamos hablando de evolucionar desde un lenguaje estructurado a uno orientado a objetos. Este paso es mucho mayor. Hablamos de la enorme dificultad de cambiar los lenguajes procedimentales por lenguajes declarativos, lo que es paradójico pues un lenguaje declarativo debería tener una sintaxis más <em>natural</em> que uno procedimental.</p>
<p>Sí y no. Los que llevamos unos añitos en esto ya nos hemos adaptado a la máquina. Suena fuerte, ¿verdad? Modelamos en alto nivel y programamos en bajo nivel. Por muchas filigranas que tengan los lenguajes, por mucho que se haya escrito sobre esa facilidad a la hora de proyectar un objeto sobre algo del mundo real, todavía estamos obligados a pensar en qué queremos hacer y cómo queremos adaptar esa idea al modo de trabajar de la máquina.</p>
<p>Y resulta que los lenguajes funcionales no hacen eso. Intenta describir un proceso tradicional con funciones matemáticas y entenderás de qué hablo.</p>
<p>Pero no es tan complicado como parece. Las aplicaciones construidas con lenguajes funcionales suelen tener un código más limpio y elegante&#8230; Pero <em>diferente</em>. Y eso, claro está, es un hándicap.</p>
<p>Añadamos la orientación a concurrencia de Erlang y ya la hemos liado. Hay gente que se hace la picha un lío hasta que se da cuenta de que la primera A de Ajax es de asíncrono, ¡imaginaos qué ocurriría con una operación que cree dos docenas de procesos! Ojo, el lenguaje que nos ocupa hace que todo lo referente a la creación, destrucción, manejo y comunicación entre procesos sea insultantemente sencillo. Pero sigue siendo <em>diferente</em>.</p>
<p>Entonces, ¿a qué viene el título? ¿Por qué empezar poniendo los dientes largos a todo el mundo para caer en una aparente decepción? Bueno, Erlang tiene ahora mismo un nicho de mercado muy definido y casi intocable en aplicaciones destinadas a concurrencia o alta disponibilidad. Simplemente, es <em>mejor</em> que la competencia, así que podemos predecir una larga vida útil. Y si mañana alguien piensa que sería interesante incorporar al negocio un lenguaje que evite muchos de los errores de programación típicos y mejore la productividad y el rendimiento en los nuevos entornos multinúcleo, a costa de <a href="http://www.erlang.org/course/course.html">reciclarse en cuatro días</a>, pues quién sabe, quizá lo que hoy es todavía una curiosidad alcance un buen lugar en el mercado.</p>
<p>Sea como fuere, estará ahí muchos, muchos años, tras el funcionamiento de tu teléfono, tu televisión o el último satélite lanzado al espacio.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
