====== はじめに ====== 入門編ではOdinの基本をざっくりと見ていきます。 目標はOdinの概観を得ることです。 同様の目的の[[https://odin-lang.org/docs/overview/|公式のドキュメント]]も存在しています。 ぶっちゃけそれを読めばいいことになります。 何かしらこのチュートリアルにも存在意義を与えるため、上手く整理して、素早く情報を引き出せることを目指していきます。 このチュートリアルでは、なんらかのプログラミング言語の経験があることを想定しています。 プログラミング自体の入門用として読まれることは考えられていません。 Odinの言語そのものはそれほど難しいわけでもなく、プログラミング自体の入門用の言語として不適切というわけでもありません。 しかし、C言語などに比べると圧倒的に情報が少ないため、なかなか厳しいところがあります。 ===== Odinの特徴 ===== OdinのWebサイトのトップでは次のように書かれています。 * 汎用プログラミング言語 * 明確な型付 * ハイパフォーマンス、モダンなシステム、データ指向プログラミング * プログラミングの楽しくするためのCの代替 また、Odinの原則として、次のようであると書かれています。 * シンプルであること (Simplicity) * 効率的であること (High Performance) * モダンなシステムに適応すること (For Modern Systems) * プログラミングが楽しくあること (Joy of Programming) 実際に触ってみて、いくつかの点に興味を持ちました。 * 個人的に特に注目したいのが、付属するライブラリにOpenGL、SDL、raylibなどといったゲーム開発に適したライブラリのバインディングが含まれていることです。このことから、ゲーム開発をターゲットに見据えているであろうことが窺えます。 * 言語の特徴として、Goのエッセンスがところどころに感じられ、さらに書きやすく、読みやすくなるようなマイナーな違いがいくつかみられます。 * Goとは違いガーベジコレクションの機能はなく、また、C++やRustのようにRAIIを活用した自動化もできません。つまり、メモリ管理を手動で行わなければならないことを意味します。 * データ型にメソッドを含めることが出来ません。それに代わる有効な手法も提供されていません。基本的には伝統的なCに近いプログラミングスタイルを取ることになりそうです。 * Cとの相互運用が容易になるような特徴を備えています。その成果として、先に挙げたゲーム開発ライブラリのように、Cのライブラリのバインディングが充実しています。 学習コストは、C、Goなどの経験があればかなり小さいと言えます。 あまり構えずに気楽な気持ちで触ってみたら楽しいかもしれません。 特にゲームプログラミングが好きな人とは相性が良さそうです。