  Program classification can be regarded as a high-level abstraction of code,
laying a foundation for various tasks related to source code comprehension, and
has a very wide range of applications in the field of software engineering,
such as code clone detection, code smell classification, defects
classification, etc. The cross-language program classification can realize code
transfer in different programming languages, and can also promote
cross-language code reuse, thereby helping developers to write code quickly and
reduce the development time of code transfer. Most of the existing studies
focus on the semantic learning of the code, whilst few studies are devoted to
cross-language tasks. The main challenge of cross-language program
classification is how to extract semantic features of different programming
languages. In order to cope with this difficulty, we propose a Unified Abstract
Syntax Tree (namely UAST in this paper) neural network. In detail, the core
idea of UAST consists of two unified mechanisms. First, UAST learns an AST
representation by unifying the AST traversal sequence and graph-like AST
structure for capturing semantic code features. Second, we construct a
mechanism called unified vocabulary, which can reduce the feature gap between
different programming languages, so it can achieve the role of cross-language
program classification. Besides, we collect a dataset containing 20,000 files
of five programming languages, which can be used as a benchmark dataset for the
cross-language program classification task. We have done experiments on two
datasets, and the results show that our proposed approach outperforms the
state-of-the-art baselines in terms of four evaluation metrics (Precision,
Recall, F1-score, and Accuracy).
