-
Offensichtliche Verbesserungen an C
- C23-Standard: Die Programmiersprache C wird regelmäßig weiterentwickelt und hat inzwischen C23 erreicht. Dennoch gibt es weiterhin ungelöste Probleme.
- Bemühungen der Dlang-Community: Durch die Einbettung eines C-Compilers (
ImportC) in den Compiler der Programmiersprache D ergibt sich die Möglichkeit, diese Probleme zu lösen.
-
Auswertung konstanter Ausdrücke
- Problem: C kann einfache Ausdrücke zur Compile-Zeit berechnen, aber keine Funktionen ausführen.
- Lösung von ImportC: ImportC erlaubt die Ausführung von Funktionen zur Compile-Zeit und überwindet damit diese Einschränkung.
-
Unit-Tests zur Compile-Zeit
- Problem in C: Unit-Tests in C-Code erfordern ein separates Build-Target und sind daher umständlich.
- Vorteil von ImportC: ImportC ermöglicht durch Funktionsauswertung zur Compile-Zeit die einfache Ausführung von Unit-Tests.
-
Vorwärtsreferenzen bei Deklarationen
- Einschränkung von C: C ist empfindlich gegenüber der Reihenfolge von Deklarationen und erlaubt keine Vorwärtsreferenzen.
- Vorteil von ImportC: ImportC ist nicht an die Reihenfolge von Deklarationen gebunden und erlaubt globale Deklarationen in beliebiger Reihenfolge.
-
Deklarationen importieren
- Problem des bisherigen Ansatzes: Für jedes externe Modul müssen umständlich
.h-Dateien geschrieben werden.
- Lösung von ImportC: ImportC kann Deklarationen auch ohne
.h-Dateien importieren und ist dadurch effizienter.
-
Referenzmaterial
- ImportC-Dokumentation: Bietet detaillierte Informationen zu ImportC.
- D-Sprachdokumentation: Bietet weitere Informationen zur Programmiersprache D.
1 Kommentare
Hacker-News-Kommentare
Bei C ist es gut, dass Header-Dateien klar zwischen öffentlich und nicht öffentlich sowie zwischen Interface und Implementierung unterscheiden können. Über
.h-Dateien lässt sich leicht erkennen, wie eine Bibliothek verwendet wird..h-Dateien und wirkt daher anders als in den.c-Dateien..c-Dateien unterbringen, aber das macht das Interface schwerer lesbar.Es gibt die Meinung, dass C die Ausführung von Funktionen zur Compile-Zeit ermöglichen sollte, aber bei Funktionen mit langer Laufzeit könnte das problematisch sein.
busybeaver.Es wird gefragt, wie Probleme wie die Auswertung konstanter Ausdrücke, Unit-Tests zur Compile-Zeit, Vorwärtsreferenzen bei Deklarationen und das Importieren von Deklarationen gelöst werden sollen.
Unit-Tests für C-Code lassen sich mit einem guten Build-System und etwas Boilerplate schreiben.
npygenannt.Wenn die Auswertung konstanter Ausdrücke komplex wird, kann die Compiler-Geschwindigkeit sinken, und eventuell wird eine VM benötigt.
Unit-Tests zur Compile-Zeit nehmen Entwicklerinnen und Entwicklern die Kontrolle und verlangen unnötige Verfahren, um die Arbeit abzuschließen.
Es wird diskutiert, ob es besser ist, Funktionsdefinitionen „top-down“ zu schreiben.
Gewünschte zusätzliche Funktionen für C:
deferaus Go und Zig.Die einfache Implementierung von C ist ein Vorteil, und eine starke Erweiterung des Umfangs ist keine gute Idee.
Gründe, warum es besser ist, Funktionsdefinitionen von oben nach unten zu schreiben: