Booklog - ワンス・アポン・アン・アルゴリズム 物語で読み解く計算
Martin Erwig, 高島亮祐
随分と前に買って積んでたので読む。 まえがき ~ はじめに。本書は、計算ーシステマティックな問題解決を具体的な例ー本書では物語を通して紹介していく。 計算の基礎で世界の意味や現実世界の問題解決に繋げることを計算論的思考と呼ばれることもある。計算の汎用性、計算機科学の適用可能性の広さを示すのも本書の目的。 本書は計算を支える 2 つの概念、アルゴリズムと言語の二部で構成される。 はじめにでは、本書の章構成でもある、アルゴリズムと計算・表現とデータ構造・問題解決とその限界・言語の意味・制御構造とループ・再帰・型と抽象化、が何故重要かを説明し、それぞれの概念の依存関係を示して読む順序を提案している。 1,2 章は基礎で、 4 章もデータ構造の基礎となってる。 「はじめに」を読む限りは最近読んでたいくつかの本とのつながりもあり、良い感触。今のところ訳も内容も違和感無し。 なんとなく、例えがある程度知ってるヒト向けかもなと思った。全く知らないヒト向けにしてはちょっと基礎力求められるんじゃなかな。
2026-07-30, read count: 1, page: i ~ xii, 1 ~ 12, pages read: 24
起床。アルゴリズムを使うことが計算。起床のルーチンを例えに、アルゴリズムと計算≒順序付けられた部分問題の解決策の集合とその実行についての説明。 章の前のポエム的なので最初に概念に触れられてるのだけど、各章の物語とは関係ない割に概念がつながってるので、重要なパートっぽい。 1 章。はじめに問題の表現が定められ、各部分問題の解決を繰り返して問題の表現を変換していき、最終的に解決された問題の表現にたどり着く。問題の表現は現実のものに対応している。 ただし問題解決は計算と重なる部分はあるが、純粋に計算が何であるかを表現することはできない。 アルゴリズムを言語で表現することは、有限で、個々のステップに実効性がある形でなければならない。正しい結果を返すこと、正しく終了できることも、アルゴリズムでは重要になる。 意外と難しいぞこの本。 1 章から教科書っぽい文章になった。これは計算機科学の思想・概念を論じてる本だ。物語を利用した思考実験。意図せず気を抜けない本を読み始めてしまった。
2026-07-31, read count: 1, page: 13 ~ 29, pages read: 17
2 章。計算の動的な側面。パラメータがアルゴリズムに柔軟さをもたらす。アルゴリズムの違いは実行時間や実行に必要なリソースに影響を与え、アルゴリズムの複雑性・正確性・効率性といった指標で測れる。 汎用計算機と特定のアルゴリズム一式を実行する計算機。計算を実行するもの=計算機がアルゴリズムを記述した言語を読める必要があり、また実行の主体になれる必要がある。 アルゴリズムの空間複雑性は、計算が成功するか、必要な資源が足りているか判断する指標となる。時間効率と空間効率。 この本以前にコレだけヘンゼルのポケットのサイズだとか石の数だとかを真面目に考えた本は中々ないんじゃないかな。ここまで来ると笑える。 子供の足で行ける範囲と考えるとそう遠くなかろうけど、連れ出された先が遠いと仮定したら、さぞかしヘンゼルのポケットが大きく石が小さかったんだろうなと言うのが想像できてコレまた笑える。 なんでそんなにポケットパンパンで親にバレないんだよ。 物語をベースにというか、物語はただ利用されてるだけで、殆どは思考実験じゃないかなこの本。中々難しい。 創作の物語にこのシステムの観点を持ち込んだことはなかったので、個人的には新鮮だ。これからの読書生活に影響及ぼすぞコレ。
2026-08-01, read count: 1, page: 30 ~ 46, pages read: 17
通勤。記号を解釈して意味を導くのは計算である。意味はアルゴリズムであり導かれた意味は計算である。 記号をシステマティックに変換して別の記号に変換するのも計算。 きょうは家の事情で忙し過ぎ&疲労困憊て全然読めなかった。この書き出しだけでも相当メタな話なので、念入りに読むため MP 不足のきょうはここで終える。
2026-08-02, read count: 1, page: 47 ~ 50, pages read: 4
3 章。表現とは何であるか。記号(シーニュ)。知覚・提示されるもの(シニフィアン)と概念(シニフィエ)の関係は、記号と表現する意味の対応。 例えば引用符の有無で表現が変わる。使用と言及の差異。シニフィエのシニフィエのように 2 つのレベルの表現を 1 つにまとめられる。 1 つにシニフィアンが複数にシニフィエ、複数のシニフィアンが 1 つのシニフィエを指すこともある。多義語や同義語。文脈によってシニフィエが変わる。 誤った表現が導かれることは計算の正確性に関わる問題。記号を、対象との同一性や類似性で示されるアイコン・対象と規則的なつながりを持つインデックス・言語のように約束事のみで対象とつながるシンボルの 3 種に分ける。 この分類を使って、いかに記号の表現が変換≒計算されているかを見ることができる。 本書の太字の使い方は不規則なのがちょっと気になる。アイコンは太字なのに他は 2 つは太字でなくて、 3 種に分けたのに 1 つ目だけ特別扱いに見える。太字に意味はありません、てか?
2026-08-03, read count: 1, page: 51 ~ 62, pages read: 12
職場にて ~ 4 章。特定のアクセスパターンを持つ集まりデータ型という。先着順のキュー。到着の逆順に要素を処理するスタック。優先順位付きキューはスタックの last in, first out に対し highest in, firrst out 。 セット(集合)は要素を追加・削除・参照できるデータ型で、その集合に含まれることが問題やアルゴリズムの述語に対応しており、広く利用できる。キーワードに基づき情報を探せる拡張をセットに行ったのがディクショナリ(辞書) パターンに最適な要素の配置をデータ構造という。リストは並んだ列のようなデータ構造。ツリー(木)は先祖・子孫のような関係のデータ構造で、要素数が変動する場合の優先順位を求めるのに向く。 データ構造はアルゴリズムを効率的に実行するうえで重要。リストをつなぐ矢印はポインタと呼ぶ。リストの順序にはそのリスト固有の何らかの意味がる。よってある要素にアクセスするためにはその順序を辿る必要がある。このようなアルゴリズムは線形と呼ばれる。 データ型がデータに対して何をすべきかという要求を説明し、データ構造はその要求を満たす具体的な表現を提供する。データ型をデータ構造が実装するという関係にあり、 1 つのデータ型を複数のデータ構造で実装できる。 なんだかこれまでの章より抽象度が低く具体的で普通のデータ構造の話だった。これまでとの落差がでかい。単に知ってることだから読みやすくなっただけなのかもしれん。
2026-08-04, read count: 1, page: 63 ~ 82, pages read: 20
遺失物取扱所 ~ 5 章。探索空間を効率良く体系化する原則、独立された領域に分割された空間に探索対象の要素を配置し、探索対象の要素をある順番で並べる。本棚、引き出し、バインダー等。 探索空間の分割は、常に正しく探しているもの区別できる状態でなければならない。探索対象が順序付けられている速く見つけることができる。 この点で先頭からしか走査できないリストは探索空間を狭めることができないといえる。手がかりやキーが探索空間の内側と外側を区別する。 ディクショナリを実装するデータ構造にリストを使うより二分探索木による実装の方は対数時間で検索や更新を効率化できる。ただしそれは平衡二分探索木の場合であり、平衡でない場合はコストがかさむ。 トライ木は単語の並びも文字も表現できる。辿った経路が最終的な経路の接頭辞になるためプレフィックス木とも呼ばれる。 この辺も何の変哲もないデータ構造の話で特に気づきはないか。インディ・ジョーンズを本書のような視点で見たことがないのだけは新鮮だが。
2026-08-05, read count: 1, page: 83 ~ 106, pages read: 24
Years (3)
Books (60)
- Domain Modeling Made Functional 関数型ドメインモデリング ドメイン駆動設計と F# でソフトウェアの複雑さに立ち向かおう2024-08-19〜2024-09-06
- GE 巨人の復活 シリコンバレー式「デジタル製造業」への挑戦2026-01-21〜2026-01-29
- NETFLIX の最強人事戦略 自由と責任の文化を築く2026-02-19〜2026-02-28
- NHK 3 ヶ月でマスターする 数学2026-05-27〜2026-06-02
- NO HARD WORK! 無駄ゼロで結果を出す僕らの働き方2025-12-23〜2025-12-31
- People Powered 「ビジネス」「ブランド」「チーム」を変革するコミュニティの原則 遠くへ行きたければ、みんなで行け2024-08-22〜2024-10-21
- Slack ゆとりの法則2025-10-17〜2025-10-30
- TEAM OF TEAMS 複雑化する世界で戦うための新原則2026-01-07〜2026-01-20
- Team Topologies 価値あるソフトウェアを素早く届ける適応型組織設計2026-04-24〜2026-05-01
- The DevOps 勝利をつかめ! 技術的負債を一掃せよ2026-01-01〜2026-01-06
- なぜこの人はわかってくれないのか 対立を超える会話の技術2026-01-30〜2026-02-09
- みずほ銀行システム統合、苦闘の 19 年史 史上最大の IT プロジェクト「3 度目の正直」2026-05-23〜2026-05-26
- アドレナリンジャンキー プロジェクトの現在と未来を映す 86 パターン2025-11-13〜2025-12-01
- エッセンシャル思考 最少の時間で成果を最大にする2025-12-03〜2025-12-12
- エフォートレス思考 努力を最小化して成果を最大化する2025-12-13〜2025-12-22
- クリエイティブプログラマー 創造的なプログラミングのための 7 つのテーマ2026-04-09〜2026-04-17
- サンダー・キャッツの発酵の旅 世界中を旅して見つけたレシピ、技術、そして伝統2025-05-20〜2025-06-22
- サンダー・キャッツの発酵教室2025-07-15〜2025-07-18
- スーパーエンジニアへの道 技術リーダーシップの人間学2025-07-19〜2025-08-15
- ディズニー CEO が実践する 10 の原則2026-03-16〜2026-03-24
- デッドライン ソフト開発を成功に導く 101 の法則2025-10-10〜2025-10-16
- ピアリング戦記 日本のインターネットを繋ぐ技術者たち2024-12-28〜2025-01-14
- ピクサー流 創造するちから 小さな可能性から、大きな可能性を生み出す方法2026-03-01〜2026-03-15
- ピクルスと漬物の歴史2025-02-24〜2025-03-04
- ピープルウエア ヤル気こそプロジェクト成功の鍵 第 3 版2025-09-17〜2025-10-09
- ファスト&スロー あなたの意思はどのように決まるか?2026-01-19〜2026-04-06
- プログラマの数学2026-06-18〜2026-06-26
- プログラマーのための CPU 入門 CPU は如何にしてソフトウェアを高速に実行するか2025-01-15〜2025-03-19
- プログラマー脳 優れたプログラマーになるための認知科学に基づくアプローチ2024-09-28〜2024-10-15
- プログラミング F#2024-09-07〜2024-09-07
- プログラミングの心理学 25 周年記念版2025-08-16〜2025-09-16
- ポストモーテム みずほ銀行システム障害事後検証報告2026-06-03〜2026-06-06
- ユニコーン企業のひみつ Spotify で学んだソフトウェアづくりと働き方2026-02-10〜2026-02-18
- ユーザーの問題解決とプロダクトの成功を導く エンジニアのためのドキュメントライティング2024-09-15〜2024-09-27
- ワンス・アポン・アン・アルゴリズム 物語で読み解く計算2026-07-30〜2026-08-05
- 世界の作りおき野菜 みんなに愛される味付けの魔法2025-02-22〜2025-02-23
- 世界の納豆をめぐる探検2025-12-02〜2025-12-02
- 世界一流エンジニアの思考法2024-09-08〜2024-09-14
- 働きたくないイタチと言葉がわかるロボット2026-07-04〜2026-07-11
- 入門・倫理学2024-10-21〜2024-12-09
- 分子調理の日本食2025-02-08〜2025-02-09
- 型システムのしくみ TypeScript で実装しながら学ぶ型とプログラミング言語2025-07-01〜2025-07-14
- 実践プロパティベーステスト PropEr と Erlang/Elixir ではじめよう2024-11-05〜2024-12-27
- 家庭の低温調理 完璧な食事のためのモダンなテクニックと肉、魚、野菜、デザートのレシピ 992025-02-10〜2025-02-16
- 描きながら考える力 「ドゥードル」革命―ラクガキのパワーが思考とビジネスを変える!2026-04-18〜2026-04-23
- 数の女王2026-07-14〜2026-07-14
- 数学図鑑 やりなおしの高校数学2026-06-07〜2026-06-17
- 日本企業がシリコンバレーのスピードを身につける方法2026-04-04〜2026-04-08
- 最適経路の本 レナの不思議な数学の旅2026-07-15〜2026-07-29
- 本を読む本2024-10-13〜2024-11-04
- 演奏するプログラミング、ライブコーディングの思想と実践2025-06-23〜2025-06-30
- 熊とワルツを リスクを楽しむプロジェクト管理2025-10-31〜2025-11-12
- 男のスコッチウィスキー講座 100 蒸留所 巡礼試飲旅2024-10-26〜2025-06-01
- 異文化理解力 相手と自分の真意がわかるビジネスパーソン必須の教養2026-03-25〜2026-04-03
- 笑う数学2026-07-12〜2026-07-13
- 筋肉がすべて 健康・不老・メンタル、人生のすべてが変わる唯一の方法2026-05-12〜2026-05-22
- 習慣と脳の科学2025-04-06〜2025-05-19
- 運動能 新版・一流の頭脳2026-05-02〜2026-05-11
- 部下としての AI 世界一流エンジニアの進化術2026-06-27〜2026-07-03
- 魏武注孫子2024-11-25〜2025-04-05