TL;DR
- 誰でもプログラムを設計できるという立場から、体系的なプログラム設計を教える入門書である。
- 体系的なプログラム設計は、6 段階のデザインレシピと、簡単な版から少しずつ詳細を足していく段階的な改良の 2 つからなる。
- 教材には DrRacket と、初心者向けに機能を絞った教育用言語(Beginning Student Language など)を使う。
対象読者
プログラミングの経験がない人を想定しており、前提知識は代数の初歩だけである。職業プログラマも読者に含めている。序文によると、設計の手順は言語やプログラムの規模によらず使えるので、ここで身につけた技能はほかの言語やスプレッドシートなどの道具にも生かせる。
目次
- Preface
- Prologue: How to Program
- Part I: Fixed-Size Data(1 Arithmetic、2 Functions and Programs、3 How to Design Programs、4 Intervals, Enumerations, and Itemizations、5 Adding Structure、6 Itemizations and Structures、7 Summary)
- Intermezzo 1: Beginning Student Language
- Part II: Arbitrarily Large Data(8 Lists、9 Designing with Self-Referential Data Definitions、10 More on Lists、11 Design by Composition、12 Projects: Lists、13 Summary)
- Intermezzo 2: Quote, Unquote
- Part III: Abstraction(14 Similarities Everywhere、15 Designing Abstractions、16 Using Abstractions、17 Nameless Functions、18 Summary)
- Intermezzo 3: Scope and Abstraction
- Part IV: Intertwined Data(19 The Poetry of S-expressions、20 Iterative Refinement、21 Refining Interpreters、22 Project: The Commerce of XML、23 Simultaneous Processing、24 Summary)
- Intermezzo 4: The Nature of Numbers
- Part V: Generative Recursion(25 Non-standard Recursion、26 Designing Algorithms、27 Variations on the Theme、28 Mathematical Examples、29 Algorithms that Backtrack、30 Summary)
- Intermezzo 5: The Cost of Computation
- Part VI: Accumulators(31 The Loss of Knowledge、32 Designing Accumulator-Style Functions、33 More Uses of Accumulation、34 Summary)
- Epilogue: Moving On