Intelligent kodefylling - Intelligent code completion

Intelligent kodefylling er en kontekstbevisst funksjon for kodefullføring i noen programmeringsmiljøer som fremskynder prosessen med å kode applikasjoner ved å redusere skrivefeil og andre vanlige feil. Forsøk på dette gjøres vanligvis gjennom popup-vinduer med automatisk utfylling mens du skriver, spør etter parametere for funksjoner, spørringstips relatert til syntaksfeil. Intelligent kodefylling og relaterte verktøy fungerer som dokumentasjon og disambiguering for variabelnavn , funksjoner og metoder , ved bruk av refleksjon .

Funksjonen vises i mange programmeringsmiljøer. Implementeringene inkluderer "autofullføring +" i Atom og IntelliSense i Visual Studio Code . Begrepet ble opprinnelig populært som "plukkliste", og noen implementeringer refererer fortsatt til det som sådan.

Oversikt

Intelligent kodefylling, som ligner på andre autofullføringssystemer , er en praktisk måte å få tilgang til beskrivelser av funksjoner - og spesielt deres parameterlister. Funksjonen fremskynder programvareutvikling ved å redusere tastaturinngang og nødvendigheten av navnememorering. Det gjør det også mulig for brukere å sjekke sjeldnere til ekstern dokumentasjon, ettersom interaktiv dokumentasjon om mange symboler (dvs. variabler og funksjoner) i det aktive omfanget vises dynamisk i form av verktøytips .

Intelligent kodefylling bruker en automatisk generert database i klasser, variabelnavn og andre konstruksjoner som gitt datakodefinisjoner eller referanser. Den "klassiske" implementeringen av IntelliSense fungerer ved å oppdage markørtegn som perioder (eller andre skilletegn, avhengig av språk). Når brukeren skriver inn et av disse tegnene umiddelbart etter navnet på en enhet som har ett eller flere tilgjengelige medlemmer (for eksempel innebygde variabler eller funksjoner), foreslår IntelliSense treff i en popup-dialog. Brukeren kan enten godta forslaget ved å skrive et tegn for fullføring av setning ( Tab ↹eller ↵ Enter) eller en språkspesifikk markør (for eksempel semikolon for C ++ ), eller fortsette å skrive navnet. Over tid bestemmer IntelliSense hvilken variabel eller funksjon brukeren mest sannsynlig trenger. IntelliSense viser også en kort beskrivelse av en funksjon i popup-vinduet-avhengig av mengden dokumentasjon i funksjonens kildekode .

Funksjonen lar også brukere velge fra en rekke overbelastede funksjoner på språk som støtter objektorientert programmering . Noen kodebehandlingsprogrammer gir intelligent kodefylling gjennom en Language Server Protocol (LSP) server.

Historie

Forskning på intelligent kodefylling begynte i 1957, med stavekontroll for bitmapbilder av kursiv skriving og spesielle applikasjoner for å finne poster i databaser til tross for feiloppføringer. I 1961 så Les Earnest , som ledet forskningen på denne spirende teknologien, det var nødvendig å inkludere den første stavekontrollen som åpnet en liste med 10 000 akseptable ord. Ralph Gorin, en doktorgradsstudent under Earnest på den tiden, opprettet det første sanne stavekontrollprogrammet skrevet som en søknad (i stedet for forskning) for generell engelsk tekst. SPELL, for DEC PDP-10 ved Stanford University's Artificial Intelligence Laboratory (SAIL), ble utgitt i februar 1971. Gorin skrev programmet i forsamlingen for raskere handling; han klarte det ved å søke i en ordliste etter sannsynlige korrekte stavemåter som skiller seg fra en enkelt bokstav eller transposeringer ved siden av, og presentere dem for brukeren. Gorin gjorde SPELL offentlig tilgjengelig, slik det ble gjort med de fleste SAIL-programmer, og det spredte seg snart rundt i verden via den da nye ARPANET , omtrent et tiår før personlige datamaskiner ble tatt i bruk. SPELL og dets algoritmer og datastrukturer inspirerte Unix -programmet Ispell .

Støtte i redaktører og IDEer

Visuelt studio

IntelliSense er Microsofts implementering av kodefylling, best kjent i Visual Studio . Det ble først introdusert som en funksjon av et vanlig Microsoft -produkt i 1996, og bygde på mange allerede oppfunnede konsepter om kodefylling og syntakskontroll, med Visual Basic 5.0 Control Creation Edition, som egentlig var en offentlig tilgjengelig prototype for Visual Basic 5.0. I utgangspunktet var Visual Basic IDE det primære "testbedet" for teknologien, men IntelliSense ble innlemmet i Visual FoxPro og Visual C ++ i Visual Studio 97 -tidsrammen (en revisjon etter først sett i Visual Basic). Fordi den var basert på introspeksjonskapasitetene til COM , var Visual Basic -versjonene av IntelliSense alltid mer robuste og komplette enn 5.0 og 6.0 (97 og 98 i Visual Studio navnesekvens) versjoner av Visual C ++, som ikke hadde fordelen å være helt basert på COM. Disse manglene (kritisert av mange VC ++ - utviklere siden 97 -utgaven) har i stor grad blitt korrigert i .NET -produktlinjene. For eksempel var en av de mest etterspurte funksjonene som mangler fra pre-.NET-produktene støtte for maler , som nå er fullt implementert.

IntelliSense har gått inn i en ny utviklingsfase med det enhetlige Visual Studio.NET -miljøet som først ble utgitt i 2001, forsterket av de kraftigere egenskapene til introspeksjon og kodedokumentasjon levert av .NET -rammeverket. IntelliSense støttes nå av Visual Studio -redaktørene for blant annet C ++ , C# , J# , Visual Basic , XML , HTML og XSLT . Fra Visual Studio 2005 er IntelliSense nå aktivert som standard når brukeren begynner å skrive, i stedet for å kreve markørtegn (selv om denne oppførselen kan slås av). Den IDE har evnen til å utlede en større mengde sammenheng basert på hva utvikleren er å skrive, til det punktet at grunnleggende språk konstruerer slik som for og samtidig er også inkludert i valglisten. I 2017 kunngjorde Microsoft IntelliCode, som bruker maskinlæring for å slutte nøyaktig hvilket språk eller bibliotek som sannsynligvis er beregnet på hvert tastetrykk. Opprinnelig tilgjengelig som en utvidelse for bare C#, og det forventes å bli bygget inn i fremtidige utgivelser av Visual Studio.

Andre Microsoft -produkter som inneholder IntelliSense inkluderer Expression Web , FrontPage 2003 , Small Basic , Visual Basic for Applications IDE -er i Microsoft Office -produktene, Visual Studio Code og mange andre. SQL Server 2008 Management Studio har autofullføring for SQL -syntaksen.

Formørkelse

The Eclipse IDE har kodefullføring verktøy som kommer pakket med programmet. Den inkluderer bemerkelsesverdig støtte for Java, C ++ og JavaScript -kodeutvikling. Code Recommenders Eclipse -prosjektet pleide å gi kraftig intelligent fullføring, men på grunn av mangel på ressurser ble det droppet i Eclipse 2018–12, og deretter arkivert i juli 2019.

Vim

Vim Intellisense er et avansert system for fullføring av kode for Vim -redaktøren.

Eksempel

Anta at et C ++ - program som redigeres i Visual Studio har en Foo -klasse med noen medlemsfunksjoner:

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

Når utvikleren refererer til denne klassen i kildekoden, f.eks .:

Foo foo;
foo.

så snart brukeren skriver perioden etter foo, viser IntelliSense automatisk alle tilgjengelige medlemsfunksjoner (dvs. bar()og foo_bar()) og alle tilgjengelige medlemsattributter (private og beskyttede medlemmer kan identifiseres med et hengelåsbilde ved siden av navnene). Brukeren kan deretter velge en ved å bruke piltastene og trykke på et fullføringstegn når riktig medlemsfunksjon er uthevet. Når det er tilgjengelig, viser IntelliSense en kort beskrivelse av medlemsfunksjonen som gitt i kildekodedokumentasjonen.

IntelliSense går videre ved å angi nødvendige parametere i et annet popup-vindu når brukeren fyller ut parametrene. Når brukeren skriver et variabelnavn, kommer funksjonen også med forslag til å fullføre variabelen mens de skrives inn. IntelliSense fortsetter å vise parametere, og fremhever den aktuelle, slik brukeren skriver.

Brukeren kan "tvinge" IntelliSense til å vise popup-listen uten kontekst ved å bruke Ctrl+ Jeller Ctrl+ Space. I Visual Studio viser dette hele applikasjonsdomenemodellmodellen tilgjengelig for utvikleren.

Merknader

Eksterne linker