Multilingual training for Software Engineering
  Well-trained machine-learning models, which leverage large amounts of
open-source software data, have now become an interesting approach to
automating many software engineering tasks. Several SE tasks have all been
subject to this approach, with performance gradually improving over the past
several years with better models and training methods. More, and more diverse,
clean, labeled data is better for training; but constructing good-quality
datasets is time-consuming and challenging. Ways of augmenting the volume and
diversity of clean, labeled data generally have wide applicability. For some
languages (e.g., Ruby) labeled data is less abundant; in others (e.g.,
JavaScript) the available data maybe more focused on some application domains,
and thus less diverse. As a way around such data bottlenecks, we present
evidence suggesting that human-written code in different languages (which
performs the same function), is rather similar, and particularly preserving of
identifier naming patterns; we further present evidence suggesting that
identifiers are a very important element of training data for software
engineering tasks. We leverage this rather fortuitous phenomenon to find
evidence that available multilingual training data (across different languages)
can be used to amplify performance. We study this for 3 different tasks: code
summarization, code retrieval, and function naming. We note that this
data-augmenting approach is broadly compatible with different tasks, languages,
and machine-learning models.
