go-reader - 背景

歴史的経緯

バッファリングの発明

1960年代、コンピュータのI/O速度がCPU速度に比べて極端に遅いことが問題になりました。この問題を解決するため、バッファリングの概念が発明されました。

UNIX のファイルI/O

Ken Thompson と Dennis Ritchie は、UNIX でシンプルなファイルI/Oモデルを設計しました:

  • open() - ファイルを開く
  • read() - バイトを読む
  • write() - バイトを書く
  • close() - ファイルを閉じる
  • このシンプルなモデルは、現在もほぼすべてのOSで使用されています。

    コンピュータサイエンス的な意味

    バッファリングの種類

  • 行バッファリング: 改行までをバッファ
  • ブロックバッファリング: 固定サイズブロック
  • フルバッファリング: ファイル全体
  • ページキャッシュ

    OSレベルでは、ファイルI/Oはページキャッシュを通して行われます。これにより、同じデータへの複数回のアクセスが高速化されます。

    実践での活用

  • ログファイルの解析
  • 設定ファイルの読み込み
  • ストリーミングデータの処理

課題と実世界のギャップ

実世界では bufio.Scannerbufio.Reader を使用します。これらは高度に最適化されており、エッジケースも網羅的に処理します。