Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 5 Min.

Motoko: Programmiersprache für den "Internet-Computer"

Der Internet-Computer lässt sich mit Wasm programmieren. Mit Motoko wurde eine spezielle Programmiersprache entwickelt, die das Programmiermodell des Internet-Computers direkt unterstützt und es erlaubt auch die ungewöhnlicheren Funktionen dieser Plattform zu nutzen.
Dfinity baut den Internet-Computer auf: eine dezentrale Cloud-Computing-Plattform, die als nahtloses Software-Universum konzipiert wird, in dem Entwickler Anwendungen und Dienste direkt im Internet bereitstellen können.Der Internet-Computer ist eine dezentralisierte Cloud-Computing-Plattform, die sichere Software und eine neue Art von offenen Internet-Diensten beherbergen soll. Er verwendet ein starkes kryptographisches Konsensprotokoll, um Berechnungen über ein Peer-to-Peer-Netzwerk von (potenziell nicht vertrauenswürdigen) Rechenknoten sicher zu replizieren, möglicherweise überlagert mit vielen virtuellen Teilnetzen. Um diese Vision zu verwirklichen, hat sich Dfinity für WebAssembly als Lingua franca der Ausführungsumgebung der Plattform entschieden, so dass Entwickler sie in jeder Sprache programmieren können, die sich zu WebAssembly kompilieren lässt.Das ist jedenfalls die Theorie. In der Praxis ist die Portierung einer bestehenden Programmiersprache auf Wasm nicht ganz trivial, weil dazu die Implementierung eines neuen Compiler-Backends erforderlich ist und außerdem die Portierung des Laufzeitsystems der Sprache und der Bibliotheksprimitive. Und es gibt immer noch ein paar Funktionen, insbesondere solche, die für Hochsprachen relevant sind, die derzeit nicht ohne weiteres in Wasm implementiert werden können – zum Beispiel: Threads, Coroutines, Exceptions und Tail Calls.

Motoko

Aus diesem und etlichen weiteren Gründen hat sich Dfinity entschlossen, eine weitere Sprache zu schaffen, Motoko. Ziel war eine Sprache, die sicher und einfach zu benutzen ist und die Konzepte der Plattform nahtlos offenbart, sowie eine, die für die meisten Programmierer ausreichend freundlich und zugänglich aussieht.In Motoko ist zum Beispiel jedes Konstrukt ein Ausdruck, es hat closures, es hat variant types und statisch geprüfte Musterabgleiche, es hat Garbage Collection, und ein flexibles Typensystem, das die Abwesenheit bestimmter Fehler wie Abstürze, undefiniertes Verhalten, Fehlinterpretation von Daten oder einfach das Fehlen eines Falles in einem Schalter garantieren soll.Gleichzeitig hat Dfinity versucht auf einer Fülle von praktischen und theoretischen Erfahrungen aufzubauen. So können Zahlen standardmäßig nicht überlaufen, Locals sind standardmäßig unveränderlich (immutable), die gleichzeitige Ausführung ist standardmäßig atomar, Null kann standardmäßig nicht auftreten, Felder sind standardmäßig privat und so weiter. Außerdem gibt es keine Vererbung, nur Subtyping.Zentrales Element von Motoko ist die direkte Unterstützung für Actors, sowohl in der Syntax als auch im Type System. Das Actor-Modell ist ein über 40 Jahre altes Konzept, das es kaum in die Mainstream-Sprachen geschafft hat. Ein Actor ist wie ein Objekt (und sieht in der Motoko sogar wie eines aus), da es den privaten Status kapselt, zusammen mit einer Reihe von Methoden zur Verarbeitung von Nachrichten, die an ihn gesendet werden können. Aber alle gesendeten Nachrichten sind asynchron. Folglich haben Actor-Methoden im Gegensatz zu herkömmlichen Methoden keine Ergebnisse. Außerdem werden alle Nachrichten sequentiell von einem Akteur empfangen, das heißt er verfügt über eine implizite Nachrichtenwarteschlange, und die Methoden werden atomar ausgeführt, selbst wenn Nachrichten gleichzeitig gesendet werden.Actors sind ein gutes Modell für die nebenläufige Programmierung, weil sie automatisch Race Conditions (dank Atomarität und gekapseltem Zustand) und Deadlocks (weil die Ausführung nie blockiert) verhindern und somit viele Gleichzeitigkeitsfehler ausschließen. Actors sind auch ein geeignetes Modell für die verteilte Programmierung, da die Asynchronität mit der Latenz beim Senden einer Nachricht an einen potenziell entfernten Empfänger zu tun hat. Und schließlich eignen sich Actors bestens für den Internet-Computer von Dfinity, wo Anwendungen in Form von so genannten Kanistern (canisters) bereitgestellt werden. Ein Motoko-Akteur kompiliert zu einem Wasm-Modul, in dem die Methoden zu exportierten Wasm-Funktionen mit speziellen, von der Plattform definierten Parameterkonventionen werden.Kurz gesagt, eine Anwendung in Motoko ist ein Akteur (oder mehrere), der wiederum ein großes asynchrones Objekt ist, das in ein Wasm-Modul kompiliert wird. Mit Wasms Begriff des Speichers kann ein solcher Akteur sofort bis zu 4 GByte des internen Zustands verwalten, obwohl dies durch die Verknüpfung mehrerer Wasm-Module, die jeweils über eigenen Speicher verfügen, noch erweitert werden kann.

Futures

Um das asynchrone Programmieren bequemer zu machen und es in sequentiellem "direkten Stil" ausdrücken zu können, übernimmt Motoko eine weitere, über 40 Jahre alte Idee aus den Annalen der Programmiersprachenforschung, die allerdings glücklicherweise in letzter Zeit etwas populärer geworden ist: Futures (in einigen Gemeinschaften auch promises genannt). In Motoko materialisieren sie sich in Form von "async values", Werte vom Typ 'async', die durch Ausdrücke erzeugt werden, denen das Schlüsselwort 'async' vorangestellt ist.Damit ist es Akteursmethoden erlaubt, schließlich doch Ergebnisse zu haben, solange es sich um Futures handelt. Futures können abgewartet werden, um ihren Wert zu erhalten, aber nur innerhalb eines anderen asynchrone Ausdrucks. Mehr zum Internet-Computer und zu Motoko erfahren Sie bei dfinity und in diesem Blogbeitrag von dfinity-Mitarbeiter Andreas Rossberg. Infos zum Motoko-SDK gibt's hier und die GitHub-Seite zu Motoko hier.
Inhalt
Miscellaneous

Neueste Beiträge

Offen, aber nicht leicht - Kimi K3 – das Modell hinter dem Agenten, Teil 6
Ein offenes Modell lässt sich herunterladen, aber noch lange nicht beiläufig betreiben. Zwischen technischer Kontrolle und praktischem Nutzen zeigt sich, ob Kimi K3 den Sprung vom Benchmark in produktive Anwendungen schafft.
8 Minuten
KI ersetzt keine Softskills – sie deckt nur gnadenlos auf, wer keine hat - Interview
Auf der Open Stage der DWX 2026 vertrat Recruiting-Expertin Laura Rheinwald von ITech Progress in ihrem Vortrag die Meinung, dass die KI die Kommunikation zwischen Menschen verändert. Developer World wollte von ihr wissen, in welcher Weise.
23. Sep 2026
Connected Apps mit .NET - Graph API als Integrationsplattform
Microsoft Graph bietet .NET-Entwicklern einheitlichen Zugang zu den Daten und Diensten von Microsoft 365 – für moderne, sichere und kontextbezogene Business-Anwendungen.
17 Minuten

Das könnte Dich auch interessieren

Elektronische Schaltkreise im Browser simulieren - Simulation
Statt mit Steckfeld oder Lötkolben kann man auf dieser Website Schaltungen per Drag and Drop zusammenstellen und deren Verhalten testen.
2 Minuten
26. Jul 2018
UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
C#-.NET-Apps mit WinUI 3 - Komponentenbasierte Apps mit Fluent/FAST, Teil 3
Microsoft macht mit WinUI 3 ein natives User-Experience-Framework für Windows verfügbar, dessen Komponenten auf dem Microsoft-eigenen Design-System Fluent 2 basieren.
23 Minuten
13. Mai 2024
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige