stringtranslate.com

Finalización de código

La finalización de código es una función de autocompletado en muchos entornos de desarrollo integrados (IDE) que acelera el proceso de codificación de aplicaciones corrigiendo errores comunes y sugiriendo líneas de código. Esto suele ocurrir a través de ventanas emergentes al escribir, consultar parámetros de funciones y sugerencias de consulta relacionadas con errores de sintaxis. El software de finalización de código moderno suele utilizar sistemas de inteligencia artificial generativa para predecir líneas de código. La finalización de código y las herramientas relacionadas sirven como documentación y desambiguación para nombres de variables , funciones y métodos , mediante análisis estático . [1] [2]

La característica aparece en muchos entornos de programación. [3] [4] Las implementaciones incluyen IntelliSense en Visual Studio Code . El término se popularizó originalmente como "lista de selección" y algunas implementaciones todavía se refieren a él como tal. [5]

Descripción general

La finalización inteligente de código, que es similar a otros sistemas de autocompletado , es una forma conveniente de acceder a descripciones de funciones y, en particular, a sus listas de parámetros. La función acelera el desarrollo de software al reducir la entrada del teclado y la necesidad de memorizar nombres. También permite a los usuarios consultar documentación externa con menos frecuencia, ya que la documentación interactiva sobre muchos símbolos (es decir, variables y funciones) en el alcance activo aparece dinámicamente en forma de información sobre herramientas . [6]

La finalización inteligente de código utiliza una base de datos en memoria generada automáticamente de clases, nombres de variables y otras construcciones que un código de computadora determinado define o hace referencia. La implementación "clásica" de IntelliSense funciona detectando caracteres marcadores como puntos (u otros caracteres separadores, según el idioma). 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 finalización de declaración ( Tab ↹o ) o un marcador específico del idioma (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

La característica también permite a los usuarios seleccionar entre una serie de funciones sobrecargadas en lenguajes que admiten programación orientada a objetos . Algunos programas de edición de código proporcionan finalización inteligente de código a través de un servidor de protocolo de servidor de idiomas (LSP).

Historia

La investigación sobre la finalización inteligente de código comenzó en 1957, con correctores ortográficos para imágenes de mapas de bits de escritura cursiva y aplicaciones especiales para encontrar registros en bases de datos a pesar de las entradas incorrectas. En 1961, Les Earnest , que dirigió la investigación sobre esta incipiente tecnología, vio 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 de Earnest en ese momento, creó el primer verdadero programa de corrección ortográfica escrito como una aplicación (en lugar de una investigación) para textos 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 conjunto para una acción más rápida; Lo logró buscando en una lista de palabras ortografías correctas plausibles 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 .

Soporte en editores e IDE

Estudio visual

IntelliSense es la implementación de finalización de código de Microsoft , más conocida en Visual Studio . Se introdujo por primera vez como una característica de un producto convencional de Microsoft en 1996 [10] basándose en muchos conceptos ya inventados de finalización de código y verificació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 era el principal "banco de pruebas" 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 la primera vez que se vio 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 sólidas 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 basado enteramente en COM. Estas deficiencias (criticadas por muchos desarrolladores de VC++ desde la versión 97) se han corregido en gran medida en las líneas de productos .NET . Por ejemplo, una de las capacidades más solicitadas que faltaban en los productos anteriores a .NET era la compatibilidad con plantillas , que ahora está completamente implementada. [13]

IntelliSense ha entrado en una nueva fase de desarrollo con el entorno unificado Visual Studio.NET lanzado por primera vez en 2001, aumentado por las capacidades más poderosas de introspección y documentación de código proporcionadas por el marco .NET. IntelliSense ahora es compatible con los editores de Visual Studio para C++ , C# , J# , Visual Basic , XML , HTML y XSLT , entre otros. A partir de Visual Studio 2005 , IntelliSense ahora se activa de forma predeterminada cuando el usuario comienza 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 escribe, 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 el aprendizaje automático para inferir exactamente qué idioma o función de biblioteca es probable que se utilice en cada pulsación de tecla. Inicialmente disponible como una extensión solo para C#, se espera que se integre en futuras versiones de Visual Studio.

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

Otros productos de Microsoft que incorporan IntelliSense incluyen Expression Web , FrontPage 2003 , Small Basic , Visual Basic para aplicaciones IDE en los productos de Microsoft Office , Visual Studio Code y muchos otros. SQL Server 2008 Management Studio tiene autocompletar para la sintaxis SQL.

Eclipse

El IDE de Eclipse tiene herramientas de finalización de código que vienen incluidas con el programa. [15] [16] Incluye soporte notable para la creación de código Java, C++ y JavaScript. El proyecto Eclipse de Code Recommenders solía proporcionar una finalización inteligente potente, [17] pero debido a la falta de recursos, se abandonó en Eclipse 2018-12 y luego se archivó en julio de 2019. [18] [19] [20]

Empuje

Vim Intellisense [21] es un sistema avanzado de finalización 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 : barra vacía (); 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 . 

Tan pronto como el usuario escribe el punto después de foo, IntelliSense enumera automáticamente todas las funciones de los miembros disponibles (es decir, bar()y foo_bar()) y todos los atributos de los miembros disponibles (los miembros privados y protegidos pueden identificarse mediante una imagen de candado al lado de sus nombres). Luego, el usuario puede seleccionar uno usando las teclas de flecha y presionando un carácter de finalización cuando se resalta la función del miembro correcto. Cuando está disponible, IntelliSense muestra una breve descripción de la función miembro como se proporciona en la documentación del código fuente.

IntelliSense va más allá al indicar los parámetros requeridos en otra ventana emergente a medida que el usuario completa los parámetros. A medida que el usuario escribe el nombre de una variable, la función también hace sugerencias para completar la variable a medida que se escribe. IntelliSense continúa mostrando parámetros, resaltando el pertinente, a medida que 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 aplicación disponible para el desarrollador.CtrlJCtrlSpace

Notas

  1. ^ Robbes, Romain; Lanza, Michele (2008). "Cómo el historial del programa puede mejorar la finalización del código". 2008 23ª Conferencia Internacional IEEE/ACM sobre Ingeniería de Software Automatizada . págs. 317–326. doi :10.1109/ASE.2008.42. ISBN 978-1-4244-2187-9. S2CID  2093640.
  2. ^ "Finalizació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: bloques de código. Wiki.codeblocks.org (01 de febrero de 2014). Recuperado el 4 de abril de 2014.
  4. ^ Documentación Qt: completar el código. Recuperado el 7 de julio de 2015.
  5. ^ Uso de Dynamic Apex para recuperar valores de lista de selección | Blog de fuerza de desarrollador. Blogs.developerforce.com (9 de diciembre de 2008). Recuperado el 4 de abril de 2014.
  6. ^ Murach. C # 2005 . pag. 56.
  7. ^ Serio, Les. "Los primeros tres correctores ortográficos" (PDF) . Universidad Stanford. Archivado desde el original (PDF) el 22 de octubre de 2012 . Consultado 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. ^ Serio, Les. Legados visibles para el año 3000 (PDF) . Archivado desde el original (PDF) el 20 de julio de 2011 . Consultado el 18 de febrero de 2011 .
  10. ^ "Archivo de Microsoft KB/165524 - Wiki BetaArchive". www.betaarchive.com . Consultado el 19 de noviembre de 2023 .
  11. ^ "Microsoft presenta Visual Basic 5.0, edición de creación de controles". Cuentos . 28 de octubre de 1996 . Consultado el 19 de noviembre de 2023 .
  12. ^ "Microsoft presenta Visual C++ 6.0". Cuentos . 29 de junio de 1998 . Consultado el 19 de noviembre de 2023 .
  13. ^ Usando IntelliSense. msdn.microsoft.com. Recuperado el 4 de abril de 2014.
  14. ^ Visual Studio IntelliCode
  15. ^ "Artículo de Eclipse Corner: Liberar el poder de la refactorización | la Fundación Eclipse".
  16. ^ "Tecnologías". IBM .
  17. ^ Recomendadores de código de Eclipse: se trata de completar código inteligente. Código-recommenders.blogspot.com (3 de mayo de 2010). Recuperado el 4 de abril de 2014.
  18. ^ 542689: no incluya recomendadores de código para 2018-12
  19. ^ cross-project-issues-dev Retiro de recomendadores de código de SimRel
  20. ^ Proyectos archivados | La Fundación Eclipse
  21. ^ Vim Intellisense. Insenvim.sourceforge.net. Recuperado el 4 de abril de 2014.

enlaces externos