Введение
Функция автозаполнения в IDE
Автозаполнение кода — это функция автозаполнения во многих интегрированных средах разработки (IDE), которая ускоряет процесс написания кода приложений, исправляя распространённые ошибки и предлагая варианты строк кода. Обычно это происходит посредством всплывающих подсказок во время ввода, запроса параметров функций и указаний, связанных с синтаксическими ошибками. Современное программное обеспечение для автозаполнения кода часто использует генеративные системы искусственного интеллекта для предсказания строк кода. Автозаполнение кода и связанные с ним инструменты служат документацией и помогают устранить неоднозначность в названиях переменных, функций и методов, используя статический анализ. Эта функция реализована во многих средах программирования. Примеры реализации включают IntelliSense в Visual Studio Code. Изначально этот термин был популяризирован как "picklist", и некоторые реализации до сих пор используют его.
Code completion is an autocompletion feature in many integrated development environments (IDEs) that speeds up the process of coding applications by fixing common mistakes and suggesting lines of code. This usually happens through popups while typing, querying parameters of functions, and query hints related to syntax errors. Modern code completion software typically uses generative artificial intelligence systems to predict lines of code. Code completion and related tools serve as documentation and disambiguation for variable names, functions, and methods, using static analysis. The feature appears in many programming environments. Implementations include IntelliSense in Visual Studio Code. The term was originally popularized as "picklist" and some implementations still refer to it as such.
Обзор
Интеллектуальное дополнение кода, аналогичное другим системам автозавершения, является удобным способом доступа к описаниям функций — и, в частности, к их спискам параметров. Эта функция ускоряет разработку программного обеспечения, сокращая ввод с клавиатуры и необходимость запоминания имен. Она также позволяет пользователям реже обращаться к внешней документации, поскольку интерактивная документация по многим символам (то есть переменным и функциям) в текущей области видимости динамически отображается в виде всплывающих подсказок. Интеллектуальное дополнение кода использует автоматически генерируемую в памяти базу данных классов, имен переменных и других конструкций, которые данный компьютерный код определяет или использует. «Классическая» реализация IntelliSense работает путем обнаружения символов-разделителей, таких как точки (или других разделителей, в зависимости от языка). Когда пользователь вводит один из этих символов сразу после имени сущности, имеющей один или несколько доступных членов (например, содержащихся переменных или функций), IntelliSense предлагает варианты в всплывающем окне. Пользователь может принять предложение, введя символ завершения оператора (например, скобку) или специфичный для языка разделитель (например, точку с запятой для C++), либо продолжить ввод имени. Со временем IntelliSense определяет, какая переменная или функция наиболее вероятно нужна пользователю. IntelliSense также отображает краткое описание функции во всплывающем окне — в зависимости от объема документации в исходном коде функции. Эта функция также позволяет пользователям выбирать из нескольких перегруженных функций в языках, поддерживающих объектно-ориентированное программирование. Некоторые редакторы кода предоставляют интеллектуальное дополнение кода через сервер протокола языкового сервера (LSP).
История
Исследования в области интеллектуального завершения кода начались в 1957 году с появлением программ проверки орфографии для растровых изображений рукописного текста и специальных приложений для поиска записей в базах данных, несмотря на ошибки ввода. В 1961 году Лес Эрнест, руководивший исследованиями в этой развивающейся области, посчитал необходимым включить первую программу проверки орфографии, которая использовала список из 10 000 допустимых слов. Ральф Горин, аспирант под руководством Эрнеста, создал первую полноценную программу проверки орфографии, разработанную как приложение (а не в рамках исследований) для общего английского текста. SPELL, для DEC PDP 10 в Лаборатории искусственного интеллекта Стэнфордского университета (SAIL), была опубликована в феврале 1971 года. Горин написал программу на языке ассемблера для повышения скорости работы; он реализовал её путем поиска в списке слов вероятных правильных написаний, отличающихся одной буквой или перестановкой соседних букв, и представления их пользователю. Горин сделал SPELL общедоступной, как и большинство программ SAIL, и вскоре она распространилась по всему миру через новую сеть ARPANET, примерно за десять лет до широкого распространения персональных компьютеров. SPELL, её алгоритмы и структуры данных послужили вдохновением для программы Ispell, используемой в Unix.
Визуальная студия
IntelliSense — это реализация Microsoft технологии автозавершения кода, наиболее известная в Visual Studio. Она впервые была представлена как функция основного продукта Microsoft в 1996 году, основанная на множестве уже существующих концепций автозавершения кода и проверки синтаксиса, в составе Visual Basic 5.0 Control Creation Edition, которая фактически являлась общедоступным прототипом Visual Basic 5.0. Первоначально среда разработки Visual Basic IDE служила основной "испытательной площадкой" для этой технологии, но IntelliSense был также включен в Visual FoxPro и Visual C++ в рамках Visual Studio 97 (один релиз после первого появления в Visual Basic). Поскольку он базировался на возможностях интроспекции COM, версии IntelliSense для Visual Basic всегда были более надежными и полными, чем версии 5.0 и 6.0 (97 и 98 в последовательности названий Visual Studio) для Visual C++, которые не имели преимуществ, связанных с полной реализацией на основе COM. Эти недостатки (на которые многие разработчики VC++ жаловались с момента выхода версии 97) в значительной степени были устранены в продуктах .NET. Например, одной из наиболее востребованных функций, отсутствовавших в продуктах до .NET, была поддержка шаблонов, которая теперь полностью реализована. IntelliSense перешел на новый этап развития с появлением унифицированной среды Visual Studio .NET, впервые выпущенной в 2001 году, дополненной более мощными возможностями интроспекции и документации кода, предоставляемыми платформой .NET. IntelliSense теперь поддерживается редакторами Visual Studio для C++, C#, J#, Visual Basic, XML, HTML и XSLT, среди прочих. Начиная с Visual Studio 2005, IntelliSense активируется по умолчанию при начале ввода текста пользователем, вместо требования специальных символов-маркеров (хотя это поведение можно отключить). Среда разработки способна выводить больше контекста на основе вводимого разработчиком текста, вплоть до включения основных языковых конструкций, таких как и , в список предлагаемых вариантов. В 2017 году Microsoft представила IntelliCode, который использует машинное обучение для определения наиболее вероятной предполагаемой функции языка или библиотеки при каждом нажатии клавиши. Первоначально доступный как расширение только для C#, ожидается, что он будет встроен в будущие выпуски Visual Studio. Visual Studio 2022 включает в себя функции искусственного интеллекта, такие как GitHub Copilot, которые могут автоматически предлагать целые строки кода на основе окружающего контекста. Другие продукты Microsoft, в которых реализована технология IntelliSense, включают Expression Web, FrontPage 2003, Small Basic, среды разработки Visual Basic для приложений в продуктах Microsoft Office, Visual Studio Code и многие другие. SQL Server 2008 Management Studio имеет функцию автозаполнения синтаксиса SQL.
Затмение
Eclipse IDE имеет инструменты автозавершения кода, которые поставляются вместе с программой. Она обеспечивает значительную поддержку при написании кода на Java, C++ и JavaScript. Проект Code Recommenders Eclipse ранее предоставлял мощные интеллектуальные подсказки при автозавершении, но из-за нехватки ресурсов был исключен из Eclipse 2018–12, а затем архивирован в июле 2019 года.
Вим
Vim Intellisense — это продвинутая система автодополнения кода для редактора Vim.