Analogy-Making as a Core Primitive in the Software Engineering Toolbox
summary
Presents Sifter, a new analogy-making algorithm that represents code and docs as triplet structures plus a small DSL of update rules, and applies it to three concrete tasks: comparative program understanding, program transformation learning, and API migration. Sifter learns a general transformation from two before/after examples and correctly synthesizes migrated code using documentation (it even looks up a new error code not present in examples). Implementation and data are on GitHub.
AI-written summary · about
chapters (9)
- 0:00What is an analogy?
- 1:12Understanding code as essentially the same as other code.
- 2:04Understanding code transformations as essentially the same as others.
- 3:09Letter String micro-domain: Identify the essential similarity between two strings.
- 5:01Triplet Structures
- 7:02Analogy-Making Process
- 8:19Structure Update Rules
- 12:56Similar symbols imply essential similarity between operations.
- 14:38Contributions • Role of Analogy-Making in Software Engineering
related talks
45mWhere AI Meets Code
38mProgram Synthesis: A Dream Realized?
47mBig Ideas in Program Synthesis
22mProgram Synthesis for Artifacts beyond Programs
15mAPIfix: Output-Oriented Program Synthesis for Combating Breaking Changes in Libraries
25mDomain-specific model differencing in visual concrete syntax
01h 22mSoftware Abstraction in the Age of AI-Generated Code
35mCraft, Engineering, and the Essence of Programming
