私は過去 4 年間専門的に C++ を書いていましたが、3 か月前に Rust で新しい仕事を始めました。 2 つの言語間の移行について、自分のスキルと考えを分け合うことができれば、おそらく賞賛に値するでしょう。 免責事項: このテキストは
もはや C++ と Rust の比較ではありません。 私は、もはや流行のエンジニアリングクルーではなく、おそらく私にとって重要であると思われる私の個人的なスキルと問題に焦点を当てます.C++ と Rust ?
C++ と Rust ?
私は多かれ少なかれ仕事が言語のスキルに大きく影響することに焦点を当てているので、バックグラウンドに焦点を当てましょう. C++ では、データベースの作成に多くの時間を費やしました。 データベースは緩和ですが、従来のソフトウェアです。データベースは、操作しているホストの完全な所有物を定期的に購入し、すぐに利用できるマシン コールの巨大なサブセットを使用し、場合によってはカーネルを完全にバイパスします。 あるいは、パフォーマンスに気を配り、常連客に優れたユーザースキルを提供し、同時にハンサムであることも重要であるため、データベースは肯定的な言葉を検索するための魅力的な標本になります.私の現在の会社は無数の NDA ブランケットの下にあるので、私の仕事で小さな印刷物をたくさん手放すことはできません. 私がRustを利用する環境は、過度の負荷とパフォーマンス要件の過度のバーを備えた数を処理する非同期サーバーです。 それはデータベースと同じですが、ユーザーのスキルはおそらくここでは重要なレベルではありません.私は、この 2 つはこの記事の目的のためには十分に同一であると泣き言を言います。 Rust にはメモリの安全性が確保されています。 このトピックに焦点を当てると、オンラインで見栄えの良いハンサムな記事が掲載されているので、簡単に説明します. C++ を 4 年間使用した後、既にレビューおよびマージされたコードから、時折メモリに接続されたサーバー クラッシュが発生するミュートに変更しました。 セグメンテーション違反が発生したときに年配者がサーバーを再起動するだけであるため、これらのどの部分が製造環境に到達したかを泣き言を言うのは非常に難しいため、私は緩和を受けませんでした. ファジングは、明確な珍しいケースがカバーされていることを意識するのは驚くべきことですが、もはや特効薬ではありません。 全体として、C++ コードよりも Rust コードをトランスポートする部分の方が多いように感じます。
Create machine私の存在には、C++ コードのビルドよりも大きな軽蔑する問題がいくつかあります。 開発者として、私はミッションに来て、あなたのすべてを意識するために単一の簡単な主張を書き留める立場になりたい. 「サーバーを構築する前にこれらの 2 つのコマンドを実行したいだけです...」というフレーズほど恐ろしいものはありません。 。 毎回この 2 つのコマンドを作成しますか? これらの 2 つの レコードデータが交互になっている場合、私は彼らを最高に賑わせたいと思いますか? サニタイザーでミッションを意識したい場合、これらのコマンドはどのように切り替わりますか? 消毒剤が意識的な仕事によってサポートされなくなったとあなたは何を示唆していますか? 意識的なスクリプトがすぐにリンカ エラーを出力し始めたのはなぜですか?おそらく、私がこれらの質問を細い空気から引き出して、レベルを意識していることに感心しているように見えるかもしれません. 私は本当に私がしたことを支持します。 私は、変更を加えて取り組んだすべてのプロジェクトの 1 つで、大まかに説明したオンボーディングを担当しています。 そうです、統合された意識的なマシンの不在は本当に痛いです. Bazel はハンサムなルートの一歩です。 私はCMakeについての悪夢を黙っています.このすべての部分にもかかわらず、Rust に来ることは、私がすべてをすぐに許し、地獄から天国に移動したことに感心します。 あなたはできる
ただ一つの短い主張を書くだけで、あなたの全体を意識することができます. さらに重要なことは、野生の他のすべてのミッションが同じ意識的なマシンを使用するため、意識的なスクリプトを自分のマシンから自分のマシンに変換する必要がなくなることです (クローズド ソースの C++ を作成する際に非常に関連性の高い分野です)。 . Cargo.toml 内の 1 行だけが、意識的なジョブ内に依存関係を含めるために必要です。 ハンサムなコンパイル フラグも自動的に渡してくれます。両方のコンパイラからのエラー メッセージは圧倒され、適切に取得して修復するには努力が必要です。 一方で、これについての説明はさまざまです。 C++ では、エラー メッセージの規模をキロバイト単位で簡単に測定できます。 端末エミュレータ内のエンドレススクロールは絶対に必要です。なぜなら、コンパイラはテキストの印刷を賞賛するからです。 約 1 年後、エラーを学習するのが楽しいのか、それともエラーの次元を調べながらしばらくの間自分のコードをじっと見ているのかを判断するための確かな直感が生まれます。 通常、エラーが大きいほど、コードをランダムに見つめていることがより鮮明になります。 C++ テンプレートが概説されている数式を変更せずにこのフィールドがどのように解決されるかは、もはやわかりません。 Rust では、(明らかなタイプミスをすべて修正した後の) コンパイラ エラーは、通常、非常に実行可能なデータです。 メモリを誤用できないことが明らかなように、何らかの式でコードを再構築するか、ライフタイムをマッサージする時間を利用することが非常に重要であることは、非常によくあることです。 これには時間がかかり、かなり神経をすり減らすように見えますが、ここでの優れた成果は、コンパイラの知識に注意深く耳を傾けることです。 これは謙虚なスキルですが、定期的により良いコードを生成します。 さらに、エラー メッセージは私の show cloak cloak でも一致します。これは素晴らしいことです。
フォーム マシンRustのフォームマシンで具体的なアイデアを出すのは楽しいです.まず第一に、ジェネリック なし のダックタイピングは非常に高く評価されています。 特性は、コントラクトの構造体または機能がフォームから期待することを明確に意識する必要があります。これは膨大です。 これはさらに、コンパイラが意図的なエラー メッセージを生成するのに役立ちます。 「行 Y の数式 clone() への無効な参照」の変更として、「フォーム X はもはやクローンを実装していません」を救済します - トリムと有益です。第二に、列挙型は非常に効率的です。 結果と選択
は意図的なアイデアですが、それらを献身的にしているのは、誰もがそれらを利用しているという否定できない事実です。 これらの 2 つの列挙型は、すべてのライブラリ (通常のライブラリを含む) で、特定の間違いやすい計算とオプションで利用可能な指定に対する流行の言語です。 C++ では、(1) エラー コードを返す。 (2) 無効な指定を返す。 (3) 例外を発生させる ; (4)アプローチをクラッシュさせる。 すべての疑わしい選択とすべてのライブラリが確実なものを利用します。 しかも結果と選択
、タグ付けされた列挙型を簡単に泣き言を言う柔軟性が非常に便利であることがわかりました.結論
全体として、Rust は、私の日々の開発者スキルが大幅に向上したことに感心しています。 ツールは優れていて目的が明確で、言語は表現力豊かで非常に効率的です。 私は本当にそれを楽しんでおり、これが長期的にC++の落とし穴の約1つを回避できることを願っています. % %item_read_more_button%%
レコードデータが交互になっている場合、私は彼らを最高に賑わせたいと思いますか? サニタイザーでミッションを意識したい場合、これらのコマンドはどのように切り替わりますか? 消毒剤が意識的な仕事によってサポートされなくなったとあなたは何を示唆していますか? 意識的なスクリプトがすぐにリンカ エラーを出力し始めたのはなぜですか?おそらく、私がこれらの質問を細い空気から引き出して、レベルを意識していることに感心しているように見えるかもしれません. 私は本当に私がしたことを支持します。 私は、変更を加えて取り組んだすべてのプロジェクトの 1 つで、大まかに説明したオンボーディングを担当しています。 そうです、統合された意識的なマシンの不在は本当に痛いです. Bazel はハンサムなルートの一歩です。 私はCMakeについての悪夢を黙っています.このすべての部分にもかかわらず、Rust に来ることは、私がすべてをすぐに許し、地獄から天国に移動したことに感心します。 あなたはできる
ただ一つの短い主張を書くだけで、あなたの全体を意識することができます. さらに重要なことは、野生の他のすべてのミッションが同じ意識的なマシンを使用するため、意識的なスクリプトを自分のマシンから自分のマシンに変換する必要がなくなることです (クローズド ソースの C++ を作成する際に非常に関連性の高い分野です)。 . Cargo.toml
内の 1 行だけが、意識的なジョブ内に依存関係を含めるために必要です。 ハンサムなコンパイル フラグも自動的に渡してくれます。両方のコンパイラからのエラー メッセージは圧倒され、適切に取得して修復するには努力が必要です。 一方で、これについての説明はさまざまです。 C++ では、エラー メッセージの規模をキロバイト単位で簡単に測定できます。 端末エミュレータ内のエンドレススクロールは絶対に必要です。なぜなら、コンパイラはテキストの印刷を賞賛するからです。 約 1 年後、エラーを学習するのが楽しいのか、それともエラーの次元を調べながらしばらくの間自分のコードをじっと見ているのかを判断するための確かな直感が生まれます。 通常、エラーが大きいほど、コードをランダムに見つめていることがより鮮明になります。 C++ テンプレートが概説されている数式を変更せずにこのフィールドがどのように解決されるかは、もはやわかりません。 Rust では、(明らかなタイプミスをすべて修正した後の) コンパイラ エラーは、通常、非常に実行可能なデータです。 メモリを誤用できないことが明らかなように、何らかの式でコードを再構築するか、ライフタイムをマッサージする時間を利用することが非常に重要であることは、非常によくあることです。 これには時間がかかり、かなり神経をすり減らすように見えますが、ここでの優れた成果は、コンパイラの知識に注意深く耳を傾けることです。 これは謙虚なスキルですが、定期的により良いコードを生成します。 さらに、エラー メッセージは私の show cloak cloak でも一致します。これは素晴らしいことです。
フォーム マシンRustのフォームマシンで具体的なアイデアを出すのは楽しいです.まず第一に、ジェネリック なし のダックタイピングは非常に高く評価されています。 特性は、コントラクトの構造体または機能がフォームから期待することを明確に意識する必要があります。これは膨大です。 これはさらに、コンパイラが意図的なエラー メッセージを生成するのに役立ちます。 「行 Y の数式 clone() への無効な参照」の変更として、「フォーム X はもはやクローンを実装していません」を救済します - トリムと有益です。第二に、列挙型は非常に効率的です。 結果と選択
は意図的なアイデアですが、それらを献身的にしているのは、誰もがそれらを利用しているという否定できない事実です。 これらの 2 つの列挙型は、すべてのライブラリ (通常のライブラリを含む) で、特定の間違いやすい計算とオプションで利用可能な指定に対する流行の言語です。 C++ では、(1) エラー コードを返す。 (2) 無効な指定を返す。 (3) 例外を発生させる ; (4)アプローチをクラッシュさせる。 すべての疑わしい選択とすべてのライブラリが確実なものを利用します。 しかも結果と選択
、タグ付けされた列挙型を簡単に泣き言を言う柔軟性が非常に便利であることがわかりました.結論
全体として、Rust は、私の日々の開発者スキルが大幅に向上したことに感心しています。 ツールは優れていて目的が明確で、言語は表現力豊かで非常に効率的です。 私は本当にそれを楽しんでおり、これが長期的にC++の落とし穴の約1つを回避できることを願っています. % %item_read_more_button%%
なし のダックタイピングは非常に高く評価されています。 特性は、コントラクトの構造体または機能がフォームから期待することを明確に意識する必要があります。これは膨大です。 これはさらに、コンパイラが意図的なエラー メッセージを生成するのに役立ちます。 「行 Y の数式 clone() への無効な参照」の変更として、「フォーム X はもはやクローンを実装していません」を救済します - トリムと有益です。第二に、列挙型は非常に効率的です。 結果と選択
は意図的なアイデアですが、それらを献身的にしているのは、誰もがそれらを利用しているという否定できない事実です。 これらの 2 つの列挙型は、すべてのライブラリ (通常のライブラリを含む) で、特定の間違いやすい計算とオプションで利用可能な指定に対する流行の言語です。 C++ では、(1) エラー コードを返す。 (2) 無効な指定を返す。 (3) 例外を発生させる ; (4)アプローチをクラッシュさせる。 すべての疑わしい選択とすべてのライブラリが確実なものを利用します。 しかも結果と選択
、タグ付けされた列挙型を簡単に泣き言を言う柔軟性が非常に便利であることがわかりました.結論
全体として、Rust は、私の日々の開発者スキルが大幅に向上したことに感心しています。 ツールは優れていて目的が明確で、言語は表現力豊かで非常に効率的です。 私は本当にそれを楽しんでおり、これが長期的にC++の落とし穴の約1つを回避できることを願っています. % %item_read_more_button%%
結果と選択
は意図的なアイデアですが、それらを献身的にしているのは、誰もがそれらを利用しているという否定できない事実です。 これらの 2 つの列挙型は、すべてのライブラリ (通常のライブラリを含む) で、特定の間違いやすい計算とオプションで利用可能な指定に対する流行の言語です。 C++ では、(1) エラー コードを返す。 (2) 無効な指定を返す。 (3) 例外を発生させる ; (4)アプローチをクラッシュさせる。 すべての疑わしい選択とすべてのライブラリが確実なものを利用します。 しかも結果と選択
、タグ付けされた列挙型を簡単に泣き言を言う柔軟性が非常に便利であることがわかりました.結論
全体として、Rust は、私の日々の開発者スキルが大幅に向上したことに感心しています。 ツールは優れていて目的が明確で、言語は表現力豊かで非常に効率的です。 私は本当にそれを楽しんでおり、これが長期的にC++の落とし穴の約1つを回避できることを願っています. % %item_read_more_button%%