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.Scanner や bufio.Reader を使用します。これらは高度に最適化されており、エッジケースも網羅的に処理します。