Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3426428.3426918acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article
Open access

Analogy-making as a Core primitive in the software engineering toolbox

Published: 17 November 2020 Publication History

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 ideas from Copycat. In particular, Sifter reduces analogy-making to searching for a sequence of update rule applications. Sifter uses a novel representation for mathematical structures capable of effectively representing the wide variety of information embedded in software.

Supplementary Material

Auxiliary Presentation Video (onward20papers-p69-p-video.mp4)
This talk explains what analogies are, argues that analogy-making plays an important role in software engineering, and describes our prototype program for making analogies involving source code. 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. Our paper argues that analogy making should be seen as a core primitive in software engineering. We show how complex problems such as program understanding and transformation learning can be seen as analogy-making. We introduce Sifter, a new analogy-making algorithm suitable for software engineering applications. Sifter reduces analogy-making to searching for a sequence of update rule applications. Sifter uses a novel representation for mathematical structures capable of representing the wide variety of information embedded in software.
MP4 File (3426428.3426918.mp4)
Presentation Videos

References

[1]
Uri Alon, Meital Zilberstein, Omer Levy, and Eran Yahav. 2019. code2vec: learning distributed representations of code. Proc. ACM Program. Lang. 3, POPL ( 2019 ), 40 : 1-40 : 29. htps://doi.org/10.1145/ 3290353
[2]
Dennis Andriesse, Xi Chen, Victor van der Veen, Asia Slowinska, and Herbert Bos. 2016. An In-Depth Analysis of Disassembly on Full-Scale x86/x64 Binaries. In 25th USENIX Security Symposium, USENIX Security 16, Austin, TX, USA, August 10-12, 2016, Thorsten Holz and Stefan Savage (Eds.). USENIX Association, 583-600. htps://www.usenix.org/conference/usenixsecurity16/technicalsessions/presentation/andriesse
[3]
Bernard J Baars. 1993. A cognitive theory of consciousness. Cambridge University Press.
[4]
Johannes Bader, Andrew Scott, Michael Pradel, and Satish Chandra. 2019. Getafix: learning to fix bugs automatically. Proc. ACM Program. Lang. 3, OOPSLA ( 2019 ), 159 : 1-159 : 27. htps://doi.org/10.1145/3360585
[5]
Paul Bartha. 2019. Analogy and Analogical Reasoning. In The Stanford Encyclopedia of Philosophy (spring 2019 ed.), Edward N. Zalta (Ed.). Metaphysics Research Lab, Stanford University.
[6]
bash 2020. fish-the friendly interactive shell. htps://github.com/fishshell/fish-shell. Accessed May, 2020.
[7]
bash 2020. GNU Bash. htps://ftp.gnu.org/gnu/bash/. Accessed May, 2020.
[8]
J Alan Brogan. 2020. Modern port of Melanie Mitchell's and Douglas Hofstadter's Copycat. htps://github.com/fargonauts/copycat. Accessed May, 2020.
[9]
Fraser Brown, Andres Nötzli, and Dawson R. Engler. 2016. How to Build Static Checking Systems Using Orders of Magnitude Less Code. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '16, Atlanta, GA, USA, April 2-6, 2016, Tom Conte and Yuanyuan Zhou (Eds.). ACM, 143-157. htps://doi.org/10.1145/2872362.2872364
[10]
Yam San Chee. 1993. Applying Gentner's Theory of Analogy to the Teaching of Computer Programming. Int. J. Man Mach. Stud. 38, 3 ( 1993 ), 347-368. htps://doi.org/10.1006/imms. 1993.1016
[11]
John Clement. 1993. Using bridging analogies and anchoring intuitions to deal with students' preconceptions in physics. Journal of research in science teaching 30, 10 ( 1993 ), 1241-1257.
[12]
Rylan Cottrell, Robert J. Walker, and Jörg Denzinger. 2008. Semiautomating small-scale source code reuse via structural correspondence. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of Software Engineering, 2008, Atlanta, Georgia, USA, November 9-14, 2008, Mary Jean Harrold and Gail C. Murphy (Eds.). ACM, 214-225. htps://doi.org/10.1145/1453101.1453130
[13]
Patrick Cousot and Radhia Cousot. 1977. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Conference Record of the Fourth ACM Symposium on Principles of Programming Languages, Los Angeles, California, USA, January 1977, Robert M. Graham, Michael A. Harrison, and Ravi Sethi (Eds.). ACM, 238-252. htps://doi.org/10.1145/512950. 512973
[14]
Daniel DeFreez, Aditya V. Thakur, and Cindy Rubio-González. 2018. Path-based function embedding and its application to error-handling specification mining. In Proceedings of the 2018 ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/SIGSOFT FSE 2018, Lake Buena Vista, FL, USA, November 04-09, 2018, Gary T. Leavens, Alessandro Garcia, and Corina S. Pasareanu (Eds.). ACM, 423-433. htps://doi.org/10.1145/3236024.3236059
[15]
Sarah A Douglas and Thomas P Moran. 1983. Learning text editor semantics by analogy. In Proceedings of the SIGCHI conference on Human Factors in Computing Systems. 207-211.
[16]
Enda Dunican. 2002. Making the Analogy: Alternative Delivery Techniques for First Year Programming Courses. In Proceedings of the 14th Annual Workshop of the Psychology of Programming Interest Group, PPIG 2002, London, UK, June 18-21, 2002. Psychology of Programming Interest Group, 8. htp://ppig.org/library/paper/making-analogyalternative-delivery-techniques-first-year-programming-courses
[17]
Thomas G Evans. 1964. A heuristic program to solve geometricanalogy problems. In Proceedings of the April 21-23, 1964, spring joint computer conference. 327-338.
[18]
Brian Falkenhainer, Kenneth D. Forbus, and Dedre Gentner. 1989. The Structure-Mapping Engine: Algorithm and Examples. Artif. Intell. 41, 1 ( 1989 ), 1-63. htps://doi.org/10.1016/ 0004-3702 ( 89 ) 90077-5
[19]
Michal Forisek and Monika Steinová. 2012. Metaphors and analogies for teaching algorithms. In Proceedings of the 43rd ACM technical symposium on Computer science education, SIGCSE 2012, Raleigh, NC, USA, February 29-March 3, 2012, Laurie A. Smith King, David R. Musicant, Tracy Camp, and Paul T. Tymann (Eds.). ACM, 15-20. htps://doi.org/10.1145/2157136.2157147
[20]
Stan Franklin, Tamas Madl, Sidney K. D'Mello, and Javier Snaider. 2014. LIDA: A Systems-level Architecture for Cognition, Emotion, and Learning. IEEE Trans. Auton. Ment. Dev. 6, 1 ( 2014 ), 19-41. htps: //doi.org/10.1109/TAMD. 2013.2277589
[21]
Mark Gabel, Lingxiao Jiang, and Zhendong Su. 2008. Scalable detection of semantic clones. In 30th International Conference on Software Engineering (ICSE 2008 ), Leipzig, Germany, May 10-18, 2008, Wilhelm Schäfer, Matthew B. Dwyer, and Volker Gruhn (Eds.). ACM, 321-330. htps://doi.org/10.1145/1368088.1368132
[22]
Dedre Gentner. 1983. Structure-Mapping: A Theoretical Framework for Analogy. Cogn. Sci. 7, 2 ( 1983 ), 155-170. htps://doi.org/10.1207/ s15516709cog0702_3
[23]
Dedre Gentner, Jefrey Loewenstein, and Leigh Thompson. 2003. Learning and transfer: A general role for analogical encoding. Journal of Educational Psychology 95, 2 ( 2003 ), 393.
[24]
Nasser Giacaman. 2012. Teaching by Example: Using Analogies and Live Coding Demonstrations to Teach Parallel Computing Concepts to Undergraduate Students. In 26th IEEE International Parallel and Distributed Processing Symposium Workshops & PhD Forum, IPDPS 2012, Shanghai, China, May 21-25, 2012. IEEE Computer Society, 1295-1298. htps://doi.org/10.1109/IPDPSW. 2012.158
[25]
Ian Goodfellow, Yoshua Bengio, and Aaron Courville. 2016. Deep learning. MIT press.
[26]
Sumit Gulwani. 2011. Automating string processing in spreadsheets using input-output examples. In Proceedings of the 38th ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, POPL 2011, Austin, TX, USA, January 26-28, 2011, Thomas Ball and Mooly Sagiv (Eds.). ACM, 317-330. htps://doi.org/10.1145/1926385.1926423
[27]
Sumit Gulwani. 2017. Programming by examples: applications, algorithms, and ambiguity resolution. In Proceedings of the 19th International Symposium on Principles and Practice of Declarative Programming, Namur, Belgium, October 09-11, 2017, Wim Vanhoof and Brigitte Pientka (Eds.). ACM, 2. htps://doi.org/10.1145/3131851.3131853
[28]
Sumit Gulwani and Prateek Jain. 2017. Programming by Examples: PL Meets ML. In Programming Languages and Systems-15th Asian Symposium, APLAS 2017, Suzhou, China, November 27-29, 2017, Proceedings (Lecture Notes in Computer Science, Vol. 10695 ), Bor-Yuh Evan Chang (Ed.). Springer, 3-20. htps://doi.org/10.1007/978-3-319-71237-6_1
[29]
Rahul Gupta, Aditya Kanade, and Shirish K. Shevade. 2019. Deep Reinforcement Learning for Syntactic Error Repair in Student Programs. In The Thirty-Third AAAI Conference on Artificial Intelligence, AAAI 2019, The Thirty-First Innovative Applications of Artificial Intelligence Conference, IAAI 2019, The Ninth AAAI Symposium on Educational Advances in Artificial Intelligence, EAAI 2019, Honolulu, Hawaii, USA, January 27-February 1, 2019. AAAI Press, 930-937. htps://doi.org/10.1609/aaai.v33i01. 3301930
[30]
Joseph Hager. 2017. A translation of Melanie Mitchell's original Copycat project from Lisp to Python. htps://github.com/ajhager/copycat. Accessed May, 2020.
[31]
Jeisson Hidalgo-Céspedes, Gabriela Marín Raventós, and Vladimir Lara-Villagrán. 2014. Playing with metaphors: a methodology to design video games for learning abstract programming concepts. In Innovation and Technology in Computer Science Education Conference 2014, ITiCSE '14, Uppsala, Sweden, June 23-25, 2014, Åsa Cajander, Mats Daniels, Tony Clear, and Arnold Pears (Eds.). ACM, 348. htps: //doi.org/10.1145/2591708.2602661
[32]
Douglas Hofstadter. 1995. A Review of Mental Leaps: Analogy in Creative Thought. AI Mag. 16, 3 ( 1995 ), 75-80. htps://doi.org/10.1609/ aimag.v16i3. 1154
[33]
Douglas R Hofstadter. 1995. Fluid concepts and creative analogies: Computer models of the fundamental mechanisms of thought. Basic books.
[34]
Douglas R Hofstadter and Melanie Mitchell. 1994. The Copycat project: A model of mental fluidity and analogy-making. ( 1994 ).
[35]
Keith J. Holyoak and Paul Thagard. 1989. Analogical Mapping by Constraint Satisfaction. Cogn. Sci. 13, 3 ( 1989 ), 295-355. htps://doi. org/10.1207/s15516709cog1303_1
[36]
Shalini Kaleeswaran, Anirudh Santhiar, Aditya Kanade, and Sumit Gulwani. 2016. Semi-supervised verified feedback generation. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016, Seattle, WA, USA, November 13-18, 2016, Thomas Zimmermann, Jane Cleland-Huang, and Zhendong Su (Eds.). ACM, 739-750. htps://doi.org/10.1145/2950290.2950363
[37]
Toshihiro Kamiya, Shinji Kusumoto, and Katsuro Inoue. 2002. CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code. IEEE Trans. Software Eng. 28, 7 ( 2002 ), 654-670. htps://doi.org/10.1109/TSE. 2002.1019480
[38]
Raghavan Komondoor and Susan Horwitz. 2001. Using Slicing to Identify Duplication in Source Code. In Static Analysis, 8th International Symposium, SAS 2001, Paris, France, July 16-18, 2001, Proceedings (Lecture Notes in Computer Science, Vol. 2126 ), Patrick Cousot (Ed.). Springer, 40-56. htps://doi.org/10.1007/3-540-47764-0_3
[39]
Ulf Krumnack, Angela Schwering, Helmar Gust, and Kai-Uwe Kühnberger. 2007. Restricted Higher-Order Anti-Unification for Analogy Making. In AI 2007: Advances in Artificial Intelligence, 20th Australian Joint Conference on Artificial Intelligence, Gold Coast, Australia, December 2-6, 2007, Proceedings (Lecture Notes in Computer Science, Vol. 4830 ), Mehmet A. Orgun and John Thornton (Eds.). Springer, 273-282. htps://doi.org/10.1007/978-3-540-76928-6_29
[40]
George Lakof and Mark Johnson. 2008. Metaphors we live by. University of Chicago press.
[41]
George Lakof and Rafael Núñez. 2000. Where mathematics comes from. Vol. 6. New York: Basic Books.
[42]
Douglas B. Lenat. 1995. CYC: A Large-Scale Investment in Knowledge Infrastructure. Commun. ACM 38, 11 ( 1995 ), 32-38. htps://doi.org/10. 1145/219717.219745
[43]
Tal Lev-Ami and Shmuel Sagiv. 2000. TVLA: A System for Implementing Static Analyses. In Static Analysis, 7th International Symposium, SAS 2000, Santa Barbara, CA, USA, June 29-July 1, 2000, Proceedings (Lecture Notes in Computer Science, Vol. 1824 ), Jens Palsberg (Ed.). Springer, 280-301. htps://doi.org/10.1007/978-3-540-45099-3_15
[44]
Zhenmin Li, Shan Lu, Suvda Myagmar, and Yuanyuan Zhou. 2006. CPMiner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code. IEEE Trans. Software Eng. 32, 3 ( 2006 ), 176-192. htps://doi.org/ 10.1109/TSE. 2006.28
[45]
Jianguo Lu, John Mylopoulos, Masateru Harao, and Masami Hagiya. 2000. Higher order generalization and its application in program verification. Ann. Math. Artif. Intell. 28, 1-4 ( 2000 ), 107-126. htps: //doi.org/10.1023/A:1018952121991
[46]
Sifei Luan, Di Yang, Celeste Barnaby, Koushik Sen, and Satish Chandra. 2019. Aroma : code recommendation via structural code search. Proc. ACM Program. Lang. 3, OOPSLA ( 2019 ), 152 : 1-152 : 28. htps://doi.org/ 10.1145/3360578
[47]
Katherine N. Macfarlane and Barbee T. Mynatt. 1988. A study of an advance organizer as a technique for teaching computer programming concepts. In Proceedings of the 19st SIGCSE Technical Symposium on Computer Science Education, 1988, Atlanta, Georgia, USA, February 25-26, 1988, Herbert L. Dershem (Ed.). ACM, 240-243. htps://doi.org/10. 1145/52964.53024
[48]
Solomon Maina, Anders Miltner, Kathleen Fisher, Benjamin C. Pierce, David Walker, and Steve Zdancewic. 2018. Synthesizing quotient lenses. Proc. ACM Program. Lang. 2, ICFP ( 2018 ), 80 : 1-80 : 29. htps: //doi.org/10.1145/3236775
[49]
Andrian Marcus and Jonathan I. Maletic. 2001. Identification of HighLevel Concept Clones in Source Code. In 16th IEEE International Conference on Automated Software Engineering (ASE 2001 ), 26-29 November 2001, Coronado Island, San Diego, CA, USA. IEEE Computer Society, 107-114. htps://doi.org/10.1109/ASE. 2001.989796
[50]
James B Marshall. 2000. Metacat: A self-watching cognitive architecture for analogy-making and high-level perception. ( 2000 ).
[51]
Anders Miltner, Kathleen Fisher, Benjamin C. Pierce, David Walker, and Steve Zdancewic. 2018. Synthesizing bijective lenses. Proc. ACM Program. Lang. 2, POPL ( 2018 ), 1 : 1-1 : 30. htps://doi.org/10.1145/ 3158089
[52]
Anders Miltner, Sumit Gulwani, Vu Le, Alan Leung, Arjun Radhakrishna, Gustavo Soares, Ashish Tiwari, and Abhishek Udupa. 2019. On the fly synthesis of edit suggestions. Proc. ACM Program. Lang. 3, OOPSLA ( 2019 ), 143 : 1-143 : 29. htps://doi.org/10.1145/3360569
[53]
Marvin Lee Minsky. [n.d.]. Logical vs. Analogical; or Symbolic vs. Connectionist; or Neat vs. Scrufy. ([n. d.]).
[54]
Melanie Mitchell. 2020. Original Copycat Source Code. htps://melaniemitchell.me/ExplorationsContent/how-to-getcopycat. html. Accessed May, 2020.
[55]
Edoardo Di Napoli, Diego Fabregat-Traver, Gregorio Quintana-Ortí, and Paolo Bientinesi. 2014. Towards an eficient use of the BLAS library for multilinear tensor contractions. Appl. Math. Comput. 235 ( 2014 ), 454-468. htps://doi.org/10.1016/j.amc. 2014. 02.051
[56]
Robert F. Nelson. 1975. Use of Analogy as a Learning-Teaching Tool. Journal of Geography 74, 2 ( 1975 ), 83-86. htps://doi.org/10.1080/ 00221347508979866
[57]
Anh Tuan Nguyen, Hoan Anh Nguyen, Tung Thanh Nguyen, and Tien N. Nguyen. 2014. Statistical learning approach for mining API usage mappings for code migration. In ACM/IEEE International Conference on Automated Software Engineering, ASE '14, Vasteras, Sweden-September 15-19, 2014, Ivica Crnkovic, Marsha Chechik, and Paul Grünbacher (Eds.). ACM, 457-468. htps://doi.org/10.1145/2642937.2643010
[58]
Anh Tuan Nguyen, Hoan Anh Nguyen, Tung Thanh Nguyen, and Tien N. Nguyen. 2014. Statistical learning of API mappings for language migration. In 36th International Conference on Software Engineering, ICSE '14, Companion Proceedings, Hyderabad, India, May 31-June 07, 2014, Pankaj Jalote, Lionel C. Briand, and André van der Hoek (Eds.). ACM, 618-619. htps://doi.org/10.1145/2591062.2591144
[59]
Trong Duc Nguyen, Anh Tuan Nguyen, and Tien N. Nguyen. 2016. Mapping API elements for code migration with vector representations. In Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, TX, USA, May 14-22, 2016-Companion Volume, Laura K. Dillon, Willem Visser, and Laurie A. Williams (Eds.). ACM, 756-758. htps://doi.org/10.1145/2889160.2892661
[60]
Trong Duc Nguyen, Anh Tuan Nguyen, Hung Dang Phan, and Tien N. Nguyen. 2017. Exploring API embedding for API usages and applications. In Proceedings of the 39th International Conference on Software Engineering, ICSE 2017, Buenos Aires, Argentina, May 20-28, 2017, Sebastián Uchitel, Alessandro Orso, and Martin P. Robillard (Eds.). IEEE / ACM, 438-449. htps://doi.org/10.1109/ICSE. 2017.47
[61]
Tien N. Nguyen. 2016. Code migration with statistical machine translation. In Proceedings of the 5th International Workshop on Software Mining, SoftwareMining@ASE 2016, Singapore, Singapore, September 3, 2016, Ming Li, Xiaoyin Wang, and Lucia (Eds.). ACM, 2. htps://doi.org/10.1145/2975961.2990477
[62]
Emma Nilsson-Nyman, Torbjörn Ekman, and Görel Hedin. 2008. Practical Scope Recovery Using Bridge Parsing. In Software Language Engineering, First International Conference, SLE 2008, Toulouse, France, September 29-30, 2008. Revised Selected Papers (Lecture Notes in Computer Science, Vol. 5452 ), Dragan Gasevic, Ralf Lämmel, and Eric Van Wyk (Eds.). Springer, 95-113. htps://doi.org/10.1007/978-3-642-00434-6_7
[63]
Corrina Perrone and Alexander Repenning. 1998. Graphical Rewrite Rule Analogies: Avoiding the Inherior Copy & Paste Reuse Dilemma. In Proceedings 1998 IEEE Symposium on Visual Languages, Nova Scotia, Canada, September 1-4, 1998. IEEE Computer Society, 40-46. htps: //doi.org/10.1109/VL. 1998.706132
[64]
Frank Pfenning. 1991. Unification and Anti-Unification in the Calculus of Constructions. In Proceedings of the Sixth Annual Symposium on Logic in Computer Science (LICS '91), Amsterdam, The Netherlands, July 15-18, 1991. IEEE Computer Society, 74-85. htps://doi.org/10.1109/ LICS. 1991.151632
[65]
Hung Dang Phan, Anh Tuan Nguyen, Trong Duc Nguyen, and Tien N. Nguyen. 2017. Statistical migration of API usages. In Proceedings of the 39th International Conference on Software Engineering, ICSE 2017, Buenos Aires, Argentina, May 20-28, 2017-Companion Volume, Sebastián Uchitel, Alessandro Orso, and Martin P. Robillard (Eds.). IEEE Computer Society, 47-50. htps://doi.org/10.1109/ICSE-C. 2017.17
[66]
Noah S Podolefsky and Noah D Finkelstein. 2006. Use of analogy in learning physics: The role of representations. Physical Review Special Topics-Physics Education Research 2, 2 ( 2006 ), 020101.
[67]
Veselin Raychev, Martin T. Vechev, and Andreas Krause. 2015. Predicting Program Properties from "Big Code". In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2015, Mumbai, India, January 15-17, 2015, Sriram K. Rajamani and David Walker (Eds.). ACM, 111-124. htps://doi.org/10.1145/2676726.2677009
[68]
Mohammad Raza and Sumit Gulwani. 2018. Disjunctive Program Synthesis: A Robust Approach to Programming by Example. In Proceedings of the Thirty-Second AAAI Conference on Artificial Intelligence, (AAAI-18), the 30th innovative Applications of Artificial Intelligence (IAAI-18), and the 8th AAAI Symposium on Educational Advances in Artificial Intelligence (EAAI-18), New Orleans, Louisiana, USA, February 2-7, 2018, Sheila A. McIlraith and Kilian Q. Weinberger (Eds.). AAAI Press, 1403-1412. htps://www.aaai.org/ocs/index.php/AAAI/AAAI18/ paper/view/17055
[69]
Mohammad Raza, Sumit Gulwani, and Natasa Milic-Frayling. 2015. Compositional Program Synthesis from Natural Language and Examples. In Proceedings of the Twenty-Fourth International Joint Conference on Artificial Intelligence, IJCAI 2015, Buenos Aires, Argentina, July 25-31, 2015, Qiang Yang and Michael J. Wooldridge (Eds.). AAAI Press, 792-800. htp://ijcai.org/Abstract/15/117
[70]
Alexander Repenning and Corrina Perrone. 2000. Programming by example: programming by analogous examples. Commun. ACM 43, 3 ( 2000 ), 90-97.
[71]
Lindsey E Richland, Keith J Holyoak, and James W Stigler. 2004. Analogy use in eighth-grade mathematics classrooms. Cognition and instruction 22, 1 ( 2004 ), 37-60.
[72]
Lindsey E Richland, Osnat Zur, and Keith J Holyoak. 2007. Cognitive supports for analogies in the mathematics classroom. Science 316, 5828 ( 2007 ), 1128-1129.
[73]
Chanchal Kumar Roy, James R. Cordy, and Rainer Koschke. 2009. Comparison and evaluation of code clone detection techniques and tools: A qualitative approach. Sci. Comput. Program. 74, 7 ( 2009 ), 470-495. htps://doi.org/10.1016/j.scico. 2009. 02.007
[74]
Shmuel Sagiv, Thomas W. Reps, and Reinhard Wilhelm. 1999. Parametric Shape Analysis via 3-Valued Logic. In POPL '99, Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, TX, USA, January 20-22, 1999, Andrew W. Appel and Alex Aiken (Eds.). ACM, 105-118. htps: //doi.org/10.1145/292540.292552
[75]
Shmuel Sagiv, Thomas W. Reps, and Reinhard Wilhelm. 2002. Parametric shape analysis via 3-valued logic. ACM Trans. Program. Lang. Syst. 24, 3 ( 2002 ), 217-298. htps://doi.org/10.1145/514188.514190
[76]
Hesam Samimi, Chris Deaton, Yoshiki Ohshima, Alessandro Warth, and Todd D. Millstein. 2014. Call by Meaning. In Onward! 2014, Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, part of SPLASH '14, Portland, OR, USA, October 20-24, 2014, Andrew P. Black, Shriram Krishnamurthi, Bernd Bruegge, and Joseph N. Ruskiewicz (Eds.). ACM, 11-28. htps://doi.org/10.1145/2661136.2661152
[77]
Oli Sharpe. 2018. Semprola: a semiotic programming language. In Conference Companion of the 2nd International Conference on Art, Science, and Engineering of Programming, Nice, France, April 09-12, 2018, Stefan Marr and Jennifer B. Sartor (Eds.). ACM, 202-213. htps: //doi.org/10.1145/3191697.3214330
[78]
Rishabh Singh. 2016. BlinkFill: Semi-supervised Programming By Example for Syntactic String Transformations. Proc. VLDB Endow. 9, 10 ( 2016 ), 816-827. htps://doi.org/10.14778/2977797.2977807
[79]
Rishabh Singh and Sumit Gulwani. 2012. Learning Semantic String Transformations from Examples. Proc. VLDB Endow. 5, 8 ( 2012 ), 740-751. htps://doi.org/10.14778/2212351.2212356
[80]
Rishabh Singh and Sumit Gulwani. 2016. Transforming spreadsheet data types using examples. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016, St. Petersburg, FL, USA, January 20-22, 2016, Rastislav Bodík and Rupak Majumdar (Eds.). ACM, 343-356. htps://doi.org/10. 1145/2837614.2837668
[81]
David Canfield Smith. 1975. Pygmalion: a creative programming environment. Technical Report. STANFORD UNIV CA DEPT OF COMPUTER SCIENCE.
[82]
Dawn Xiaodong Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager, Min Gyung Kang, Zhenkai Liang, James Newsome, Pongsin Poosankam, and Prateek Saxena. 2008. BitBlaze: A New Approach to Computer Security via Binary Analysis. In Information Systems Security, 4th International Conference, ICISS 2008, Hyderabad, India, December 16-20, 2008. Proceedings (Lecture Notes in Computer Science, Vol. 5352 ), R. Sekar and Arun K. Pujari (Eds.). Springer, 1-25. htps: //doi.org/10.1007/978-3-540-89862-7_1
[83]
Matthew Sotoudeh, Anand Venkat, Michael J. Anderson, Evangelos Georganas, Alexander Heinecke, and Jason Knight. 2019. ISA mapper: a compute and hardware agnostic deep learning compiler. In Proceedings of the 16th ACM International Conference on Computing Frontiers, CF 2019, Alghero, Italy, April 30-May 2, 2019, Francesca Palumbo, Michela Becchi, Martin Schulz, and Kento Sato (Eds.). ACM, 164-173. htps: //doi.org/10.1145/3310273.3321559
[84]
Ashley Strickland. 2020. The 'beating hearts' of these pulsating stars create music to astronomers' ears. htps://www.cnn.com/ 2020 /05/ 15/world/pulsating-stars-delta-scuti-scn-trnd/index.html. Accessed May, 2020.
[85]
Marko Vasic, Aditya Kanade, Petros Maniatis, David Bieber, and Rishabh Singh. 2019. Neural Program Repair by Jointly Learning to Localize and Repair. In 7th International Conference on Learning Representations, ICLR 2019, New Orleans, LA, USA, May 6-9, 2019. OpenReview.net. htps://openreview.net/forum?id=ByloJ20qtm
[86]
Martin T. Vechev and Eran Yahav. 2016. Programming with "Big Code". Found. Trends Program. Lang. 3, 4 ( 2016 ), 231-284. htps: //doi.org/10.1561/2500000028
[87]
Matthias Wenzl, Georg Merzdovnik, Johanna Ullrich, and Edgar R. Weippl. 2019. From Hack to Elaborate Technique-A Survey on Binary Rewriting. ACM Comput. Surv. 52, 3 ( 2019 ), 49 : 1-49 : 37. htps://doi. org/10.1145/3316415
[88]
Martin White, Michele Tufano, Christopher Vendome, and Denys Poshyvanyk. 2016. Deep learning code fragments for code clone detection. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, ASE 2016, Singapore, September 3-7, 2016, David Lo, Sven Apel, and Sarfraz Khurshid (Eds.). ACM, 87-98. htps://doi.org/10.1145/2970276.2970326
[89]
Patrick H. Winston. 1980. Learning and Reasoning by Analogy. Commun. ACM 23, 12 ( 1980 ), 689-703. htps://doi.org/10.1145/359038. 359042
[90]
Edmund Wong, Taiyue Liu, and Lin Tan. 2015. CloCom: Mining existing source code for automatic comment generation. In 22nd IEEE International Conference on Software Analysis, Evolution, and Reengineering, SANER 2015, Montreal, QC, Canada, March 2-6, 2015, Yann-Gaël Guéhéneuc, Bram Adams, and Alexander Serebrenik (Eds.). IEEE Computer Society, 380-389. htps://doi.org/10.1109/SANER. 2015.7081848
[91]
Moshé M. Zloof. 1977. Query-by-Example : A Data Base Language. IBM Syst. J. 16, 4 ( 1977 ), 324-343. htps://doi.org/10.1147/sj.164.0324

Cited By

View all
  • (2023)Anti-unification and generalizationProceedings of the Thirty-Second International Joint Conference on Artificial Intelligence10.24963/ijcai.2023/736(6563-6573)Online publication date: 19-Aug-2023

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
Onward! 2020: Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software
November 2020
208 pages
ISBN:9781450381789
DOI:10.1145/3426428
This work is licensed under a Creative Commons Attribution International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 November 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. fluid analogies
  2. program understanding
  3. software maintenance
  4. static analysis

Qualifiers

  • Research-article

Conference

SPLASH '20
Sponsor:

Acceptance Rates

Overall Acceptance Rate 40 of 105 submissions, 38%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)102
  • Downloads (Last 6 weeks)13
Reflects downloads up to 16 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Anti-unification and generalizationProceedings of the Thirty-Second International Joint Conference on Artificial Intelligence10.24963/ijcai.2023/736(6563-6573)Online publication date: 19-Aug-2023

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media