Mojo, el nuevo lenguaje de programación creado por Chris Lattner el creador de LLVM

mayo 17, 2023 0 Comments

Mojo lang

Mojo es un nuevo lenguaje de programación que promete un mejor rendimiento para el desarrollo de aprendizaje automático

Hace pocos días se dio a conocer la noticia de que Chris Lattner, fundador y arquitecto jefe de LLVM y Tim Davis, exjefe de proyectos de IA de Google lanzaron «Mojo», un nuevo lenguaje de programación, basado en Python, que soluciona los problemas de implementación y rendimiento de Python.

Se menciona que Mojo que combina la facilidad de uso para I+D y la creación rápida de prototipos con idoneidad para productos finales de alto rendimiento. El primero se logra mediante el uso de la sintaxis familiar del lenguaje Python, y el segundo se debe a la capacidad de compilar en código de máquina, mecanismos para la gestión segura de la memoria y el uso de herramientas para la aceleración de cálculos por hardware.

Sobre Mojo

Este nuevo lenguaje de programación se centra en el uso para el desarrollo de aprendizaje automático, pero se presenta como un lenguaje de propósito general que amplía las capacidades del lenguaje Python con la programación de sistemas y es adecuado para una amplia gama de tareas.

Por ejemplo, el lenguaje es aplicable a áreas como la informática de alto rendimiento, el procesamiento y la transformación de datos. Una característica interesante de Mojo es la capacidad de especificar el símbolo emoji «🔥» como extensión para archivos de código.

El proyecto está diseñado para involucrar los recursos de hardware de los sistemas disponibles en el sistema en los cálculos. Por ejemplo, se pueden usar GPU, aceleradores de aprendizaje automático especializados e instrucciones de procesamiento de vectores (SIMD) para ejecutar aplicaciones Mojo y paralelizar cálculos.

La razón para desarrollar un subconjunto separado del lenguaje Python, en lugar de unirse al trabajo de optimización del CPython existente, se cita como:

Un enfoque de compilación, integración de las capacidades de programación del sistema y el uso de una arquitectura interna fundamentalmente diferente que permite que el código sea ejecutado en GPU y varios aceleradores de hardware. Al mismo tiempo, los desarrolladores de Mojo tienen la intención de adherirse a la compatibilidad con CPython tanto como sea posible.

Mojo se puede usar tanto en el modo de interpretación JIT como para la compilación en archivos ejecutables (AOT, antes de tiempo). El compilador tiene tecnologías modernas incorporadas para la optimización automática , el almacenamiento en caché y la compilación distribuida.

El código fuente en el lenguaje Mojo se convierten en código intermedio de bajo nivel MLIR (Multi-Level Intermediate Representation), desarrollado por el proyecto LLVM y que proporciona funciones adicionales para optimizar el procesamiento de gráficos de flujo de datos.

El uso de mecanismos de hardware adicionales para acelerar los cálculos permite alcanzar un rendimiento que, con cálculos intensivos, supera a las aplicaciones C/C++.

Chris lattner es responsable de crear muchos de los proyectos en los que todos confiamos hoy, ¡aunque es posible que ni siquiera hayamos oído hablar de todo lo que construyó! Como parte de su tesis doctoral, comenzó el desarrollo de LLVM, que cambió fundamentalmente la forma en que se crean los compiladores y, en la actualidad, constituye la base de muchos de los ecosistemas lingüísticos más utilizados en el mundo.

Luego pasó a lanzar Clang, un compilador de C y C++ que se encuentra en la parte superior de LLVM y es utilizado por la mayoría de los desarrolladores de software más importantes del mundo (incluido el suministro de la columna vertebral para el código crítico de rendimiento de Google). 

Al evaluar el desempeño en el campo de la resolución de problemas de aprendizaje automático, la pila Modular Inference Engine AI escrita en el lenguaje Mojo, en comparación con una solución basada en la biblioteca TensorFlow, resultó ser 3 veces más rápida en un sistema con un procesador Intel

Sin embargo, Chris vio que C y C++ no aprovechaban completamente el poder de LLVM, por lo que mientras trabajaba en Apple diseñó un nuevo lenguaje, llamado «Swift», que describe como «azúcar de sintaxis para LLVM». 

Cabe mencionar que el lenguaje es compatible con la escritura estática y las funciones seguras de memoria de bajo nivel que recuerdan a las funciones de Rust, como el seguimiento de la vida útil de referencia y el préstamo de variables (verificador de préstamos).

Además de los medios para una operación segura con punteros, el lenguaje también proporciona características para el trabajo de bajo nivel, por ejemplo, es posible acceder directamente a la memoria en modo no seguro utilizando el tipo de puntero, llamar a instrucciones SIMD individuales o acceder a extensiones de hardware como TensorCores y AMX.

Actualmente, el lenguaje está bajo un desarrollo intensivo y solo se ofrece la interfaz en línea para probar. A futuro se promete publicar compilaciones separadas para ejecutar en sistemas locales más adelante, después de recibir comentarios sobre el trabajo del entorno web interactivo.

Está previsto abrir el código fuente del compilador, JIT y otros desarrollos relacionados con el proyecto después de que se completa el diseño de la arquitectura interna (el modelo de desarrollo de un prototipo de trabajo a puerta cerrada se asemeja a la etapa inicial de desarrollo de LLVM, Clang y Swift).

Dado que la sintaxis de Mojo se basa en Python y el sistema de tipos está cerca de C/C++, hay planes en el futuro para desarrollar un conjunto de herramientas para facilitar la traducción de proyectos existentes escritos en C/C++ y Python a Mojo, así como para desarrollar proyectos híbridos que combinan código Python y Mojo.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.