Difference between revisions of "Large-scale progamming language detection (internship)"

From Software Heritage Wiki
Jump to navigation Jump to search
(add (empty) reading list section)
Line 81: Line 81:
 
=== Reading list ===
 
=== Reading list ===
  
TODO
+
* David Klein, Kyle Murray, Simon Weber, [https://arxiv.org/abs/1106.4064 Algorithmic Programming Language Identification], arXiv
 +
* Juriaan Kennedy van Dam, Vadim Zaytsev, [http://ieeexplore.ieee.org/abstract/document/7476685/ Software Language Identification with Natural Language Classifiers], SANER 2016
 +
* Shlok Gilda, [http://ieeexplore.ieee.org/document/8025917/ Source code classification using Neural Networks], JCSSE 2017
  
  

Revision as of 11:26, 13 February 2018

Detection de langage de programmation à grande échelle

(english description follows)

Contexte: Software Heritage, projet de recherche de grande envergure ayant comme but la récupération, l'archivage à très long terme, et le partage de la totalité du Logiciel Libre publiquement accessible en format code source.

Description: L'archive de Software Heritage est la plus vaste collection de code source existante aujourd'hui: 4 milliard des fichiers uniques et 1 milliard des commits, provenant de plus de 70 million des projets logiciel. À cette échelle la détection du langage de programmation d'un fichier est très compliquée.

Le premier objectif de ce stage est conduire une review systématique de la literature scientifique sur la detection de langage de programmation, pour ensuite évaluer quelles techniques et outils seront les plus appropriés pour un usage dans le contexte de Software Heritage. Deuxièmement, le stage portera sur l'evaluation pratique et expérimentale des techniques et outils retenues sur (un sous-ensemble de) l'archive, pour comparer analytiquement leurs efficacités respectives.

Connaissances souhaitées pour accéder au stage:

  • programmation en Python
  • statistique de base pour l'analyse de données
  • des connaissances de base dans les domaines suivantes pourraient être utiles, mais ne sont pas indispensable:
    • traitement automatique du langage naturel
    • apprentissage automatique
    • GNU R

Établissement d'accueil: Inria Paris

Environnement: vous serez en immersion totale avec l'équipe qui construit l'archive de Software Heritage, et vous aurez la possibilité d'observer de près la construction d'un projet d'envergure mondiale.

Encadrants:

  • Roberto Di Cosmo <roberto@dicosmo.org>
  • Stefano Zacchiroli <zack@upsilon.cc>

Large-scale programming language detection

Context: Software Heritage is an ambitious research project whose goal is to collect, preserve in the very long term, and share the whole publicly accessible Free/Open Source Software (FOSS) in source code form.

Description: The Software Heritage archive has assembled the largest public collection of source code to date: about 4 billion unique files and 1 billion unique commits coming from more than 70 million development projects. Detecting the programming language of each individual source code file at this scale is no easy feat.

The goal of this internship is, first, to review state-of-the-art techniques and research results on large-scale detection of programming languages, to assess which ones are good candidates for application to the Software Heritage archive; second, practically experiment with (a subset of) the chosen techniques on (a subset of) the Software Heritage archive to quantitatively compare their effectiveness.

Desirable skills to obtain this internship:

  • Python development
  • basic statistics for data analysis
  • working knowledge of one of the following would be a plus:
    • natural language processing
    • machine learning
    • GNU R

Workplace: Inria Paris

Environnement: you will work shoulder to shoulder with all members of the Software Heritage team, and you will have a chance to witness from within the construction of the ultimate source code archive.

Internship mentors:

  • Roberto Di Cosmo <roberto@dicosmo.org>
  • Stefano Zacchiroli <zack@upsilon.cc>

Reading list