関連サイト
本書の関連ページが用意されています。
内容紹介
- 本書の「色の違いが分かりづらい」方のために「色違いバージョン」のPDFデータを提供します。詳しくは以下のサイトをご覧ください。https://book.mynavi.jp/pcbook/blog/detail/id=119121
[作ってはじめてわかるCPUのしくみと動き]
小学校で習ったことのある回路図から出発。計算のかわりに回路図に「矢印を描く」という方法で電気を理解します。ひたすら矢印を描くうちに、CPUのしくみが理解できるようになります。
そして「ハードウェア記述言語」を使ってCPUを完成させます。記述コードはパソコン上のシミュレーターで動かすことができますがFPGA評価ボードがあれば作った回路を実際に動かすことができます。
本書はCPUの正体について説明し、さらにその周囲のモジュールとの関係性についても説明します。そうしてコンピューター全体の回路を見通しよく整理できるようになります。物理と情報科学のギャップを埋めることが、本書の真の目的です。
読者の皆様の頭の中で、学校で習った豆電球の回路図と情報処理装置としてのCPUが繋がっていれば嬉しく思います。
学生・エンジニアに向けたコンピューターのしくみの解説書。
書誌情報
- 著者: 上原周
- 発行日: 2020-08-28 (紙書籍版発行日: 2020-08-28)
- 最終更新日: 2020-08-28
- バージョン: 1.0.0
- ページ数: 208ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
上原周
IT企業勤務。物理と数学と情報科学の隙間のような領域に興味があります。
目次
はじめに
- 日本語版のための序文
- 監訳者序文
- 本書の対象読者
- 本書の内容
- 著者紹介
第1章 プロジェクトを開始する
- 1.1 Pythonのバージョン
- 1.2 プロジェクトの計画を立てる
- 1.3 バージョン番号を管理する
- 1.4 コーディングスタイルと自動チェック
- 1.5 Joshua Harlow、Pythonについて語る
第2章 モジュール、ライブラリ、フレームワーク
- 2.1 インポートシステム
- 2.2 便利な標準ライブラリ
- 2.3 外部ライブラリ
- 2.4 パッケージのインストール:pipをさらに活用する
- 2.5 フレームワークの使用と選択
- 2.6 Doug Hellmann、Pythonライブラリについて語る
第3章 ドキュメントの作成とよいAPI プラクティス
- 3.1 Sphinxによるドキュメントの作成
- 3.2 まとめ
- 3.3 Christophe de Vienne、API開発について語る
第4章 タイムスタンプとタイムゾーンの処理
- 4.1 タイムゾーンがないという問題
- 4.2 デフォルトのdatetimeオブジェクトを作成する
- 4.3 dateutilに基づくタイムゾーン対応のタイムスタンプ
- 4.4 タイムゾーン対応のdatetimeオブジェクトをシリアライズする
- 4.5 あいまいな時間を解決する
- 4.6 まとめ
第5章 ソフトウェアの配布
- 5.1 setup.pyの略史
- 5.2 setup.cfgによるパッケージ管理
- 5.3 wheel:配布フォーマット標準
- 5.4 カスタムソフトウェアを公開する
- 5.5 エントリポイント
- 5.6 まとめ
- 5.7 Nick Coghlan、パッケージ管理について語る
第6章 ユニットテスト
- 6.1 テストの基礎
- 6.2 仮想環境
- 6.3 テストポリシー
- 6.4 Robert Collins、テストについて語る
第7章 メソッドとデコレータ
- 7.1 デコレータとそれらを使用する状況
- 7.2 Python のメソッドの仕組み
- 7.3 静的メソッド
- 7.4 クラスメソッド
- 7.5 抽象メソッド
- 7.6 静的メソッド、クラスメソッド、抽象メソッドを組み合わせて使用する
- 7.7 まとめ
第8章 関数型プログラミング
- 8.1 純粋関数を作成する
- 8.2 ジェネレータ
- 8.3 リスト内包
- 8.4 関数型の関数を使用する
- 8.5 まとめ
第9章 AST、HY、Lispライクな属性
- 9.1 ASTを調べる
- 9.2 ASTをチェックするようにflake8を拡張する
- 9.3 速習:Hy
- 9.4 まとめ
- 9.5 Paul Tagliamonte、ASTとHyについて語る
第10章 パフォーマンスと最適化
- 10.1 データ構造
- 10.2 プロファイリングを通じて振る舞いを理解する
- 10.3 関数を効率的に定義する
- 10.4 順序付きのリストとbisect
- 10.5 名前付きタプルとスロット
- 10.6 メモ化
- 10.7 PyPyによるPythonの高速化
- 10.8 バッファプロトコルでゼロコピーを実現する
- 10.9 まとめ
- 10.10 Victor Stinner、最適化について語る
第11章 スケーリングとアーキテクチャ
- 11.1 Pythonのマルチスレッディングとその制限
- 11.2 マルチプロセッシングとマルチスレッディング
- 11.3 イベント駆動型アーキテクチャ
- 11.4 その他の選択肢とasyncio
- 11.5 サービス指向アーキテクチャ
- 11.6 ZeroMQによるプロセス間通信
- 11.7 まとめ
第12章 リレーショナルデータベースの管理
- 12.1 RDBMS、ORM、それらを使用する状況
- 12.2 データベースバックエンド
- 12.3 FlaskとPostgreSQLによるデータのストリーミング
- 12.4 Dimitri Fontaine、データベースについて語る
第13章 コーディングを減らしてコードを増やす
- 13.1 sixを使ってPython 2とPython 3をサポートする
- 13.2 PythonをLispのように使ってシングルディスパッチャを作成する
- 13.3 コンテキストマネージャ
- 13.4 attrsを使って決まりきったコードを減らす
- 13.5 まとめ