Imagen de avatar anacareaga
Ana Lilia Careaga

Julia: el lenguaje romano que gobierna la programación científica

Ana Lilia Careaga Mercadillo,  noviembre de 2014

Abstract

Livia Drusilla,  also known as Julia Augusta was the third wife of the Roman emperor Augustus during his reign. She was a woman of queenly attributes; proud and very faithful to her husband but carrying out many roles of mother, consort and adviser. On the other hand, Julia, the language; is a new programming language that has been  developed specially for science and technical  applications. Julia has been used in its early stages for applications such as image analysis and linear algebra research and but now it has been considered as the model of future programming languages. The language is the creation of  Stefan Karpinski, along with Jeff Bezanson and Viral Shah.

Introducción

Siempre he tenido una gran fascinación por los puentes; todo tipo de puentes, ya sea los trazados con lápiz o aquellos colgantes que tiritan al sentir nuestros pasos. Puentes levadizos que sentencian firmeza en la profundidad de sus pilares y puentes modernos, irrompibles de estructura  invisible. Puentes de paz que se estiran entre aguas estancadas o tormentosas pero gloriosos de alegría al terminar la espera para abrazar al ser querido. Puentes al viento con arias  musicales de arroyos que unen nuestro oído en sus notas y que la memoria inventa y borra. Pero sobre todo me gustan  los puentes de Roma que tejen paisajes melancólicos de piedra desgastados por el transcurrir del tiempo pero que  transmiten sensación de perennidad y solidez. Testigos del tiempo pasado romano porque aun habiéndose derrumbado dejaron su ingeniería y arquitectura a la posteridad. Sería un error decir que civilizaciones anteriores a la romana no construyeron puentes; por supuesto que los construyeron y lo hicieron con madera o  piedra pero los ideados por los romanos dejaron un modelo arquitectónico que se mantuvo hasta el siglo XIX. En pocas palabras, todos los puentes que se construyeron después de la caída del Imperio Romano siguieron los mismos parámetros por lo cual resulta casi imposible diferenciar a simple vista un puente romano del medieval o moderno. Sin duda, los puentes actualmente gozan de un amplio reconocimiento no solo en su construcción e ingeniería sino en su significado social y  arquitectónico. Sin embargo, quizá la historia del arte les ha dado importancia menor en comparación a otras obras arquitectónicas antiguas monumentales, tal vez porque se tiene la idea que las obras de ingeniería no son estéticas. Lo cierto es que los romanos aprendieron mucho de la ingeniería de los etruscos dando cuidado a lo estético heredado de los griegos;  de ellos aprendieron el uso del arco de distorsión trapezoidal con el que pudieron construir puentes fuertes y duraderos pero también supieron darles bellas formas. Prueba de ello es el puente romano construido en el  período del 104 a 106 dC que aún se conserva sobre el río Tajo en Alcántara, España (como comentario curioso la palabra “alcántara” significa puente en árabe Al Qantarat,). Si separamos su esencia funcional y resistente observaremos sólo su forma depurada al máximo, resultado de una búsqueda rigorosa de la belleza. Este puente es un magnífico ejemplo del arte que puede existir en la ingeniería civil plasmada por su constructor, el arquitecto romano Cayo Julio Lacer y quien decía lo siguiente:

“Pontem perpetui mansuram en saecula mundi – Os dejo un puente para siempre en los siglos del mundo” .  Pero además de ser obras perpetuas de gran belleza y buena construcción, los puentes romanos abrieron los caminos a Roma.

Quizá por ello es que dicen que “todos los caminos conducen a Roma” , frase que en la actualidad todos la hemos escuchado en diferentes contextos e infinidad de veces. Recuerdo que cuando la escuchaba en mi infancia,  me asomaba a la ventana y me preguntaba si en realidad habría un camino que me llevara de mi casa a Roma y si realmente lo hubiera,  no  me era fácil imaginar cómo sería ese camino y más a sabiendas de que durante el Imperio Romano no hubo otro medio de locomoción terrestre superior al caballo y los navíos que flotaban a través del “Mare Nostrum” (Mar Mediterráneo). No obstante, sabemos que el sistema de comunicaciones terrestre construido en la Antigua Roma se extendía desde la península Ibérica hasta el Cáucaso, desde el  África oriental a los bosques de Germania y desde Gran Bretaña hasta el Golfo Pérsico para lo cual tuvieron que construir una cantidad inimaginable de caminos y puentes. El emperador Augusto[1] construyó infinidad de puentes que unieron su imperio y además creó flotas permanentes que comercializaban hacia oriente y occidente. El comercio romano tuvo su máximo esplendor durante la pax romana en los  siglos I y II dC , pero éste no hubiera sido posible sin toda la obra civil que tuvo que haberse construido . En ese entonces, el  Imperio contó con una red viaria de más de 80,000 km de carreteras pavimentadas llamadas  “calzadas” por lo que de esta realidad parte esta famosa frase. Cientos de vías se unían a las veinte principales que iban desde cualquier punto del Imperio a Roma. Algunas tenían 7.5 m de ancho y en cada mil pasos o 1,480 metros, (milla romana)  se colocaba un miliarium que era una roca cilíndrica de dos toneladas y que medía  dos metros de altura y medio metro de diámetro, la cual indicaba si la vía era glarea o strata (de grava o pavimento)  así como la distancia entre las poblaciones. En el miliarium también  se reconocían  los logros del emperador que gobernaba en ese momento y se aportaba información sobre quien la había construido o reparado ( restituit) .  De esta manera era como, literalmente, todos los caminos o “vías” conducían a Roma, entre  las cuales, las que tenían mayor importancia eran  seis: Vía Apia,  Vía Latina, Vía Cassia, Vïa Flaminia,  Vía Aemilia y Vía Valeria[2]. Sin embargo, lo que me ha llamado mucha la atención es que a pesar de la existencia de todas estas vías que unían a Roma con el imperio, pocos puentes sobreviven de este período que unieran  las orillas del río Tíber en Roma y que constituyeran una vía de entrada , siendo que durante muchos siglos, el río Tíber constituyó la columna vertebral de Roma y no solo eso sino que este río ha sido siempre el alma de esta ciudad .Desde la Antigua Roma, la ciudad se fue desarrollando en la orilla  Este del río, donde se encuentran las 7 colinas de Roma[3] y, por supuesto el  Coliseo, el Foro Romano y el Palatino. La explicación de  tener pocos restos de puentes construidos durante la Roma imperial es que en un principio no se consideró prudente comunicar esta orilla del río Tíber con la otra. Posteriormente, conforme la ciudad se iba extendiendo,  los construyeron de madera (como el puente Sublicio) para poder derribarlos fácilmente en caso de algún inesperado ataque. Fue hasta que los romanos se sintieron seguros de su poder que decidieron construir puentes de piedra por lo que  al paso del tiempo la orilla del río dejó de ser un límite geográfico y se convirtió en el punto de conexión al otro lado del río hacia donde se iría expandiendo esta ciudad. El puente de piedra más antiguo de Roma es el puente Emilio, construido hacia el año 179 aC, del cual solo quedan algunos vestigios y por ello se le conoce como el “puente roto” , pero en la actualidad son 28 los puentes que atraviesan la ciudad de una orilla del Tíber a la otra. Los más antiguos son los puentes Sublicio, Emilio , Milvio, Sisto y Elio. Por lo que cuando se visita Roma, no hay nada más emocionante que caminar a la orilla del Tíber para ir recorriendo la historia de esta civilización; cruzar sus puentes discretos y silenciosos resulta ser una especie de tesoro histórico sumergido en el estruendo de una ciudad moderna. Caminar por los puentes de Roma nos hace sentir el transcurrir del tiempo con aquella sugestiva belleza trazada en sus arcos, como los del Puente Elio o más conocido como Puente Sant´Angelo con sus 10 ángeles creados  por Bernini en su última remodelación. Desde el Castel de Sant´Angelo hasta la Isla Tiberina, remontando por el río es posible enumerar magníficos monumentos, plazas y basílicas pero justo a la altura del Puente Palatino es posible tener la más bella vista de  la Roma Imperial . El Monte Palatino es la colina más famosa y es considerada la cuna de Roma por dos razones, porque ahí es   donde se asentaron los primeros habitantes y porque de acuerdo a la mitología romana  y su leyenda, el Palatino era el lugar donde Rómulo y Remo fueron encontrados dentro de una cueva conocida como el Lupercal donde habitaba la loba que los amamantó. El Palatino fue habitado desde el año 1000 aC y ahí habitaron muchos romanos de clases sociales altas durante el período republicano (510-44 aC) cuando la vida de los romanos todavía era simple y sobria pero durante los últimos años de la República las costumbres fueron cambiando y durante el Imperio las construcciones se fueron haciendo de mármol y más lujosas; razón por la cual se dice que Augusto recibió una ciudad de ladrillo y entregó una de mármol. En el Palatino es posible visitar al aire libre una infinidad de restos de edificaciones como el espléndido palacio Domus Flavia construido por el emperador Domiciano en el año 81aC así como la Casa del emperador (César)  Augusto que aún conserva sus coloridos frescos que decoraban sus muros. Pero mi favorita es la Casa de Livia (Julia), porque aunque es una casa de aspecto sencillo y modesto aún es posible apreciar los frescos y mosaicos que proporcionaron alegría a ese entorno. No es fácil describir las sensaciones producidas en el interior de esta vivienda que fueron testigos fieles de la vida de Livia Drusa Augusta, también conocida como Julia Augusta ( 59 aC-29 dC), tercera esposa del emperador Augusto[4], quien gozó de gran popularidad entre los romanos. Julia Augusta hace destacar las cualidades femeninas romanas como la maternidad para simbolizar el poder en la renovación de la República; hecho que tuvo un efecto en la visión del futuro imperial. Hacia el año 41 aC fue proclamada Diva Augusta, tras haber sido reivindicada de falsos rumores.  Fue simbolizada con su imagen durante todos los juegos públicos y se construyó una estatua en su honor dentro del templo de Augusto convirtiéndola en un modelo virtuoso de la mujer imperial que implicaba también poseer un carácter divino junto con su marido.

Livia o Julia en castellano,  fue uno de los nombres femeninos más importantes de los inicios de la época imperial romana  y que inicialmente fue un apellido de una gens romana pero suele traducirse etimológicamente como “de cabello ondulado” , sin embargo,  también es el nombre de un moderno lenguaje de programación conocido en el ámbito científico por su amplia librería que contiene una gran diversidad de funciones matemáticas. Julia es a la vez un lenguaje de alto nivel y  de alto rendimiento por lo que se ha visualizado como el lenguaje del futuro capaz de gobernar a todos los demás”. Por lo que si eres científico o aficionado a la computación es momento de descubrir lo que hay en este lenguaje.

¿Quieres saber más sobre el lenguaje de programación Julia?

Continúa leyendo…

………………………………………………………………………………………………

Comenzando con lo básico: ¿Qué es un lenguaje de programación?

Un lenguaje de programación es un idioma artificial diseñado para que el ser humano pueda comunicarse con una computadora así como para poder expresar cálculos que pueden ser llevados a cabo por ella. Un lenguaje de programación también  puede usarse para crear programas que controlen física y lógicamente  una máquina, para expresar algoritmos con precisión como los requeridos en la ciencia e ingeniería pero también se emplean  como  otro modo de comunicación humana.

Todos los lenguajes de programación están  formados, como en cualquier lenguaje,  por símbolos y reglas sintácticas y semánticas y al proceso con el cual se escribe, se depura, se codifica, se prueba,  se compila y se mantiene el código fuente de un programa informático se le llama programación.

Los primeros lenguajes de programación surgieron a partir de la idea de un matemático inglés de la Universidad de Cambridge llamado Charles Babbage. Con él trabajó Ada Byron (Lovelace), hija de Lord Byron[5] por lo que actualmente se le reconoce como la primera programadora del mundo , conocida también como la “Enchantress of Numbers”. El nombre del lenguaje de programación “Ada” fue escogido como homenaje a esta programadora. En la actualidad hay muchos tipos de lenguajes de programación, cada uno de ellos con su propia gramática,  terminología especial y una sintaxis particular. Por ejemplo, existen algunos creados especialmente para aplicaciones científicas o matemáticas generales (,  FORTRAN, ADA, PASCAL, etc. ); otros, en cambio, se orientan al manejo de textos y archivos para el entorno empresarial, es decir, son en realidad fundamentalmente gestores de información (COBOL, PL/1, etc), y otros  muy relacionados con el lenguaje máquina de la computadora (como el C y el ASSEMBLER).

Hasta el momento se cuentan con 5 generaciones de lenguajes de programación, siendo los de cuarta generación los más empleados para el desarrollo de aplicaciones web . Los lenguajes de cuarta generación son en sí un conjunto de herramientas prefabricadas que se parecen más al lenguaje inglés y a cierta lógica del pensamiento y los de quinta generación están relacionados con la inteligencia artificial.

Julia es un lenguaje de programación de reciente creación y único porque nos ofrece una visión anticipada de cómo se realizará la programación del futuro. Por ejemplo, Julia puede tener 100 procesos ejecutándose en diferentes máquinas y obtener resultados de ellas. Si esto se hiciera en Java, sería algo tedioso pero para Julia es muy sencillo[6].

Julia: el lenguaje

De acuerdo con la página http://julialang.org/ , “Julia es un lenguaje de programación de alto nivel, dinámico, y de alto rendimiento para cálculos tanto científicos como técnicos empleando una sintaxis similar a la de otros entornos de cómputo similares”. Dispone de un compilador avanzado, mecanismos para la ejecución en paralelo y una extensa biblioteca de funciones matemáticas. La biblioteca, desarrollada fundamentalmente en Julia, también contiene código desarrollado en C o Fortran.

El lenguaje fue creado en 2012 por Stefan Karpinski , estudiante graduado de la Universidad de California, que estaba involucrado  en un proyecto de simulación de redes que requería el uso de varios lenguajes de programación diferentes. Curiosamente, ninguno de los lenguajes usados podía hacer toda la tarea ni todo el proceso que requería esta simulación. Por ello, Karpinski, junto con sus compañeros de universidad Jeff Bezanson y Viral Shah  del MIT, decidieron resolverlo diseñando un nuevo lenguaje que fuera compatible con prácticamente cualquier tarea y lenguaje existente. La meta de Karpinski y su equipo era construir un lenguaje único que hiciera todo bien.

En Julia, las bibliotecas están escritas también  en Julia pero integrando  lo mejor de Fortran y del código de C en los siguientes rubros: álgebra lineal, generación de números al azar, procesamiento de señales y procesamiento de cadenas de caracteres o  strings . Además, la comunidad de desarrolladores de Julia ha contribuido con una serie de paquetes externos en muy poco tiempo. Julia es una colaboración de IPython y las comunidades de Julia, lo cual le da un navegador con una interfaz gráfica basada en Julia.

En resumen,  las características de Julia son:[7]

  • Posibilidad de definir el comportamiento de una función con una combinación de tipos de argumentos
  • Sistema dinámico de tipos: tipos para documentar, optimizar y ejecutar rutinas. Buen desempeño, el cual se aproxima (estadísticamente) a lenguajes como C manejador de paquetes “inter-construidos” . Macros similares a los de  LISP y otras facilidades de programación. Se pueden llamar funciones de Python vía  PyCall
  • Llamada a funciones de C directamente. No se necesita nada más. Capacidades poderosas del Shell para manejar otros procesos. Diseñado tanto para computación distribuida así como en paralelo.
  • Tipos definidos por el usuario que son rápidos y compactos como si fuesen “inter-construidos.”
  • Generación automática de código especializado y eficiente, de acuerdo al tipo de argumentos que manejen
  • Conversiones elegantes y extensibles así como promoción de tipos numéricos y otros tipos
  • Soporte para Unicode
  • Licencia MIT : libre y de código abierto

Julia tiene un compilador Jit Rápido

Una de las características más notables de Julia es el  performance de su compilador JIT, el cual es capaz de superar a lenguajes que tienen más historia. En la página oficial de Julia podemos ver un benchmark que compara a Julia con otros lenguajes como Fortran, Go, JavaScript,  Python, Mathematica, R, Matlab y Octave tomando como referencia a C;  de aquí pueden concluirse las ventajas de Julia:

IJulia

IJulia, es un entorno gráfico e interactivo que permite combinar instrucciones Julia con funciones matemáticas, gráficos, multimedia todo en un solo documento. Ijulia utiliza el poderoso entorno IPython para su funcionamiento. 

Descarga Julia y comienza a programar tu primer “Hello World”

Puedes descargar Julia en http://julialang.org/downloads/ , en su reciente versión v0.3.21 liberada hace apenas algunos días. Disponible para Windows, Mac OSX, Ubuntu, Fedora, RHEL, CentOs y otras binaries genéricas de Linux así como en su código fuente en Tarball y en GitHub.

Después te recomiendo entrar  a los videos de introducción rápida de Julia que fueron grabados en las sesiones del MIT así como algunos ejemplos interesantes de algunas aplicaciones de este lenguaje, para ello , da clic aquí

http://julialang.org/blog/2013/03/julia-tutorial-MIT/

…e iníciate con Julia haciendo tu primer programa “Hello World”.

Conclusiones

Los lenguajes de programación que hasta hoy han sido desarrollados en sus 5 generaciones han tenido diferentes objetivos. Algunos, como los lenguajes orientados a objetos han sido diseñados para ser de propósito general, como el Ruby, Java  o Python. En la ciencia, tradicionalmente se han empleado lenguajes de alto nivel como Fortran, Pascal  o C, pero a veces también Python es una buena opción por su codificación fácil y rápida; sin embargo, para aplicaciones estadísticas normalmente el lenguaje R ha sido el favorito y Matlab para cálculos matriciales. Sin embargo, las necesidades de  los matemáticos, investigadores y científicos han empujado a tener una nueva opción: Julia; lenguaje que por su elegancia en su escritura y por su rapidez para correrlo está rivalizando con C.

Julia está marcando la pauta del futuro de la programación y se dice que será el lenguaje que gobernará a todos los demás.

Y ahora…¿En qué piensas cuando escuchas el nombre de Julia?


[1] M. Clavel-lêveque,” L’empire en jeux, espace symbolique et pratique sociale dans le monde romain”,

Paris 1984

[2] Citado en “A Companion to the Archaeology of the Roman Republic” dsiponible en la web en http://books.google.com.mx/books?id=D-0XEWLhzxsC&pg

[3] Las siete colinas de la Roma antigua eran: El Aventino (Collis Aventinus), (47 metros de alto),El Capitolino  (Capitolinus, que tenía dos crestas: el Arx y el Capitolium), (50 metros de alto), El Celio  (Caelius, cuya extensión oriental se llamaba Caeliolus), (50 metros de alto), el Esquilino (Esquilinus, que tenía tres cimas: el Cispius, el Fagutalis y el Oppius), (64 metros de alto, el monte Palatino  (Collis Palatinus), (51 metros de alto). El Quinal  (Quirinalis,) (61 metros de alto) y el Viminal  (Viminalis), (60 metros de alto).

[4] Caius Iulius Caesar Augustus ( Roma 63 aC-14 dC), en español Cayo Julio César Augusto, conocido como César Augusto y más habitualmente como sólo Augusto, fue el primer emperador del Imperio Romano . Gobernó entre 27 aC y 14 dC, año de su muerte, convirtiéndose así en el emperador romano con el reinado más prolongado de la Historia

[5] George Gordon Byron, sexto Barón de Byron, ( 1788-1824), fue un poeta  inglés considerado uno de los escritores más versátiles e importantes del  Romanticismo.

[6] Citado en http://www.wired.com/2014/02/julia/

[7] Citado en http://julialang.org/

Deja un comentario