プログラミング
Odinプログラミング言語の理解
Understanding the Odin Programming Language (odinbook.com)
要約
「Understanding the Odin Programming Language」は、Odinプログラミング言語の基本から応用までを解説する書籍です。手続き、手動メモリ管理、データ指向設計などを学び、低レベルプログラミングへの入門として最適です。本書は単にコードの書き方だけでなく、言語の仕組みとその理由についても説明しています。
全文翻訳
Odinプログラミング言語を学び、低レベルプログラミングを解き明かしたいですか?それならこの本が最適です。サンプルを読むか、今すぐ購入してください。Understanding the Odin Programming Languageは、Odinの基本概念と応用概念の両方を教える本です。手続き、手動メモリ管理、パラメトリック多相性、データ指向設計など、多くのことを学びます。対象読者は、ある程度のプログラミング経験がある人なら誰でもです。Odinはシンプルでありながら強力な言語であり、この本はあなたのバックグラウンドに関わらず、低レベルプログラミングへの素晴らしい入門書となります。プログラミング言語はツールです。ツールを理解することで、より優れた職人になれます。したがって、この本はOdinコードの書き方だけでなく、言語がそのように機能する理由も説明しています。人々が言っていること:Odinの作成者であるKarl Zylinski氏による、見事に書かれたOdinに関する本を強くお勧めします。Odin言語を学び、理解したい人には最適です。- Bill "gingerBill" Hall, Odinの作成者。KarlはOdinの説明が非常に上手です。Golangのようなガベージコレクション言語で良い経験をしてきましたが、この本はOdinのようなガベージコレクションのない言語への移行を本当に助けてくれました。- store.zylinski.seのKevin D.氏によるレビュー。私は読書が苦手で、すぐに気が散ってしまいます。しかし、この本の文章スタイルは非常に良く、数日で全部読み通すのに問題はありませんでした。- store.zylinski.seのShaka氏によるレビュー。バージョン1.10リリース!リリースノートを読む。利用可能なフォーマット:HTML美しくレイアウトされ、ナビゲートしやすいです。フォントと画像がすべて埋め込まれたポータブルHTMLファイルです。PDFに似ていますが、使いやすいです。コンピューターでの最適な読書体験。スマートフォンやタブレットでも読むことができます。購入可能場所:store.zylinski.se HTML+eBook Itch HTML+eBook サンプルを読む eBook電子書籍リーダーやeBookアプリに特に適しています。きれいでシンプルなレイアウトです。すべてのイラストが含まれており、カラーをサポートしています。購入可能場所:store.zylinski.se HTML+eBook Itch HTML+eBook Amazon Kindle eBook Google Booksどのバージョンを購入するか迷っている場合は、store.zylinski.seまたはItchで購入することをお勧めします。そこではHTML版とeBook版の両方を入手できます。概要ビデオリリースノートバージョン1.10セクション8.3が、Small_Arrayの代わりに[dynamic; N]T型(Fixed Capacity Dynamic Array)を教えるように変更されました。Fixed Capacity Dynamic ArrayはSmall_Arrayを非推奨にします。Appendix BもFixed Capacity Dynamic Arrayを使用するように更新されました。Appendix Aには、コアに存在するハンドルベースのマップに関するコメントがいくつか追加されました。10.3で不要なスライシングが行われていたため、マイナーチェンジが行われました。購入した場所から本を再ダウンロードすることで最新バージョンを入手できます。バージョン1.9コア:osの使用法を、"os2"によって導入された変更に合わせて更新しました。背景:コア:osパッケージ全体が2026年2月に置き換えられました。この置き換えの後、コード例の変更が必要になりました。コア:osを使用する多くのコードはまだ動作しますが、os.read_entire_fileおよびos.write_entire_fileの使用法には変更が必要でした。HTML版の外部リンクが新しいタブで開くようになりました。10.1.1のバブル(bounds checkingの無効化について)を改善しました。約30件の文法エラーを修正しました。いくつかの軽微な技術的エラーを修正しました。バージョン1.8文字列の章をオーバーホールしました。このバージョンでは、文字列の章(第11章)に大きな変更が加えられています。大幅に改訂・拡充されました。主な変更点:UTF-8がどのようにルーンにデコードされるかについての明確化。UTF-8を手動でデコードする方法に関するセクション。古いnull終端に関する「バブル」が正式なセクションになりました。「文字列定数と混在する文字列の解放」のセクションは、配列ではなくマップを考慮することで、より明確で有用になりました。「文字列定数」というフレーズが曖昧になりうるというセクション。WindowsのUTF-16に関するセクションは、新しいcstring16型を使用して、ほとんど書き直されました。その他、多くの小さな変更と編集が行われました。他の章への変更:第1章1.5節:タイポ修正。第2章2.4節:odin run . -keep-executable(新しいOdinの動作)に関する注記。第3章3.2節:型推論に関するタイポ修正。第5章5.3節:ユニオンのバリアントをチェックするために使用される.(Type)構文についての明確化。第7章7.4節:一文を明確化しました。第7章7.8節:@initおよび@finiの「コンテキストレス」要件に関する情報の追加。第10章10.1.5節:コードのタイポ修正。第10章10.3節:不要なスライス操作を削除しました。第11章11.6節:コードのタイポ修正。第15章15.2節:bit_set初期化に関するバブルをより適切な場所に移動しました。第15章15.2.2節:タイポ修正。第15章15.3節:タイポ修正。...その他、いくつかの追加の軽微な修正!バージョン1.7第1章:壊れたDiscordリンクを修正しました。第5章5.1.3節:タイポ修正。第9章9.7節:rand.int_maxの範囲を明確化しました。第14章14.3節:「Special_Array」の例を改善しました。第23章:タイポ修正。第26章26.6節:壊れたWebGPUの例へのリンクを修正しました。Appendix D:コンパイルエラーを修正しました。バージョン1.6新しいセクション17.5「コールバックを使用した循環依存の回避」を追加しました。これは、循環依存が必要な状況を回避するためにコールバックを使用する方法と、基本的なインターフェースを作成する方法について説明しています。第13章13.1.2節:不正な解放の処理に関する最近の変更に基づいて、トラッキングアロケータの例を更新しました。新しいセクション18.6「より複雑なビルドセットアップ」を追加しました。より大きなカスタムビルドスクリプトの作成に関する短いセクションです。新しいセクション26.10「コード生成」を追加しました。コード生成とは何かを説明し、例へのリンクを提供します。Appendix D:Raylib + Box2Dのサンプルから不要なものを削除し、より明確にしました。HTML版にアイコンを追加し、タブを見つけやすくしました。第23章23.3節:動的リテラルを避ける必要はないが、メモリを割り当てることを理解する必要があることを明確にしました。第6章6.3節:タイポ修正。第8章8.1.3節:from_1_to_2ベクトルの間違った方向を修正しました。第8章8.1.4節:手続き名draw_imageの一貫した使用(draw_textureが時々使用されていたのを修正)。第12章12.1節:タイポ修正。第23章23.1節:明確化のために軽微な言い換えを行いました。バージョン1.5本全体を読み直し、追加の編集パスを実行しました。テキストをより明確にするために、大量の変更を加えました。主な変更点のいくつかを以下に示します:5.3節のMy_Unionのサイズに関する明確化。列挙型について話す際に、「メンバー」と「値」という言葉を使用しました。以前は「enum value」と「value」を使用していましたが、古い表現は混乱を招き、曖昧でした。第26章を「その他いくつか」に変更し、内容を少し編集しました。第26章で#loadに言及しました。第26章で@rodataに言及しました。第26章で「ライブラリをクリーンにコンパイルする方法」に関するセクションを追加しました。新しいセクション7.8(@initおよび@fini)を追加しました。セクション4.3(ループ)が改善されました。セクション6.3(構造体へのポインタ)がより教育的になりました。セクション10.3(カスタムイテレータ)が改善されました。新しいセクション11.5.1(文字列定数と混在する文字列の解放)を追加しました。セクション12.6(context.user_ptrおよびcontext.user_index)に新しい例を追加しました。2.6節のイラストの軽微なエラーを修正しました。動的リテラルを第23章(Odinで避けるべきこと)に移動しました。これは、デフォルトで無効になっており、その理由があるためです。第18章:「ビルドシステムは不要」という点についてのニュアンスと、私が「ビルドシステム」と言うときに実際に意味することを説明しました。6.5節のいくつかの点を明確にしました。読者から報告されたタイポ(5.1.3、5.2.1、6.5、10.2.1)を修正しました(ありがとうございます!)。先頭にバージョン番号を追加しました。HTML版でYouTubeリンクが間違った「外部リンク」記号を使用していたのを修正しました。Itch.ioのCAT & ONIONへのリンクを追加しました(Odinコードが付属しているため)。「第4章:その他の基本事項」で#reverseに言及しました。バージョン1.4自動的に不変参照として渡されることに関して:"十分に大きい"を"16バイトより大きい"に変更しました。最近、Odinはプラットフォームに関わらず、しきい値を常に16バイトに変更しました。6.2節のサイドバブルを明確化しました。ポインタの通常使用されるビット数について説明しています。8.1.2節で「手続きのスタックメモリ」の意味をより明確にしました。8.1.3節に「スタック割り当て配列」の意味についてのコメントを追加し、後続の章で固定配列を動的に割り当てる方法を示すことを指摘しました。EPUのエラーを修正しました。