TL;DR
This paper advocates for viewing analogy-making as a fundamental operation in software engineering, introducing Sifter, an algorithm that applies analogy-making to tasks like program understanding and code transformation.
Contribution
It presents Sifter, a novel analogy-making algorithm tailored for software engineering, extending cognitive models like Copycat to practical programming problems.
Findings
Sifter effectively models software structures using a new representation.
Analogy-making can be applied to complex software tasks.
The approach opens new avenues for software analysis and transformation.
Abstract
An analogy is an identification of structural similarities and correspondences between two objects. Computational models of analogy making have been studied extensively in the field of cognitive science to better understand high-level human cognition. For instance, Melanie Mitchell and Douglas Hofstadter sought to better understand high-level perception by developing the Copycat algorithm for completing analogies between letter sequences. In this paper, we argue that analogy making should be seen as a core primitive in software engineering. We motivate this argument by showing how complex software engineering problems such as program understanding and source-code transformation learning can be reduced to an instance of the analogy-making problem. We demonstrate this idea using Sifter, a new analogy-making algorithm suitable for software engineering applications that adapts and extends…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
