Cargando…

Image-based many-language programming language identification

Programming language identification (PLI) is a common need in automatic program comprehension as well as a prerequisite for deeper forms of code understanding. Image-based approaches to PLI have recently emerged and are appealing due to their applicability to code screenshots and programming video t...

Descripción completa

Detalles Bibliográficos
Autores principales: Del Bonifro, Francesca, Gabbrielli, Maurizio, Lategano, Antonio, Zacchiroli, Stefano
Formato: Online Artículo Texto
Lenguaje:English
Publicado: PeerJ Inc. 2021
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8592246/
https://www.ncbi.nlm.nih.gov/pubmed/34825053
http://dx.doi.org/10.7717/peerj-cs.631
_version_ 1784599415481171968
author Del Bonifro, Francesca
Gabbrielli, Maurizio
Lategano, Antonio
Zacchiroli, Stefano
author_facet Del Bonifro, Francesca
Gabbrielli, Maurizio
Lategano, Antonio
Zacchiroli, Stefano
author_sort Del Bonifro, Francesca
collection PubMed
description Programming language identification (PLI) is a common need in automatic program comprehension as well as a prerequisite for deeper forms of code understanding. Image-based approaches to PLI have recently emerged and are appealing due to their applicability to code screenshots and programming video tutorials. However, they remain limited to the recognition of a small amount of programming languages (up to 10 languages in the literature). We show that it is possible to perform image-based PLI on a large number of programming languages (up to 149 in our experiments) with high (92%) precision and recall, using convolutional neural networks (CNNs) and transfer learning, starting from readily-available pretrained CNNs. Results were obtained on a large real-world dataset of 300,000 code snippets extracted from popular GitHub repositories. By scrambling specific character classes and comparing identification performances we also show that the characters that contribute the most to the visual recognizability of programming languages are symbols (e.g., punctuation, mathematical operators and parentheses), followed by alphabetic characters, with digits and indentation having a negligible impact.
format Online
Article
Text
id pubmed-8592246
institution National Center for Biotechnology Information
language English
publishDate 2021
publisher PeerJ Inc.
record_format MEDLINE/PubMed
spelling pubmed-85922462021-11-24 Image-based many-language programming language identification Del Bonifro, Francesca Gabbrielli, Maurizio Lategano, Antonio Zacchiroli, Stefano PeerJ Comput Sci Artificial Intelligence Programming language identification (PLI) is a common need in automatic program comprehension as well as a prerequisite for deeper forms of code understanding. Image-based approaches to PLI have recently emerged and are appealing due to their applicability to code screenshots and programming video tutorials. However, they remain limited to the recognition of a small amount of programming languages (up to 10 languages in the literature). We show that it is possible to perform image-based PLI on a large number of programming languages (up to 149 in our experiments) with high (92%) precision and recall, using convolutional neural networks (CNNs) and transfer learning, starting from readily-available pretrained CNNs. Results were obtained on a large real-world dataset of 300,000 code snippets extracted from popular GitHub repositories. By scrambling specific character classes and comparing identification performances we also show that the characters that contribute the most to the visual recognizability of programming languages are symbols (e.g., punctuation, mathematical operators and parentheses), followed by alphabetic characters, with digits and indentation having a negligible impact. PeerJ Inc. 2021-07-23 /pmc/articles/PMC8592246/ /pubmed/34825053 http://dx.doi.org/10.7717/peerj-cs.631 Text en ©2021 Del Bonifro et al. https://creativecommons.org/licenses/by/4.0/This is an open access article distributed under the terms of the Creative Commons Attribution License (https://creativecommons.org/licenses/by/4.0/) , which permits unrestricted use, distribution, reproduction and adaptation in any medium and for any purpose provided that it is properly attributed. For attribution, the original author(s), title, publication source (PeerJ Computer Science) and either DOI or URL of the article must be cited.
spellingShingle Artificial Intelligence
Del Bonifro, Francesca
Gabbrielli, Maurizio
Lategano, Antonio
Zacchiroli, Stefano
Image-based many-language programming language identification
title Image-based many-language programming language identification
title_full Image-based many-language programming language identification
title_fullStr Image-based many-language programming language identification
title_full_unstemmed Image-based many-language programming language identification
title_short Image-based many-language programming language identification
title_sort image-based many-language programming language identification
topic Artificial Intelligence
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8592246/
https://www.ncbi.nlm.nih.gov/pubmed/34825053
http://dx.doi.org/10.7717/peerj-cs.631
work_keys_str_mv AT delbonifrofrancesca imagebasedmanylanguageprogramminglanguageidentification
AT gabbriellimaurizio imagebasedmanylanguageprogramminglanguageidentification
AT lateganoantonio imagebasedmanylanguageprogramminglanguageidentification
AT zacchirolistefano imagebasedmanylanguageprogramminglanguageidentification