Anzeige
Anzeige
News
Artikel merken

Programmiersprachen: Wieso Zig die Vorherrschaft von C beenden könnte

C, C++, Rust und Go reichen dir nicht? Dann probiere es doch mal mit Zig! Die neue Programmiersprache zur systemnahen Entwicklung sorgt mächtig für Wirbel. Denn sie könnte die langjährige Herrschaft von C beenden – und versteckt die wirklich interessanten Konzepte im Detail.

Von Stefica Budimir Bekan
3 Min. Lesezeit
Anzeige
Anzeige
Zig scheint unter Programmierer:innen immer beliebter zu werden (Foto: Shutterstock/Nattakorn_Maneerat)

Zig versucht, die Sicherheit von Rust mit der Leichtigkeit von C zu verbinden. Die Programmiersprache kann mit Besonderheiten wie comptime punkten – einem Schlüsselwort, mit dessen Hilfe Code explizit zur Compile-Zeit ausgewertet werden kann.

Anzeige
Anzeige

Die Programmiersprache wurde bereits 2016 von Andrew Kelley ins Leben gerufen und scheint nun immer beliebter zu werden. Laut dem Entwickler ist Zig „eine modernere Sprache, die versucht, das Beste aus diesen Sprachen zu absorbieren und eine vergleichbare Leistung mit einer besseren, zuverlässigeren Entwickler:innenerfahrung zu bieten.“

Wann kommt die 1.0-Version von Zig?

Zwar hat es Zig noch nicht zur Version 1.0 geschafft, doch das könnte sich 2025 ändern, wie Kelley in einem Roadmap-Update vor ein paar Monaten bestätigte. Kunst könne man eben nicht hetzen, erklärte er.

Anzeige
Anzeige

Und mit Kunst lässt sich Zig tatsächlich auch vergleichen, denn wie Jarred Sumner, der Schöpfer von Bun verriet, ähnelt Zig „dem Schreiben von C, aber mit besseren Speichersicherheitsfunktionen im Debug-Modus und modernen Funktionen wie Defer (ähnlich wie bei Go)“. Die Sprache habe nur sehr wenige Schlüsselwörter, daher sei sie viel einfacher zu lernen als C++ oder Rust.

Zig soll die moderne Alternative zu C werden

Damit ist Zig auf dem besten Wege C abzulösen – sowohl als tragbare Low-Level-Sprache als auch als Standard, mit dem andere Sprachen verglichen werden. Derzeit wird Zig verwendet, um die Bun.js-JavaScript-Laufzeit als Alternative zu Node.js zu implementieren.

Anzeige
Anzeige

In vielen anderen Sprachen, wie beispielsweise Python, müssen Daten speziell für die Interoperabilität von C und C++ umgewandelt werden. Zig ist da viel moderner, denn sie kann dank des eingebauten Clang-Compilers Bibliotheken von C und C++ direkt importieren.

Der Compiler kann Header-Dateien für diese Sprache generieren, um umgekehrt in Zig geschriebene Programmteile in C oder C++ verwenden zu können. Die Ausgabe von Zig-Bibliotheken ist eine .o-Datei, die direkt in GCC eingespeist werden kann.

Anzeige
Anzeige

Diese Kernfunktionen hat Zig zu bieten:

  • Kein versteckter Kontrollfluss
  • Keine versteckten Speicherallokationen
  • Kein Präprozessor, keine Makros
  • Erstklassiger Support einer optionalen Standardbibliothek
  • Einstellbare Laufzeitsicherheit
  • Codeausführung zur Compile-Zeit

Zig ist eine imperative, prozedurale, funktionale, objektorientierte, modulare Multi-Paradigmensprache und hilft Programmierer:innen dabei, schnelle und klare Codes zu schreiben, die mit allen Fehlerbedingungen umgehen können. Es ist ein moderner Ansatz zur Metaprogrammierung, basierend auf Compile-Zeit-Ausführung und Lazy-Evaluation.

Zig: Mindestens so effizient und portierbar wie C

Loris Cro, ein Mitglied des Zig-Teams verriet gegenüber Fastly: „Zig hat einen ganz einfachen Zweck: Es soll (mindestens) so effizient und portierbar wie C sein und dabei alle seine Probleme bei der Nutzerfreundlichkeit und seine Einschränkungen umgehen, die den eigenen (und auch den angrenzenden) Ökosystemen von C seit jeher zu schaffen machen.“ Im Gegensatz zu C komme Zig aber ohne Runtime-Umgebung aus.

Anzeige
Anzeige

Von den meisten anderen Sprachen unterscheidet sich Zig auch durch ihren geringen Funktionsumfang. Kevin Lynagh, der normalerweise mit Rust arbeitet, schrieb: „Die Sprache ist so klein und konsistent, dass ich nach ein paar Stunden Lernen genug davon in meinen Kopf laden konnte, um meine Arbeit zu erledigen.“

Er konvertierte erst kürzlich seine Tastatur-Firmware von Rust auf Zig und stellte dabei fest, dass es sich um eine Sprache handelt, die er beherrschen könnte.

Entwickler:innen mögen das kleine Featureset

Nathan Craddock, ein C-Entwickler, konnte sich dieser Meinung nur anschließen. Programmierer:innen scheinen vor allem das möglichst kleine Featureset zu mögen, weil sie es vorteilhaft finden, wenn es nur eine offensichtliche Möglichkeit gibt, etwas zu tun.

Anzeige
Anzeige

Die Entwickler:innen von Zig haben sich dieses Ziel so sehr zu Herzen genommen, dass Zig eine Zeit lang auf For-Schleifen verzichtet hat, weil sie als unnötige syntaktische Ausarbeitung der ohnehin schon ausreichenden While-Schleifen betrachtet wurden.

Exceptions werden nicht geworfen, sondern zurückgegeben

Auch das Error-Handling-Konzept ist beeindruckend. Denn Exceptions werden einfach zurückgegeben und nicht geworfen – aus einem einfachen Grund: Geworfene Exceptions werden nämlich oft als versteckter Control-Flow missbraucht.

Auch Zig benötigt eine direkte Möglichkeit, um Speicher zu allokieren. Es gibt aber kein direktes Malloc. Die Speicherzuweisung wird der Standard Library überlassen und erfolgt über eine Anfrage an ein Allocator-Objekt. Versteckte Allokationen sollen damit verhindert werden.

Anzeige
Anzeige

Wer Zig unter die Lupe nehmen möchte: Auf der Homepage von Zig gibt es einen Lernbereich, mit dem jeder, der Lust hat, tiefer in die Materie eintauchen kann.

 

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
4 Kommentare
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

k3v1n

„ Im Gegensatz zu C komme Zig aber ohne Runtime-Umgebung aus.“ C hat meines Wissens auch keine spezielle Runtime-Umgebung oder was genau ist hier gemeint?

Antworten
Boereck

Tatsächlich kann man C auch ohne Standardbibliothek programmieren (wenn man das als Runtime-Umgebung bezeichnen möchte) und wenn man es hat und benötigt direkt Betriebssystemfunktionen nutzen. Vielleicht war damit gemeint, dass in Zig alles statisch zusammen gelinkt wird (inklusive der Zig Standardbibliothek) und keine Abhängigkeit zu Systembibliotheken besteht? Wobei man das bei C, zumindest mit musl, auch machen kann. Oder es war bei dieser Aussage Go gemeint?

Zumindest ist die Aussage sehr ungenau, denn eine Klassische Runtime wie Dotnet, Java ist das nicht. Noch nicht einmal eine Green Thread Runtime wie in Go ist in C enthalten.

Antworten
Boereck

„Zig versucht, die Sicherheit von Rust mit der Leichtigkeit von C zu verbinden.“
Naja, also in Zig bekommt man eine bessere Null-Safety, mit „defer/errdefer“ besseren Schutz vor Resource-Leaks und je nach Build-Mode und Allokator noch Bounds-Checks und Schutz vor einigen Formen von Undefined Behavior. Aber Speichersicherheit wird scheinbar so gut wie immer mit Runtime Checks erkauft und man kann es abschalten (was bei veröffentlichten Binaries auch gemacht wird). Der Vorteil ist natürlich, dass das die Compile-Zeiten schön kurz hält. Zig löst das Problem der Speichersicherheit aber nicht grundsätzlich, weil die Runtime-Checks in realen Release Builds nicht vorhanden sind, da der Laufzeit Overhead sonst einfach zu groß ist. Zudem werden auch bei Safe Build Modes die Fehler nicht zur Compile-Time verhindert, sondern führen zur Laufzeit zum Crash. Besser als falsches Verhalten und Sicherheitslücken, aber nicht so gut wie von vornherein ausgeschlossene Fehler.

Rust kann dazu noch Data Races ausschließen, was bei Zig gar nicht möglich ist.

Zig ist natürlich eine viel schlanke Sprache (wer darauf Wert legt) und hat viel bessere Compile-Zeiten als Rust. Und es hat schon einige Verbesserungen auch bezüglich Sicherheit gegenüber C, aber die Sicherheit und Robustheit von speichersicheren Sprachen wird mit Zig (augenblicklich) leider nicht erreicht.

Antworten
dennis

Und täglich grüßt das Murmeltier, oder wie?
Jegliche „neue“ Programmiersprache wird immer und immer wieder als der Heilsbringer verkauft und dann in solchen Marketing versuchen, wie dieser Artikel hier, die vermeintlich bessere Programmiersprache zu puschen. Am Ende bleibt davon immer nichts übrig. Schaut euch PHP an. Im Web gibt es nichts besseres und weitverbreitestes als PHP. Wie oft wurde schon gesagt, dass PHP nun nicht mehr sei und ein neue Player kommen würde. Es langweilt. Besser wäre es, die Programmiersprache auch wirklich darzustellen. Was sind die Unterschied zu den etblierten Sprachen, was ist wirklcih besser, was ist schlechter? usw.

Denn sind wir mal ehrlich: Jeder, der wirklich Entwickler ist und nicht nur ein dahergelaufener Trendmitreisender und auch wirklich damit sein Geld verdient, der weißt, dass die Sprachen zu dem jeweiligen Projekt gesucht werden und nicht umgekehrt. Ich glaub, das hab ich schon im ersten Semester Informatik so vermittelt bekommen. Grundlagen also.

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige