Software Code Auto-Completion System
A Software Code Auto-Completion System is an Auto-Completion System that can solve a Code Auto-Completion Task by implementing a Code Auto-Completion Algorithm.
- Context:
- It can be integrated into a Source Code Editing System.
- It ranges from an Online Code Auto-Completion System to being an Offline Code Auto-Completion System.
- It can range from being a Command-Line Auto-Completion System, to being a Programming Language Code Completion System, to being an Integrated Development Environment Code Completion System.
- It can range from being an Language Model Based Code Completion System to being a Keyword-Based Code Completion System.
- It can range from being an Example-Based Code Completion System to being a Frequency-Based Code Completion System.
- It can range from being an Association Rule Based Code Completion System to being a Best Matching Neighbors Code Completion System.
- Example(s):
- an Integrated Development Environment Auto-Completion System such as:
- a Command-Line Auto-Completion System such as:
- a Context-Sensitive Code Completion System (Asaduzzaman, 2018),
- a Programming Auto-Completion System such as:
- a Neural Network Based Code Auto-Completion System such as:
- GitHub Copilot.
- …
- Counter-Example(s):
- See: Human-Computer Interaction, Editing System, Language Model, Natural Language Inference System, Natural Language Processing System, Code Generating System, Pattern Mining System.
References
2019a
- (Wikipedia, 2019) ⇒ https://en.wikipedia.org/wiki/Autocomplete#In_source_code_editors Retrieved:2019-10-11.
- Autocomplete of source code is also known as code completion. In a source code editor autocomplete is greatly simplified by the regular structure of the programming languages. There are usually only a limited number of words meaningful in the current context or namespace, such as names of variables and functions. An example of code completion is Microsoft's IntelliSense design. It involves showing a pop-up list of possible completions for the current input prefix to allow the user to choose the right one. This is particularly useful in object-oriented programming because often the programmer will not know exactly what members a particular class has. Therefore, autocomplete then serves as a form of convenient documentation as well as an input method. Another beneficial feature of autocomplete for source code is that it encourages the programmers to use longer, more descriptive variable names incorporating both lower and upper case letters (CamelCase), hence making the source code more readable. Typing large words with many mixed cases like "numberOfWordsPerParagraph" can be difficult, but Autocomplete allows one to complete typing the word using a fraction of the keystrokes.
2019b
- (Wikipedia, 2019) ⇒ https://en.wikipedia.org/wiki/Autocomplete#In_command-line_interpreters Retrieved:2019-10-12.
- In a command-line interpreter, such as Unix's sh or bash, or Windows's cmd.exe or PowerShell, or in similar command line interfaces, autocomplete of command names and file names may be accomplished by keeping track of all the possible names of things the user may access. Here autocomplete is usually done by pressing the Tab key key after typing the first several letters of the word. For example, if the only file in the current directory that starts with x is xLongFileName, the user may prefer to type x and autocomplete to the complete name. If there were another file name or command starting with x in the same scope, the user would type more letters or press the Tab key repeatedly to select the appropriate text.
2018a
- (Allamanis et al., 2018) ⇒ Miltiadis Allamanis, Earl T. Barr, Premkumar Devanbu, and Charles Sutton. (2018). “A Survey of Machine Learning for Big Code and Naturalness.” In: ACM Computing Surveys (CSUR) Journal, 51(4). doi:10.1145/3212695
- QUOTE: Code completion and synthesis using machine learning are two heavily researched and interrelated areas. Despite this fact, to our knowledge, there has been no full scale comparison between LM-based [87, 144, 166] and structured prediction-based autocompletion models [33, 159]. Although both types of systems target the same task, the lack of a well-accepted benchmark, evaluation methodology and metrics has lead to the absence of a quantitative comparison that highlights the strengths and weaknesses of each approach. This highlights the necessity of widely accepted, high-quality benchmarks, shared tasks, and evaluation metrics that can lead to comparable and measurable improvements to tasks of interest. NLP and computer vision follow such a paradigm with great success[1].
Omar et al. [149] discuss the challenges that arise from the fact that program editors usually deal with incomplete, partial programs. Although they discuss how formal semantics can extend to these cases, inherently any reasoning about partial code requires reasoning about the programmer’s intent. Lu et al. [125] used information-retrieval methods for synthesizing code completions showing that simply retrieving snippets from “big code” can be useful when reasoning about code completion, even without a learnable probabilistic component. This suggests a fruitful area for probabilistic models of code that can assist editing tools when reasoning about incomplete code’s semantics, by modeling how code could be completed.
- QUOTE: Code completion and synthesis using machine learning are two heavily researched and interrelated areas. Despite this fact, to our knowledge, there has been no full scale comparison between LM-based [87, 144, 166] and structured prediction-based autocompletion models [33, 159]. Although both types of systems target the same task, the lack of a well-accepted benchmark, evaluation methodology and metrics has lead to the absence of a quantitative comparison that highlights the strengths and weaknesses of each approach. This highlights the necessity of widely accepted, high-quality benchmarks, shared tasks, and evaluation metrics that can lead to comparable and measurable improvements to tasks of interest. NLP and computer vision follow such a paradigm with great success[1].
- ↑ See https://qz.com/1034972/ for a popular account of the effect of large-scale datasets in computer Vision.
2018b
- (Asaduzzaman, 2018) ⇒ Muhammad Asaduzzaman. (2018). “Context-Sensitive Code Completion.”. Thesis Dissertation University of Saskatchewan, 2018.
2009
- (Bruch et al., 2009) ⇒ Marcel Bruch, Martin Monperrus, and Mira Mezini. (2009). “Learning from Examples to Improve Code Completion Systems.” In: Proceedings of the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering. ISBN:978-1-60558-001-2 doi:10.1145/1595696.1595728