Curso
Mojo es un lenguaje de programación que combina la facilidad de uso y la flexibilidad de los lenguajes dinámicos, como Python, con el rendimiento y el control de los lenguajes de sistemas, como C++ y Rust.
Logra un alto rendimiento gracias a innovaciones en el compilador, como caché integrada, multihilo y distribución en la nube, mientras que el autotuning y la metaprogramación permiten optimizar el código para distintos tipos de hardware.
Las características clave de Mojo incluyen:
- Una sintaxis similar a Python y tipado dinámico que facilitan el aprendizaje a desarrolladores de Python, el principal lenguaje detrás de los avances modernos en IA/ML.
- Con Mojo, puedes importar y utilizar cualquier biblioteca de Python, lo que garantiza una interoperabilidad total con Python.
- Admite compilación just-in-time (JIT) y ahead-of-time (AOT). El compilador de Mojo aplica optimizaciones avanzadas e incluso genera código para GPU/TPU.
- Mojo te da control total sobre el diseño de memoria, la concurrencia y otros detalles de bajo nivel.
- Al combinar capacidades de lenguajes dinámicos y de sistemas, Mojo sigue un modelo de programación unificado que es fácil para principiantes y escalable para múltiples casos de uso acelerados por hardware.
Actualmente, Mojo es un lenguaje incompleto y no está disponible públicamente. La documentación está dirigida a desarrolladores con experiencia en programación de sistemas.
Sin embargo, a medida que el lenguaje madure, su intención es hacerlo más accesible y fácil para quienes empiezan a programar.
Primeros pasos con Mojo
Mojo no está disponible públicamente, pero puedes acceder a Mojo Playground registrándote en los productos de Modular. Al registrarte, asegúrate de seleccionar Mojo en el apartado de interés de productos de Modular.

Imagen de Modular: empieza hoy
Tras registrarte, recibirás un correo que te dará acceso a Mojo Playground en menos de una hora. Mojo Playground es un entorno JupyterHub donde los usuarios acceden a la misma biblioteca estándar de Mojo, pero con un volumen privado para escribir y guardar sus programas en Mojo.

Imagen de Mojo Playground
Cuando Mojo sea de código abierto y esté disponible para todo el mundo, podrás ejecutar un programa de Mojo desde una terminal. Puede funcionar tanto interpretado como compilado.
Puedes guardar el archivo como test.mojo o test.🔥.
Sí, puedes guardar tu archivo con el emoji de fuego. Como ves, hemos creado un archivo sencillo de Mojo test.🔥 y lo hemos ejecutado en la terminal.
def main():
print("Hello Mojo!")
$ mojo test.🔥
Hello Mojo!
Mojo y Python
Mojo es un superconjunto de Python y su sintaxis es casi idéntica. También introduce novedades como let, var, struct y fn para definir variables, estructuras y funciones con el objetivo de mejorar el rendimiento.
Declaraciones let y var
Al escribir código en Mojo, puedes declarar variables con las palabras clave let y var, de forma similar a Rust.
La palabra clave let indica que una variable es inmutable, mientras que var indica que puede modificarse. Esto mejora el rendimiento al imponer restricciones en tiempo de compilación.
Tipos struct
Mojo usa la palabra clave struct, similar a la class de Python. Las clases en Python son dinámicas y lentas; los tipos struct se parecen más a C/C++ y Rust. Tienen diseños de memoria fijos determinados en compilación, optimizados para el rendimiento nativo de máquina.
Definiciones fn
Usar def para definir una función crea una función de Python, con todo el dinamismo y la flexibilidad propios de Python. La palabra clave fn, en cambio, define una función de Mojo con más restricciones: los argumentos son inmutables por defecto y requiere tipado explícito y declaraciones de variables locales, entre otras cosas.
Ejemplo de comparación de sintaxis
En el ejemplo, crearemos una función de Mojo que suma dos argumentos.
Para ejecutar la función de Mojo:
- Debes especificar un tipo para los argumentos de la función.
- Debes declarar el tipo de retorno con una flecha.
fn add(x: Int, y: Int) -> Int:
return x + y
z = add(3, 5)
print(z)
>>> 8
En Python, podemos definir funciones sin indicar explícitamente el tipo de los argumentos y del resultado, lo que hace el proceso más dinámico y sencillo. Aun así, la función fn de Mojo suele ser más rápida que def.
def add(x, y):
return x + y
z = add(3, 5)
print(z)
>>> 8
Matplotlib en Mojo
Mojo no solo aporta rendimiento, también permite importar cualquier biblioteca de Python e integrarla con funciones de Mojo. Al utilizar el intérprete de CPython, Mojo es compatible sin fricciones con todos los módulos de Python disponibles hoy.
En el siguiente ejemplo, hemos importado matplotlib.pyplot y visualizado una gráfica de líneas. Para ejemplos avanzados, echa un vistazo a Mandelbrot en Mojo.
from PythonInterface import Python
let plt = Python.import_module("matplotlib.pyplot")
x = [1, 2, 3, 4]
y = [30, 20, 50, 60]
plt.plot(x, y)
plt.show()

Es bien sabido que Python es el lenguaje más popular para IA/ML. Si sigues el itinerario Machine Learning Scientist with Python, adquirirás las habilidades de Python necesarias para conseguir un puesto como científico de machine learning.
Programación con Mojo
Mojo es un superconjunto de Python, de forma similar a cómo TypeScript lo es de JavaScript. Más allá de nuevas palabras clave y funciones, cualquier programador de Python puede entenderlo y crear programas con él.
En esta parte, veremos las funciones de programación de Mojo que lo hacen rápido y seguro.
Programación de bajo nivel
Mojo es un lenguaje de alto nivel que ofrece acceso a primitivas de bajo nivel a través de MLIR (Multi-Level Intermediate Representation), un formato de representación intermedia extensible. Esto permite implementar abstracciones de coste cero aprovechando potentes optimizaciones del compilador.
Optimización por teselado y autotune
Mojo incorpora una herramienta de optimización por teselado que mejora la localidad de caché y los patrones de acceso a memoria al dividir los cálculos en bloques más pequeños que caben en la caché rápida.
El módulo Autotune de Mojo ofrece interfaces para compilación adaptativa. Te ayuda a encontrar los mejores parámetros para tu hardware objetivo ajustando automáticamente tu código.
Propiedad y préstamos
Mojo usa un sistema de propiedad y préstamos para gestionar la memoria, lo que elimina la necesidad de un recolector de basura y garantiza un rendimiento uniforme en ejecución. El compilador analiza de forma estática el ciclo de vida de las variables y libera los datos en cuanto dejan de usarse.
Gestión manual de memoria
Mojo también ofrece un sistema de gestión manual mediante punteros, similar a C++ y Rust.
Multiplicación de matrices en Mojo
En el ejemplo de multiplicación de matrices, vimos que importar código de Python en Mojo supuso un incremento de rendimiento de 17,5 veces.
Al introducir tipos en la implementación en Python, el rendimiento mejoró aún más, nada menos que 1866,8 veces.
Además, utilizaron técnicas como vectorización, paralelización, teselado y autotuning para lograr una mejora de 14050,5 veces. Es impresionante. Ni Julia ni Rust alcanzan este nivel de optimización.
Ejemplo de código en Mojo
En este ejemplo de coches, crearemos una clase CAR con sintaxis de Mojo.
- Crearemos una clase
CARusandostruct. - Iniciaremos variables mutables con
var. - Definiremos los tipos de las variables. La "speed" será Float32 y "model" será String. String no es un tipo integrado, así que hay que importarlo.
- Crearemos dos funciones de inicialización similares a Python pero con
fn: una solo con la velocidad del coche y otra con velocidad y modelo. - Después, crearemos un objeto
CARcon velocidad 300. - Imprimiremos el modelo del coche.
from String import String
struct CAR:
var speed: Float32
var model: String
fn __init__(inout self, x: Float32):
"""Car with only speed"""
self.speed = x
self.model = 'Base'
fn __init__(inout self, r: Float32, i: String):
"""Car with Speed and model"""
self.speed = r
self.model = i
my_car=CAR(300)
print(my_car.model)
Base
Como puedes ver, el estilo y la funcionalidad de programación de Mojo son similares a los de Python. Actúa como una extensión de Python que mejora su rendimiento y la gestión de memoria. Con Mojo, puedes entrenar tu modelo más rápido, acelerar la inferencia (incluso con CPU), analizar conjuntos de datos masivos en segundos y simular en tiempo real.
Puedes consultar todos los ejemplos de código en la documentación de Modular y ejecutarlos en un cuaderno de Jupyter en el playground.
¿Sustituirá Mojo a Python?
Por ahora es difícil determinar el potencial de Mojo como lenguaje de propósito general debido a su fase temprana de desarrollo y a la falta de funciones necesarias. Aun así, podría superar a Python en aplicaciones de machine learning e IA donde el rendimiento es crucial.
Con todo, es poco probable que Mojo desplace por completo el papel protagonista de Python en ciencia de datos y otras áreas del desarrollo de software a corto plazo.
Mojo está diseñado específicamente para aplicaciones de machine learning y no está pensado para otras áreas como backends web, automatización de procesos o diseño web. Aunque en el futuro podrían ampliar su alcance, el foco actual de Mojo es optimizar para aplicaciones de ML.
Además, conviene recordar que Mojo dispone de menos módulos y bibliotecas que Python, que se beneficia de una comunidad enorme que crea continuamente nuevas herramientas para IA y ciencia de datos. Mojo podría tardar años en alcanzar el nivel de madurez de Python.
Aprende cómo se desarrollan los modelos de IA generativa y cómo impactarán en la sociedad con el curso de DataCamp Generative AI Concepts.
Conclusión
En resumen, aunque Mojo apunta maneras como lenguaje rápido y compatible con Python pensado para IA/ML, es poco probable que sustituya por completo a Python a corto plazo. Python se beneficia de un ecosistema masivo, una gran comunidad y una presencia muy asentada en ciencia de datos y ML. En el mejor de los casos, Mojo puede convertirse en un lenguaje complementario a Python, útil cuando la velocidad sea crítica.
En este tutorial hemos repasado las funciones y la sintaxis del lenguaje Mojo con ejemplos de código. También lo hemos comparado con Python en aspectos como rendimiento, sintaxis, funcionalidad y compatibilidad. Si quieres dominar los fundamentos de IA y machine learning, te recomendamos el itinerario Machine Learning Fundamentals with Python.
Soy un científico de datos certificado que disfruta creando aplicaciones de aprendizaje automático y escribiendo blogs sobre ciencia de datos. Actualmente me centro en la creación de contenidos, la edición y el trabajo con grandes modelos lingüísticos.



