はい、ついにこの本を読み終えました。
私は大学でコンピュータネットワークの授業を受講したことがないので、その科目を集中的に学ぼうと長い間考えていました。しかし、一般に公開されているしっかりとした大学のコース(MITのアルゴリズム入門のようなもの)は見つかりませんでした。そして、「はじめに」という接頭辞が付いた教科書の多くは、ルーティング アルゴリズムや大陸を接続する物理的な配線など、非常に低レベルの概念を説明するのに何百ページも費やしています。
そして、インターネットで頻繁に推奨されている Beej's Guide to Network Programming を見つけました。一見すると、著者がユーモアを交えて概念を説明しているため、読みやすいと感じました。しかし同時に、この本は他のコンピュータネットワークの本に比べてコード例が多く掲載されているので、実践的なソケットプログラミングの練習をしたいプログラマ向けの本だと思いました。
そして、第 9 章を除くすべての章を読んだ後 (多くの C ソケット関数のリファレンスに近いため)、読み応えがあることがわかりました。
この本は、IP、ポート、ソケットなどのいくつかの基本概念から始まります。ただし、ネットワーク通信に使用される非常に技術的なアルゴリズムや物理デバイスの導入については詳しく説明しません。日々 Web アプリケーションを扱う開発者として、私は Web アプリケーションの方が自分の仕事に関連していると感じました。この本では時々ビットとバイトについて言及していますが、それでも読むことは可能であり、通常、本の C コードを読んでいるときにビット単位の操作を行うことはありません。
コードに実際に取り組んでみたい人には、この本が最適です。コンピュータ ネットワークに関する一般的な概要の部分を除いて、この本の説明のほとんどには C でのコード例が付いています。これは、Web アプリケーション内で実際のネットワーク通信がどのように行われるかを知るのに特に役立ちます。たとえば、ポーリング操作は、登録されているすべてのソケットをスイープして、処理する受信イベントがあるかどうかを確認します。
さらに、この例では外部ライブラリをインポートしていないため、サードパーティの依存関係に関する厄介な問題に対処する必要がありません。
この本は、ソケット プログラミングと関連するシステム コールへのわかりやすいリファレンスとして非常に優れています。ただし、「高く」も「低く」もなりません:
しかし、同じ著者によって書かれた別の優れたリソースを見つけました。Beej のネットワーク概念ガイドです。多くのコーディング演習を含むこの本よりも、多くの中核的な概念をより包括的にカバーしているようです。この「コンセプト」本が「プログラミング」本の隙間を埋めることを願っています。
C プログラミングについてあまり知らない人にとって、この本は圧倒されるかもしれません。ポインタや型キャストなどの基本的な概念は説明されていません。 CMake を扱うときのような依存関係地獄に悩まされることはありませんが、C についてあまり知らない場合、コードを読むのは依然として難しいでしょう。
個人的には C コードは大丈夫です。ただし、この本が Python で書かれていたら、もっと初心者に優しいものになっていたかもしれません。Python には、C のソケット関数のほぼすべてがソケット ライブラリに含まれています。同じ著者の「コンセプト」本も今回はPythonを使っているので、楽しみが期待できます。
全体として、この本にはソケット システム コールを使用したネットワーク アプリケーションを理解する際に役立つ実践的なコード例が満載されています。もちろん、独自のアプリケーションを作成するときにこれらの関数を実際に使用する必要はありません。多くの言語は、これらの「低レベル」ソケット ネットワーキング関数の独自のラッパーをサポートしているためです (Python には、socketserver や http などのライブラリがあります)。それにもかかわらず、開発者としてのキャリアを積んだ際には、HTTPS または WebSocket を使用した高度に抽象化された通信の背後で何が起こっているのかを理解する必要があると思います。その意味で、この本は読み物であり、参考にもなります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3