Weiter zum Inhalt
Künstliche Intelligenz
Python

Mojo: Die neue Programmiersprache für KI

Ein Überblick über eine neue Programmiersprache, so einfach wie Python und so schnell wie Rust.
Abid Ali Awan's photo
Abid Ali Awan
Aktualisiert · 9 Min. lesen

Entdecke KI

ChatGPTClaudePerplexity

Erstelle dein kostenloses Konto

Üben und Lernpfad deinen Fortschritt.

Weiter Mit Google
Durch Klick auf die Schaltfläche akzeptierst du unsere Nutzungsbedingungen, unsere Datenschutzrichtlinie und die Speicherung deiner Daten in den USA.

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.

Image from Modular: Get started today

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.

Image from Mojo Playground

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()

Mojo output graph

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.

  1. Wir erstellen eine CAR-Klasse mit struct.
  2. Wir initialisieren eine veränderliche Variable mit var.
  3. Wir setzen die Variablentypen. „speed“ ist Float32 und „model“ ist String. String ist kein eingebauter Typ, daher müssen wir ihn importieren.
  4. Wir erstellen zwei Initialisierungsfunktionen ähnlich wie in Python, aber mit fn. Eine nur mit Geschwindigkeit, eine mit Geschwindigkeit und Modell.
  5. Danach erzeugen wir ein Objekt CAR mit der Geschwindigkeit 300.
  6. 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.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

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.

Themen
Künstliche Intelligenz
Python

Lerne die Themen aus diesem Tutorial!

Kurs

Konzeptuelle Einführung in generative KI

2 Std.
120.9K
Erfahren Sie, wie Sie generative KI verantwortungsvoll nutzen. Lernen Sie ihre Entwicklung und Auswirkungen kennen.
Details anzeigenKurs Starten

Erstelle dein kostenloses Konto

Üben und Lernpfad deinen Fortschritt.

Weiter Mit Google
Durch Klick auf die Schaltfläche akzeptierst du unsere Nutzungsbedingungen, unsere Datenschutzrichtlinie und die Speicherung deiner Daten in den USA.
Mehr anzeigen
Ähnlich

Tutorial

30 coole Python-Tricks für besseren Code mit Beispielen

Wir haben 30 coole Python-Tricks zusammengestellt, mit denen du deinen Code verbesserst und deine Python-Kompetenzen ausbaust.
Kurtis Pykes 's photo

Kurtis Pykes

15 Min.

Tutorial

Python Hallo Welt: Ein Leitfaden für Programmieranfänger

Lerne die Grundlagen von Python, indem du das Programm print(„Hello World“) ausführst.
Adel Nehme's photo

Adel Nehme

3 Min.

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

5 Min.

Tutorial

Python-Anweisungen IF, ELIF und ELSE

In diesem Tutorial lernst du ausschließlich Python if else-Anweisungen kennen.
Sejal Jaiswal's photo

Sejal Jaiswal

9 Min.

Tutorial

Python Datenstrukturen Tutorial

Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Sejal Jaiswal's photo

Sejal Jaiswal

24 Min.

Tutorial

Python-Lambda-Funktionen: Ein Leitfaden für Anfänger

Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Mark Pedigo's photo

Mark Pedigo

10 Min.

Mehr anzeigen