How could Neural Networks understand Programs?
Not on the map. Why?
Abstract (arXiv)
Semantic understanding of programs is a fundamental problem for programming language processing (PLP). Recent works that learn representations of code based on pre-training techniques in NLP have pushed the frontiers in this direction. However, the semantics of PL and NL have essential differences. These being ignored, we believe it is difficult to build a model to better understand programs, by either directly applying off-the-shelf NLP pre-training techniques to the source code, or adding features to the model by the heuristic. In fact, the semantics of a program can be rigorously defined by formal semantics in PL theory. For example, the operational semantics, describes the meaning of a valid program as updating the environment (i.e., the memory address-value function) through fundamental operations, such as memory I/O and conditional branching. Inspired by this, we propose a novel program semantics learning paradigm, that the model should learn from information composed of (1) the representations which align well with the fundamental operations in operational semantics, and (2) the information of environment transition, which is indispensable for program understanding. To validate our proposal, we present a hierarchical Transformer-based pre-training model called OSCAR to better facilitate the understanding of programs. OSCAR learns from intermediate representation (IR) and an encoded representation derived from static analysis, which are used for representing the fundamental operations and approximating the environment transitions respectively. OSCAR empirically shows the outstanding capability of program semantics understanding on many practical software engineering tasks.
Key facts. Cited by 26 papers in the map (data through 14 Oct 2026). Builds on 31 of its 61 references that are in the map. First posted on arXiv 10 May 2021.
Builds on
31 of 61 references.
References · 31
- 2017Attention Is All You Needcited by 60,361
- 2018BERT: Pre-training of Deep Bidirectional Transformers for Language Understandingcited by 40,399
- 2020Language Models are Few-Shot Learnerscited by 32,419
- 2019RoBERTa: A Robustly Optimized BERT Pretraining Approachcited by 13,372
- 2020A Simple Framework for Contrastive Learning of Visual Representationscited by 12,049
- 2019Sentence-BERT: Sentence Embeddings using Siamese BERT-Networkscited by 9,170
- 2019Momentum Contrast for Unsupervised Visual Representation Learningcited by 7,513
- 2020CodeBERT: A Pre-Trained Model for Programming and Natural Languagescited by 1,310
- 2020On Layer Normalization in the Transformer Architecturecited by 922
- 2020GraphCodeBERT: Pre-training Code Representations with Data Flowcited by 609
- 2021Unified Pre-training for Program Understanding and Generationcited by 366
- 2019Devign: Effective Vulnerability Identification by Learning Comprehensive Program Semantics via Graph Neural Networkscited by 272
19 more
- 2020Unsupervised Translation of Programming Languagescited by 263
- 2018code2vec: Learning Distributed Representations of Codecited by 250
- 2020IntelliCode Compose: Code Generation Using Transformercited by 227
- 2017Learning to Represent Programs with Graphscited by 220
- 2020Rethinking Positional Encoding in Language Pre-trainingcited by 197
- 2018code2seq: Generating Sequences from Structured Representations of Codecited by 179
- 2020Funnel-Transformer: Filtering out Sequential Redundancy for Efficient Language Processingcited by 162
- 2018Tree-to-tree Neural Networks for Program Translationcited by 93
- 2017Abstract Syntax Networks for Code Generation and Semantic Parsingcited by 92
- 2020Contrastive Code Representation Learningcited by 76
- 2020Code Prediction by Feeding Trees to Transformerscited by 70
- 2020Detecting Code Clones with Graph Neural Networkand Flow-Augmented Abstract Syntax Treecited by 69
- 2018Generative Code Modeling with Graphscited by 60
- 2018Neural Code Comprehension: A Learnable Representation of Code Semanticscited by 59
- 2020Exploring Software Naturalness through Neural Language Modelscited by 32
- 2018Aroma: Code Recommendation via Structural Code Searchcited by 29
- 2020ProGraML: Graph-based Deep Learning for Program Optimization and Analysiscited by 23
- 2020InferCode: Self-Supervised Learning of Code Representations by Predicting Subtreescited by 23
- 2020Deep Data Flow Analysiscited by 2
Built on by
Citing papers per year: 2021: 1; 2022: 9; 2023: 8; 2024: 2; 2025: 4; 2026: 2.
26 papers.
Sort:
By area:
- 2021Do Transformers Really Perform Bad for Graph Representation?cited by 320
- 2023Deep Learning for Code Intelligence: Survey, Benchmark and Toolkitcited by 22
- 2022Deep Learning Meets Software Engineering: A Survey on Pre-Trained Models of Source Codecited by 21
- 2023CodeTF: One-stop Transformer Library for State-of-the-art Code LLMscited by 21
- 2023The Vault: A Comprehensive Multilingual Dataset for Advancing Code Understanding and Generationcited by 20
- 2023Better Context Makes Better Code Language Models: A Case Study on Function Call Argument Completioncited by 14
- 2022Cross-Language Binary-Source Code Matching with Intermediate Representationscited by 13
- 2022A Survey on Pretrained Language Models for Neural Code Intelligencecited by 13
- 2023Understanding Programs by Exploiting (Fuzzing) Test Casescited by 13
- 2022Detect-Localize-Repair: A Unified Framework for Learning to Debug with CodeT5cited by 10
- 2022HierarchyNet: Learning to Summarize Source Code with Heterogeneous Representationscited by 9
- 2023Functional Overlap Reranking for Neural Code Generationcited by 9
14 more
- 2025CODESYNC: Synchronizing Large Language Models with Dynamic Code Evolution at Scalecited by 8
- 2024CodeArt: Better Code Models by Attention Regularization When Symbols Are Lackingcited by 7
- 2022A Neural Network Architecture for Program Understanding Inspired by Human Behaviorscited by 5
- 2023Boosting Source Code Learning with Text-Oriented Data Augmentation: An Empirical Studycited by 5
- 2025Trace Gadgets: Minimizing Code Context for Machine Learning-Based Vulnerability Predictioncited by 5
- 2022A Survey of Deep Learning Models for Structural Code Understandingcited by 4
- 2024BLens: Contrastive Captioning of Binary Functions using Ensemble Embeddingcited by 3
- 2022SAIBench: Benchmarking AI for Sciencecited by 1
- 2023VEXIR2Vec: An Architecture-Neutral Embedding Framework for Binary Similaritycited by 1
- 2025Can Large Language Models Understand Intermediate Representations in Compilers?cited by 1
- 2022Ruby: Unmasking Unsafe Rust in Stripped Binaries via Machine Learningcited by 0
- 2025How to Select Pre-Trained Code Models for Reuse? A Learning Perspectivecited by 0
- 2026The New Compiler Stack: A Survey on the Synergy of LLMs and Compilerscited by 0
- 2026LLM-Based Embeddings for Program Analysis and Optimizationcited by 0
- 2026LLM-Based Embeddings for Program Analysis and Optimization8 Aug 2026
- 2026The New Compiler Stack: A Survey on the Synergy of LLMs and Compilers5 Jan 2026
- 2025Trace Gadgets: Minimizing Code Context for Machine Learning-Based Vulnerability Prediction18 Apr 2025
- 2025CODESYNC: Synchronizing Large Language Models with Dynamic Code Evolution at Scale23 Feb 2025
- 2025Can Large Language Models Understand Intermediate Representations in Compilers?7 Feb 2025
- 2025How to Select Pre-Trained Code Models for Reuse? A Learning Perspective7 Jan 2025
- 2024BLens: Contrastive Captioning of Binary Functions using Ensemble Embedding12 Sep 2024
- 2024CodeArt: Better Code Models by Attention Regularization When Symbols Are Lacking19 Feb 2024
- 2023Deep Learning for Code Intelligence: Survey, Benchmark and Toolkit30 Dec 2023
- 2023VEXIR2Vec: An Architecture-Neutral Embedding Framework for Binary Similarity1 Dec 2023
- 2023Functional Overlap Reranking for Neural Code Generation16 Oct 2023
- 2023Better Context Makes Better Code Language Models: A Case Study on Function Call Argument Completion1 Jun 2023
14 more
- 2023CodeTF: One-stop Transformer Library for State-of-the-art Code LLMs31 May 2023
- 2023Understanding Programs by Exploiting (Fuzzing) Test Cases23 May 2023
- 2023The Vault: A Comprehensive Multilingual Dataset for Advancing Code Understanding and Generation9 May 2023
- 2023Boosting Source Code Learning with Text-Oriented Data Augmentation: An Empirical Study13 Mar 2023
- 2022A Survey on Pretrained Language Models for Neural Code Intelligence20 Dec 2022
- 2022Detect-Localize-Repair: A Unified Framework for Learning to Debug with CodeT527 Nov 2022
- 2022Ruby: Unmasking Unsafe Rust in Stripped Binaries via Machine Learning31 Oct 2022
- 2022SAIBench: Benchmarking AI for Science11 Jun 2022
- 2022HierarchyNet: Learning to Summarize Source Code with Heterogeneous Representations31 May 2022
- 2022Deep Learning Meets Software Engineering: A Survey on Pre-Trained Models of Source Code24 May 2022
- 2022A Neural Network Architecture for Program Understanding Inspired by Human Behaviors10 May 2022
- 2022A Survey of Deep Learning Models for Structural Code Understanding3 May 2022
- 2022Cross-Language Binary-Source Code Matching with Intermediate Representations19 Jan 2022
- 2021Do Transformers Really Perform Bad for Graph Representation?9 Jun 2021
- 2021Do Transformers Really Perform Bad for Graph Representation?cited by 320
- 2023Deep Learning for Code Intelligence: Survey, Benchmark and Toolkitcited by 22
- 2022Deep Learning Meets Software Engineering: A Survey on Pre-Trained Models of Source Codecited by 21
- 2023CodeTF: One-stop Transformer Library for State-of-the-art Code LLMscited by 21
- 2023The Vault: A Comprehensive Multilingual Dataset for Advancing Code Understanding and Generationcited by 20
- 2023Better Context Makes Better Code Language Models: A Case Study on Function Call Argument Completioncited by 14
- 2022Cross-Language Binary-Source Code Matching with Intermediate Representationscited by 13
- 2022A Survey on Pretrained Language Models for Neural Code Intelligencecited by 13
- 2023Understanding Programs by Exploiting (Fuzzing) Test Casescited by 13
- 2022Detect-Localize-Repair: A Unified Framework for Learning to Debug with CodeT5cited by 10
- 2022HierarchyNet: Learning to Summarize Source Code with Heterogeneous Representationscited by 9
- 2023Functional Overlap Reranking for Neural Code Generationcited by 9
12 most cited of 25 All 25 (JSON)
- 2026LLM-Based Embeddings for Program Analysis and Optimization8 Aug 2026
- 2026The New Compiler Stack: A Survey on the Synergy of LLMs and Compilers5 Jan 2026
- 2025Trace Gadgets: Minimizing Code Context for Machine Learning-Based Vulnerability Prediction18 Apr 2025
- 2025Can Large Language Models Understand Intermediate Representations in Compilers?7 Feb 2025
- 2025How to Select Pre-Trained Code Models for Reuse? A Learning Perspective7 Jan 2025
- 2024BLens: Contrastive Captioning of Binary Functions using Ensemble Embedding12 Sep 2024
- 2024CodeArt: Better Code Models by Attention Regularization When Symbols Are Lacking19 Feb 2024
- 2023Deep Learning for Code Intelligence: Survey, Benchmark and Toolkit30 Dec 2023
- 2023VEXIR2Vec: An Architecture-Neutral Embedding Framework for Binary Similarity1 Dec 2023
- 2023Functional Overlap Reranking for Neural Code Generation16 Oct 2023
- 2023Better Context Makes Better Code Language Models: A Case Study on Function Call Argument Completion1 Jun 2023
- 2023CodeTF: One-stop Transformer Library for State-of-the-art Code LLMs31 May 2023
12 newest of 25 All 25 (JSON)