Intelli-sense
Intelli-sense in computer programming, generally short for "intelligent sense" or "intelligient code sense",[1][2] refers to a programming environment which attempts to speed up the process of coding applications by reduction in misunderstandings, typos, and other mistakes that programmers commonly make.[3] Attempts to do this are usually done through auto completion popups when typing, querying parameters of functions, query hints related to syntax errors, etc. Intelli-sense serves as documentation and disambiguation for variable names, functions and methods using reflection. [4]
Intelli-sense appears in many program environments,[5][6] including the most popular implementation being Visual Studio's "IntelliSense". The term was original popularized as "picklist" and some implementations still refer to it as so.[7]
Contents |
Overview [edit]
Similar to other autocompletion systems, Intelli-sense is a convenient way to access descriptions of functions, particularly their parameter lists. It speeds up software development by reducing the amount of name memorization needed and keyboard input required. It also allows for less reference 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 while programming.[8]
Intelli-sense works by accessing an automatically generated in-memory database of classes, variable names and other constructs defined in or referenced by the application being edited. The "classic" implementation of IntelliSense works by detecting marker characters such as periods, or other separator characters depending on the language used. As the user types one of these marker characters immediately after the name of an entity having one or more accessible members (such as contained variables or functions), IntelliSense starts suggesting matches with a pop-up window. 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. Eventually IntelliSense will determine exactly which variable or function the user desires, given enough information. The feature also allows the user to select from a number of overloaded functions in the case of languages that support object oriented programming. IntelliSense can also display a short description of a function in the pop-up window (this feature depends on the amount of documentation contained in the source code of the function).
History [edit]
Several of the original components of an intelli-sense system were originally designed and invented by Gail Kaiser, a Professor at Columbia University's Department of Computer Science.[9] She created many of the basic intelli sense coding techniques found in most if not all modern programming environments starting in 1988 while working at Columbia.[10]
Research extends back to 1957, including spelling checkers for bitmap images of cursive writing and special applications to find records in databases in spite of 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.[11] Ralph Gorin, a graduate student under Earnest at the time, created the first true spelling checker program written as an applications program (rather than research) for general English text: Spell for the DEC PDP-10 at Stanford University's Artificial Intelligence Laboratory, in February 1971.[12] Gorin wrote SPELL in assembly language, for faster action; he made the first spelling corrector by searching the 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 (Stanford Artificial Intelligence Laboratory) programs, and it soon spread around the world via the new ARPAnet, about ten years before personal computers came into general use.[13] Spell, its algorithms and data structures inspired the Unix ispell program.
IntelliSense [edit]
IntelliSense is Microsoft's popular implementation of "intelligent sense" most notably featured in Visual Studio. It first introduced as a feature of a mainstream Microsoft product in 1996 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. Although initially the primary "test bed" for the technology was the Visual Basic IDE, IntelliSense was quickly incorporated into Visual FoxPro and Visual C++ in the Visual Studio 97 timeframe (one revision after it was 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.[14]
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 (although 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.
Other Microsoft products that incorporate IntelliSense include FrontPage, Expression Web (in code view), the Visual Basic for Applications IDEs in the Microsoft Office products, and many others. SQL Server 2008 Management Studio has autocomplete for the SQL syntax.
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 besides its name). 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]
- ^ http://code-recommenders.blogspot.com/2010/05/its-all-about-intelligent-code.html
- ^ http://insenvim.sourceforge.net/
- ^ http://www.intelligentsense.com/
- ^ http://dictionary.reference.com/browse/autocomplete
- ^ http://wiki.codeblocks.org/index.php?title=FAQ
- ^ http://doc.qt.digia.com/qtcreator/creator-completing-code.html
- ^ http://blogs.developerforce.com/developer-relations/2008/12/using-the-metadata-api-to-retrieve-picklist-values.html
- ^ Murach. C# 2005. p. 56.
- ^ http://www.cs.columbia.edu/~kaiser/
- ^ http://www.informatik.uni-trier.de/~ley/pers/hd/k/Kaiser:Gail_E=.html
- ^ Earnest, Les. "The First Three Spelling Checkers". Stanford University. Retrieved 10 October 2011.
- ^ Peterson, James (Dec 1980). Computer Programs for Detecting and Correcting Spelling Errors. Retrieved 2011-02-18.
- ^ Earnest, Les. Visible Legacies for Y3K. Retrieved 2011-02-18.
- ^ http://msdn.microsoft.com/en-us/library/hcw1s69b.aspx
External links [edit]
- Microsoft Channel9 Video: Making Sense of VC Intellisense
- An overview of IntelliSense from MSDN
- See also Visual Prolog IntelliSpeed Video Tutorial
|
||||||||||||||