miércoles, 5 de febrero de 2014

Julia, el lenguaje de programación del futuro?

Fuente principal: RT.COM

Un grupo de programadores internacional está desarrollando un lenguaje de programación que comprendería las mejores características de los lenguajes existentes más populares y utilizados.

Llamado Julia, ese lenguaje podría ofrecernos una visión anticipada de cómo se realizará la programación en el futuro y su CORE es gratuito y se distribuye una implementación bajo los términos de licenciamiento de la MIT.

El lenguaje fue ideado por Stefan Karpinski, un graduado de la Universidad de California, cuando estaba diseñando una herramienta de simulación de redes que requería el uso de cuatro lenguajes de programación diferentes. 

Además de que ninguno de los lenguajes era suficiente para realizar la tarea, usar cuatro lenguajes complicaba todo el proceso, desde escribir el código hasta depurarlo y actualizarlo. 

Se pueden lanzar 100 procesos en Julia, ejecutarlos en diferentes máquinas y obtener los resultados de esas máquinas. Eso es un trabajo tedioso en Java, pero para Julia es relativamente sencillo 
Este es un problema común para los programadores, así como para los matemáticos, los investigadores y los informáticos. 

Karpinski, junto con su compañero de universidad Viral Shah y el informático del MIT Jeff Bezanson, decidieron resolverlo diseñando un nuevo lenguaje que fuera compatible con prácticamente cualquier tarea. 

Los lenguajes de hoy fueron diseñados con diferentes objetivos. Matlab fue elaborado para los cálculos de la matriz, y es muy bueno para el álgebra lineal. El lenguaje R es para la estadística. Ruby y Python son lenguajes de propósito general, preferidos por los desarrolladores web, ya que permiten una codificación más rápida y fácil. Pero no son tan rápidos como C o Java

Lo que intentan hacer Karpinski y su equipo es construir un lenguaje único que haga todo bien. 

Los programadores suelen utilizar herramientas que traducen lenguajes más lentos como Ruby y Python a los idiomas más rápidos como Java o C. Pero ese código más rápido también debe ser traducido -o compilado, en la jerga de los programadores– a un código comprensible para la máquina. Eso añade más complejidad y margen de error. 

La peculiaridad de Julia consiste en que prescinde de esta etapa intermedia, compilando directamente al código de la máquina. 

Además, los programadores sostienen que Julia tiene habilidades matemáticas y estadísticas para servir de alternativa a Hadoop -un sistema de computación ampliamente utilizado elaborado por Yahoo y Facebook-, por lo menos en algunos casos. 

Hadoop permite tomar una gran cantidad de trabajo, dividirla en muchos trabajos pequeños, y repartirlos entre cientos de máquinas. 

"Se puede lanzar 100 procesos en Julia, ejecutarlos en diferentes máquinas y sacar los resultados de esas máquinas. Ese tipo de cosas tiende a ser un trabajo tedioso en Java, pero para Julia es relativamente sencillo", precisó Karpinski, citado por el portal Wired

Diseñado para paralelismo y Cloud Computing

Julia no impone ningún estilo particular de paralelismo en el usuario. En su lugar, proporciona una serie de componentes fundamentales para la computación distribuida, por lo que es lo suficientemente flexible como para apoyar una serie de estilos de paralelismo, y permitiendo a los usuarios añadir más.

nheads = @parallel (+) for i=1:100000000
  int(randbool())
end

Este cálculo se distribuye automáticamente a través de todos los nodos de computación disponibles y el resultado se resume en una suma (+), que se devuelve en el nodo llamado.

Tuitea con: #JuliaLang hashtag

Descargue e instale Julia en varios Sistemas Operativos.
Versión Actual

v0.2.0

Windows Self-Extracting Archive (.exe) 32-bit64-bit
Mac OS X Package (.dmg) 10.6 64-bit10.7+ 64-bit
Ubuntu packages 32/64-bit
Source GitHub