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

From Software Heritage Wiki
Jump to: navigation, search
(translate internship description to french)
 
(13 intermediate revisions by 2 users not shown)
Line 9: Line 9:
  
 
'''Description''':
 
'''Description''':
L'[[archive de Software Heritage]] est la plus vaste collection de code source
+
L'[https://archive.softwareheritage.org/ archive de Software Heritage] est la
existante aujourd'hui: 4 milliard des fichiers uniques et 1 milliard des commits,
+
plus vaste collection de code source existante aujourd'hui: 4 milliard des
provenants de plus de 70 million des projets logiciel.
+
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
 
À cette échelle la détection du langage de programmation d'un fichier est très
 
compliquée.
 
compliquée.
  
Le premier objectif de ce stage est de conduire une review systématique de la
+
Le premier objectif de ce stage est conduire une review systématique de la
 
literature scientifique sur la detection de langage de programmation, pour
 
literature scientifique sur la detection de langage de programmation, pour
 
ensuite évaluer quelles techniques et outils seront les plus appropriés pour
 
ensuite évaluer quelles techniques et outils seront les plus appropriés pour
Line 78: Line 79:
 
* Stefano Zacchiroli <zack@upsilon.cc>
 
* Stefano Zacchiroli <zack@upsilon.cc>
  
 +
=== Reading list ===
  
[[Category:Available internship]]
+
==== Articles ====
 +
 
 +
* Eric De la Clergerie, [https://www.slideshare.net/clerger/slides-isn14 Des expériences simples autour du langage], lecture
 +
* Juriaan Kennedy van Dam, Vadim Zaytsev, [http://ieeexplore.ieee.org/abstract/document/7476685/ Software Language Identification with Natural Language Classifiers], SANER 2016
 +
* David Klein, Kyle Murray, Simon Weber, [https://arxiv.org/abs/1106.4064 Algorithmic Programming Language Identification], arXiv preprint, 2011
 +
* Shlok Gilda, [http://ieeexplore.ieee.org/document/8025917/ Source code classification using Neural Networks], JCSSE 2017
 +
* Robson Montenegro, [http://blog.aylien.com/source-code-classification-using-deep-learning/ Source Code Classification Using Deep Learning], blog post, AYLIEN, 2016
 +
* Shaul Zevin, Catherine Holzem [https://arxiv.org/abs/1703.07638 Machine Learning Based Source Code Classification Using Syntax Oriented Features], arXiv preprint, 2017
 +
* Secil Ugurel et. al., [https://dl.acm.org/citation.cfm?doid=775047.775141 What's the code?: automatic classification of source code archives], ACM SIGKDD 2002
 +
 
 +
==== Tools ====
 +
 
 +
* [https://github.com/blackducksoftware/ohcount Ohcount], Black Duck Software
 +
* [https://github.com/github/linguist Linguist], GitHub
 +
* [https://guesslang.readthedocs.io/en/latest/ Guesslang], Y. SOMDA
 +
* SLOC counters: [https://github.com/AlDanial/cloc cloc], [https://www.dwheeler.com/sloccount/ SLOCCount]
 +
* Code indexers: [http://ctags.io/ Universal Ctags]
 +
 
 +
 
 +
[[Category:Completed internship]]
 
[[Category:Internship]]
 
[[Category:Internship]]
 
[[Category:Lang:English]]
 
[[Category:Lang:English]]

Latest revision as of 13:35, 26 September 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

Articles

Tools