Kurs
Mojo ist eine Programmiersprache, die die Benutzerfreundlichkeit und Flexibilität dynamischer Sprachen wie Python mit der Leistung und Kontrolle von Systemsprachen wie C++ und Rust verbindet.
Sie erreicht hohe Performance durch innovative Compiler-Technologien wie integriertes Caching, Multithreading und Cloud-Distribution. Autotuning und Metaprogrammierung ermöglichen zusätzlich eine Optimierung des Codes für unterschiedliche Hardware.
Die wichtigsten Features von Mojo sind:
- Python-ähnliche Syntax und dynamische Typisierung machen Mojo für Python-Entwickler leicht zugänglich, zumal Python die wichtigste Sprache hinter modernen KI/ML-Entwicklungen ist.
- Mit Mojo kannst du jede Python-Bibliothek importieren und nutzen – volle Interoperabilität mit Python inklusive.
- Unterstützung für Just-in-Time- (JIT) und Ahead-of-Time- (AOT) Kompilierung. Der Mojo-Compiler setzt fortgeschrittene Optimierungen ein und generiert sogar GPU/TPU-Code.
- Mojo gibt dir die volle Kontrolle über Speicherlayout, Nebenläufigkeit und andere Low-Level-Details.
- Durch die Kombination dynamischer und systemnaher Fähigkeiten folgt Mojo einem einheitlichen Programmiermodell, das einsteigerfreundlich ist und sich für verschiedene, auf Beschleunigern basierende Use Cases skalieren lässt.
Mojo ist derzeit noch nicht vollständig und nicht öffentlich verfügbar. Die Dokumentation richtet sich an Entwicklerinnen und Entwickler mit Systemprogrammierungs-Erfahrung.
Mit dem weiteren Ausbau der Sprache soll sie jedoch benutzerfreundlicher werden und auch Einsteigerinnen und Einsteigern den Zugang erleichtern.
Erste Schritte mit Mojo
Mojo ist nicht öffentlich verfügbar, aber du kannst über eine Anmeldung für die Modular Products auf das Mojo Playground zugreifen. Achte bei der Registrierung darauf, Mojo unter Modular Product Interest auszuwählen.

Bildquelle: Modular: Get started today
Nach der Anmeldung erhältst du innerhalb einer Stunde eine E-Mail, die dir Zugang zum Mojo Playground gewährt. Das Mojo Playground ist eine JupyterHub-Umgebung, in der alle Nutzenden auf dieselbe Mojo-Standardbibliothek zugreifen. Zusätzlich hat jede Person ein privates Volume, um eigene Mojo-Programme zu schreiben und zu speichern.

Bild aus dem Mojo Playground
Sobald Mojo Open Source und öffentlich verfügbar ist, kannst du Mojo-Programme im Terminal ausführen. Mojo lässt sich sowohl interpretieren als auch kompilieren.
Du kannst die Datei als test.mojo oder test.🔥 speichern.
Ja, du kannst deine Datei mit dem Feuer-Emoji speichern. Wie du siehst, haben wir eine simple Mojo-Datei test.🔥 erstellt und im Terminal ausgeführt.
def main():
print("Hello Mojo!")
$ mojo test.🔥
Hello Mojo!
Mojo und Python
Mojo ist eine Obermenge von Python und hat nahezu die gleiche Syntax. Zusätzlich führt es neue Konzepte wie let, var, struct und fn ein, um Variablen, Strukturen und Funktionen zu definieren und dadurch die Performance zu steigern.
let- und var-Deklarationen
In Mojo kannst du Variablen mit den Schlüsselwörtern let und var deklarieren – ähnlich wie in Rust.
Das Schlüsselwort let kennzeichnet eine unveränderliche Variable, während var auf eine veränderliche hinweist. Diese Einschränkungen zur Compile-Zeit verbessern die Performance.
struct-Typen
Mojo verwendet das Schlüsselwort struct, das in etwa Pythons class entspricht. Klassen in Python sind dynamisch und langsam, struct-Typen ähneln eher C/C++ und Rust. Sie haben zur Compile-Zeit festgelegte Speicherlayouts und sind dadurch auf maschinennahe Leistung optimiert.
fn-Definitionen
Mit def definierst du eine Python-Funktion mit all der Dynamik und Flexibilität von Python. Das Schlüsselwort fn definiert hingegen eine Mojo-Funktion mit strengeren Regeln. Standardmäßig sind Argumente unveränderlich, und lokale Variablen sowie Typen müssen explizit deklariert werden – unter anderem.
Beispiel: Syntaxvergleich
Im Beispiel erstellen wir eine Mojo-Funktion, die zwei Argumente addiert.
So führst du die Mojo-Funktion aus:
- Du musst die Typen der Funktionsargumente angeben.
- Du gibst den Rückgabetyp mit einem Pfeil an.
fn add(x: Int, y: Int) -> Int:
return x + y
z = add(3, 5)
print(z)
>>> 8
In Python können wir Funktionen definieren, ohne Argument- und Rückgabetypen explizit anzugeben. Das macht es dynamisch und unkompliziert. Im Vergleich dazu ist Mojos fn-Variante jedoch schneller als def.
def add(x, y):
return x + y
z = add(3, 5)
print(z)
>>> 8
Matplotlib in Mojo
Mojo steigert nicht nur die Performance, sondern ermöglicht auch, beliebige Python-Bibliotheken zu importieren und mit Mojo-Funktionen zu integrieren. Über den CPython-Interpreter unterstützt Mojo nahtlos alle aktuell verfügbaren Python-Module.
Im folgenden Beispiel haben wir matplotlib.pyplot importiert und ein Liniendiagramm visualisiert. Für fortgeschrittene Beispiele schau dir Mandelbrot in Mojo an.
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()

Allgemein gilt Python als die beliebteste Sprache für KI/ML. Der Machine Learning Scientist with Python-Lernpfad vermittelt dir die nötigen Python-Kompetenzen, um als Machine-Learning-Scientist durchzustarten.
Programmieren mit Mojo
Mojo ist eine Obermenge von Python – so wie TypeScript eine Obermenge von JavaScript ist. Abgesehen von neuen Schlüsselwörtern und Funktionen können Python-Programmierende Mojo problemlos lesen und damit Programme bauen.
In diesem Abschnitt schauen wir uns Funktionen von Mojo an, die es schnell und sicher machen.
Low-Level-Programmierung
Mojo ist eine High-Level-Sprache, die über MLIR (Multi-Level Intermediate Representation), ein erweiterbares Zwischenformat, Zugriff auf Low-Level-Primitiven bietet. Dadurch können Mojo-Entwickelnde Zero-Cost-Abstraktionen umsetzen und gleichzeitig starke Compiler-Optimierungen nutzen.
Tiling-Optimierung und Autotune
Mojo verfügt über ein integriertes Tiling-Optimierungstool, das Cache-Lokalität und Speicherzugriffsmuster verbessert, indem Berechnungen in kleinere Kacheln zerlegt werden, die in den schnellen Cache passen.
Das Autotune-Modul in Mojo stellt Schnittstellen für adaptive Kompilierung bereit. Es hilft dir, die besten Parameter für deine Zielhardware zu finden, indem es deinen Code automatisch abstimmt.
Ownership und Borrowing
Mojo verwendet ein Ownership-und-Borrowing-System zur Speicherverwaltung. Dadurch entfällt ein Garbage Collector und die Laufzeitleistung bleibt konstant. Der Mojo-Compiler analysiert Variablenlebenszyklen per statischer Analyse und gibt Daten frei, sobald sie nicht mehr genutzt werden.
Manuelle Speicherverwaltung
Mojo bietet außerdem manuelle Verwaltung über Pointer – ähnlich wie in C++ und Rust.
Matrixmultiplikation in Mojo
Im Beispiel zur Matrixmultiplikation zeigte das Importieren von Python-Code nach Mojo einen Performance-Schub um das 17,5-Fache.
Durch das Einführen von Typen in die Python-Implementierung stieg die Leistung sogar um beeindruckende das 1866,8-Fache.
Zusätzlich kamen Techniken wie Vektorisierung, Parallelisierung, Tiling und Autotuning zum Einsatz – mit einem Leistungszuwachs von dem 14050,5-Fachen. Das ist enorm. Selbst Julia und Rust erreichen diese Optimierung nicht.
Mojo-Codebeispiel
Im Auto-Beispiel erstellen wir eine CAR-Klasse mit Mojo-Syntax.
- Wir erstellen eine
CAR-Klasse mitstruct. - Wir initialisieren eine veränderliche Variable mit
var. - Wir setzen die Variablentypen. „speed“ ist Float32 und „model“ ist String. String ist kein eingebauter Typ, daher müssen wir ihn importieren.
- Wir erstellen zwei Initialisierungsfunktionen ähnlich wie in Python, aber mit
fn. Eine nur mit Geschwindigkeit, eine mit Geschwindigkeit und Modell. - Danach erzeugen wir ein Objekt
CARmit der Geschwindigkeit 300. - Wir geben das Modell des Autos aus.
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
Wie du siehst, ähneln Programmierstil und Funktionsweise von Mojo stark denen von Python. Mojo erweitert Python um Performance- und Speicherverwaltungs-Features. Damit trainierst du Modelle schneller, beschleunigst Inferenz (auch auf CPUs), analysierst riesige Datensätze in Sekunden und simulierst in Echtzeit.
Alle Codebeispiele findest du in den Modular Docs und kannst sie im Playground in einem Jupyter-Notebook ausführen.
Wird Mojo Python ersetzen?
Aktuell ist es aufgrund des frühen Entwicklungsstands und fehlender Features schwer, Mojos Potenzial als allgemeine Programmiersprache abzuschätzen. Im Bereich Machine Learning und KI, wo Performance entscheidend ist, könnte Mojo Python jedoch übertreffen.
Es ist dennoch unwahrscheinlich, dass Mojo Python in Data Science und anderen Bereichen der Softwareentwicklung bald vollständig ablösen wird.
Mojo ist speziell für Machine-Learning-Anwendungen konzipiert und nicht für Bereiche wie Web-Backends, Prozessautomatisierung oder Webdesign gedacht. Auch wenn der Funktionsumfang künftig wachsen kann, liegt der aktuelle Fokus klar auf Optimierung für Machine Learning.
Außerdem ist die Modulauswahl im Vergleich zu Python begrenzt. Python profitiert von einer großen Community, die fortlaufend neue und bessere Tools für KI und Data Science schafft. Es könnte Jahre dauern, bis Mojo hier aufschließt.
Lerne, wie generative KI-Modelle entwickelt werden und welche Auswirkungen sie künftig auf die Gesellschaft haben, im DataCamp-Kurs Generative AI Concepts.
Fazit
Kurz gesagt: Mojo ist eine vielversprechende, schnelle und Python-kompatible Sprache für KI/ML, wird Python aber auf absehbare Zeit kaum vollständig ersetzen. Python profitiert von einem riesigen Ökosystem, einer starken Community und seiner festen Verankerung in Data Science und ML. Am ehesten wird Mojo Python ergänzen – überall dort, wo es auf maximale Geschwindigkeit ankommt.
In diesem Tutorial haben wir Features und Syntax der Programmiersprache Mojo anhand von Codebeispielen betrachtet. Außerdem haben wir Mojo und Python verglichen – mit Blick auf Performance, Syntax, Funktionalität und Kompatibilität. Wenn du die Grundlagen von KI und Machine Learning meistern möchtest, empfehlen wir den Lernpfad Machine Learning Fundamentals with Python.
Als zertifizierter Data Scientist ist es meine Leidenschaft, modernste Technologien zu nutzen, um innovative Machine Learning-Anwendungen zu entwickeln. Mit meinem fundierten Hintergrund in den Bereichen Spracherkennung, Datenanalyse und Reporting, MLOps, KI und NLP habe ich meine Fähigkeiten bei der Entwicklung intelligenter Systeme verfeinert, die wirklich etwas bewirken können. Neben meinem technischen Fachwissen bin ich auch ein geschickter Kommunikator mit dem Talent, komplexe Konzepte in eine klare und prägnante Sprache zu fassen. Das hat dazu geführt, dass ich ein gefragter Blogger zum Thema Datenwissenschaft geworden bin und meine Erkenntnisse und Erfahrungen mit einer wachsenden Gemeinschaft von Datenexperten teile. Zurzeit konzentriere ich mich auf die Erstellung und Bearbeitung von Inhalten und arbeite mit großen Sprachmodellen, um aussagekräftige und ansprechende Inhalte zu entwickeln, die sowohl Unternehmen als auch Privatpersonen helfen, das Beste aus ihren Daten zu machen.
