Mojo: El lenguaje para programar Inteligencia Artificial que es un superconjunto de Python
Figura 2: Libros de Python para Pentesters y Hacking con Python de Daniel Echeverri publicados en 0xWord. |
El Lenguaje Mojo es un superconjunto de Python, y esto es una gran ventaja, ya que parte de este tan popular y querido lenguaje. El objetivo de este es claro: ser tan fácil de usar como Python, ser tan potente como el Lenguaje C. Ha sido creado por la empresa Modular, cuyo CEO es Chris Lattner, quien empezó a desarrollar el lenguaje Swift allá por el 2010, y apareció públicamente en mayo de este año 2023, donde para su uso era necesario solicitar permiso y únicamente se podía utilizar en navegador web, y desde este mes de septiembre ya es posible utilizarlo en GNU/Linux.
Características de Mojo
La extensión de un programa Mojo puede ser .mojo o el emoji con la llama de fuego. Así que por ejemplo si se tiene un programa hello.mojo, para ejecutarlo se escribiría mojo hello.mojo
Una de las ventajas clave es la paralelización. Mojo es el lenguaje diseñado para aprovechar al máximo MLIR, otro proyecto de éxito desarrollado por el mismo Chris Lattner con gran éxito, que es el reemplazo a la representación LLVM para esta nueva era de la Inteligencia Artificial, y que permite a los desarrolladores aprovechar al máximo los vectores, hilos y unidades de hardware de la IA.
Otra diferencia esencial con Python es que Mojo se trata de un lenguaje compilado. En Python el comportamiento del programa desarrollado dependerá de la versión exacta que se esté utilizando de este lenguaje y de las librerías usadas, y para solventar este problema se crearon los entornos para instalar aplicaciones Python, existiendo también los contenedores.
Y como se ha comentado, al ser un superconjunto de Python, se puede hacer uso de este y sus librerías.
Hay muchas otras características que puedes leer en el manual. Por destacar algunas, introduce verificación de tipado fuerte, crítico para obtener el mayor rendimiento y comprobar errores; declaración de variables mediante let (inmutables) y var (modificables), lo cual mejora el rendimiento al establecer restricciones en el momento de compilar; se puede hacer uso de tipos struct similares a las existentes en C/C++ y Rust en vez de class existente en Python, que presentan diseños predeterminados durante la compilación que garantizará una mayor eficiencia; y por terminar con otra característica, en vez de utilizar funciones definidas con def, Mojo ofrece la palabra clave fn, que representa una función con más restricciones, creando así código máquina optimizado.
Rendimiento
Se realizó una comparativa ejecutando el algoritmo Mandelbrot. En Python la ejecución llegó a más de 1000 segundos, mientras que con Mojo apenas 0.03 segundos. En este artículo puedes leer con más detalle cómo se llega a obtener un speedup frente a Python de 68000x, con diferentes técnicas de optimización.
En general, estos resultados prometen, y no hay nada mejor que ejecutarlo tu mismo y lanzar diferentes pruebas para hacerte tu propia idea sobre la mejora que se puede lograr con Mojo .
Conclusiones
Hay muchas esperanzas puestas en este lenguaje, el cual podría convertirse en un futuro próximo en el lenguaje para desarrollar IA, y como hemos visto no solo para este ámbito, sino que para propósitos generales también por todo lo que ofrece. Aquí tienes un vídeo con un repaso breve de Mojo tras su lanzamiento, por Jeremy Howard, referente en IA.
Figura 7: Presentación de Mojo por Jeremy Howard
Powered by WPeMatico