『ディジタル作法』
https://gyazo.com/4a5efff6f3cdda86fdd91477739a85d3
詳しすぎず簡単すぎず、いい塩梅で書かれていると思うあんも.icon
デジタル分野の本は、簡単すぎる絵本のようなものが多い気がする 第Ⅰ部ハードウェア
第1章 コンピュータとは何か?
1.1 論理的構造
RAM(Random Access Memory): 19-20 RAMの「random access (ランダムアクセス)」というのは、格納されている位置がどこであっても、CPUが同じくらい迅速に情報にアクセスできるところからきています。
ランダムアクセス↔シーケンシャルアクセス(Sequential Access)
シーケンシャルアクセスはビデオテープやカセットテープ
いい例だと思うあんも.icon
CPUの中身
1.2 物理構成
1.3 ムーアの法則
第2章 ビット・バイトと情報の表現
2.1 アナログとディジタル
2.2 アナログからディジタルへの変換
2.3 ビット、バイト、2進法
2.4 まとめ
3.1 トイ・コンピュータ
トイ・コンピュータ: 48-55
簡単な命令で動く、仮想的なコンピュータ
GOTOとか
計算機科学をやる学部なら作ったりするのかなあんも.icon 3.2 本物のCPU
3.3 キャッシュ
3.4 その他の種類のコンピュータ
ハードウェアのまとめ
第Ⅱ部 ソフトウェア
アルゴリズムの要件: 72
特定の計算を正しく遂行することが保証された一連のステップのこと
各計算の指示は曖昧でない
取りうるすべての状態について記述されている
ここが難しい気がするあんも.icon
(有限時間で停止する)
4.1 線形のアルゴリズム
線形のアルゴリズム: 74
計算時間が線形に比例するアルゴリズム
線形時間であるや線形であると表現する
4.2 2分探索
計算時間を調べる
もとの項目数を2で何度割れば項目数が1になるか
この回数がステップ数
$ \log N
1ステップに必要な時間もわかれば計算時間がわかるあんも.icon
ステップ数だけわかればよさそう
ステップ数の増える速度はデータの量が増える速度より小さい
4.3 整列
整列(ソート)
モチベーション: アルファベット順でバイナリサーチするためにはアルファベット順でソートする必要がある 全データから先頭を逐次取り出す
計算量は全データを$ Nとして$ N+(N-1)+(N-2)+\cdots +2+1=\frac{N(N+1)}{2} これを単純化すると$ N^2+Nとなる。この式を制御しているのは$ N^2である
したがって、この作業の総量は(近似的に)$ N^2に比例する
かなり遅い
クイックソートはよく聞くけど理解してなかったあんも.icon
4.4 困難な問題と計算量
計算量: complexity
多項式: Polynomial
扱いやすい問題: 81-82
多項式時間で解ける問題:
$ N^xの多項式で解ける問題
扱いにくい問題: 81-82
それらの問題を解く多項式時間のアルゴリズムが知られていない問題
$ 2^Nのような指数時間のアルゴリズムが必要な問題
理解しやすいものもあるが、専門家しか興味を持たないような難解なものもある
非決定多項式時間: Nondeterministic Polynomial
例
「困難な問題」が実は「易しい問題」と同じクラスであるのかどうかという問題
NP問題をP問題に帰着できるか?という問題
4.5 まとめ
第5章 プログラミングとプログラミング言語
5.1 アセンブリ言語
プログラムの変換を行うプログラム
データや命令の場所がメモリ上の何番地になるかをアセンブラが計算してくれる
容易にプログラムをすることができる
5.2 高水準言語
ソースコード→コンパイラ→アセンブラ→オブジェクトコード: 91
コンパイラは何らかの中間形式に変換するフロントエンド部分と、中間形式をさまざまなアーキテクチャ向けのアセンブリ言語に変換する、複数のバックエンドに分かれている
中間形式を経由させることで複数のコンパイラを用意する必要がなくなる
ゲームエンジンについてもよく知らないけど
各プラットフォーム向けのゲームに変換できる中間形式なのかな?
API: Application Programming Interface SDK: Software Development Kit
5.3 ソフトウェア開発
5.4 資産としてのソフトウェア
オープンソース
GNU's Not Unix
その目的は、OSやプログラミング言語のコンパイラなどの重要なソフトウェアシステムのフリーの公開版を開発することでした
GPLライセンスで公開されたソフトウェアを利用したソフトウェアを公開する場合、GPLライセンスで公開しなくてはならない
厳しいライセンス
ライセンス周りのことを全然知らないあんも.icon
第6章 ソフトウェアシステム
6.1 OS(オペレーティングシステム)
6.2 OSはどのように動作しているか
OSはアプリケーションプログラムに一連の操作やサービスを提供する
ファイルのデータの読み込み、書き込み
キーボード入力
マウスの操作
アプリケーションが要求する操作をOSが受けて、操作して、アプリケーションに返す
この仕様がOSを何であるかを定義する
カーネルと関係がある?あんも.icon*2
操作の部分を行うのがカーネル?
OSの要求をデバイスが動作するために必要な形に変換する
デバイスによって、持っている機能が違う
コピー機なら、カラー印刷や両面印刷
デバイスドライバのおかげで、OSの標準的なやり方でデバイスにアクセスできる
OSとアプリケーション、システムコール、デバイスドライバの関係図: 125
6.3 その他のOS
6.4 ファイルシステム
ブロック: 127
全部埋まっているわけではないのかな
ファイルの削除: 132
フォルダエントリとファイルの対応を崩す
方法の例
フォルダが未使用である、という印を付ける方法
上書きされるまでデータがそのまま残ってしまう
消したつもりでも復元できてしまう
強力な方法: 131
ブロックの開放前に、ランダムなビット列で上書きする
軍用レベルでは複数回上書きする
強力な磁石に近づけて消磁する
6.5 アプリケーション
6.6 ソフトウェアの階層
第7章 プログラミングを学ぶ
7.1 プログラミング言語の諸概念
7.2 JavaScript の最初の例題
7.3 JavaScript の2番目の例題
7.4 ループ
7.5 条件判断
7.6 ライブラリとインタフェース
7.7 JavaScript の動作のしかた
ソフトウェアのまとめ
第Ⅲ部 コミュニケーション
第8章 ネットワーク
8.1 電話とモデム
8.2 ケーブルテレビとDSL
8.3 LAN とイーサネット
8.4 無線LAN
8.5 携帯電話
8.6 まとめ
第9章 インターネット
9.1 インターネットの概観
9.2 ドメイン名とアドレス
ホストコンピュータがもつ、インターネット中のすべてのホストの中で自身を一意的に識別するためのアドレス
IPバージョン4
短いが、枯渇ぎみ
IPバージョン6
長い
ドット付き10進: 189
IPv4アドレスの慣習的な表記
9.3 経路制御
9.4 プロトコル
ICP/IPの関係図: 198
IP: 197
パケットを送り出す(正しく届くかは保証しない)
ベストエフォート型のプロトコル
IPv4のパケットのフォーマットの図: 199
TTL: Time ToLive : 生存時間
パケット送信元で初期値が決められ、ルータで中継されるたびに1ずつ減らされる。0になると破棄され、エラーパケットが送信元に返送される
ICP: 200
バイトのストリームをセグメントとよばれるICPパケットに入れられる
個々のICPセグメントはIPパケットとして送られる
TCPの概念図: 200
9.5 上位プロトコル
9.6 帯域
9.7 圧縮
9.8 エラー検出とエラー訂正
エラー検出とエラー訂正: 217
ビットのまとまりごとにパリティビットを付加する
9.9 まとめ
第10章 World Wide Web
Denial of Service
Distributed DoS
10.1 Web の動きかた
10.3 フォーム
10.4 クッキー
10.5 Web ページにおけるアクティブコンテンツ
10.6 Web ページ以外のアクティブコンテンツ
10.7 ウィルスとワーム
10.8 Web のセキュリティ
10.9 暗号
10.10 まとめ
第11章 データ、情報、プライバシー
11.1 検索
11.2 追跡(トラッキング)
11.3 データベース、情報、統合
11.4 情報の提供
11.5 クラウドコンピューティング
11.6 まとめ
デジタル教育に必要なものはなにか
状況の理解ができそうあんも.icon