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

関連