Completamento del codice intelligente - Intelligent code completion

Il completamento del codice intelligente è una funzione di completamento del codice sensibile al contesto in alcuni ambienti di programmazione che accelera il processo di codifica delle applicazioni riducendo gli errori di battitura e altri errori comuni. I tentativi in ​​questo senso vengono solitamente eseguiti tramite popup di completamento automatico durante la digitazione, l'interrogazione dei parametri delle funzioni, i suggerimenti per le query relativi agli errori di sintassi. Il completamento intelligente del codice e gli strumenti correlati fungono da documentazione e disambiguazione per nomi di variabili , funzioni e metodi , utilizzando la reflection .

La funzione appare in molti ambienti di programmazione. Le implementazioni includono "autocomplete +" in Atom e IntelliSense in Visual Studio Code . Il termine è stato originariamente reso popolare come "lista di selezione" e alcune implementazioni si riferiscono ancora ad esso come tale.

Panoramica

Il completamento intelligente del codice, simile ad altri sistemi di completamento automatico , è un modo conveniente per accedere alle descrizioni delle funzioni e in particolare ai loro elenchi di parametri. La funzione accelera lo sviluppo del software riducendo l'input da tastiera e la necessità di memorizzare i nomi. Consente inoltre agli utenti di fare riferimento meno frequentemente alla documentazione esterna, poiché la documentazione interattiva su molti simboli (ad es. variabili e funzioni) nell'ambito attivo appare dinamicamente sotto forma di suggerimenti .

Il completamento del codice intelligente utilizza un database in memoria generato automaticamente di classi, nomi di variabili e altri costrutti che un determinato codice del computer definisce o fa riferimento. L'implementazione "classica" di IntelliSense funziona rilevando caratteri marcatori come punti (o altri caratteri separatori, a seconda della lingua). Quando l'utente digita uno di questi caratteri subito dopo il nome di un'entità con uno o più membri accessibili (come variabili o funzioni contenute), IntelliSense suggerisce le corrispondenze in una finestra di dialogo a comparsa. L'utente può accettare il suggerimento digitando un carattere di completamento dell'istruzione ( Tab ↹o ↵ Enter) o un indicatore specifico della lingua (come il punto e virgola per C++ ), oppure continuare a digitare il nome. Nel tempo, IntelliSense determina quale variabile o funzione è più probabile che l'utente abbia bisogno. IntelliSense visualizza anche una breve descrizione di una funzione nella finestra popup, a seconda della quantità di documentazione nel codice sorgente della funzione .

La funzione consente inoltre agli utenti di selezionare tra una serie di funzioni sovraccaricate in linguaggi che supportano la programmazione orientata agli oggetti . Alcuni software di modifica del codice forniscono il completamento intelligente del codice tramite un server Language Server Protocol (LSP).

Storia

La ricerca sul completamento intelligente del codice è iniziata nel 1957, con correttori ortografici per immagini bitmap di scrittura corsiva e applicazioni speciali per trovare record nei database nonostante le voci errate. Nel 1961, Les Earnest , che dirigeva la ricerca su questa tecnologia in erba, ritenne necessario includere il primo correttore ortografico che accedesse a un elenco di 10.000 parole accettabili. Ralph Gorin, uno studente laureato sotto Earnest all'epoca, creò il primo vero programma di controllo ortografico scritto come un'applicazione (piuttosto che come ricerca) per il testo inglese generale. SPELL, per il DEC PDP-10 presso l'Artificial Intelligence Laboratory (SAIL) della Stanford University, è stato pubblicato nel febbraio 1971. Gorin ha scritto il programma in assembly per un'azione più rapida; lo ha fatto cercando in un elenco di parole plausibili ortografie corrette che differiscono per una singola lettera o trasposizioni di lettere adiacenti e presentandole all'utente. Gorin ha reso SPELL accessibile al pubblico, come è stato fatto con la maggior parte dei programmi SAIL, e presto si è diffuso in tutto il mondo tramite l'allora nuovo ARPANET , circa un decennio prima che i personal computer entrassero nell'uso generale. SPELL e i suoi algoritmi e strutture dati hanno ispirato il programma Unix Ispell .

Supporto in editor e IDE

Visual Studio

IntelliSense è l'implementazione Microsoft del completamento del codice, meglio conosciuta in Visual Studio . È stato introdotto per la prima volta come funzionalità di un prodotto Microsoft mainstream nel 1996, basandosi su molti concetti già inventati di completamento del codice e controllo della sintassi, con Visual Basic 5.0 Control Creation Edition, che era essenzialmente un prototipo pubblicamente disponibile per Visual Basic 5.0. Inizialmente, Visual Basic IDE era il "banco di prova" principale per la tecnologia, ma IntelliSense è stato incorporato in Visual FoxPro e Visual C++ nel periodo di tempo di Visual Studio 97 (una revisione dopo la prima visualizzazione in Visual Basic). Poiché si basava sulle capacità di introspezione di COM , le versioni Visual Basic di IntelliSense erano sempre più robuste e complete rispetto alle versioni 5.0 e 6.0 (97 e 98 nella sequenza di denominazione di Visual Studio) di Visual C++, che non avevano il vantaggio di essere interamente basato su COM. Queste carenze (criticate da molti sviluppatori VC++ dalla versione 97) sono state ampiamente corrette nelle linee di prodotti .NET . Ad esempio, una delle funzionalità più richieste mancanti nei prodotti pre-.NET era il supporto per i modelli , che ora è completamente implementato.

IntelliSense è entrato in una nuova fase di sviluppo con l' ambiente unificato Visual Studio.NET rilasciato per la prima volta nel 2001, potenziato dalle più potenti capacità di introspezione e documentazione del codice fornite dal framework .NET. IntelliSense è ora supportato dagli editor di Visual Studio per C++ , C# , J# , Visual Basic , XML , HTML e XSLT, tra gli altri. A partire da Visual Studio 2005 , IntelliSense è ora attivato per impostazione predefinita quando l'utente inizia a digitare, invece di richiedere caratteri marcatori (sebbene questo comportamento possa essere disattivato). L' IDE ha la capacità di dedurre una maggiore quantità di contesto in base a ciò che lo sviluppatore sta digitando, al punto che anche i costrutti del linguaggio di base come for e while sono inclusi nell'elenco di scelta. Nel 2017 Microsoft ha annunciato IntelliCode, che utilizza l'apprendimento automatico per dedurre esattamente quale lingua o funzionalità di libreria è probabile che sia prevista ad ogni pressione di un tasto. Inizialmente disponibile come estensione solo per C#, dovrebbe essere integrato nelle versioni future di Visual Studio.

Altri prodotti Microsoft che incorporano IntelliSense includono Expression Web , FrontPage 2003 , Small Basic , Visual Basic for Applications IDE nei prodotti Microsoft Office , Visual Studio Code e molti altri. SQL Server 2008 Management Studio ha il completamento automatico per la sintassi SQL.

Eclisse

L' IDE Eclipse ha strumenti di completamento del codice forniti con il programma. Include un notevole supporto per la creazione di codice Java, C++ e JavaScript. Il progetto Code Recommenders Eclipse utilizzato per fornire un potente completamento intelligente, ma a causa della mancanza di risorse, è stato abbandonato in Eclipse 2018-12 e quindi archiviato a luglio 2019.

Vim

Vim Intellisense è un sistema avanzato di completamento del codice per l' editor Vim .

Esempio

Supponiamo che un'applicazione C++ in fase di modifica in Visual Studio abbia una classe Foo con alcune funzioni membro:

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

Quando lo sviluppatore fa riferimento a questa classe nel codice sorgente, ad esempio:

Foo foo;
foo.

non appena l'utente digita il punto dopo foo, IntelliSense elenca automaticamente tutte le funzioni membro disponibili (cioè bar()e foo_bar()) e tutti gli attributi membri disponibili (i membri privati ​​e protetti possono essere identificati da un'immagine con un lucchetto accanto ai loro nomi). L'utente può quindi selezionarne uno utilizzando i tasti freccia e premendo un carattere di completamento quando viene evidenziata la funzione membro corretta. Quando disponibile, IntelliSense visualizza una breve descrizione della funzione membro come indicato nella documentazione del codice sorgente.

IntelliSense va oltre indicando i parametri richiesti in un'altra finestra popup mentre l'utente inserisce i parametri. Quando l'utente digita un nome di variabile, la funzione fornisce anche suggerimenti per completare la variabile durante la digitazione. IntelliSense continua a mostrare i parametri, evidenziando quello pertinente, man mano che l'utente digita.

L'utente può "forzare" IntelliSense a mostrare il proprio elenco a comparsa senza contesto utilizzando Ctrl+ Jo Ctrl+ Space. In Visual Studio viene visualizzato l'intero modello a oggetti del dominio dell'applicazione disponibile per lo sviluppatore.

Appunti

link esterno