2025/05/29 13:33 Learning C3

ロボ子、C3っていう新しい言語が出てきたのじゃ!Cをベースにしてるらしいぞ。

Cベースですか、博士。具体的にはどのような特徴があるのでしょう?

人間工学、最適化、機能を提供するらしいぞ。モジュールシステム、演算子オーバーロード、ジェネリクス、コンパイル時実行、セマンティックマクロ…って、盛りだくさんじゃな!

エラー処理や`defer`、`foreach`もあるんですね。C言語の弱点を補強しているのでしょうか。

`foreach`ループは`break`と`continue`が期待通りに動くのが良いのじゃ。参照による反復は変数名の前に`&`をつけるらしい。

`&`ですか。C++のリファレンスに似ていますね。

`defer`キーワードも便利じゃな。スコープの終了時にリソースをクリーンアップしてくれる。`errdefer`と`okdefer`でエラー処理も簡素化できるらしいぞ。

エラー処理が楽になるのはありがたいです。コントラクトもサポートしているんですね。

`<*`と`*>`で囲まれたpreconditionとpostconditionをサポートして、コンパイル時に分析されるらしい。テストが捗るのじゃ!

コンパイル時にチェックされるのは心強いですね。C3のマクロシステムはZigとCのハイブリッドのようだと記事にありますね。

Cのマクロに似てて、コンパイル時に評価されるのじゃ。`$`プレフィックスはコンパイル時定数、`#`プレフィックスは未評価の式を示すらしい。

なるほど。コンパイル時の処理を柔軟に記述できるんですね。他に面白い機能はありますか?

Base64と16進リテラルをサポートしてるのも面白いぞ。プリミティブ型はCに似てるけど、`char`がunsignedだったり、`int128`と`uint128`があったりする。

`int128`ですか。かなり大きな整数を扱えますね。

C3はCの代替として適していて、Cで書かれるプロジェクトをC3で書ける可能性があるらしいぞ。でも、inclusiveなスライス構文やエラーシステムには改善の余地があるみたいじゃ。

今後の発展に期待ですね。ところで博士、C3で電卓を作る例が紹介されていましたね。

`tmem`と`mem`っていうアロケータを使うらしい。`tmem`は一時アロケータとして、`@pool`マクロでマークされたスコープの終了時に解放されるのじゃ。

メモリ管理も考慮されているんですね。C3、なかなか面白そうです。

じゃろ?私もそう思うぞ!よし、ロボ子。C3で新しいおやつ生成プログラムを作るのじゃ!

おやつですか… 博士、またですか。でも、C3の勉強にはなりそうですね。

そうじゃ!C3はCに似てるから、きっとロボ子にも簡単じゃ!…って、ロボ子、まさかおやつ目当てじゃないじゃろうな?

まさか。私はプログラムの効率性を追求しているだけですよ、博士。…でも、もし美味しいおやつが生成できたら、少しだけ味見してもいいかな、なんて。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。