Conclusão de código

A conclusão de código é um recurso de preenchimento automático em muitos ambientes de desenvolvimento integrados (IDEs) que acelera o processo de codificação de aplicativos, corrigindo erros comuns e sugerindo linhas de código. Isso geralmente acontece por meio de pop-ups durante a digitação, consulta de parâmetros de funções e dicas de consulta relacionadas a erros de sintaxe. O software moderno de autocompletar código normalmente usa sistemas generativos de inteligência artificial para prever linhas de código. A complementação de código e ferramentas relacionadas servem como documentação e desambiguação para nomes de variáveis , funções e métodos , usando análise estática . [1] [2]

O recurso aparece em muitos ambientes de programação. [3] [4] As implementações incluem IntelliSense no Visual Studio Code . O termo foi originalmente popularizado como "lista de opções" e algumas implementações ainda se referem a ele como tal. [5]

Visão geral

O preenchimento inteligente de código, que é semelhante a outros sistemas de preenchimento automático , é uma maneira conveniente de acessar descrições de funções – e em particular suas listas de parâmetros. O recurso acelera o desenvolvimento de software, reduzindo a entrada do teclado e a necessidade de memorização de nomes. Também permite que os usuários consultem com menos frequência a documentação externa, já que a documentação interativa sobre muitos símbolos (ou seja, variáveis ​​e funções) no escopo ativo aparece dinamicamente na forma de dicas de ferramentas . [6]

A conclusão de código inteligente usa um banco de dados na memória gerado automaticamente de classes, nomes de variáveis ​​e outras construções que determinado código de computador define ou faz referência. A implementação "clássica" do IntelliSense funciona detectando caracteres marcadores, como pontos (ou outros caracteres separadores, dependendo do idioma). Quando o usuário digita um desses caracteres imediatamente após o nome de uma entidade que possui um ou mais membros acessíveis (como variáveis ​​ou funções contidas), o IntelliSense sugere correspondências em uma caixa de diálogo pop-up. O usuário pode aceitar a sugestão digitando um caractere de conclusão de instrução ( Tab ↹ou ) ou um marcador específico do idioma (como ponto e vírgula para C++ ) ou continuar digitando o nome. Com o tempo, o IntelliSense determina qual variável ou função o usuário provavelmente precisa. O IntelliSense também exibe uma breve descrição de uma função na janela pop-up, dependendo da quantidade de documentação no código-fonte da função . ↵ Enter

O recurso também permite que os usuários selecionem uma série de funções sobrecarregadas em linguagens que suportam programação orientada a objetos . Alguns softwares de edição de código fornecem conclusão inteligente de código por meio de um servidor Language Server Protocol (LSP).

História

A pesquisa sobre o preenchimento inteligente de código começou em 1957, com verificadores ortográficos para imagens bitmap de escrita cursiva e aplicações especiais para localizar registros em bancos de dados, apesar de entradas incorretas. Em 1961, Les Earnest , que liderou a pesquisa sobre esta tecnologia emergente, considerou necessário incluir o primeiro corretor ortográfico que acessasse uma lista de 10.000 palavras aceitáveis. [7] Ralph Gorin, um estudante de pós-graduação de Earnest na época, criou o primeiro verdadeiro programa de verificação ortográfica escrito como uma aplicação (em vez de pesquisa) para texto em inglês geral. SPELL, para o DEC PDP-10 do Laboratório de Inteligência Artificial da Universidade de Stanford (SAIL), foi publicado em fevereiro de 1971. [8] Gorin escreveu o programa em montagem para uma ação mais rápida; ele fez isso pesquisando em uma lista de palavras grafias corretas plausíveis que diferem por uma única letra ou transposições de letras adjacentes e apresentando-as ao usuário. Gorin tornou o SPELL publicamente acessível, como foi feito com a maioria dos programas SAIL, e logo se espalhou pelo mundo através da então nova ARPANET , cerca de uma década antes de os computadores pessoais entrarem em uso geral. [9] SPELL e seus algoritmos e estruturas de dados inspiraram o programa Unix Ispell .

Suporte em editores e IDEs

Estúdio visual

IntelliSense é a implementação de autocompletar código da Microsoft , mais conhecida no Visual Studio . Foi introduzido pela primeira vez como um recurso de um produto mainstream da Microsoft em 1996 [10], com base em muitos conceitos já inventados de conclusão de código e verificação de sintaxe, com o Visual Basic 5.0 Control Creation Edition, que era essencialmente um protótipo disponível publicamente para o Visual Basic 5.0. . [11] Inicialmente, o Visual Basic IDE foi o principal "banco de testes" para a tecnologia, mas o IntelliSense foi incorporado ao Visual FoxPro e ao Visual C++ [12] no período do Visual Studio 97 (uma revisão depois de vista pela primeira vez no Visual Basic). Por ser baseado nos recursos de introspecção do COM , as versões Visual Basic do IntelliSense sempre foram mais robustas e completas que as versões 5.0 e 6.0 (97 e 98 na sequência de nomenclatura do Visual Studio) do Visual C++, que não tinham o benefício de ser inteiramente baseado em COM. Essas deficiências (criticadas por muitos desenvolvedores VC++ desde a versão 97) foram amplamente corrigidas nas linhas de produtos .NET . Por exemplo, um dos recursos mais solicitados que faltavam nos produtos pré-.NET era o suporte para modelos , que agora está totalmente implementado. [13]

O IntelliSense entrou em uma nova fase de desenvolvimento com o ambiente unificado Visual Studio.NET lançado pela primeira vez em 2001, aumentado pelos recursos mais poderosos de introspecção e documentação de código fornecidos pela estrutura .NET. O IntelliSense agora é suportado pelos editores do Visual Studio para C++ , C# , J# , Visual Basic , XML , HTML e XSLT , entre outros. A partir do Visual Studio 2005 , o IntelliSense agora é ativado por padrão quando o usuário começa a digitar, em vez de exigir caracteres marcadores (embora esse comportamento possa ser desativado). O IDE tem a capacidade de inferir uma quantidade maior de contexto com base no que o desenvolvedor está digitando, a ponto de construções básicas de linguagem como for e while também serem incluídas na lista de opções. Em 2017, a Microsoft anunciou o IntelliCode, [14] que usa aprendizado de máquina para inferir exatamente qual idioma ou recurso de biblioteca provavelmente será pretendido a cada pressionamento de tecla. Inicialmente disponível apenas como uma extensão para C#, espera-se que seja integrado em versões futuras do Visual Studio.

O Visual Studio 2022 inclui recursos de inteligência artificial, como GitHub Copilot , que pode sugerir automaticamente linhas inteiras de código com base no contexto circundante.

Outros produtos da Microsoft que incorporam o IntelliSense incluem Expression Web , FrontPage 2003 , Small Basic , o Visual Basic for Applications IDEs nos produtos Microsoft Office , Visual Studio Code e muitos outros. O SQL Server 2008 Management Studio possui preenchimento automático para a sintaxe SQL.

Eclipse

O Eclipse IDE possui ferramentas de autocompletar código que acompanham o programa. [15] [16] Inclui suporte notável para criação de código Java, C++ e JavaScript. O projeto Code Recommenders Eclipse usado para fornecer conclusão inteligente poderosa, [17] mas devido à falta de recursos, foi descartado no Eclipse 2018–12 e arquivado em julho de 2019. [18] [19] [20]

Vim

Vim Intellisense [21] é um sistema avançado de autocompletar código para o editor Vim .

Exemplo

Suponha que um aplicativo C++ sendo editado no Visual Studio tenha uma classe Foo com algumas funções-membro:

classe Foo { público : barra vazia (); void foo_bar ( char c , int n ); };  
  
     
        

Quando o desenvolvedor faz referência a esta classe no código-fonte, por exemplo:

Foo foo ; foo . 

assim que o usuário digita o ponto após foo, o IntelliSense lista automaticamente todas as funções de membro disponíveis (ou seja, bar()e foo_bar()) e todos os atributos de membro disponíveis (membros privados e protegidos podem ser identificados por uma imagem de cadeado ao lado de seus nomes). O usuário pode então selecionar uma usando as teclas de seta e pressionando um caractere de conclusão quando a função membro correta estiver destacada. Quando disponível, o IntelliSense exibe uma breve descrição da função membro conforme fornecida na documentação do código-fonte.

O IntelliSense vai além, indicando os parâmetros necessários em outra janela pop-up à medida que o usuário preenche os parâmetros. À medida que o usuário digita o nome de uma variável, o recurso também faz sugestões para completar a variável à medida que ela é digitada. O IntelliSense continua mostrando parâmetros, destacando o pertinente, conforme o usuário digita.

O usuário pode "forçar" o IntelliSense a mostrar sua lista pop-up sem contexto usando + ou + . No Visual Studio, isso exibe todo o modelo de objeto de domínio do aplicativo disponível para o desenvolvedor. CtrlJCtrlSpace

Notas

  1. ^ Roubos, Romain; Lanza, Michele (2008). "Como o histórico do programa pode melhorar a conclusão do código". 2008 23ª Conferência Internacional IEEE/ACM sobre Engenharia de Software Automatizada . págs. 317–326. doi :10.1109/ASE.2008.42. ISBN 978-1-4244-2187-9. S2CID2093640  .
  2. ^ "Conclusão de código, episódio 1: cenários e requisitos" . O blog JetBrains . 28 de maio de 2021 . Recuperado em 17 de novembro de 2023 .
  3. ^ Perguntas frequentes - CodeBlocks. Wiki.codeblocks.org (01/02/2014). Obtido em 04/04/2014.
  4. ^ Documentação Qt - Completando Código. Obtido em 07/07/2015.
  5. ^ Usando o Dynamic Apex para recuperar valores da lista de opções | Blog da Força do Desenvolvedor. Blogs.developerforce.com (09/12/2008). Obtido em 04/04/2014.
  6. ^ Murach. C#2005 . pág. 56.
  7. ^ Sério, Les. "Os três primeiros corretores ortográficos" (PDF) . Universidade de Stanford. Arquivado do original (PDF) em 22 de outubro de 2012 . Recuperado em 10 de outubro de 2011 .
  8. ^ Peterson, James (dezembro de 1980). Programas de computador para detecção e correção de erros ortográficos (PDF) . Recuperado em 18 de fevereiro de 2011 .
  9. ^ Sério, Les. Legados visíveis para Y3K (PDF) . Arquivado do original (PDF) em 20 de julho de 2011 . Recuperado em 18 de fevereiro de 2011 .
  10. ^ "Arquivo Microsoft KB/165524 - BetaArchive Wiki" . www.betaarchive.com . Recuperado em 19 de novembro de 2023 .
  11. ^ "Microsoft apresenta Visual Basic 5.0, edição de criação de controle" . Histórias . 28 de outubro de 1996 . Recuperado em 19 de novembro de 2023 .
  12. ^ "Microsoft apresenta Visual C++ 6.0" . Histórias . 29 de junho de 1998 . Recuperado em 19 de novembro de 2023 .
  13. ^ Usando o IntelliSense. Msdn.microsoft.com. Obtido em 04/04/2014.
  14. ^ Visual Studio IntelliCode
  15. ^ "Artigo Eclipse Corner: Liberando o poder da refatoração | a Fundação Eclipse" .
  16. ^ “Tecnologias” . IBM .
  17. ^ Recomendadores de código Eclipse: trata-se de conclusão inteligente de código. Code-recommenders.blogspot.com (03/05/2010). Obtido em 04/04/2014.
  18. ^ 542689 - Não inclua recomendadores de código para 2018-12
  19. ^ cross-project-issues-dev Retirando recomendadores de código do SimRel
  20. ^ Projetos arquivados | A Fundação Eclipse
  21. ^ Vim Intellisense. Insenvim.sourceforge.net. Obtido em 04/04/2014.

links externos

  • Torre, Charles (24 de janeiro de 2008). "Arjun Bijanki: Entendendo o VC Intellisense" (Vídeo) . Canal9 . Microsoft.
  • "Usando IntelliSense". VS .NET 2003 (edição de 2015). MSDN. Arquivado do original em 18 de outubro de 2007 . Recuperado em 11 de setembro de 2007 .{{cite web}}: CS1 maint: bot: status do URL original desconhecido ( link )
  • "Tutorial IntelliSpeed" (Vídeo) . Prólogo visual .

Obtido em "https://en.wikipedia.org/w/index.php?title=Code_completion&oldid=1208986527#Visual_Studio"