Articulo de referencia

Autocompletado de código

Demostración de la función de autocompletado de código en Microsoft Visual Studio 2025 , con sugerencias asistidas por IA disponibles. La función de autocompletado de código es ...

Demostración de la función de autocompletado de código en Microsoft Visual Studio 2025 , con sugerencias asistidas por IA disponibles.

La función de autocompletado de código es una característica presente en muchos entornos de desarrollo integrados (IDE) que acelera el proceso de codificación de aplicaciones al corregir errores comunes y sugerir líneas de código. Esto suele ocurrir mediante ventanas emergentes al escribir, consultas de parámetros de funciones y sugerencias relacionadas con errores de sintaxis. El autocompletado de código y las herramientas relacionadas sirven como documentación y desambiguación para nombres de variables , funciones y métodos , utilizando análisis estático . [ 1 ] [ 2 ]

Esta función aparece en muchos entornos de programación. [ 3 ] [ 4 ] Entre las implementaciones se incluye IntelliSense en Visual Studio Code . El término se popularizó originalmente como "lista desplegable" y algunas implementaciones aún se refieren a él de esa manera. [ 5 ]

Descripción general

La función de autocompletado inteligente, similar a otros sistemas de autocompletado , es una forma práctica de acceder a las descripciones de las funciones, y en particular a sus listas de parámetros. Esta función acelera el desarrollo de software al reducir la entrada de datos mediante teclado y la necesidad de memorizar nombres. Además, permite a los usuarios consultar con menos frecuencia la documentación externa, ya que la documentación interactiva sobre muchos símbolos (es decir, variables y funciones) en el ámbito activo aparece dinámicamente en forma de información emergente . [ 6 ]

El autocompletado inteligente de código utiliza una base de datos en memoria generada automáticamente de clases, nombres de variables y otras construcciones que el código informático dado define o referencia. La implementación "clásica" de IntelliSense funciona detectando caracteres marcadores como puntos (u otros caracteres separadores, según el lenguaje). Cuando el usuario escribe uno de estos caracteres inmediatamente después del nombre de una entidad que tiene uno o más miembros accesibles (como variables o funciones contenidas), IntelliSense sugiere coincidencias en un cuadro de diálogo emergente. El usuario puede aceptar la sugerencia escribiendo un carácter de autocompletado de sentencia ( Tab ↹o ) o un marcador específico del lenguaje (como el punto y coma para C++ ), o continuar escribiendo el nombre. Con el tiempo, IntelliSense determina qué variable o función es más probable que necesite el usuario. IntelliSense también muestra una breve descripción de una función en la ventana emergente, según la cantidad de documentación en el código fuente de la función .↵ Enter

Esta función también permite a los usuarios seleccionar entre varias funciones sobrecargadas en lenguajes que admiten programación orientada a objetos . Algunos programas de edición de código ofrecen autocompletado inteligente mediante un servidor de protocolo de servidor de lenguaje (LSP).

Historia

La investigación sobre la autocompletación inteligente de código comenzó en 1957, con correctores ortográficos para imágenes de mapa de bits de escritura cursiva y aplicaciones especiales para encontrar registros en bases de datos a pesar de entradas incorrectas. En 1961, Les Earnest , quien dirigió la investigación sobre esta tecnología incipiente, consideró necesario incluir el primer corrector ortográfico que accedía a una lista de 10 000 palabras aceptables. [ 7 ] Ralph Gorin, un estudiante de posgrado bajo la tutela de Earnest en ese momento, creó el primer programa de corrección ortográfica verdadero escrito como una aplicación (en lugar de una investigación) para texto en inglés general. SPELL, para el DEC PDP-10 en el Laboratorio de Inteligencia Artificial (SAIL) de la Universidad de Stanford, se publicó en febrero de 1971. [ 8 ] Gorin escribió el programa en lenguaje ensamblador para una acción más rápida; lo hizo buscando en una lista de palabras posibles ortografías correctas que difieren en una sola letra o transposiciones de letras adyacentes, y presentándolas al usuario. Gorin hizo que SPELL fuera accesible al público, como se hizo con la mayoría de los programas SAIL, y pronto se extendió por todo el mundo a través de la entonces nueva ARPANET , aproximadamente una década antes de que las computadoras personales se generalizaran. [ 9 ] SPELL y sus algoritmos y estructuras de datos inspiraron el programa Unix Ispell .

Compatibilidad con editores e IDE

Visual Studio

Autocompletado de código en Visual Studio 2022.

IntelliSense es la implementación de Microsoft para la finalización de código, más conocida en Visual Studio . Se introdujo por primera vez como una característica de un producto principal de Microsoft en 1996 [ 10 ] basándose en muchos conceptos ya inventados de finalización de código y comprobación de sintaxis, con Visual Basic 5.0 Control Creation Edition, que era esencialmente un prototipo disponible públicamente para Visual Basic 5.0. [ 11 ] Inicialmente, Visual Basic IDE fue el "banco de pruebas" principal para la tecnología, pero IntelliSense se incorporó a Visual FoxPro y Visual C++ [ 12 ] en el período de Visual Studio 97 (una revisión después de su primera aparición en Visual Basic). Debido a que se basaba en las capacidades de introspección de COM , las versiones de Visual Basic de IntelliSense siempre fueron más robustas y completas que las versiones 5.0 y 6.0 (97 y 98 en la secuencia de nombres de Visual Studio) de Visual C++, que no tenían el beneficio de estar completamente basadas en COM. Estas deficiencias, como la falta de soporte para plantillas , criticadas por muchos desarrolladores de VC++, se han corregido en gran medida en las líneas de productos .NET [ 13 ].

IntelliSense entró en una nueva fase de desarrollo con el entorno unificado Visual Studio.NET, lanzado por primera vez en 2001, ampliado por las capacidades de introspección y documentación de código más potentes que proporciona el framework .NET. IntelliSense ahora es compatible con los editores de Visual Studio para C++ , C# , J# , Visual Basic , XML , HTML y XSLT , entre otros. Desde Visual Studio 2005 , IntelliSense se activa por defecto cuando el usuario empieza a escribir, en lugar de requerir caracteres marcadores (aunque este comportamiento se puede desactivar). El IDE tiene la capacidad de inferir una mayor cantidad de contexto en función de lo que el desarrollador está escribiendo, hasta el punto de que las construcciones básicas del lenguaje, como ` for` y ` while`, también se incluyen en la lista de opciones. En 2017, Microsoft anunció IntelliCode, [ 14 ] que utiliza aprendizaje automático para inferir exactamente qué característica del lenguaje o de la biblioteca es probable que se pretenda con cada pulsación de tecla. [ 15 ] Inicialmente disponible solo como una extensión para C#, se espera que se incorpore en futuras versiones de Visual Studio.

Visual Studio 2022 incluye funciones de inteligencia artificial, como GitHub Copilot , que puede sugerir automáticamente líneas de código completas basándose en el contexto circundante.

Otros productos de Microsoft que incorporan IntelliSense son Expression Web , FrontPage 2003 , Small Basic , los entornos de desarrollo integrados (IDE) de Visual Basic para Aplicaciones en los productos de Microsoft Office , Visual Studio Code y muchos más. SQL Server 2008 Management Studio cuenta con autocompletado para la sintaxis SQL.

Eclipse

El IDE Eclipse incluye herramientas de autocompletado de código. [ 16 ] [ 17 ] Ofrece un soporte notable para la creación de código en Java, C++ y JavaScript. El proyecto Code Recommenders Eclipse solía proporcionar un potente autocompletado inteligente, [ 18 ] pero debido a la falta de recursos, se abandonó en Eclipse 2018–12 y posteriormente se archivó en julio de 2019. [ 19 ] [ 20 ] [ 21 ]

Empuje

Vim Intellisense [ 22 ] es un sistema avanzado de autocompletado de código para el editor Vim .

Ejemplo

Supongamos que una aplicación C++ que se está editando en Visual Studio tiene una clase Foo con algunas funciones miembro:

clase Foo { público : void bar (); void foo_bar ( char c , int n ); };

Cuando el desarrollador hace referencia a esta clase en el código fuente, por ejemplo:

Foo foo ; foo .

En cuanto el usuario escribe el punto después de foo, IntelliSense enumera automáticamente todas las funciones miembro disponibles (es decir, bar()y foo_bar()) y todos los atributos miembro disponibles (los miembros privados y protegidos se identifican con un candado junto a sus nombres). El usuario puede seleccionar una usando las teclas de flecha y pulsando un carácter de autocompletado cuando se resalta la función miembro correcta. Cuando está disponible, IntelliSense muestra una breve descripción de la función miembro tal como aparece en la documentación del código fuente.

IntelliSense va más allá al mostrar los parámetros necesarios en una ventana emergente mientras el usuario los introduce. A medida que el usuario escribe el nombre de una variable, la función también ofrece sugerencias para completarla. IntelliSense continúa mostrando los parámetros, resaltando el relevante, mientras el usuario escribe.

El usuario puede "forzar" a IntelliSense a mostrar su lista emergente sin contexto usando + o + . En Visual Studio, esto muestra todo el modelo de objetos del dominio de la aplicación disponible para el desarrollador.CtrlJCtrlSpace

Véase también

Notas

  1. Robbes, Romain; Lanza, Michele (2008). "Cómo el historial del programa puede mejorar la autocompletación del código". 23.ª Conferencia Internacional IEEE/ACM sobre Ingeniería de Software Automatizada de 2008. pp. 317–326 . doi : 10.1109/ASE.2008.42 . ISBN  978-1-4244-2187-9. S2CID 2093640 . 
  2. "Completación de código, episodio 1: escenarios y requisitos" . El blog de JetBrains . 28 de mayo de 2021. Consultado el 17 de noviembre de 2023 .
  3. Preguntas frecuentes - CodeBlocks . Wiki.codeblocks.org (1 de febrero de 2014). Consultado el 4 de abril de 2014.
  4. Documentación de Qt - Completar código . Consultado el 7 de julio de 2015.
  5. Uso de Apex dinámico para recuperar valores de listas desplegables | Blog de Developer Force . Blogs.developerforce.com (09/12/2008). Consultado el 04/04/2014.
  6. Murach. C# 2005. pág. 56. 
  7. Earnest, Les. "Los tres primeros correctores ortográficos" (PDF) . Universidad de Stanford. Archivado del original (PDF) el 22 de octubre de 2012. Recuperado el 10 de octubre de 2011 .
  8. Peterson, James (diciembre de 1980). Programas informáticos para detectar y corregir errores ortográficos (PDF) . Consultado el 18 de febrero de 2011 .
  9. Earnest, Les. Legados visibles del efecto 3000 (PDF) . Archivado del original (PDF) el 20 de julio de 2011. Consultado el 18 de febrero de 2011 .
  10. "Archivo KB de Microsoft/165524 - Wiki de BetaArchive" . www.betaarchive.com . Consultado el 19 de noviembre de 2023 .
  11. "Microsoft presenta Visual Basic 5.0, Control Creation Edition" . Historias . 28 de octubre de 1996. Consultado el 19 de noviembre de 2023 .
  12. "Microsoft presenta Visual C++ 6.0" . Historias . 29 de junio de 1998. Consultado el 19 de noviembre de 2023 .
  13. Uso de IntelliSense . Msdn.microsoft.com. Consultado el 4 de abril de 2014.
  14. Visual Studio IntelliCode
  15. Bruch, Marcel; Monperrus, Martin; Mezini, Mira (2009). "Aprender de ejemplos para mejorar los sistemas de autocompletado de código". Actas de la 7.ª Reunión Conjunta de la Conferencia Europea de Ingeniería de Software y el Simposio ACM SIGSOFT sobre los Fundamentos de la Ingeniería de Software (ESEC/FSE) . págs. 213–222 . doi : 10.1145/1595696.1595728 . 
  16. "Artículo de Eclipse Corner: Liberando el poder de la refactorización | Fundación Eclipse" .
  17. "Tecnologías" . IBM .
  18. Recomendadores de código de Eclipse: Todo gira en torno a la finalización inteligente de código . Code-recommenders.blogspot.com (3 de mayo de 2010). Consultado el 4 de abril de 2014.
  19. 542689 - No incluir recomendadores de código para 2018-12
  20. Problemas entre proyectos: Retirada de los recomendadores de código de SimRel
  21. Proyectos archivados | La Fundación Eclipse
  22. Vim Intellisense . Insenvim.sourceforge.net. Consultado el 4 de abril de 2014.