3 Punkte von GN⁺ 2024-10-25 | 1 Kommentare | Auf WhatsApp teilen
  • Pretty C ist eine neue Skriptsprache, die mit C kompatibel ist und Funktionen wie dynamische Typisierung, generische Iteration und Ressourcenverfolgung bietet
  • Die Abwärtskompatibilität zu C und allen Bibliotheken bleibt erhalten
  • Inspiriert von Lua, Python, JavaScript und Lisp

Ziele

  • C-Entwicklern viel syntaktischen Sugar zu bieten, damit sich C einfacher verwenden lässt
  • Sich als ultimative Skriptsprache zu etablieren, die verschiedene Sprachen wie Lua, Python, JavaScript und Ruby ersetzen kann
  • Jede Codebasis durch das Einbinden nur einer einzigen Header-Datei einsteigerfreundlich zu machen

Erste Schritte

  • Das GitHub-Repository klonen oder die Datei pretty.h kopieren und verwenden

Gebotene Komfortfunktionen

Enthaltene Standard-Header

  • stdbool.h stellt true, false und bool bereit
  • stdint.h stellt Integer-Typen mit fester Breite bereit
  • iso646.h stellt besser lesbare Operator-Alternativen bereit

Einfache Makros

  • Makros wie max, min, len, default, limit, between, divisible und weitere

Neue Typen

  • Bietet Typ-Aliasse wie string, byte, bytes, any
  • Bietet Kurzformen für Ganzzahlen wie uchar, ushort, uint, ulong

Neue Aliasse

  • Bietet Operator-Aliasse wie eq, is, bitnot, bitxor
  • Bietet Vergleichsoperatoren wie below, above, upto, downto
  • Bietet Zahlen-/Daten-Prädikate wie even, odd, positive, negative, zero, empty
  • Bietet Aliasse wie nil, until, elif, ifnt, repeat, done~/~finish, pass

Typinferenz (GCC, Clang oder C23+)

  • Typinferenz mit den Schlüsselwörtern var, let, local möglich

Generische Ausgabe (C11+)

  • Mit print und println lassen sich Daten verschiedener Typen ausgeben

Generische Gleichheit (C11+)

  • Mit equal lassen sich Daten verschiedener Typen vergleichen

Hübscher ternärer Operator

  • Mit Schlüsselwörtern wie when, then, other, otherwise, only, otherwhen lässt sich ein besser lesbarer ternärer Operator verwenden

for-Makro

  • Makros wie foreach, forthese, fortimes, forrange, forrangeby bieten verschiedene Iterationsmuster

Zuweisungsmakros

  • Makros wie new, vector, delete ermöglichen einfache Speicherallokation und -freigabe

Block-Utilities

  • Bietet Block-Utilities wie lambda, with, defer, try, catch

Zusammenfassung von GN⁺

Pretty C ist ein Projekt, das der Programmiersprache C verschiedene syntaktische Vereinfachungen hinzufügt, damit Entwickler leichter Code schreiben können. Insbesondere bleibt die Abwärtskompatibilität zu C erhalten, während zugleich verschiedene Funktionen bereitgestellt werden, die von Sprachen wie Lua, Python und JavaScript inspiriert sind. Diese Funktionen können C-Entwicklern helfen, kompakteren und besser lesbaren Code zu schreiben. Ähnliche Projekte mit vergleichbaren Funktionen sind Zig und Nim.

1 Kommentare

 
GN⁺ 2024-10-25
Hacker-News-Kommentare
  • Es gibt seit Langem die Tradition, DSLs innerhalb von C zu bauen. Stephen Bourne wollte mit dem C-Präprozessor eine Shell schreiben, die ALGOL ähnelt
  • Es ist nicht klar, ob das ein Witz ist oder ob der Autor verwirrt ist. Es ist kein Scripting, und es wird behauptet, starke Typisierung einzuführen, aber tatsächlich macht es überhaupt nichts in Bezug auf Typen. Es führt Operator-Aliasse ein, die angeblich auf Lua und Lisp basieren, die es in beiden Sprachen jedoch nicht gibt
  • Es behauptet, eine Skriptsprache zu sein, aber man muss das Programm kompilieren. Wenn man CINT hinzufügt, könnte man sofortige Ausführung und ein REPL haben
  • Es bietet genug syntaktischen Zucker, um bei C-Entwicklern einen diabetischen Herzinfarkt auszulösen. Lustig
  • Es macht denselben Fehler wie Python 2. Strings und Bytes sind nicht derselbe Typ und sollten nicht so behandelt werden
  • Wenn dich das interessant findest, wird dir wahrscheinlich auch libcello.h gefallen
  • Ich erinnere mich daran, einmal eine C++-Codebasis untersucht zu haben, die aussah, als wäre sie in Java geschrieben. Alles war in CamelCase benannt, es gab Getter und Setter für jede Klassenvariable, und Interfaces waren überall
  • Es gibt ein paar Dinge, die zu CNoEvil und ogw hinzugefügt werden sollten. Jedes Mal, wenn dieses Projekt alle paar Monate wieder auftaucht, scheint es immer noch mehr zu geben
  • unless ist lesbarer als ifnt
  • Ich frage mich, ob man das Readme in pretty.h verweben kann. Ob die Codeblöcke der Org-Datei vollständig sind. Mir gefällt, wie im Readme der Gedankengang erklärt wurde