GoとRustがライバルではなく、血まみれの敵である理由

ご注意 翻訳者は、Go対Rustの別の視点を反映した記事の翻訳です。 翻訳者のカルマに関する著者の意見にあなたの意見の不一致を示す必要はまったくありません。ありがとうございます。



この記事は、Dave Cheney ブログエントリ「GoとRustはライバルではない」に対する小さな回答です。 彼の議論を読むことを強くお勧めします! また、 すばらしい reddit ディスカッションもお楽しみいただけます。



実際、GoとRustは同じ問題を解決します。両方ともプログラマーの生活を楽にするために私たちの世界にやって来ました。 Goは競争力のある(別名マルチスレッド)プログラミングの概念をsimplifiedいものに単純化しました。Goコードは本当に読みやすいので、プログラミングが楽しい経験になったようです。 同時に、Rustはパターンマッチングのために強力なゼロコストの抽象化を提供してくれました。 聞こえますよね? 冗談として冗談を言っていますが、Rustは本当に多くの難しいことを簡単にしました(よくある誤解:彼はそれらを取り除きませんでした)。 その悪魔的なタイプのシステムは、非常に魅力的に聞こえる競合状態を取り除くことを含め、メモリの安全性を保証することができます。



私の記憶が私に正しく役立つなら、Rob Pike(Go言語の父)はかつて、彼がすべてがどうなっていたかにとても驚いたと言った。 GoはC / C ++プログラマーのライフラインとして考えられていましたが、結局、人々はそれをRubyまたはPythonの代替またはさらには代替として考え始めました! 私はそれがただ素晴らしいと思う、それは良くなることができなかった。



さて、GoはRustとどう関係しますか? RustはC ++の強力で安全な代替品のように見えますが、C ++はGoとはほとんど関係がありませんでした。 それでは、なぜこれらの人たちはまったく競争する必要があるのでしょうか? 平和、友情、クッキー! しかし、nooo:





C ++の最大の問題はその「安全でない」性質であると信じる人(その性質上、非常に安全な最新の標準からのスマートポインターをしばらく忘れてください)は、非常に間違っています。 C ++の最大の問題は、この言語のコードの記述、読み取り、デバッグ、プロファイル、および保守が難しいことです。 実際、安全なメモリ管理を実現するためのいくつかのよく知られた方法があります。 C ++プログラマーに聞いてください。これは想像上の問題です。



繰り返しになりますが、C ++プログラムは読み取り、書き込み、デバッグ、保守が困難です。 そして、これはメモリ管理とはほとんど関係ありません! RustはC ++と違いはありません。 また、エンティティを増やし、概念を追加してもこの問題を解決することはできません。 Goはここで非常にクールです: lessは指数関数的に多くなります翻訳者のメモ-lessは指数関数的に多くなります )。



What Go、what Rust-どちらも、Goがすでにプログラマーを合理的に抽象化して読みやすく保守しやすいコードを書くのを助けることで本当に励ましているという事実は別として、私たちの生活を楽にしようとしています。 。 ゴー・アンド・ラストは常に血の敵であり、後者がすでにこの戦争に負けたことを認めるのは少し悲しいです。



All Articles