2023年7月30日 (日)
2023年6月9日 (金)
2023年3月19日 (日)
Ef3
→リソース: 公式ドキュメント Zigの最も包括的なチュートリアルは、公式ドキュメントにあります。ドキュメントには、Zigの基本的な概念、プログラミングスタイル、および標準ライブラリの使用方法が説明されています。ここでは、基本から上級まで、詳細に解説されています。 公式ドキュメントは以下からアクセス可能です。 Zig 公式ドキュメント ZigLearn 「ZigLearn」とは、Zigというプログラミング言語を学ぶためのオンラインリソースの集まりです。Zigは、C言語に似た構文を持ち、メモリセーフでありながら高速なプログラムを書くことができる言語です。このサイトでは、Zigを初めて学ぶ人から、より高 Zig Learn X in Y Minutes 「Zig Learn X in Y Minutes」というウェブサイトは、簡潔で理解しやすい形式でZigの紹介をしています。このチュートリアルでは、Zigでプログラムを作成する基本的なステップを紹介します。 Zig Learn X in Y Minutesは以下からアクセス可能です。 Zig Learn X in Y Minutes
+574
Ef3
→リソース: 公式ドキュメント Zigの最も包括的なチュートリアルは、公式ドキュメントにあります。ドキュメントには、Zigの基本的な概念、プログラミングスタイル、および標準ライブラリの使用方法が説明されています。ここでは、基本から上級まで、詳細に解説されています。 公式ドキュメントは以下からアクセス可能です。 Zig 公式ドキュメント Zig Learn X in Y Minutes 「Zig Learn X in Y Minutes」というウェブサイトは、簡潔で理解しやすい形式でZigの紹介をしています。このチュートリアルでは、Zigでプログラムを作成する基本的なステップを紹介します。 Zig Learn X in Y Minutesは以下からアクセス可能です。 Zig Learn X in Y Minutes
+935
2023年3月5日 (日)
2022年11月15日 (火)
2022年10月9日 (日)
2022年10月7日 (金)
2022年10月3日 (月)
2022年10月2日 (日)
Ef3
→while: {{コラム|elseを伴ったwhileの使いどころ}}
+1,588
Ef3
→ファイルの見出し: 誤字
Ef3
s/print(/try print/; デバッグ版から標準出力版に
+200
Ef3
→関数: try ; https://wandbox.org/permlink/S46Dr2HRn6xgzSSA
+55
Ef3
→チートシート: <div style="column-width: max-content;">
2022年10月1日 (土)
Ef3
typo
−3
Ef3
→オンラインコンパイル実行環境: typo
+12
2400:4151:83c1:2a00:718a:e21b:55b3:6f0d
→エラトステネスの篩: エラトステネスの篩を、若干 Zig らしく書いてみました。
+1,440
2400:4151:83c1:2a00:718a:e21b:55b3:6f0d
→抽象クラス(の代替): Fix link
2400:4151:83c1:2a00:718a:e21b:55b3:6f0d
→附録
−4
2400:4151:83c1:2a00:a04f:9572:80c7:585c
→ソート: 標準ライブラリーのソート機能の使用例。
+1,466
Ef3
→ファイルの見出し: ファイルを開いて内容をアロケートしたバッファに読出し標準出力に出力する例。
+808
2022年9月30日 (金)
Ef3
→ジェネリックな複素数型: ジェネリックプログラミングを使った複素数型を実装してみました。
+2,445
Ef3
→ライフタイムとオーナーシップ: ポインターを指しているメモリーが利用できなくなったときに、ポインターにアクセスしないようにするのは、Zigのプログラマーの責任です。スライスは、他のメモリーを参照するという点で、ポインターの一種であることに注意してください <ref>[https://ziglang.org/documentation/master/#Lifetime-and-Ownership Lifetime and Ownership]</ref>。 バグを防ぐために、ポインターを扱うときに従うと便利な規則があります。一般に、関数がポインターを返す場合、その関数のドキュメントでは、誰がそのポインターを「所有」しているかを説明する必要があります。この概念は、プログラマーがポインターを解放することが適切である場合、そのタイミングを判断するのに役立ちます。 例えば、関数のドキュメントに「返されたメモリーは呼び出し元が所有する」と書かれていた場合、その関数を呼び出すコードは、いつそのメモリーを解放するかという計画を持っていなければなりません。
+1,849
Ef3
→再帰: 再帰( ''Recursion'' )はソフトウェアをモデリングする際の基本的なツールである。しかし、再帰にはしばしば見落とされがちな問題があります<ref>[https://ziglang.org/documentation/master/#Recursion Recursion]</ref>。 再帰はZigで活発に実験されている分野であり、ここにある文書は最終的なものではありません。[https://ziglang.org/download/0.3.0/release-notes.html#recursion 0.3.0のリリースノートで、再帰の状況を要約]して読むことができます。 簡単にまとめると、現在のところ再帰は期待通りに動作しています。Zigのコードはまだスタックオーバーフローから保護されていませんが、Zigの将来のバージョンでは、Zigのコードからのある程度の協力が必要ですが、そのような保護を提供することが予定されています。
+848
Ef3
→ヒープアロケーションの失敗: 多くのプログラミング言語では、ヒープ割り当てに失敗した場合、無条件にクラッシュすることで対処することにしています<ref>[https://ziglang.org/documentation/master/#Heap-Allocation-Failure Heap Allocation Failure]</ref>。 Zig のプログラマは、慣習として、これが満足のいく解決策であるとは考えていません。 その代わり、error.OutOfMemoryはヒープ割り当ての失敗を表し、Zigライブラリーはヒープ割り当ての失敗で処理が正常に完了しなかったときはいつでもこのエラーコードを返します。
+2,297
Ef3
→アロケーターの実装: Zig プログラマーは Allocator インターフェースを満たすことで、自分自身のアロケーターを実装することができます。そのためには、std/mem.zig のドキュメントコメントをよく読んで、allocFn と resizeFn を指定する必要があります<ref>[https://ziglang.org/documentation/master/#Implementing-an-Allocator Implementing an Allocator]</ref>。 インスピレーションを得るために、多くのアロケータの例を見ることができます。std/heap.zig と std.heap.GeneralPurposeAllocator を見てください。
+487
Ef3
→バイトはどこにあるのか?: ”foo” のような文字列リテラルは、グローバル定数データセクションにあります。このため、文字列リテラルをミュータブルスライスに渡すとエラーになります<ref>[https://ziglang.org/documentation/master/#Where-are-the-bytes Where are the bytes]</ref>。 文字列リテラルと同様に、コンパイル時に値が分かっているconst宣言は、グローバル定数データセクションに格納されます。また、コンパイル時変数もグローバル定数データセクションに格納されます。 関数内のvar宣言は、その関数のスタックフレームに格納されます。関数が戻ると、関数のスタックフレームにある変数へのポインターは無効な参照となり、その参照解除は未確認の未定義動作となります。
+810
Ef3
用語の統一
+24
Ef3
→アロケーターの選び方: どのアロケーターを使うかは、様々な要因によって決まります。以下は、判断のためのフローチャートです<ref>[https://ziglang.org/documentation/master/#Choosing-an-Allocator Choosing an Allocator]</ref>。
+3,579
Ef3
→メモリー管理: Zig言語はプログラマに代わってメモリー管理を行うことはありません。このため、Zigにはランタイムがなく、Zigのコードはリアルタイム・ソフトウェア、OSカーネル、組み込み機器、低遅延サーバーなど、多くの環境でシームレスに動作します。その結果、Zigのプログラマは常に次のような問いに答えられなければなりません<ref>[https://ziglang.org/documentation/master/#Memory Memory]</ref>。 : 『バイトはどこにあるのか?』 Zigと同様、C言語もメモリー管理を手動で行っています。しかし、Zigとは異なり、C言語にはmalloc、realloc、freeというデフォルトのアロケーターがあります。libc とリンクするとき、Zig はこのアロケーターを std.heap.c_allocator で公開します。しかし、慣習として、Zig にはデフォルトのアロケーターはありません。代わりに、割当てが必要な関数は Allocator パラメーターを受け取ります。
+3,506
Ef3
s/エラーセット/エラー集合/
+71
Ef3
→アライメント: 内部リンク
+14
Ef3
内部リンク
+201
Ef3
→C言語との相互運用: ZigはC言語から独立しており、他の多くの言語とは異なりlibcに依存しませんが、Zigは既存のC言語で書かれたとの相互作用の重要性を認めています<ref>[https://ziglang.org/documentation/master/#C C]</ref>。 ZigはC言語との相互運用を容易にするために、いくつかの方法を用意しています。
+2,174
Ef3
{{先頭に戻る}}
−4,130
2022年9月29日 (木)
Ef3
CSS cleanup
−3,315
Ef3
<div><h2>概要 </h2><div style="display:inline-block; width:100%; text-align:right">先頭に戻る</div></div>
+10,926
Ef3
<div style="position: sticky;"><h2>$1</h2><div style="display:inline-block; width:100%; text-align:right">先頭に戻る</div></div>
+945
Ef3
→チートシート: <syntaxhighlight lang=zig style="width: fit-content">; s/エラー集合/エラーユニオン/g
−82
Ef3
→組込み関数: テンプレート型のファイル分割
−74,802
Ef3
→チートシート: <div style="column-width: fit-content;">
+48
Ef3
→チートシート: 基礎篇の前に移動;案内図がわりに
+62
Ef3
→(執筆中): @divFloor @divTrunc
−98
Ef3
→キーワード一覧: cleanup
+91
Ef3
→チートシート: while, for, <syntaxhighlight lang=zig style="width: fit-content">
+1,580
Ef3
→チートシート: 16進浮動小数点数の様な特殊な表記は載せなかった。
+4,379
Ef3
→エントリーポイント: Zigでは、関数 mainがエントリーポイントです。
+632
Ef3
→飽和演算: Zigには、四則演算などの演算子に飽和演算( ''Saturation calculation'' )バージョンが用意されています。
+725
Ef3
→オーバーフロー: Zigでは、四則演算などの演算子はディフォルトでオーバーフローを検出します。それとは別に、(C言語などのように)ラッピングを行う演算子が別に用意されています。
+1,807