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