La finalización de código inteligente [1] es una función de finalización de código sensible al contexto en algunos entornos de programación que acelera el proceso de codificación de aplicaciones al reducir los errores tipográficos y otros errores comunes. Los intentos de hacer esto generalmente se realizan a través de ventanas emergentes de autocompletado mientras se escribe, consultar parámetros de funciones, sugerencias de consulta relacionadas con errores de sintaxis. La finalización de código inteligente y las herramientas relacionadas sirven como documentación y eliminación de ambigüedades para nombres de variables , funciones y métodos , utilizando la reflexión . [2]
La función aparece en muchos entornos de programación. [3] [4] Las implementaciones incluyen "autocompletar +" en Atom e 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 que los usuarios se refieran con menos frecuencia a 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 sobre herramientas . [6]
La finalización de código inteligente utiliza una base de datos en memoria generada automáticamente de clases, nombres de variables y otras construcciones que el código de computadora 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 ↵ Enter) 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, dependiendo de la cantidad de documentación en el código fuente de la función .
La función también permite a los usuarios seleccionar entre una serie de funciones sobrecargadas en lenguajes que admiten la programación orientada a objetos . Algunos programas de edición de código proporcionan finalización de código inteligente a través de un servidor de protocolo de servidor de idiomas (LSP).
Historia
La investigación sobre la finalización de código inteligente 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 en ciernes, vio necesario incluir el primer corrector ortográfico que accedió a una lista de 10.000 palabras aceptables. [7] Ralph Gorin, un estudiante graduado 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 el texto en inglés general. SPELL, para el DEC PDP-10 en el Laboratorio de Inteligencia Artificial de la Universidad de Stanford (SAIL), se publicó en febrero de 1971. [8] Gorin escribió el programa en conjunto para una acción más rápida; lo hizo buscando una lista de palabras para ver si la ortografía correcta y plausible difiere en una sola letra o transposiciones de letras adyacentes, y presentándolas al usuario. Gorin hizo SPELL 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 del entonces nuevo 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 Ispell de Unix .
Soporte en editores e IDE
Estudio visual
IntelliSense es la implementación de compleción de código de Microsoft , más conocida en Visual Studio . Se introdujo por primera vez como una característica de un producto principal de Microsoft en 1996 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. Inicialmente, Visual Basic IDE era el "banco de pruebas" principal para la tecnología, pero IntelliSense se incorporó a Visual FoxPro y Visual C ++ en el período de tiempo de Visual Studio 97 (una revisión después de que se vio por primera vez en Visual Basic). Debido a que se basó 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 basado 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. [10]
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 de documentación de código e introspección más poderosas 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 de marcador (aunque este comportamiento se puede desactivar). El IDE tiene la capacidad de inferir una mayor cantidad de contexto en función de lo que escribe el desarrollador, hasta el punto de que construye un lenguaje básico como para y while también se incluyen en la lista de opciones. En 2017, Microsoft anunció IntelliCode, [11] que utiliza el aprendizaje automático para inferir exactamente qué idioma o característica de la biblioteca es probable que se pretenda 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.
Otros productos de Microsoft que incorporan IntelliSense incluyen Expression Web , FrontPage 2003 , Small Basic , los IDE de Visual Basic para aplicaciones en los productos de Microsoft Office , Visual Studio Code y muchos otros. SQL Server 2008 Management Studio tiene autocompletado para la sintaxis SQL.
Eclipse
El Eclipse IDE tiene herramientas de finalización de código que vienen empaquetadas con el programa. [12] [13] Incluye soporte notable para la creación de código Java, C ++ y JavaScript. El proyecto Eclipse de recomendadores de código solía proporcionar una finalización inteligente potente, [14] pero debido a la falta de recursos, se eliminó en Eclipse 2018-12 y luego se archivó en julio de 2019. [15] [16] [17]
Empuje
Vim Intellisense [18] es un sistema avanzado de finalización de código para el editor Vim .
Ejemplo
Suponga que una aplicación de C ++ que se está editando en Visual Studio tiene una clase Foo con algunas funciones miembro:
class Foo { public : 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 .
Tan pronto como el usuario escribe el período posterior foo
, IntelliSense enumera automáticamente todas las funciones de miembros disponibles (es decir, bar()
y foo_bar()
) y todos los atributos de miembros disponibles (los miembros privados y protegidos pueden identificarse mediante una imagen de candado junto a 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 de miembro correcta. Cuando está disponible, IntelliSense muestra una breve descripción de la función miembro como se indica 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 un nombre de variable, la función también hace sugerencias para completar la variable a medida que se escribe. IntelliSense continúa mostrando parámetros, destacando el pertinente, a medida que el usuario escribe.
El usuario puede "forzar" a IntelliSense a mostrar su lista emergente sin contexto usando Ctrl+ Jo Ctrl+ Space. En Visual Studio, esto muestra todo el modelo de objetos de dominio de la aplicación disponible para el desarrollador.
Notas
- ^ Bruch, Marcel; Monperrus, Martin; Mezini, Mira (2009). "Aprendiendo de los ejemplos para mejorar los sistemas de finalización de código". Actas de la séptima 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 en la conferencia europea de ingeniería de software y el simposio de fundamentos de la ingeniería de software - ESEC / FSE '09 . pag. 213. doi : 10.1145 / 1595696.1595728 . ISBN 9781605580012.
- ^ Autocompletar | Defina Autocompletar en Dictionary.com . Dictionary.reference.com. Consultado el 4 de abril de 2014.
- ^ Preguntas frecuentes - CodeBlocks . Wiki.codeblocks.org (1 de febrero de 2014). Consultado el 4 de abril de 2014.
- ^ Documentación de Qt - Completar código . Consultado el 7 de julio de 2015.
- ^ Uso de Dynamic Apex para recuperar valores de lista de selección | Blog de la fuerza del desarrollador . Blogs.developerforce.com (09/12/2008). Consultado el 4 de abril de 2014.
- ^ Murach. C # 2005 . pag. 56.
- ^ En serio, Les. "Los tres primeros correctores ortográficos" (PDF) . Universidad Stanford. Archivado desde el original (PDF) el 22 de octubre de 2012 . Consultado el 10 de octubre de 2011 .
- ^ Peterson, James (diciembre de 1980). Programas informáticos para detectar y corregir errores ortográficos (PDF) . Consultado el 18 de febrero de 2011 .
- ^ En serio, Les. Legados visibles para el Y3K (PDF) . Archivado desde el original (PDF) el 20 de julio de 2011 . Consultado el 18 de febrero de 2011 .
- ^ Usando IntelliSense . Msdn.microsoft.com. Consultado el 4 de abril de 2014.
- ^ Visual Studio IntelliCode
- ^ http://www.eclipse.org/articles/article.php?file=Article-Unleashing-the-Power-of-Refactoring/index.html
- ^ http://www.ibm.com/developerworks/library/os-eclipse-refactoring/
- ^ Recomendaciones de código de Eclipse: se trata de completar el código de forma inteligente . Code-recommenders.blogspot.com (3 de mayo de 2010). Consultado el 4 de abril de 2014.
- ^ 542689 - No incluya recomendaciones de código para 2018-12
- ^ cross-project-issues-dev Retirar recomendadores de código de SimRel
- ^ Proyectos archivados | La Fundación Eclipse
- ^ Vim Intellisense . Insenvim.sourceforge.net. Consultado el 4 de abril de 2014.
enlaces externos
- Torre, Charles (24 de enero de 2008). "Arjun Bijanki: Dando sentido a VC Intellisense" (Video) . Canal 9 . Microsoft.
- "Usando IntelliSense" . VS .NET 2003 (edición de 2015). MSDN. Archivado desde el original en 2005.
- "Tutorial de IntelliSpeed" (vídeo) . Prólogo visual .