Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Intellisense )
Перейти к навигации Перейти к поиску

Интеллектуальное завершение кода [1] - это контекстно-зависимая функция завершения кода в некоторых средах программирования, которая ускоряет процесс кодирования приложений за счет уменьшения количества опечаток и других распространенных ошибок. Попытки сделать это обычно делаются с помощью всплывающих окон с автозаполнением во время набора текста, запроса параметров функций, подсказок запросов, связанных с синтаксическими ошибками. Интеллектуальное завершение кода и связанные с ним инструменты служат для документирования и устранения неоднозначности для имен переменных , функций и методов с использованием отражения . [2]

Эта функция появляется во многих средах программирования. [3] [4] Реализации включают «автозаполнение +» в Atom и IntelliSense в Visual Studio Code . Этот термин изначально был популяризирован как «список выбора», и некоторые реализации до сих пор называют его таковым. [5]

Обзор [ править ]

Интеллектуальное автозавершение кода, подобное другим системам автозаполнения , представляет собой удобный способ доступа к описаниям функций и, в частности, их спискам параметров. Эта функция ускоряет разработку программного обеспечения за счет сокращения ввода с клавиатуры и необходимости запоминания имен. Это также позволяет пользователям реже обращаться к внешней документации, поскольку интерактивная документация по многим символам (т. Е. Переменным и функциям) в активной области отображается динамически в виде всплывающих подсказок . [6]

Интеллектуальное завершение кода использует автоматически сгенерированную в памяти базу данных классов, имен переменных и других конструкций, на которые данный компьютерный код определяет или ссылается. «Классическая» реализация IntelliSense работает, обнаруживая символы-маркеры, такие как точки (или другие символы-разделители, в зависимости от языка). Когда пользователь вводит один из этих символов сразу после имени объекта, имеющего один или несколько доступных членов (например, содержащихся переменных или функций), IntelliSense предлагает совпадения во всплывающем диалоговом окне. Пользователь может принять предложение, набрав символ завершения оператора ( Tab ↹или ↵ Enter), либо маркер, зависящий от языка (например, точка с запятой для C ++.) или продолжайте вводить имя. Со временем IntelliSense определяет, какая переменная или функция наиболее вероятно понадобится пользователю. IntelliSense также отображает краткое описание функции во всплывающем окне - в зависимости от объема документации в исходном коде функции .

Эта функция также позволяет пользователям выбирать из ряда перегруженных функций на языках, поддерживающих объектно-ориентированное программирование . Некоторое программное обеспечение для редактирования кода обеспечивает интеллектуальное завершение кода через сервер протокола языкового сервера (LSP).

История [ править ]

Исследования интеллектуального автозавершения кода начались в 1957 году с программ проверки орфографии для растровых изображений курсивного письма и специальных приложений для поиска записей в базах данных, несмотря на неправильные записи. В 1961 году Лес Эрнест , возглавлявший исследования этой многообещающей технологии, счел необходимым включить первую программу проверки орфографии, которая обращалась к списку из 10 000 допустимых слов. [7] Ральф Горин, в то время аспирант Эрнеста, создал первую настоящую программу проверки орфографии, написанную в виде приложения (а не исследования) для общеанглийского текста. SPELL для DEC PDP-10 в Лаборатории искусственного интеллекта (SAIL) Стэнфордского университета был опубликован в феврале 1971 года. [8] Горин написал программу насборка для более быстрого действия; он сделал это, выполнив поиск в списке слов на предмет правдоподобных правильных написаний, которые отличаются одной буквой или транспонированием соседних букв, и представив их пользователю. Горин сделал SPELL общедоступным, как это было сделано с большинством программ SAIL, и вскоре он распространился по миру через тогда еще новую ARPANET , примерно за десять лет до того, как персональные компьютеры стали широко использоваться. [9] SPELL и его алгоритмы и структуры данных вдохновили Unix- программу Ispell .

Поддержка в редакторах и IDE [ править ]

Visual Studio [ править ]

IntelliSense - это реализация завершения кода от Microsoft , наиболее известная в Visual Studio . Впервые он был представлен как функция основного продукта Microsoft в 1996 году, основанный на многих уже изобретенных концепциях завершения кода и проверки синтаксиса, с Visual Basic 5.0 Control Creation Edition, который был, по сути, общедоступным прототипом Visual Basic 5.0. Первоначально среда разработки Visual Basic была основным «испытательным стендом» для этой технологии, но IntelliSense был включен в Visual FoxPro и Visual C ++ в сроки Visual Studio 97 (одна ревизия после того, как впервые появилась в Visual Basic). Поскольку он был основан на возможностях самоанализа COM, версии Visual Basic IntelliSense всегда были более надежными и полными, чем версии Visual C ++ 5.0 и 6.0 (97 и 98 в последовательности именования Visual Studio), которые не были полностью основаны на COM. Эти недостатки (подвергавшиеся критике со стороны многих разработчиков VC ++ после выпуска 97) были в значительной степени исправлены в линейках продуктов .NET . Например, одной из наиболее востребованных возможностей, отсутствовавших в продуктах до .NET, была поддержка шаблонов , которая теперь полностью реализована. [10]

IntelliSense вступил в новую фазу разработки с унифицированной средой Visual Studio.NET, впервые выпущенной в 2001 году, дополненной более мощными возможностями самоанализа и документирования кода, предоставляемыми платформой .NET. IntelliSense теперь поддерживается редакторами Visual Studio для C ++ , C # , J # , Visual Basic , XML , HTML и XSLT среди других. Начиная с Visual Studio 2005 , IntelliSense теперь активируется по умолчанию, когда пользователь начинает печатать, вместо того, чтобы требовать символы маркера (хотя это поведение можно отключить). IDEимеет возможность вывести больший объем контекста на основе того, что вводит разработчик, до такой степени, что базовые языковые конструкции, такие как for и while , также включаются в список выбора. В 2017 году Microsoft анонсировала IntelliCode [11], который использует машинное обучение, чтобы точно определить, какой язык или функция библиотеки, вероятно, будет использоваться при каждом нажатии клавиши. Первоначально доступный как расширение только для C #, ожидается, что он будет встроен в будущие выпуски Visual Studio.

Другие продукты Microsoft, включающие IntelliSense, включают Expression Web , FrontPage 2003 , Small Basic , IDE Visual Basic для приложений в продуктах Microsoft Office , Visual Studio Code и многие другие. SQL Server 2008 Management Studio имеет автозаполнение для синтаксиса SQL.

Затмение [ править ]

В Eclipse IDE есть инструменты автозавершения кода, которые поставляются вместе с программой. [12] [13] Он включает заметную поддержку разработки кода Java, C ++ и JavaScript. Проект Code Recommenders Eclipse, использовавшийся для обеспечения мощного интеллектуального завершения, [14], но из-за нехватки ресурсов был исключен в Eclipse 2018–12, а затем заархивирован в июле 2019 года. [15] [16] [17]

Vim [ править ]

Vim Intellisense [18] - это усовершенствованная система автозавершения кода для редактора Vim .

Пример [ править ]

Предположим, что приложение C ++, редактируемое в Visual Studio, имеет класс Foo с некоторыми функциями-членами:

класс  Foo  {  общественность :  пустая  бар ();  void  foo_bar ( char  c ,  int  n ); };

Когда разработчик ссылается на этот класс в исходном коде, например:

Foo  foo ; фу .

как только пользователь вводит точку после foo, IntelliSense автоматически перечисляет все доступные функции-члены (т. е. bar()и foo_bar()) и все доступные атрибуты элементов (частные и защищенные элементы могут быть идентифицированы по изображению замка рядом с их именами). Затем пользователь может выбрать один, используя клавиши со стрелками и нажав символ завершения, когда выделена правильная функция-член. Когда доступно, IntelliSense отображает краткое описание функции-члена, как указано в документации к исходному коду.

IntelliSense идет дальше, указывая необходимые параметры в другом всплывающем окне по мере того, как пользователь вводит параметры. Когда пользователь вводит имя переменной, функция также предлагает дополнить переменную по мере их ввода. IntelliSense продолжает показывать параметры, выделяя соответствующий параметр по мере ввода пользователем.

Пользователь может «заставить» IntelliSense показывать свой всплывающий список без контекста, используя Ctrl+ Jили Ctrl+ Space. В Visual Studio здесь отображается вся объектная модель предметной области приложения, доступная разработчику.

Заметки [ править ]

  1. ^ Брух, Марсель; Монперрус, Мартин; Мезини, Мира (2009). «Обучение на примерах для улучшения систем автозавершения кода». Материалы 7-го совместного заседания Европейской конференции по программной инженерии и симпозиума ACM SIGSOFT по основам программной инженерии на Европейской конференции по программной инженерии и симпозиума по основам программной инженерии - ESEC / FSE '09 . п. 213. DOI : 10,1145 / 1595696,1595728 . ISBN 9781605580012.
  2. ^ Автозаполнение | Определите автозаполнение на Dictionary.com . Dictionary.reference.com. Проверено 4 апреля 2014.
  3. ^ FAQ - CodeBlocks . Wiki.codeblocks.org (01.02.2014). Проверено 4 апреля 2014.
  4. ^ Документация Qt - Завершающий код . Проверено 7 июля 2015.
  5. ^ Использование Dynamic Apex для получения значений списка выбора | Блог разработчиков Force . Blogs.developerforce.com (9 декабря 2008 г.). Проверено 4 апреля 2014.
  6. ^ Мурах. C # 2005 . п. 56.
  7. ^ Эрнест, Лес. «Первые три средства проверки правописания» (PDF) . Стэндфордский Университет. Архивировано из оригинального (PDF) 22 октября 2012 года . Проверено 10 октября 2011 года .
  8. Петерсон, Джеймс (декабрь 1980 г.). Компьютерные программы для обнаружения и исправления орфографических ошибок (PDF) . Проверено 18 февраля 2011 года .
  9. ^ Эрнест, Лес. Видимое наследие Y3K (PDF) . Архивировано из оригинального (PDF) 20 июля 2011 года . Проверено 18 февраля 2011 года .
  10. ^ Использование IntelliSense . Msdn.microsoft.com. Проверено 4 апреля 2014.
  11. ^ Visual Studio IntelliCode
  12. ^ http://www.eclipse.org/articles/article.php?file=Article-Unleashing-the-Power-of-Refactoring/index.html
  13. ^ http://www.ibm.com/developerworks/library/os-eclipse-refactoring/
  14. ^ Рекомендации по коду Eclipse: все дело в интеллектуальном завершении кода . Code-recommenders.blogspot.com (03.05.2010). Проверено 4 апреля 2014.
  15. ^ 542689 - Не включайте Рекомендации по коду на 2018-12 гг.
  16. ^ cross-project-issues-dev Удаление рекомендаций кода из SimRel
  17. ^ Архивные проекты | Фонд Затмения
  18. ^ Vim Intellisense . Insenvim.sourceforge.net. Проверено 4 апреля 2014.

Внешние ссылки [ править ]

  • Торре, Чарльз (24 января 2008 г.). «Арджун Биджанки: понимание VC Intellisense» (видео) . Канал9 . Microsoft.
  • «Использование IntelliSense» . VS .NET 2003 (изд. 2015 г.). MSDN. Архивировано из оригинала на 2005.
  • «Учебное пособие по IntelliSpeed» (видео) . Визуальный пролог .