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...
Main Authors: | , , , |
---|---|
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 |