fbpx
Wikipedia

Intelligent code completion

Intelligent code completion is a context-aware code completion feature in some programming environments that speeds up the process of coding applications by reducing typos and other common mistakes. Attempts at this are usually done through auto-completion popups while typing, querying parameters of functions, and query hints related to syntax errors. Intelligent code completion and related tools serve as documentation and disambiguation for variable names, functions, and methods, using static analysis.[1][2]

The feature appears in many programming environments.[3][4] Implementations include "autocomplete +" in Atom, and IntelliSense in Visual Studio Code. The term was originally popularized as "picklist" and some implementations still refer to it as such.[5]

Overview edit

Intelligent code completion, which is similar to other autocompletion systems, is a convenient way to access descriptions of functions—and in particular their parameter lists. The feature speeds up software development by reducing keyboard input and the necessity for name memorization. It also allows for users to refer less frequently to external documentation, as interactive documentation on many symbols (i.e. variables and functions) in the active scope appears dynamically in the form of tooltips.[6]

Intelligent code completion uses an automatically generated in-memory database of classes, variable names, and other constructs that given computer code defines or references. The "classic" implementation of IntelliSense works by detecting marker characters such as periods (or other separator characters, depending on the language). When the user types one of these characters immediately after the name of an entity having one or more accessible members (such as contained variables or functions), IntelliSense suggests matches in a pop-up dialog. The user can either accept the suggestion by typing a statement-completion character (Tab ↹ or ↵ Enter) or a language-specific marker (such as the semicolon for C++), or continue typing the name. Over time, IntelliSense determines which variable or function the user most likely needs. IntelliSense also displays a short description of a function in the pop-up window—depending on the amount of documentation in the function's source code.

The feature also lets users select from a number of overloaded functions in languages that support object-oriented programming. Some code editing software provide intelligent code completion through a Language Server Protocol (LSP) server.

History edit

Research on intelligent code completion began in 1957, with spelling checkers for bitmap images of cursive writing and special applications to find records in databases despite incorrect entries. In 1961, Les Earnest, who headed the research on this budding technology, saw it necessary to include the first spell checker that accessed a list of 10,000 acceptable words.[7] Ralph Gorin, a graduate student under Earnest at the time, created the first true spell-check program written as an application (rather than research) for general English text. SPELL, for the DEC PDP-10 at Stanford University's Artificial Intelligence Laboratory (SAIL), was published in February 1971.[8] Gorin wrote the program in assembly for faster action; he made it by searching a word list for plausible correct spellings that differ by a single letter or adjacent-letter transpositions, and presenting them to the user. Gorin made SPELL publicly accessible, as was done with most SAIL programs, and it soon spread around the world via the then-new ARPANET, about a decade before personal computers came into general use.[9] SPELL and its algorithms and data structures inspired the Unix program Ispell.

Support in editors and IDEs edit

Visual Studio edit

IntelliSense is Microsoft's implementation of code completion, best known in Visual Studio. It was first introduced as a feature of a mainstream Microsoft product in 1996[10] building on many already invented concepts of code completion and syntax checking, with the Visual Basic 5.0 Control Creation Edition, which was essentially a publicly available prototype for Visual Basic 5.0.[11] Initially, Visual Basic IDE was the primary "test bed" for the technology, but IntelliSense was incorporated into Visual FoxPro and Visual C++ [12] in the Visual Studio 97 timeframe (one revision after first seen in Visual Basic). Because it was based on the introspection capabilities of COM, the Visual Basic versions of IntelliSense were always more robust and complete than the 5.0 and 6.0 (97 and 98 in the Visual Studio naming sequence) versions of Visual C++, which did not have the benefit of being entirely based on COM. These shortcomings (criticized by many VC++ developers since the 97 release) have been largely corrected in the .NET product lines. For example, one of the most requested capabilities missing from the pre-.NET products was support for templates, which is now fully implemented.[13]

IntelliSense has entered a new phase of development with the unified Visual Studio.NET environment first released in 2001, augmented by the more powerful introspection and code documentation capabilities provided by the .NET framework. IntelliSense is now supported by the Visual Studio editors for C++, C#, J#, Visual Basic, XML, HTML and XSLT among others. As of Visual Studio 2005, IntelliSense is now activated by default when the user begins to type, instead of requiring marker characters (though this behavior can be turned off). The IDE has the capability of inferring a greater amount of context based on what the developer is typing, to the point that basic language constructs such as for and while are also included in the choice list. In 2017 Microsoft announced IntelliCode,[14] which uses machine learning to infer exactly which language or library feature is likely to be intended at every keystroke. Initially available as an extension for C# only, it is expected to be built in to future releases of Visual Studio.

Visual Studio 2022 includes artificial-intelligence features that can automatically suggest entire lines of code based on surrounding context.

Other Microsoft products that incorporate IntelliSense include Expression Web, FrontPage 2003, Small Basic, the Visual Basic for Applications IDEs in the Microsoft Office products, Visual Studio Code and many others. SQL Server 2008 Management Studio has autocomplete for the SQL syntax.

Eclipse edit

The Eclipse IDE has code completion tools that come packaged with the program.[15][16] It includes notable support for Java, C++, and JavaScript code authoring. The Code Recommenders Eclipse project used to provide powerful intelligent completion,[17] but due to lack of resources, was dropped in Eclipse 2018–12, and then archived in July 2019.[18][19][20]

Vim edit

Vim Intellisense[21] is an advanced code completion system for the Vim editor.

Example edit

Assume a C++ application being edited in Visual Studio has a class Foo with some member functions:

class Foo {  public:  void bar();  void foo_bar(char c, int n); }; 

When the developer references this class in source code, e.g.:

Foo foo; foo. 

as soon as the user types the period after foo, IntelliSense automatically lists all the available member functions (i.e. bar() and foo_bar()) and all the available member attributes (private and protected members can be identified by a padlock picture beside their names). The user can then select one by using the arrow keys and hitting a completion character when the correct member function is highlighted. When available, IntelliSense displays a short description of the member function as given in the source code documentation.

IntelliSense goes further by indicating the required parameters in another pop-up window as the user fills in the parameters. As the user types a variable name, the feature also makes suggestions to complete the variable as they are typed. IntelliSense continues to show parameters, highlighting the pertinent one, as the user types.

The user can "force" IntelliSense to show its pop-up list without context by using Ctrl+J or Ctrl+Space. In Visual Studio this displays the entire application domain object model available to the developer.

Notes edit

  1. ^ Robbes, Romain; Lanza, Michele (2008). "How Program History Can Improve Code Completion". 2008 23rd IEEE/ACM International Conference on Automated Software Engineering. pp. 317–326. doi:10.1109/ASE.2008.42. ISBN 978-1-4244-2187-9. S2CID 2093640.
  2. ^ "Code Completion, Episode 1: Scenarios and Requirements". The JetBrains Blog. 28 May 2021. Retrieved 17 November 2023.
  3. ^ FAQ - CodeBlocks. Wiki.codeblocks.org (2014-02-01). Retrieved on 2014-04-04.
  4. ^ Qt Documentation - Completing Code. Retrieved on 2015-07-07.
  5. ^ Using Dynamic Apex to retrieve Picklist Values | Developer Force Blog. Blogs.developerforce.com (2008-12-09). Retrieved on 2014-04-04.
  6. ^ Murach. C# 2005. p. 56.
  7. ^ Earnest, Les. (PDF). Stanford University. Archived from the original (PDF) on 22 October 2012. Retrieved 10 October 2011.
  8. ^ Peterson, James (December 1980). Computer Programs for Detecting and Correcting Spelling Errors (PDF). Retrieved 18 February 2011.
  9. ^ Earnest, Les. (PDF). Archived from the original (PDF) on 20 July 2011. Retrieved 18 February 2011.
  10. ^ "Microsoft KB Archive/165524 - BetaArchive Wiki". www.betaarchive.com. Retrieved 19 November 2023.
  11. ^ "Microsoft Introduces Visual Basic 5.0, Control Creation Edition". Stories. 28 October 1996. Retrieved 19 November 2023.
  12. ^ "Microsoft Introduces Visual C++ 6.0". Stories. 29 June 1998. Retrieved 19 November 2023.
  13. ^ Using IntelliSense. Msdn.microsoft.com. Retrieved on 2014-04-04.
  14. ^ Visual Studio IntelliCode
  15. ^ "Eclipse Corner Article: Unleashing the Power of Refactoring | the Eclipse Foundation".
  16. ^ "Technologies". IBM.
  17. ^ Eclipse Code Recommenders: It’s all about intelligent code completion. Code-recommenders.blogspot.com (2010-05-03). Retrieved on 2014-04-04.
  18. ^ 542689 - Don't include Code Recommenders for 2018-12
  19. ^ cross-project-issues-dev Withdrawing Code Recommenders from SimRel
  20. ^ Archived Projects | The Eclipse Foundation
  21. ^ Vim Intellisense. Insenvim.sourceforge.net. Retrieved on 2014-04-04.

External links edit

  • Torre, Charles (24 January 2008). "Arjun Bijanki: Making Sense of VC Intellisense" (Video). Channel9. Microsoft.
  • . VS .NET 2003 (2015 ed.). MSDN. Archived from the original on 18 October 2007. Retrieved 11 September 2007.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  • "IntelliSpeed Tutorial" (Video). Visual Prolog.

intelligent, code, completion, context, aware, code, completion, feature, some, programming, environments, that, speeds, process, coding, applications, reducing, typos, other, common, mistakes, attempts, this, usually, done, through, auto, completion, popups, . Intelligent code completion is a context aware code completion feature in some programming environments that speeds up the process of coding applications by reducing typos and other common mistakes Attempts at this are usually done through auto completion popups while typing querying parameters of functions and query hints related to syntax errors Intelligent code completion and related tools serve as documentation and disambiguation for variable names functions and methods using static analysis 1 2 The feature appears in many programming environments 3 4 Implementations include autocomplete in Atom and IntelliSense in Visual Studio Code The term was originally popularized as picklist and some implementations still refer to it as such 5 Contents 1 Overview 2 History 3 Support in editors and IDEs 3 1 Visual Studio 3 2 Eclipse 3 3 Vim 4 Example 5 Notes 6 External linksOverview editIntelligent code completion which is similar to other autocompletion systems is a convenient way to access descriptions of functions and in particular their parameter lists The feature speeds up software development by reducing keyboard input and the necessity for name memorization It also allows for users to refer less frequently to external documentation as interactive documentation on many symbols i e variables and functions in the active scope appears dynamically in the form of tooltips 6 Intelligent code completion uses an automatically generated in memory database of classes variable names and other constructs that given computer code defines or references The classic implementation of IntelliSense works by detecting marker characters such as periods or other separator characters depending on the language When the user types one of these characters immediately after the name of an entity having one or more accessible members such as contained variables or functions IntelliSense suggests matches in a pop up dialog The user can either accept the suggestion by typing a statement completion character Tab or Enter or a language specific marker such as the semicolon for C or continue typing the name Over time IntelliSense determines which variable or function the user most likely needs IntelliSense also displays a short description of a function in the pop up window depending on the amount of documentation in the function s source code The feature also lets users select from a number of overloaded functions in languages that support object oriented programming Some code editing software provide intelligent code completion through a Language Server Protocol LSP server History editResearch on intelligent code completion began in 1957 with spelling checkers for bitmap images of cursive writing and special applications to find records in databases despite incorrect entries In 1961 Les Earnest who headed the research on this budding technology saw it necessary to include the first spell checker that accessed a list of 10 000 acceptable words 7 Ralph Gorin a graduate student under Earnest at the time created the first true spell check program written as an application rather than research for general English text SPELL for the DEC PDP 10 at Stanford University s Artificial Intelligence Laboratory SAIL was published in February 1971 8 Gorin wrote the program in assembly for faster action he made it by searching a word list for plausible correct spellings that differ by a single letter or adjacent letter transpositions and presenting them to the user Gorin made SPELL publicly accessible as was done with most SAIL programs and it soon spread around the world via the then new ARPANET about a decade before personal computers came into general use 9 SPELL and its algorithms and data structures inspired the Unix program Ispell Support in editors and IDEs editVisual Studio edit IntelliSense is Microsoft s implementation of code completion best known in Visual Studio It was first introduced as a feature of a mainstream Microsoft product in 1996 10 building on many already invented concepts of code completion and syntax checking with the Visual Basic 5 0 Control Creation Edition which was essentially a publicly available prototype for Visual Basic 5 0 11 Initially Visual Basic IDE was the primary test bed for the technology but IntelliSense was incorporated into Visual FoxPro and Visual C 12 in the Visual Studio 97 timeframe one revision after first seen in Visual Basic Because it was based on the introspection capabilities of COM the Visual Basic versions of IntelliSense were always more robust and complete than the 5 0 and 6 0 97 and 98 in the Visual Studio naming sequence versions of Visual C which did not have the benefit of being entirely based on COM These shortcomings criticized by many VC developers since the 97 release have been largely corrected in the NET product lines For example one of the most requested capabilities missing from the pre NET products was support for templates which is now fully implemented 13 IntelliSense has entered a new phase of development with the unified Visual Studio NET environment first released in 2001 augmented by the more powerful introspection and code documentation capabilities provided by the NET framework IntelliSense is now supported by the Visual Studio editors for C C J Visual Basic XML HTML and XSLT among others As of Visual Studio 2005 IntelliSense is now activated by default when the user begins to type instead of requiring marker characters though this behavior can be turned off The IDE has the capability of inferring a greater amount of context based on what the developer is typing to the point that basic language constructs such as for and while are also included in the choice list In 2017 Microsoft announced IntelliCode 14 which uses machine learning to infer exactly which language or library feature is likely to be intended at every keystroke Initially available as an extension for C only it is expected to be built in to future releases of Visual Studio Visual Studio 2022 includes artificial intelligence features that can automatically suggest entire lines of code based on surrounding context Other Microsoft products that incorporate IntelliSense include Expression Web FrontPage 2003 Small Basic the Visual Basic for Applications IDEs in the Microsoft Office products Visual Studio Code and many others SQL Server 2008 Management Studio has autocomplete for the SQL syntax Eclipse edit The Eclipse IDE has code completion tools that come packaged with the program 15 16 It includes notable support for Java C and JavaScript code authoring The Code Recommenders Eclipse project used to provide powerful intelligent completion 17 but due to lack of resources was dropped in Eclipse 2018 12 and then archived in July 2019 18 19 20 Vim edit Vim Intellisense 21 is an advanced code completion system for the Vim editor Example editAssume a C application being edited in Visual Studio has a class Foo with some member functions class Foo public void bar void foo bar char c int n When the developer references this class in source code e g Foo foo foo as soon as the user types the period after foo IntelliSense automatically lists all the available member functions i e bar and foo bar and all the available member attributes private and protected members can be identified by a padlock picture beside their names The user can then select one by using the arrow keys and hitting a completion character when the correct member function is highlighted When available IntelliSense displays a short description of the member function as given in the source code documentation IntelliSense goes further by indicating the required parameters in another pop up window as the user fills in the parameters As the user types a variable name the feature also makes suggestions to complete the variable as they are typed IntelliSense continues to show parameters highlighting the pertinent one as the user types The user can force IntelliSense to show its pop up list without context by using Ctrl J or Ctrl Space In Visual Studio this displays the entire application domain object model available to the developer Notes edit Robbes Romain Lanza Michele 2008 How Program History Can Improve Code Completion 2008 23rd IEEE ACM International Conference on Automated Software Engineering pp 317 326 doi 10 1109 ASE 2008 42 ISBN 978 1 4244 2187 9 S2CID 2093640 Code Completion Episode 1 Scenarios and Requirements The JetBrains Blog 28 May 2021 Retrieved 17 November 2023 FAQ CodeBlocks Wiki codeblocks org 2014 02 01 Retrieved on 2014 04 04 Qt Documentation Completing Code Retrieved on 2015 07 07 Using Dynamic Apex to retrieve Picklist Values Developer Force Blog Blogs developerforce com 2008 12 09 Retrieved on 2014 04 04 Murach C 2005 p 56 Earnest Les The First Three Spelling Checkers PDF Stanford University Archived from the original PDF on 22 October 2012 Retrieved 10 October 2011 Peterson James December 1980 Computer Programs for Detecting and Correcting Spelling Errors PDF Retrieved 18 February 2011 Earnest Les Visible Legacies for Y3K PDF Archived from the original PDF on 20 July 2011 Retrieved 18 February 2011 Microsoft KB Archive 165524 BetaArchive Wiki www betaarchive com Retrieved 19 November 2023 Microsoft Introduces Visual Basic 5 0 Control Creation Edition Stories 28 October 1996 Retrieved 19 November 2023 Microsoft Introduces Visual C 6 0 Stories 29 June 1998 Retrieved 19 November 2023 Using IntelliSense Msdn microsoft com Retrieved on 2014 04 04 Visual Studio IntelliCode Eclipse Corner Article Unleashing the Power of Refactoring the Eclipse Foundation Technologies IBM Eclipse Code Recommenders It s all about intelligent code completion Code recommenders blogspot com 2010 05 03 Retrieved on 2014 04 04 542689 Don t include Code Recommenders for 2018 12 cross project issues dev Withdrawing Code Recommenders from SimRel Archived Projects The Eclipse Foundation Vim Intellisense Insenvim sourceforge net Retrieved on 2014 04 04 External links editTorre Charles 24 January 2008 Arjun Bijanki Making Sense of VC Intellisense Video Channel9 Microsoft Using IntelliSense VS NET 2003 2015 ed MSDN Archived from the original on 18 October 2007 Retrieved 11 September 2007 a href Template Cite web html title Template Cite web cite web a CS1 maint bot original URL status unknown link IntelliSpeed Tutorial Video Visual Prolog Retrieved from https en wikipedia org w index php title Intelligent code completion amp oldid 1187272785 IntelliSense, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.