試験公開中

このエントリーをはてなブックマークに追加

作ろう!CPU 基礎から理解するコンピューターのしくみ

マイナビ出版

3,828円 (3,480円+税)

69行のソースコードで設計する、超単純な4bit CPU。本書はCPUの正体、さらにその周囲のモジュールとの関係性についても説明します。そうしてコンピューター全体の回路を見通しよく整理できるようになります。物理と情報科学のギャップを埋めることが、本書の真の目的です。

関連サイト

本書の関連ページが用意されています。

内容紹介

  • 1章までの試し読みをこちらにて配布中。
  • 本書の「色の違いが分かりづらい」方のために「色違いバージョン」のPDFデータを提供します。詳しくは以下のサイトをご覧ください。https://book.mynavi.jp/pcbook/blog/detail/id=119121
[作ってはじめてわかるCPUのしくみと動き]

小学校で習ったことのある回路図から出発。計算のかわりに回路図に「矢印を描く」という方法で電気を理解します。ひたすら矢印を描くうちに、CPUのしくみが理解できるようになります。

そして「ハードウェア記述言語」を使ってCPUを完成させます。記述コードはパソコン上のシミュレーターで動かすことができますがFPGA評価ボードがあれば作った回路を実際に動かすことができます。

本書はCPUの正体について説明し、さらにその周囲のモジュールとの関係性についても説明します。そうしてコンピューター全体の回路を見通しよく整理できるようになります。物理と情報科学のギャップを埋めることが、本書の真の目的です。

読者の皆様の頭の中で、学校で習った豆電球の回路図と情報処理装置としてのCPUが繋がっていれば嬉しく思います。

学生・エンジニアに向けたコンピューターのしくみの解説書。

書誌情報

  • 著者: 上原周
  • 発行日: (紙書籍版発行日: 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 まとめ
Home 書籍一覧 作ろう!CPU 基礎から理解するコンピューターのしくみ ▲ ページトップへ戻る