Feedback-driven semi-supervised synthesis of program transformations
While editing code, it is common for developers to make multiple related repeated edits that are all instances of a more general program transformation. Since this process can be tedious and error-prone, we study the problem of automatically learning program transformations from past edits, which ca...
Uložené v:
| Vydané v: | Proceedings of ACM on programming languages Ročník 4; číslo OOPSLA; s. 1 - 30 |
|---|---|
| Hlavní autori: | , , , , , , , |
| Médium: | Journal Article |
| Jazyk: | English |
| Vydavateľské údaje: |
New York, NY, USA
ACM
13.11.2020
|
| Predmet: | |
| ISSN: | 2475-1421, 2475-1421 |
| On-line prístup: | Získať plný text |
| Tagy: |
Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
|
| Abstract | While editing code, it is common for developers to make multiple related repeated edits that are all instances of a more general program transformation. Since this process can be tedious and error-prone, we study the problem of automatically learning program transformations from past edits, which can then be used to predict future edits. We take a novel view of the problem as a semi-supervised learning problem: apart from the concrete edits that are instances of the general transformation, the learning procedure also exploits access to additional inputs (program subtrees) that are marked as positive or negative depending on whether the transformation applies on those inputs. We present a procedure to solve the semi-supervised transformation learning problem using anti-unification and programming-by-example synthesis technology. To eliminate reliance on access to marked additional inputs, we generalize the semi-supervised learning procedure to a feedback-driven procedure that also generates the marked additional inputs in an iterative loop. We apply these ideas to build and evaluate three applications that use different mechanisms for generating feedback. Compared to existing tools that learn program transformations from edits, our feedback-driven semi-supervised approach is vastly more effective in successfully predicting edits with significantly lesser amounts of past edit data. |
|---|---|
| AbstractList | While editing code, it is common for developers to make multiple related repeated edits that are all instances of a more general program transformation. Since this process can be tedious and error-prone, we study the problem of automatically learning program transformations from past edits, which can then be used to predict future edits. We take a novel view of the problem as a semi-supervised learning problem: apart from the concrete edits that are instances of the general transformation, the learning procedure also exploits access to additional inputs (program subtrees) that are marked as positive or negative depending on whether the transformation applies on those inputs. We present a procedure to solve the semi-supervised transformation learning problem using anti-unification and programming-by-example synthesis technology. To eliminate reliance on access to marked additional inputs, we generalize the semi-supervised learning procedure to a feedback-driven procedure that also generates the marked additional inputs in an iterative loop. We apply these ideas to build and evaluate three applications that use different mechanisms for generating feedback. Compared to existing tools that learn program transformations from edits, our feedback-driven semi-supervised approach is vastly more effective in successfully predicting edits with significantly lesser amounts of past edit data. |
| ArticleNumber | 219 |
| Author | Soares, Gustavo Tiwari, Ashish Gao, Xiang Radhakrishna, Arjun Barke, Shraddha Gulwani, Sumit Leung, Alan Nagappan, Nachiappan |
| Author_xml | – sequence: 1 givenname: Xiang surname: Gao fullname: Gao, Xiang email: gaoxiang@comp.nus.edu.sg organization: National University of Singapore, Singapore – sequence: 2 givenname: Shraddha surname: Barke fullname: Barke, Shraddha email: sbarke@eng.ucsd.edu organization: University of California at San Diego, USA – sequence: 3 givenname: Arjun surname: Radhakrishna fullname: Radhakrishna, Arjun email: arradha@microsoft.com organization: Microsoft, USA – sequence: 4 givenname: Gustavo surname: Soares fullname: Soares, Gustavo email: gustavo.soares@microsoft.com organization: Microsoft, USA – sequence: 5 givenname: Sumit surname: Gulwani fullname: Gulwani, Sumit email: sumitg@microsoft.com organization: Microsoft, USA – sequence: 6 givenname: Alan surname: Leung fullname: Leung, Alan email: alleu@microsoft.com organization: Microsoft, USA – sequence: 7 givenname: Nachiappan surname: Nagappan fullname: Nagappan, Nachiappan email: nachin@microsoft.com organization: Microsoft Research, USA – sequence: 8 givenname: Ashish surname: Tiwari fullname: Tiwari, Ashish email: ashish.tiwari@microsoft.com organization: Microsoft, USA |
| BookMark | eNptj71PwzAUxC1UJEqp2JmyMRmeHX8kIyoUkCqxwBw5iQ2Gxo78QqX-9wRaEEJM93Tvp9PdMZmEGCwhpwwuGBPyMhe84IU-IFMutKRMcDb5dR-ROeIrALAyF0VeTsn10tq2Ns0bbZPf2JCh7TzF996mjUfbZrgNw4tFj1l0WZ_iczJdNiQT0MXUmcHHgCfk0Jk12vleZ-RpefO4uKOrh9v7xdWKGq71QLUta2hBKcEAZFkr2UjQyqka6laVkBfCMe2Y4UoryYVUljNwxWg7BYblM3K-y21SREzWVX3ynUnbikH1ub_a7x9J-ods_PBVdqzu1__wZzveNN1P6PfzA06eZPc |
| CitedBy_id | crossref_primary_10_1145_3607185 crossref_primary_10_1109_TSE_2023_3269500 crossref_primary_10_1109_TSE_2022_3218859 crossref_primary_10_1016_j_infsof_2021_106611 crossref_primary_10_1145_3563302 crossref_primary_10_1145_3485538 crossref_primary_10_1145_3527330 crossref_primary_10_1109_TSE_2025_3565387 crossref_primary_10_1145_3485477 |
| Cites_doi | 10.1007/978-3-642-22110-1_20 10.1007/978-3-642-39799-8_68 10.1007/978-3-319-21668-3_12 10.1145/357084.357090 10.1145/1706299.1706338 10.14778/2977797.2977807 10.1145/2594291.2594321 10.1007/s11219-009-9074-y 10.1109/ICSE.2007.30 10.1109/ICSE.2012.6227190 10.1145/2807442.2807459 10.1145/1065010.1065045 10.1145/2025113.2025153 10.1007/978-3-319-21668-3_10 10.1109/ASE.2013.6693078 10.1109/TSE.2004.1265817 10.1145/2737924.2737977 10.5555/2486788.2486855 10.1109/FMCAD.2013.6679385 10.1145/75277.75293 10.1145/2837614.2837629 10.1145/3360585 10.1145/3187009.3177735 10.1145/2950290.2983955 10.1145/3385412.3386027 10.1109/ICSE.2017.44 10.1145/2254064.2254098 10.1145/2814270.2814310 10.1145/1646353.1646374 10.1007/978-3-319-13338-6_7 10.1145/1806799.1806833 10.1145/2351676.2351726 10.1145/1168857.1168907 10.1090/S0002-9947-1969-0280205-0 10.1145/1375581.1375599 10.1145/1250734.1250754 10.1145/1926385.1926423 10.1007/978-3-662-54577-5_18 10.1145/2491956.2462192 10.1145/2393596.2393655 |
| ContentType | Journal Article |
| Copyright | Owner/Author |
| Copyright_xml | – notice: Owner/Author |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3428287 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 30 |
| ExternalDocumentID | 10_1145_3428287 3428287 |
| GroupedDBID | AAKMM AAYFX ACM ADPZR AIKLT ALMA_UNASSIGNED_HOLDINGS GUFHI LHSKQ M~E OK1 ROL AAYXX AEFXT AEJOY AKRVB CITATION |
| ID | FETCH-LOGICAL-a277t-7e9b0d066410059b65c5076f6b0bd690384f17f1a267652456e210f884ff60a13 |
| ISICitedReferencesCount | 13 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000685203900096&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 2475-1421 |
| IngestDate | Sat Nov 29 07:49:08 EST 2025 Tue Nov 18 21:05:27 EST 2025 Fri Feb 21 01:11:52 EST 2025 |
| IsDoiOpenAccess | true |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | OOPSLA |
| Keywords | Programming by Example Program synthesis Refactoring Program transformation |
| Language | English |
| License | This work is licensed under a Creative Commons Attribution International 4.0 License. |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-a277t-7e9b0d066410059b65c5076f6b0bd690384f17f1a267652456e210f884ff60a13 |
| OpenAccessLink | https://dl.acm.org/doi/10.1145/3428287 |
| PageCount | 30 |
| ParticipantIDs | crossref_primary_10_1145_3428287 crossref_citationtrail_10_1145_3428287 acm_primary_3428287 |
| PublicationCentury | 2000 |
| PublicationDate | 2020-11-13 |
| PublicationDateYYYYMMDD | 2020-11-13 |
| PublicationDate_xml | – month: 11 year: 2020 text: 2020-11-13 day: 13 |
| PublicationDecade | 2020 |
| PublicationPlace | New York, NY, USA |
| PublicationPlace_xml | – name: New York, NY, USA |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationTitleAbbrev | ACM PACMPL |
| PublicationYear | 2020 |
| Publisher | ACM |
| Publisher_xml | – name: ACM |
| References | S. Jha, S. Gulwani, S. A. Seshia, and A. Tiwari. Oracle-guided component-based program synthesis. In 2010 ACM/IEEE 32nd International Conference on Software Engineering, volume 1, pages 215-224. IEEE, 2010. D. Perelman, S. Gulwani, T. Ball, and D. Grossman. Type-directed completion of partial expressions. In Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation, pages 275-286, 2012. A. Reynolds, M. Deters, V. Kuncak, C. Tinelli, and C. Barrett. Counterexample-guided quantifier instantiation for synthesis in smt. In International Conference on Computer Aided Verification, pages 198-216. Springer, 2015. J. K. Feser, S. Chaudhuri, and I. Dillig. Synthesizing data structure transformations from input-output examples. In D. Grove and S. Blackburn, editors, Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, Portland, OR, USA, June 15-17, 2015, pages 229-239. ACM, 2015. doi: 10.1145/2737924.2737977. URL https://doi.org/10.1145/2737924.2737977. 10.1145/2737924.2737977 H. A. Nguyen, A. T. Nguyen, T. T. Nguyen, T. N. Nguyen, and H. Rajan. A study of repetitiveness of code changes in software evolution. In 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 180-190. IEEE, 2013. O. Polozov and S. Gulwani. Flashmeta: a framework for inductive program synthesis. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 107-126, 2015. A. Solar-Lezama, C. G. Jones, and R. Bodík. Sketching concurrent data structures. In R. Gupta and S. P. Amarasinghe, editors, Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation, Tucson, AZ, USA, June 7-13, 2008, pages 136-148. ACM, 2008. doi: 10.1145/1375581.1375599. URL https://doi.org/10.1145/1375581.1375599. 10.1145/1375581.1375599 P. Cerný, T. A. Henzinger, A. Radhakrishna, L. Ryzhyk, and T. Tarrach. Eficient synthesis for concurrency by semanticspreserving transformations. In N. Sharygina and H. Veith, editors, 25th International Conference on Computer Aided Verification (CAV), volume 8044 of Lecture Notes in Computer Science, pages 951-967. Springer, 2013. doi: 10.1007/978-3-642-39799-8_68. URL https://doi.org/10.1007/978-3-642-39799-8_68. 10.1007/978-3-642-39799-8_68 N. Meng, M. Kim, and K. S. McKinley. Lase: locating and applying systematic edits by learning from examples. In 2013 35th International Conference on Software Engineering (ICSE), pages 502-511. IEEE, 2013. V. Raychev, M. Vechev, and E. Yahav. Code completion with statistical language models. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 419-428, 2014. R. Rolim, G. Soares, R. Gheyi, T. Barik, and L. D'Antoni. Learning quick fixes from code repositories, 2018. T. Mens and T. Tourwe. A survey of software refactoring. IEEE Transactions on Software Engineering, 30 ( 2 ): 126-139, Feb 2004. ISSN 0098-5589. doi: 10.1109/TSE. 2004. 1265817. R. Alur, M. M. K. Martin, M. Raghothaman, C. Stergiou, S. Tripakis, and A. Udupa. Synthesizing finite-state protocols from scenarios and requirements. In E. Yahav, editor, 10th International Haifa Verification Conference, volume 8855 of Lecture Notes in Computer Science, pages 75-91. Springer, 2014. doi: 10.1007/978-3-319-13338-6_7. URL https: //doi.org/10.1007/978-3-319-13338-6_7. 10.1007/978-3-319-13338-6_7 J. Bader, A. Scott, M. Pradel, and S. Chandra. Getafix: Learning to fix bugs automatically. Proc. ACM Program. Lang., 3 (OOPSLA), Oct. 2019. doi: 10.1145/3360585. URL https://doi.org/10.1145/3360585. 10.1145/3360585 A. Miltner, S. Gulwani, V. Le, A. Leung, A. Radhakrishna, G. Soares, A. Tiwari, and A. Udupa. On the fly synthesis of edit suggestions. Proceedings of the ACM on Programming Languages, 3 (OOPSLA): 1-29, 2019. A. Solar-Lezama, R. M. Rabbah, R. Bodík, and K. Ebcioglu. Programming by sketching for bit-streaming programs. In V. Sarkar and M. W. Hall, editors, Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation, Chicago, IL, USA, June 12-15, 2005, pages 281-294. ACM, 2005. doi: 10.1145/1065010.1065045. URL https://doi.org/10.1145/1065010.1065045. 10.1145/1065010.1065045 W. S. Evans, C. W. Fraser, and F. Ma. Clone detection via structural abstraction. Software Quality Journal, 17 ( 4 ): 309-330, 2009. S. Gulwani. Automating string processing in spreadsheets using input-output examples. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '11). ACM New York, NY, USA, 2011. N. Yaghmazadeh, X. Wang, and I. Dillig. Automated migration of hierarchical data to relational tables using programmingby-example. Proc. VLDB Endow., 11 ( 5 ): 580-593, 2018. doi: 10.1145/3187009.3177735. URL http://www.vldb.org/pvldb/ vol11/p580-yaghmazadeh.pdf. M. Kim, T. Zimmermann, and N. Nagappan. A field study of refactoring challenges and benefits. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE '12, pages 50 : 1-50 : 11, New York, NY, USA, 2012. ACM. ISBN 978-1-4503-1614-9. doi: 10.1145/2393596.2393655. URL http://doi.acm.org/10.1145/2393596.2393655. 10.1145/2393596.2393655 R. Singh. Blinkfill: Semi-supervised programming by example for syntactic string transformations. Proc. VLDB Endow., 9 ( 10 ): 816-827, June 2016. ISSN 2150-8097. doi: 10.14778/2977797.2977807. URL https://doi.org/10.14778/2977797.2977807. 10.14778/2977797.2977807 R. Singh and A. Solar-Lezama. Synthesizing data structure manipulations from storyboards. In T. Gyimóthy and A. Zeller, editors, SIGSOFT/FSE'11 19th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-19) and ESEC'11: 13th European Software Engineering Conference (ESEC-13), Szeged, Hungary, September 5-9, 2011, pages 289-299. ACM, 2011. doi: 10.1145/2025113.2025153. URL https://doi.org/10.1145/2025113.2025153. 10.1145/2025113.2025153 S. An, R. Singh, S. Misailovic, and R. Samanta. Augmented example-based synthesis using relational perturbation properties. Proceedings of the ACM on Programming Languages, 4 (POPL): 1-24, 2019. W. F. Opdyke. Refactoring Object-oriented Frameworks. PhD thesis, Champaign, IL, USA, 1992. UMI Order No. GAX93-05645. JetBrains. ReSharper. At https://www.jetbrains.com/resharper/, 2020b. R. Alur, P. Černy`, and A. Radhakrishna. Synthesis through unification. In International Conference on Computer Aided Verification, pages 163-179. Springer, 2015. JetBrains. IntelliJ. At https://www.jetbrains.com/idea/, 2020a. P. Cerný, K. Chatterjee, T. A. Henzinger, A. Radhakrishna, and R. Singh. Quantitative synthesis for concurrent programs. In G. Gopalakrishnan and S. Qadeer, editors, 23rd International Conference on Computer Aided Verification (CAV), volume 6806 of Lecture Notes in Computer Science, pages 243-259. Springer, 2011. doi: 10.1007/978-3-642-22110-1_20. URL https://doi.org/10.1007/978-3-642-22110-1_20. 10.1007/978-3-642-22110-1_20 R. Alur, A. Radhakrishna, and A. Udupa. Scaling enumerative program synthesis via divide and conquer. In International Conference on Tools and Algorithms for the Construction and Analysis of Systems, pages 319-336. Springer, 2017. L. Jiang, G. Misherghi, Z. Su, and S. Glondu. Deckard: Scalable and accurate tree-based detection of code clones. In 29th International Conference on Software Engineering (ICSE'07), pages 96-105. IEEE, 2007. R. Rolim, G. Soares, L. D'Antoni, O. Polozov, S. Gulwani, R. Gheyi, R. Suzuki, and B. Hartmann. Learning syntactic program transformations from examples. In 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE), pages 404-415. IEEE, 2017. M. Mayer, G. Soares, M. Grechkin, V. Le, M. Marron, O. Polozov, R. Singh, B. Zorn, and S. Gulwani. User interaction models for disambiguation in programming by example. In Proceedings of the 28th Annual ACM Symposium on User Interface Software & Technology, pages 291-301, 2015. A. Pnueli and R. Rosner. On the synthesis of a reactive module. In Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 179-190, 1989. H. Zhang, A. Jain, G. Khandelwal, C. Kaushik, S. Ge, and W. Hu. Bing developer assistant: improving developer productivity by recommending sample code. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 956-961, 2016. M. T. Vechev, E. Yahav, and G. Yorsh. Abstraction-guided synthesis of synchronization. In M. V. Hermenegildo and J. Palsberg, editors, Proceedings of the 37th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2010, Madrid, Spain, January 17-23, 2010, pages 327-338. ACM, 2010. doi: 10.1145/1706299.1706338. URL https: //doi.org/10.1145/1706299.1706338. 10.1145/1706299.1706338 N. Meng, M. Kim, and K. S. McKinley. Systematic editing: generating program transformations from an example. ACM SIGPLAN Notices, 46 ( 6 ): 329-342, 2011. A. Udupa, A. Raghavan, J. V. Deshmukh, S. Mador-Haim, M. M. Martin, and R. Alur. Transit: specifying protocols with concolic snippets. ACM SIGPLAN Notices, 48 ( 6 ): 287-296, 2013. X. J. Zhu. Semi-supervised learning literature survey. Technical report, University of Wisconsin-Madison Department of Computer Sciences, 2005. Eclipse Foundation. Eclipse. At https://www.eclipse.org/, 2020. X. Zhu and A. B. Goldberg. Introduction to semi-supervised learning. Synthesis lectures on artificial intelligence and machine learning, 3 ( 1 ): 1-130, 2009. A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. Henri-Gros, A. Kamsky, S. McPeak, and D. Engler. A few billion lines of code later. Commun. ACM, 53 ( 2 ), 2010. ISSN 0001-0782. doi: 10.1145/1646353.1646374. URL https://doi.org/10.1145/1646353.1646374. 10.1145/1646353.1646374 A. Solar-Lezama, L. Tancau, R. Bodik, S. Seshia, and V. Saraswat. Combinatorial sketching for fin e_1_2_2_4_1 e_1_2_2_24_1 e_1_2_2_49_1 e_1_2_2_6_1 e_1_2_2_22_1 Udupa A. (e_1_2_2_50_1) 2013 e_1_2_2_20_1 e_1_2_2_2_1 e_1_2_2_43_1 e_1_2_2_8_1 e_1_2_2_28_1 e_1_2_2_45_1 e_1_2_2_47_1 e_1_2_2_13_1 e_1_2_2_38_1 Miltner A. (e_1_2_2_31_1) 2019; 3 Studio Visual (e_1_2_2_29_1) 2019 e_1_2_2_51_1 e_1_2_2_53_1 e_1_2_2_17_1 e_1_2_2_55_1 e_1_2_2_15_1 e_1_2_2_36_1 Zhu X. (e_1_2_2_56_1) 2009 Le V. (e_1_2_2_23_1) 2017 (e_1_2_2_30_1) 2020 e_1_2_2_25_1 e_1_2_2_48_1 e_1_2_2_7_1 e_1_2_2_21_1 e_1_2_2_1_1 Yessenov K. (e_1_2_2_54_1) 2011 e_1_2_2_3_1 e_1_2_2_40_1 An S. (e_1_2_2_5_1) 2019; 4 Mitchell T. M. (e_1_2_2_32_1) 1982 e_1_2_2_42_1 e_1_2_2_9_1 e_1_2_2_44_1 e_1_2_2_27_1 e_1_2_2_46_1 Meng N. (e_1_2_2_26_1) 2011 (e_1_2_2_19_1) 2020 e_1_2_2_14_1 e_1_2_2_37_1 e_1_2_2_12_1 e_1_2_2_39_1 e_1_2_2_10_1 e_1_2_2_52_1 Foundation Eclipse (e_1_2_2_11_1) 2020 e_1_2_2_33_1 e_1_2_2_16_1 e_1_2_2_35_1 J. (e_1_2_2_18_1) 2020 Rolim R. (e_1_2_2_41_1) 2018 Zhu X. J. (e_1_2_2_57_1) 2005 |
| References_xml | – reference: N. Meng, M. Kim, and K. S. McKinley. Lase: locating and applying systematic edits by learning from examples. In 2013 35th International Conference on Software Engineering (ICSE), pages 502-511. IEEE, 2013. – reference: Microsoft. Visual Studio. At https://www.visualstudio.com, 2019. – reference: R. Singh. Blinkfill: Semi-supervised programming by example for syntactic string transformations. Proc. VLDB Endow., 9 ( 10 ): 816-827, June 2016. ISSN 2150-8097. doi: 10.14778/2977797.2977807. URL https://doi.org/10.14778/2977797.2977807. 10.14778/2977797.2977807 – reference: W. S. Evans, C. W. Fraser, and F. Ma. Clone detection via structural abstraction. Software Quality Journal, 17 ( 4 ): 309-330, 2009. – reference: Microsoft. Intellicode suggestions. At https://docs.microsoft.com/en-us/visualstudio/intellicode/intellicode-suggestions, 2020. – reference: J. Frankle, P. Osera, D. Walker, and S. Zdancewic. Example-directed synthesis: a type-theoretic interpretation. In R. Bodík and R. Majumdar, editors, Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016, St. Petersburg, FL, USA, January 20-22, 2016, pages 802-815. ACM, 2016. doi: 10.1145/2837614. 2837629. URL https://doi.org/10.1145/2837614.2837629. 10.1145/2837614.2837629 – reference: N. Meng, M. Kim, and K. S. McKinley. Systematic editing: generating program transformations from an example. ACM SIGPLAN Notices, 46 ( 6 ): 329-342, 2011. – reference: A. Pnueli and R. Rosner. On the synthesis of a reactive module. In Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 179-190, 1989. – reference: A. Solar-Lezama, C. G. Jones, and R. Bodík. Sketching concurrent data structures. In R. Gupta and S. P. Amarasinghe, editors, Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation, Tucson, AZ, USA, June 7-13, 2008, pages 136-148. ACM, 2008. doi: 10.1145/1375581.1375599. URL https://doi.org/10.1145/1375581.1375599. 10.1145/1375581.1375599 – reference: R. Alur, P. Černy`, and A. Radhakrishna. Synthesis through unification. In International Conference on Computer Aided Verification, pages 163-179. Springer, 2015. – reference: T. Mens and T. Tourwe. A survey of software refactoring. IEEE Transactions on Software Engineering, 30 ( 2 ): 126-139, Feb 2004. ISSN 0098-5589. doi: 10.1109/TSE. 2004. 1265817. – reference: S. Jha, S. Gulwani, S. A. Seshia, and A. Tiwari. Oracle-guided component-based program synthesis. In 2010 ACM/IEEE 32nd International Conference on Software Engineering, volume 1, pages 215-224. IEEE, 2010. – reference: V. Le, D. Perelman, O. Polozov, M. Raza, A. Udupa, and S. Gulwani. Interactive program synthesis. arXiv preprint arXiv:1703.03539, 2017. – reference: X. Zhu and A. B. Goldberg. Introduction to semi-supervised learning. Synthesis lectures on artificial intelligence and machine learning, 3 ( 1 ): 1-130, 2009. – reference: X. J. Zhu. Semi-supervised learning literature survey. Technical report, University of Wisconsin-Madison Department of Computer Sciences, 2005. – reference: R. Alur, R. Bodik, G. Juniwal, M. M. K. Martin, M. Raghothaman, S. A. Seshia, R. Singh, A. Solar-Lezama, E. Torlak, and A. Udupa. Syntax-guided synthesis. In 2013 Formal Methods in Computer-Aided Design, pages 1-8, 2013. – reference: R. Singh and A. Solar-Lezama. Synthesizing data structure manipulations from storyboards. In T. Gyimóthy and A. Zeller, editors, SIGSOFT/FSE'11 19th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-19) and ESEC'11: 13th European Software Engineering Conference (ESEC-13), Szeged, Hungary, September 5-9, 2011, pages 289-299. ACM, 2011. doi: 10.1145/2025113.2025153. URL https://doi.org/10.1145/2025113.2025153. 10.1145/2025113.2025153 – reference: S. An, R. Singh, S. Misailovic, and R. Samanta. Augmented example-based synthesis using relational perturbation properties. Proceedings of the ACM on Programming Languages, 4 (POPL): 1-24, 2019. – reference: R. Alur, M. M. K. Martin, M. Raghothaman, C. Stergiou, S. Tripakis, and A. Udupa. Synthesizing finite-state protocols from scenarios and requirements. In E. Yahav, editor, 10th International Haifa Verification Conference, volume 8855 of Lecture Notes in Computer Science, pages 75-91. Springer, 2014. doi: 10.1007/978-3-319-13338-6_7. URL https: //doi.org/10.1007/978-3-319-13338-6_7. 10.1007/978-3-319-13338-6_7 – reference: JetBrains. IntelliJ. At https://www.jetbrains.com/idea/, 2020a. – reference: V. Raychev, M. Vechev, and E. Yahav. Code completion with statistical language models. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 419-428, 2014. – reference: A. Reynolds, M. Deters, V. Kuncak, C. Tinelli, and C. Barrett. Counterexample-guided quantifier instantiation for synthesis in smt. In International Conference on Computer Aided Verification, pages 198-216. Springer, 2015. – reference: H. Zhang, A. Jain, G. Khandelwal, C. Kaushik, S. Ge, and W. Hu. Bing developer assistant: improving developer productivity by recommending sample code. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 956-961, 2016. – reference: H. A. Nguyen, A. T. Nguyen, T. T. Nguyen, T. N. Nguyen, and H. Rajan. A study of repetitiveness of code changes in software evolution. In 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 180-190. IEEE, 2013. – reference: J. K. Feser, S. Chaudhuri, and I. Dillig. Synthesizing data structure transformations from input-output examples. In D. Grove and S. Blackburn, editors, Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, Portland, OR, USA, June 15-17, 2015, pages 229-239. ACM, 2015. doi: 10.1145/2737924.2737977. URL https://doi.org/10.1145/2737924.2737977. 10.1145/2737924.2737977 – reference: A. Solar-Lezama, L. Tancau, R. Bodík, S. A. Seshia, and V. A. Saraswat. Combinatorial sketching for finite programs. In J. P. Shen and M. Martonosi, editors, Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2006, San Jose, CA, USA, October 21-25, 2006, pages 404-415. ACM, 2006. doi: 10.1145/1168857.1168907. URL https://doi.org/10.1145/1168857.1168907. 10.1145/1168857.1168907 – reference: R. Alur, A. Radhakrishna, and A. Udupa. Scaling enumerative program synthesis via divide and conquer. In International Conference on Tools and Algorithms for the Construction and Analysis of Systems, pages 319-336. Springer, 2017. – reference: P. Cerný, T. A. Henzinger, A. Radhakrishna, L. Ryzhyk, and T. Tarrach. Eficient synthesis for concurrency by semanticspreserving transformations. In N. Sharygina and H. Veith, editors, 25th International Conference on Computer Aided Verification (CAV), volume 8044 of Lecture Notes in Computer Science, pages 951-967. Springer, 2013. doi: 10.1007/978-3-642-39799-8_68. URL https://doi.org/10.1007/978-3-642-39799-8_68. 10.1007/978-3-642-39799-8_68 – reference: M. T. Vechev, E. Yahav, and G. Yorsh. Abstraction-guided synthesis of synchronization. In M. V. Hermenegildo and J. Palsberg, editors, Proceedings of the 37th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2010, Madrid, Spain, January 17-23, 2010, pages 327-338. ACM, 2010. doi: 10.1145/1706299.1706338. URL https: //doi.org/10.1145/1706299.1706338. 10.1145/1706299.1706338 – reference: T. Gvero, V. Kuncak, I. Kuraj, and R. Piskac. Complete completion using types and weights. In Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation, pages 27-38, 2013. – reference: M. Mayer, G. Soares, M. Grechkin, V. Le, M. Marron, O. Polozov, R. Singh, B. Zorn, and S. Gulwani. User interaction models for disambiguation in programming by example. In Proceedings of the 28th Annual ACM Symposium on User Interface Software & Technology, pages 291-301, 2015. – reference: K. Yessenov, Z. Xu, and A. Solar-Lezama. Data-driven synthesis for object-oriented frameworks. ACM SIGPLAN Notices, 46 ( 10 ): 65-82, 2011. – reference: T. M. Mitchell. Generalization as search. Artificial intelligence, 18 ( 2 ): 203-226, 1982. – reference: A. Udupa, A. Raghavan, J. V. Deshmukh, S. Mador-Haim, M. M. Martin, and R. Alur. Transit: specifying protocols with concolic snippets. ACM SIGPLAN Notices, 48 ( 6 ): 287-296, 2013. – reference: R. Rolim, G. Soares, L. D'Antoni, O. Polozov, S. Gulwani, R. Gheyi, R. Suzuki, and B. Hartmann. Learning syntactic program transformations from examples. In 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE), pages 404-415. IEEE, 2017. – reference: O. Polozov and S. Gulwani. Flashmeta: a framework for inductive program synthesis. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 107-126, 2015. – reference: K. Huang, X. Qiu, P. Shen, and Y. Wang. Reconciling enumerative and deductive program synthesis. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 1159-1174, 2020. – reference: Eclipse Foundation. Eclipse. At https://www.eclipse.org/, 2020. – reference: JetBrains. ReSharper. At https://www.jetbrains.com/resharper/, 2020b. – reference: A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. Henri-Gros, A. Kamsky, S. McPeak, and D. Engler. A few billion lines of code later. Commun. ACM, 53 ( 2 ), 2010. ISSN 0001-0782. doi: 10.1145/1646353.1646374. URL https://doi.org/10.1145/1646353.1646374. 10.1145/1646353.1646374 – reference: A. Solar-Lezama, R. M. Rabbah, R. Bodík, and K. Ebcioglu. Programming by sketching for bit-streaming programs. In V. Sarkar and M. W. Hall, editors, Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation, Chicago, IL, USA, June 12-15, 2005, pages 281-294. ACM, 2005. doi: 10.1145/1065010.1065045. URL https://doi.org/10.1145/1065010.1065045. 10.1145/1065010.1065045 – reference: N. Yaghmazadeh, X. Wang, and I. Dillig. Automated migration of hierarchical data to relational tables using programmingby-example. Proc. VLDB Endow., 11 ( 5 ): 580-593, 2018. doi: 10.1145/3187009.3177735. URL http://www.vldb.org/pvldb/ vol11/p580-yaghmazadeh.pdf. – reference: S. Gulwani. Automating string processing in spreadsheets using input-output examples. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '11). ACM New York, NY, USA, 2011. – reference: A. Solar-Lezama, L. Tancau, R. Bodik, S. Seshia, and V. Saraswat. Combinatorial sketching for finite programs. In Proceedings of the 12th international conference on Architectural support for programming languages and operating systems, pages 404-415, 2006. – reference: R. Rolim, G. Soares, R. Gheyi, T. Barik, and L. D'Antoni. Learning quick fixes from code repositories, 2018. – reference: A. Solar-Lezama, G. Arnold, L. Tancau, R. Bodík, V. A. Saraswat, and S. A. Seshia. Sketching stencils. In J. Ferrante and K. S. McKinley, editors, Proceedings of the ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation, San Diego, California, USA, June 10-13, 2007, pages 167-178. ACM, 2007. doi: 10.1145/1250734.1250754. URL https://doi.org/10.1145/1250734.1250754. 10.1145/1250734.1250754 – reference: J. Bader, A. Scott, M. Pradel, and S. Chandra. Getafix: Learning to fix bugs automatically. Proc. ACM Program. Lang., 3 (OOPSLA), Oct. 2019. doi: 10.1145/3360585. URL https://doi.org/10.1145/3360585. 10.1145/3360585 – reference: P. Cerný, K. Chatterjee, T. A. Henzinger, A. Radhakrishna, and R. Singh. Quantitative synthesis for concurrent programs. In G. Gopalakrishnan and S. Qadeer, editors, 23rd International Conference on Computer Aided Verification (CAV), volume 6806 of Lecture Notes in Computer Science, pages 243-259. Springer, 2011. doi: 10.1007/978-3-642-22110-1_20. URL https://doi.org/10.1007/978-3-642-22110-1_20. 10.1007/978-3-642-22110-1_20 – reference: L. Jiang, G. Misherghi, Z. Su, and S. Glondu. Deckard: Scalable and accurate tree-based detection of code clones. In 29th International Conference on Software Engineering (ICSE'07), pages 96-105. IEEE, 2007. – reference: F. Steimann and J. von Pilgrim. Refactorings without names. In Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ASE 2012, pages 290-293, New York, NY, USA, 2012. ACM. ISBN 978-1-4503-1204-2. doi: 10.1145/2351676.2351726. URL http://doi.acm.org/10.1145/2351676.2351726. 10.1145/2351676.2351726 – reference: A. Miltner, S. Gulwani, V. Le, A. Leung, A. Radhakrishna, G. Soares, A. Tiwari, and A. Udupa. On the fly synthesis of edit suggestions. Proceedings of the ACM on Programming Languages, 3 (OOPSLA): 1-29, 2019. – reference: W. F. Opdyke. Refactoring Object-oriented Frameworks. PhD thesis, Champaign, IL, USA, 1992. UMI Order No. GAX93-05645. – reference: D. Perelman, S. Gulwani, T. Ball, and D. Grossman. Type-directed completion of partial expressions. In Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation, pages 275-286, 2012. – reference: J. R. Buchi and L. H. Landweber. Solving sequential conditions by finite-state strategies. Transactions of the American Mathematical Society, 138 : 295-311, 1969. ISSN 00029947. URL http://www.jstor.org/stable/1994916. – reference: Z. Manna and R. J. Waldinger. A deductive approach to program synthesis. ACM Transactions on Programming Languages and Systems, 2 ( 1 ): 90-121, 1980. doi: 10.1145/357084.357090. URL https://doi.org/10.1145/357084.357090. 10.1145/357084.357090 – reference: M. Vakilian, N. Chen, S. Negara, B. A. Rajkumar, B. P. Bailey, and R. E. Johnson. Use, disuse, and misuse of automated refactorings. In 2012 34th International Conference on Software Engineering (ICSE), pages 233-243. IEEE, 2012. – reference: M. Kim, T. Zimmermann, and N. Nagappan. A field study of refactoring challenges and benefits. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE '12, pages 50 : 1-50 : 11, New York, NY, USA, 2012. ACM. ISBN 978-1-4503-1614-9. doi: 10.1145/2393596.2393655. URL http://doi.acm.org/10.1145/2393596.2393655. 10.1145/2393596.2393655 – ident: e_1_2_2_9_1 doi: 10.1007/978-3-642-22110-1_20 – ident: e_1_2_2_10_1 doi: 10.1007/978-3-642-39799-8_68 – ident: e_1_2_2_39_1 doi: 10.1007/978-3-319-21668-3_12 – volume-title: Interactive program synthesis. arXiv preprint arXiv:1703.03539 year: 2017 ident: e_1_2_2_23_1 – ident: e_1_2_2_24_1 doi: 10.1145/357084.357090 – ident: e_1_2_2_52_1 doi: 10.1145/1706299.1706338 – ident: e_1_2_2_42_1 doi: 10.14778/2977797.2977807 – ident: e_1_2_2_38_1 doi: 10.1145/2594291.2594321 – ident: e_1_2_2_12_1 doi: 10.1007/s11219-009-9074-y – ident: e_1_2_2_21_1 doi: 10.1109/ICSE.2007.30 – ident: e_1_2_2_51_1 doi: 10.1109/ICSE.2012.6227190 – ident: e_1_2_2_25_1 doi: 10.1145/2807442.2807459 – ident: e_1_2_2_44_1 doi: 10.1145/1065010.1065045 – ident: e_1_2_2_43_1 doi: 10.1145/2025113.2025153 – volume-title: At https://www.eclipse.org/ year: 2020 ident: e_1_2_2_11_1 – ident: e_1_2_2_3_1 doi: 10.1007/978-3-319-21668-3_10 – volume: 4 start-page: 1 year: 2019 ident: e_1_2_2_5_1 publication-title: Augmented example-based synthesis using relational perturbation properties. Proceedings of the ACM on Programming Languages – ident: e_1_2_2_33_1 doi: 10.1109/ASE.2013.6693078 – ident: e_1_2_2_28_1 doi: 10.1109/TSE.2004.1265817 – volume: 3 start-page: 1 year: 2019 ident: e_1_2_2_31_1 publication-title: On the fly synthesis of edit suggestions. Proceedings of the ACM on Programming Languages – ident: e_1_2_2_13_1 doi: 10.1145/2737924.2737977 – ident: e_1_2_2_27_1 doi: 10.5555/2486788.2486855 – ident: e_1_2_2_1_1 doi: 10.1109/FMCAD.2013.6679385 – ident: e_1_2_2_36_1 doi: 10.1145/75277.75293 – volume-title: Generalization as search. Artificial intelligence, 18 ( 2 ): 203-226 year: 1982 ident: e_1_2_2_32_1 – ident: e_1_2_2_14_1 doi: 10.1145/2837614.2837629 – ident: e_1_2_2_6_1 doi: 10.1145/3360585 – ident: e_1_2_2_53_1 doi: 10.1145/3187009.3177735 – volume-title: Data-driven synthesis for object-oriented frameworks. ACM SIGPLAN Notices, 46 ( 10 ): 65-82 year: 2011 ident: e_1_2_2_54_1 – ident: e_1_2_2_55_1 doi: 10.1145/2950290.2983955 – ident: e_1_2_2_17_1 doi: 10.1145/3385412.3386027 – ident: e_1_2_2_40_1 doi: 10.1109/ICSE.2017.44 – volume-title: Technical report year: 2005 ident: e_1_2_2_57_1 – volume-title: Transit: specifying protocols with concolic snippets. ACM SIGPLAN Notices, 48 ( 6 ): 287-296 year: 2013 ident: e_1_2_2_50_1 – ident: e_1_2_2_35_1 doi: 10.1145/2254064.2254098 – ident: e_1_2_2_37_1 doi: 10.1145/2814270.2814310 – ident: e_1_2_2_7_1 doi: 10.1145/1646353.1646374 – ident: e_1_2_2_2_1 doi: 10.1007/978-3-319-13338-6_7 – ident: e_1_2_2_20_1 doi: 10.1145/1806799.1806833 – ident: e_1_2_2_49_1 doi: 10.1145/2351676.2351726 – volume-title: Learning quick fixes from code repositories year: 2018 ident: e_1_2_2_41_1 – ident: e_1_2_2_45_1 doi: 10.1145/1168857.1168907 – ident: e_1_2_2_8_1 doi: 10.1090/S0002-9947-1969-0280205-0 – ident: e_1_2_2_48_1 doi: 10.1145/1375581.1375599 – volume-title: At https://www.visualstudio.com year: 2019 ident: e_1_2_2_29_1 – volume-title: At https://www.jetbrains.com/resharper/ year: 2020 ident: e_1_2_2_19_1 – ident: e_1_2_2_47_1 doi: 10.1145/1250734.1250754 – volume-title: Intellicode suggestions. At https://docs.microsoft.com/en-us/visualstudio/intellicode/intellicode-suggestions year: 2020 ident: e_1_2_2_30_1 – ident: e_1_2_2_15_1 doi: 10.1145/1926385.1926423 – ident: e_1_2_2_4_1 doi: 10.1007/978-3-662-54577-5_18 – ident: e_1_2_2_46_1 doi: 10.1145/1168857.1168907 – volume-title: Introduction to semi-supervised learning. Synthesis lectures on artificial intelligence and machine learning, 3 ( 1 ): 1-130 year: 2009 ident: e_1_2_2_56_1 – ident: e_1_2_2_16_1 doi: 10.1145/2491956.2462192 – volume-title: Systematic editing: generating program transformations from an example. ACM SIGPLAN Notices, 46 ( 6 ): 329-342 year: 2011 ident: e_1_2_2_26_1 – ident: e_1_2_2_22_1 doi: 10.1145/2393596.2393655 – volume-title: At https://www.jetbrains.com/idea/ year: 2020 ident: e_1_2_2_18_1 |
| SSID | ssj0001934839 |
| Score | 2.2740455 |
| Snippet | While editing code, it is common for developers to make multiple related repeated edits that are all instances of a more general program transformation. Since... |
| SourceID | crossref acm |
| SourceType | Enrichment Source Index Database Publisher |
| StartPage | 1 |
| SubjectTerms | Artificial intelligence Automatic programming Computing methodologies Development frameworks and environments Integrated and visual development environments Software and its engineering Software creation and management Software development techniques Software maintenance tools Software notations and tools |
| SubjectTermsDisplay | Computing methodologies -- Artificial intelligence Software and its engineering -- Software creation and management -- Software development techniques -- Automatic programming Software and its engineering -- Software notations and tools -- Development frameworks and environments -- Integrated and visual development environments Software and its engineering -- Software notations and tools -- Software maintenance tools |
| Title | Feedback-driven semi-supervised synthesis of program transformations |
| URI | https://dl.acm.org/doi/10.1145/3428287 |
| Volume | 4 |
| WOSCitedRecordID | wos000685203900096&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3Nb9MwFLfK4MAFxgBRYMgHxAUF4nw5PlZjGwe2VWxIvVWOY9PCmlZJW40L_wL_Mu8ljhsFJODAJYosPyvye3nv5_fhR8hLpZSQqfQ9FmqGrhsffikMsRtfqiyQPs9k3WyCn5-nk4kYDwY_2lqY7TUvivTmRqz-K6thDJiNpbP_wG63KAzAOzAdnsB2eP4V40_AHmVSffXyEjXZ60ov5l61WaFSqABeVt8KAH32HhKbnoWdIhx-bR14FrKOnYmrKUZHZxhgsIQL9DS0Pk8Hz09l7YCdgOh93rlK2zygWQnabubMwUeZY2rBvJo15Wmj8svGSezlEuujauc9Vnptl10vBRxJMVMu3CmzIOKxx6KmGvqN_s2Y1cZRR-guLsaXH0Yd9co6droJ5_xqASK8LCOM8CjJd0auDez3bJ_LSGzqs-OpJbxFbgc8Fqgmz753nHYijNK6O5379qYQG2nfWlrEOWrRwTkdwHK1T-7ZkwYdNRLygAx0cUDut108qFXqD8m7nsDQnsBQJzB0aajlO-0JzCPy6eT46ui9Z3treDLgfO1xLTI_B7wZMaw_zpJYwckgMUnmZ3ki_DCNDOOGySDhSYzRcR0w36QwbBJfsvAx2SuWhX5CqDa50QCGdGyw7XMsWCq0jFQisiwIBBuSA9iP6aq5PaXd4SF51e7PVNnr6LEryvW0x4ohoW5iu0ZvytM_T3lG7u7E8jnZW5cbfUjuqO16XpUvai7_BLr3eRE |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Feedback-driven+semi-supervised+synthesis+of+program+transformations&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Gao%2C+Xiang&rft.au=Barke%2C+Shraddha&rft.au=Radhakrishna%2C+Arjun&rft.au=Soares%2C+Gustavo&rft.date=2020-11-13&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=4&rft.issue=OOPSLA&rft.spage=1&rft.epage=30&rft_id=info:doi/10.1145%2F3428287&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3428287 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |