📘
読書メモ『Goならわかるシステムプログラミング』
『Goならわかるシステムプログラミング』読書会のための読書メモ
本概要
https://www.lambdanote.com/products/go から引用
Go言語による新時代のコンピュータシステム入門
- 渋川よしき 著
- 388ページ
- A5判
- ISBN:978-4-908686-03-0
- 2020年4月27日 第1版第4刷 発行
本書では、Go言語の実装を掘り下げたり、さまざまなライブラリが利用しているコンピュータシステムの基本的な概念を学びながら、アプリケーション開発者の視点で低レイヤの仕組みを学んでいきます。
(PDFのみ購入した)
目次と斜め読み
- この本はGo言語そのものではなく、Go言語を使って システムプログラミングを学ぶ 本です。
第1章 Go言語で覗くシステムプログラミングの世界
- 本書を読むのにGo言語をバリバリかける必要はありません。プログラミングの経験があれば十分です。
- Go言語は多くのOSの機能を直接扱えるため、システムプログラミングを学び始めるにはうってつけです。
- 本書ではVisual Studio Codeを使ったGo言語の開発環境整備についても説明があります。
- 各章ごとの最後に、まとめと数個の問題(課題)があります。
第2章 低レベルアクセスへの入口1:io.Writer
第3章 低レベルアクセスへの入口2:io.Reader
- 第2章〜第3章では、抽象化された入出力ライブラリを使ってOSのデータ入出力、Web APIの基本的な仕組み、テキストやバイナリファイルの中身の解析などを学びます。
第4章 低レベルアクセスへの入口3:チャネル
- 第4章ではgoroutineとchanelを使った並列処理を学びます。また、OSからのシグナルの受け取りについても説明されています。
第5章 システムコール
- 第5章ではシステムコールそのものを学びます。
第6章 TCPソケットとHTTPの実装
第7章 UDPソケットを使ったマルチキャスト通信
第8章 高速なUnix ドメインソケット
- 第6章〜第8章ではHTTP, TCP, UDPといったネットワーク通信(ソケット通信)について学びます。基礎的な部分だけでなく、新しいWebの技術にも触れられています。
第9章 ファイルシステムの基礎とGo言語の標準パッケージ
第10章 ファイルシステムの最深部を扱うGo言語の関数
- 第9章〜第10章ではファイルシステムについて学びます。ローカルマシンのファイルだけでなく、クラウド上のストレージをマウントして操作する仕組みについても学びます。
第11章 プロセスの役割とGo言語による操作
第12章 シグナルによるプロセス間の通信
- 第11章〜第12章ではではプロセス、プロセス間通信、プロセスの起動オプション、シグナルなどについて学びます。
第13章 Go言語と並列処理
第14章 並行・並列処理の手法と設計のパターン
- 第13章〜第14章ではマルチコアコンピュータの並列処理について学びます。並列処理の仕組み、並行・並列処理の手法などについて学びます。
第15章 Go言語のメモリ管理
- 第15章ではGo言語のメモリ管理方法について、メモリの種類、確保、配置、廃棄などについて学びます。
第16章 時間と時刻
- 第16章ではOSの時間管理についてタイマーやカウンターを使って学びます。
第17章 Go言語とコンテナ
- 第17章ではGo言語で自作コンテナを作りながらコンテナの仕組みについて学びます。
読書の目的
Why(なぜ読むのか)
- きっかけはWomen Who Go Tokyoの読書会
- 前回参加して楽しかったので引き続き参加したい
- 低レイヤーのシステムの仕組みをGo言語を通して学びたい
- 特に、goroutine 並列処理
What(自分が知りたいこと)
- 知っている はず の内容がほとんどだが、他人に説明できるレベルまで理解したり語彙力を高めたりしたい。
How(どのように生かすか)
- 低レイヤーを意識しなくてもシステムは動くことが多いが、意識して作ることでより効率良いシステムデザインができると考えられる。
- ツール類を作っていきたいので、Go言語でファイル操作や並列処理を使ったツールを作りたい。
読んだ感想など
Women Who Go Tokyoの読書会の私のアウトプット
2021-09-26から第一回がスタートします。
Discussion