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...

Full description

Bibliographic Details
Main Authors: Francesca Del Bonifro, Maurizio Gabbrielli, Antonio Lategano, Stefano Zacchiroli
Format: Article
Language:English
Published: PeerJ Inc. 2021-07-01
Series:PeerJ Computer Science
Subjects:
Online Access:https://peerj.com/articles/cs-631.pdf
id doaj-c8863322c7424691969a0c98e85ded22
record_format Article
spelling doaj-c8863322c7424691969a0c98e85ded222021-07-25T15:05:09ZengPeerJ Inc.PeerJ Computer Science2376-59922021-07-017e63110.7717/peerj-cs.631Image-based many-language programming language identificationFrancesca Del Bonifro0Maurizio Gabbrielli1Antonio Lategano2Stefano Zacchiroli3University of Bologna, Bologna, ItalyUniversity of Bologna, Bologna, ItalyUniversity of Bologna, Bologna, ItalyUniversité de Paris, Paris, FranceProgramming 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.https://peerj.com/articles/cs-631.pdfProgramming language identificationImage recognitionMachine learningDeep learningConvolutional neural networkCode snippet
collection DOAJ
language English
format Article
sources DOAJ
author Francesca Del Bonifro
Maurizio Gabbrielli
Antonio Lategano
Stefano Zacchiroli
spellingShingle Francesca Del Bonifro
Maurizio Gabbrielli
Antonio Lategano
Stefano Zacchiroli
Image-based many-language programming language identification
PeerJ Computer Science
Programming language identification
Image recognition
Machine learning
Deep learning
Convolutional neural network
Code snippet
author_facet Francesca Del Bonifro
Maurizio Gabbrielli
Antonio Lategano
Stefano Zacchiroli
author_sort Francesca Del Bonifro
title Image-based many-language programming language identification
title_short 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_sort image-based many-language programming language identification
publisher PeerJ Inc.
series PeerJ Computer Science
issn 2376-5992
publishDate 2021-07-01
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.
topic Programming language identification
Image recognition
Machine learning
Deep learning
Convolutional neural network
Code snippet
url https://peerj.com/articles/cs-631.pdf
work_keys_str_mv AT francescadelbonifro imagebasedmanylanguageprogramminglanguageidentification
AT mauriziogabbrielli imagebasedmanylanguageprogramminglanguageidentification
AT antoniolategano imagebasedmanylanguageprogramminglanguageidentification
AT stefanozacchiroli imagebasedmanylanguageprogramminglanguageidentification
_version_ 1721282797717422080