Intelligent kodeudfyldelse - Intelligent code completion

Intelligent kode færdiggørelse er en kontekst- kode færdiggørelse funktion i nogle programmerings-miljøer , der fremskynder processen med kodning applikationer ved at reducere tastefejl og andre almindelige fejl. Forsøg på dette udføres normalt ved hjælp af pop-up-vinduer med automatisk afslutning, mens der skrives, forespørges om parametre for funktioner, forespørgselstips relateret til syntaksfejl. Intelligent kodeudfyldelse og tilhørende værktøjer fungerer som dokumentation og disambiguation for variabelnavne , funktioner og metoder ved hjælp af refleksion .

Funktionen vises i mange programmeringsmiljøer. Implementeringerne inkluderer "autofuldførelse +" i Atom og IntelliSense i Visual Studio Code . Udtrykket blev oprindeligt populært som "picklist", og nogle implementeringer refererer stadig til det som sådan.

Oversigt

Intelligent kodeudfyldelse, der ligner andre autofuldførelsessystemer , er en bekvem måde at få adgang til beskrivelser af funktioner - og især deres parameterlister. Funktionen fremskynder softwareudvikling ved at reducere tastaturinput og nødvendigheden af ​​at huske navne. Det giver også mulighed for, at brugerne sjældnere kan henvise til ekstern dokumentation, da interaktiv dokumentation om mange symboler (dvs. variabler og funktioner) i det aktive omfang vises dynamisk i form af værktøjstip .

Intelligent kodeudfyldelse bruger en automatisk genereret database i klasser, variabelnavne og andre konstruktioner, som givet computerkode definerer eller refererer. Den "klassiske" implementering af IntelliSense fungerer ved at detektere markørtegn som f.eks. Perioder (eller andre skilletegn, afhængigt af sproget). Når brugeren skriver et af disse tegn umiddelbart efter navnet på en enhed, der har et eller flere tilgængelige medlemmer (f.eks. Indeholdte variabler eller funktioner), foreslår IntelliSense matches i en pop op-dialog. Brugeren kan enten acceptere forslaget ved at skrive et tegn-færdiggørelsestegn ( Tab ↹eller ↵ Enter) eller en sprogspecifik markør (f.eks. Semikolon for C ++ ) eller fortsætte med at skrive navnet. Over tid bestemmer IntelliSense, hvilken variabel eller funktion brugeren sandsynligvis har brug for. IntelliSense viser også en kort beskrivelse af en funktion i pop op-vinduet-afhængigt af mængden af ​​dokumentation i funktionens kildekode .

Funktionen lader også brugere vælge mellem en række overbelastede funktioner på sprog, der understøtter objektorienteret programmering . Nogle kodediteringssoftware giver intelligent kodeudfyldelse via en Language Server Protocol (LSP) server.

Historie

Forskning om intelligent kodeudfyldelse begyndte i 1957 med stavekontrol til bitmapbilleder af kursiv skrift og specielle applikationer til at finde poster i databaser på trods af forkerte indtastninger. I 1961 så Les Earnest , der stod i spidsen for forskningen om denne spirende teknologi, det nødvendigt at inkludere den første stavekontrol, der fik adgang til en liste med 10.000 acceptable ord. Ralph Gorin, dengang kandidatstuderende under Earnest, skabte det første sande stavekontrolprogram, der blev skrevet som en applikation (snarere end forskning) til generel engelsk tekst. SPELL, til DEC PDP-10 ved Stanford University's Artificial Intelligence Laboratory (SAIL), blev udgivet i februar 1971. Gorin skrev programmet i forsamling for hurtigere handling; han gjorde det ved at søge på en ordliste efter sandsynlige korrekte stavemåder, der adskiller sig fra et enkelt bogstav eller tilstødende bogstaver, og præsentere dem for brugeren. Gorin gjorde SPELL offentligt tilgængelig, som det blev gjort med de fleste SAIL-programmer, og det spredte sig hurtigt rundt om i verden via den dengang nye ARPANET , cirka et årti før personlige computere kom i almindelig brug. SPELL og dets algoritmer og datastrukturer inspirerede Unix -programmet Ispell .

Support i redaktører og IDE'er

Visual Studio

IntelliSense er Microsofts implementering af kodeudfyldelse, bedst kendt i Visual Studio . Det blev først introduceret som en funktion af et almindeligt Microsoft -produkt i 1996, der bygger på mange allerede opfundne begreber om kodeudfyldelse og syntakskontrol med Visual Basic 5.0 Control Creation Edition, som i det væsentlige var en offentligt tilgængelig prototype til Visual Basic 5.0. Oprindeligt var Visual Basic IDE den primære "test seng" for teknologien, men IntelliSense blev inkorporeret i Visual FoxPro og Visual C ++ i Visual Studio 97 tidsrammen (en revision efter først set i Visual Basic). Fordi det var baseret på COM 's introspektionskapacitet , var Visual Basic -versionerne af IntelliSense altid mere robuste og komplette end 5.0 og 6.0 (97 og 98 i Visual Studio navngivningssekvensen) versioner af Visual C ++, som ikke havde fordelen at være helt baseret på COM. Disse mangler (kritiseret af mange VC ++ -udviklere siden 97 -udgivelsen) er stort set blevet rettet i .NET -produktlinjerne. For eksempel var en af ​​de mest efterspurgte funktioner, der mangler i pre-.NET-produkterne, understøttelse af skabeloner , som nu er fuldt implementeret.

IntelliSense er gået ind i en ny udviklingsfase med det forenede Visual Studio.NET -miljø, der først blev udgivet i 2001, forstærket af de mere kraftfulde muligheder for introspektion og kodedokumentation fra .NET -rammerne. IntelliSense understøttes nu af Visual Studio -redaktører til blandt andet C ++ , C# , J# , Visual Basic , XML , HTML og XSLT . Fra Visual Studio 2005 er IntelliSense nu aktiveret som standard, når brugeren begynder at skrive, i stedet for at kræve markørtegn (selvom denne adfærd kan deaktiveres). Den IDE har evnen til at udlede et større beløb i sammenhæng baseret på, hvad udvikleren er at skrive, til det punkt, at grundlæggende sprog konstruerer såsom for og samtidig er også inkluderet i listen valg. I 2017 annoncerede Microsoft IntelliCode, som bruger maskinlæring til at udlede præcist hvilket sprog eller bibliotek, der sandsynligvis er beregnet til hvert tastetryk. Den var oprindeligt tilgængelig som en udvidelse til kun C# og forventes at blive indbygget i fremtidige udgivelser af Visual Studio.

Andre Microsoft -produkter, der inkorporerer IntelliSense, omfatter Expression Web , FrontPage 2003 , Small Basic , Visual Basic for Applications IDE'er i Microsoft Office -produkterne, Visual Studio Code og mange andre. SQL Server 2008 Management Studio har autofuldførelse til SQL -syntaksen.

Formørkelse

Den Eclipse IDE har kode færdiggørelse værktøjer, der kommer pakket med programmet. Det inkluderer bemærkelsesværdig support til Java, C ++ og JavaScript -kodeudvikling. Code Recommenders Eclipse -projektet plejede at levere kraftfuld intelligent afslutning, men på grund af mangel på ressourcer blev det droppet i Eclipse 2018–12 og derefter arkiveret i juli 2019.

Vim

Vim Intellisense er et avanceret system til komplettering af kode til Vim -editoren.

Eksempel

Antag, at et C ++ - program, der redigeres i Visual Studio, har en klasse Foo med nogle medlemsfunktioner:

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

Når udvikleren refererer til denne klasse i kildekoden, f.eks .:

Foo foo;
foo.

så snart brugeren skriver perioden efter foo, viser IntelliSense automatisk alle tilgængelige medlemsfunktioner (dvs. bar()og foo_bar()) og alle tilgængelige medlemsattributter (private og beskyttede medlemmer kan identificeres ved et hængelåsbillede ved siden af ​​deres navne). Brugeren kan derefter vælge en ved at bruge piletasterne og trykke på et færdiggørelsestegn, når den korrekte medlemsfunktion er fremhævet. Når det er tilgængeligt, viser IntelliSense en kort beskrivelse af medlemsfunktionen som angivet i kildekodedokumentationen.

IntelliSense går videre ved at angive de nødvendige parametre i et andet pop-up-vindue, når brugeren udfylder parametrene. Når brugeren skriver et variabelnavn, kommer funktionen også med forslag til at fuldføre variablen, mens de skrives. IntelliSense fortsætter med at vise parametre og fremhæver den relevante, som brugeren skriver.

Brugeren kan "tvinge" IntelliSense til at vise sin pop-up-liste uden kontekst ved at bruge Ctrl+ Jeller Ctrl+ Space. I Visual Studio viser dette hele applikationsdomæneobjektmodellen, der er tilgængelig for udvikleren.

Noter

eksterne links