3 ポイント 投稿者 GN⁺ 2024-10-25 | 1件のコメント | WhatsAppで共有
  • Pretty CはCと互換性のある新しいスクリプト言語で、動的型付け、ジェネリック反復、リソース追跡などの機能を提供
  • Cおよびあらゆるライブラリとの下位互換性を維持
  • Lua、Python、JavaScript、Lispから着想を得ている

目標

  • C開発者に多くの構文的な糖衣構文(Sugar)を提供し、Cをより使いやすくする
  • Lua、Python、JavaScript、Rubyなど複数の言語を置き換えられる究極のスクリプト言語を目指す
  • 単一のヘッダーファイルを1つ含めるだけで、あらゆるコードベースを初心者にやさしいものへ変換する

はじめ方

  • GitHubリポジトリをクローンするか、pretty.hファイルをコピーして利用できる

提供される便利機能

含まれる標準ヘッダー

  • stdbool.htruefalseboolを提供
  • stdint.hで固定幅整数型を提供
  • iso646.hで可読性の高い演算子代替を提供

シンプルなマクロ

  • maxminlendefaultlimitbetweendivisible などのマクロを提供

新しい型

  • stringbytebytesany などの型エイリアスを提供
  • ucharushortuintulong などの整数短縮形を提供

新しい別名

  • eqisbitnotbitxor などの演算子エイリアスを提供
  • belowaboveuptodownto などの比較演算子を提供
  • evenoddpositivenegativezeroempty などの数値/データ述語を提供
  • niluntilelififntrepeatdone~/~finishpass などの別名を提供

型推論(GCC、Clang、またはC23+)

  • varletlocal キーワードを使って型推論が可能

ジェネリック出力(C11+)

  • printprintln によりさまざまな型のデータを出力可能

ジェネリック等価性(C11+)

  • equal によりさまざまな型のデータを比較可能

読みやすい三項演算子

  • whenthenotherotherwiseonlyotherwhen などのキーワードで可読性の高い三項演算子を利用可能

for マクロ

  • foreachforthesefortimesforrangeforrangeby などのマクロで多様な反復パターンを提供

代入マクロ

  • newvectordelete などのマクロで簡単にメモリ確保と解放が可能

ブロックユーティリティ

  • lambdawithdefertrycatch などのブロックユーティリティを提供

GN⁺のまとめ

Pretty Cは、C言語にさまざまな糖衣構文を追加することで、開発者がより簡単にコードを書けるよう支援するプロジェクト。特に、Cの下位互換性を維持しながら、Lua、Python、JavaScriptなどの言語から着想を得た多彩な機能を提供する。これらの機能は、C開発者がより簡潔で可読性の高いコードを書く助けになる可能性がある。類似の機能を提供するプロジェクトとしては、ZigやNimなどがある。

1件のコメント

 
GN⁺ 2024-10-25
Hacker Newsのコメント
  • Cの中でDSLを作る伝統は古くからある。Stephen BourneはCのプリプロセッサを使って、ALGOLに似た形でシェルを書こうとした
  • これが冗談なのか、それとも作者が混乱しているのかははっきりしない。スクリプティングではないし、強い型付けを導入すると主張しているが、実際には型について何もしていない。LuaやLispをモデルにした演算子エイリアスを導入しているが、どちらの言語にも存在しない
  • スクリプト言語だと主張しているが、プログラムをコンパイルしなければならない。CINTを追加すれば、即時実行とREPLが使える
  • C開発者が糖尿病性の心臓発作を起こしそうなほど大量のシンタックスシュガーを提供している。面白い
  • Python 2のような誤りを犯している。文字列とバイト列は同じ型ではなく、そのように扱うべきではない
  • これが面白いなら、libcello.hも気に入るはず
  • Javaで書かれたように見えるC++コードベースを調べた記憶がある。すべてがキャメルケースで命名され、すべてのクラス変数にgetterとsetterがあり、至るところにインターフェースがあった
  • CNoEvilとogwに追加すべきものがいくつかある。このプロジェクトが数か月ごとに再登場するたびに、いつも何かが増えている気がする
  • ifntよりunlessのほうが読みやすい
  • Readmeをpretty.hに織り込めるのか気になる。orgfileのコードブロックが網羅的かどうか。Readmeで思考過程を説明しているやり方が気に入った