モダンなプログラミング言語として人気を集めている「Rust」と「Go」。
新しくプロジェクトを始める場合や、既存のプロジェクトを書き直す場合に、どちらの言語を採用すれば良いか迷っている方も多いかもしれません。
今回、この二つのプログラミング言語を比較する記事「Rust vs Go in 2023」が公開され注目を集めています。記事を公開したJohn Arundel氏は40年間ソフトウェアを書き続けてきた経験豊富な開発者で、Goに関する書籍を多数発行しています。
同記事によると、RustとGoにはメモリ安全性や高速性、汎用性などを目指すモダンなプログラミング言語という共通点があるものの、異なる目標や応用分野、言語設計、優先順位を持っているとのこと。RustはCやC++と同等のパフォーマンスを持ちながら、メモリや並行性に関するバグをコンパイル時に防ぐことができ、Goはシンプルさと一貫性を重視しながら、開発速度や可読性を優先しているそうです。
Rustは実行時のパフォーマンスが非常に高く、ガベージコレクションを使わずにハードウェアに近い制御ができるのが特徴で、ゲームプログラミングやオペレーティングシステムなどの分野に最適です。Goは開発時のパフォーマンスが高く、ガベージコレクションを使うものの、効率的で停止時間も短時間ですみます。ウェブサービスやマイクロサービスなどの分野で優れています。
結論としては、RustとGoはどちらも優れた言語であり、どちらも学ぶ価値があるものの、プロジェクトやチームによって最適な言語は異なるとまとめられています。
Rustが適しているのは、パフォーマンスや安全性や制御性が必要な場合や、複雑な抽象化や表現力が必要な場合で、学習に時間と努力がかかるものの、その分報われることも多くなります。Goが適しているのは、開発速度や可読性、一貫性が重要な場合、並行処理やスケーラビリティが重要な場合で、G学習時間と努力が少なくて済むものの、その分制約も多くなります。
Hacker Newsでもこの記事を巡って議論が行われており、どちらかといえばRust押しの声が多い模様。