В последние годы искусственный интеллект быстро развивался и применялся во всех сферах жизни, особенно в последние два года появились инструменты разработки ИИ для разработчиков, из которых мы видим безграничные возможности, которые ИИ может предоставить разработчикам. Эта серия статей посвящена Kite, Codota, TabNine, GitHub Copilot, Microsoft IntelliCode, Alibaba Cloud Cozy и AIXcoder, которые являются одними из самых популярных интеллектуальных инструментов кодирования, и за ними последуют более подробные и личные сравнительные обзоры.

В прошлой статье мы представили Codota, в этой статье мы рассмотрим инструмент, выпущенный за последние два года, TabNine, официальная домашняя страница: https://www.tabnine.com.

TabNine — это относительно молодой инструмент разработки, который все еще был довольно удивительным, когда он был впервые выпущен, вскоре после того, как OpenAI открыл исходный код модели GPT-2. TabNine был основан на модели GPT-2 и дважды обучался на больших данных кода, чтобы создать механизм глубокого обучения для кода, который может интеллектуально идентифицировать вышеуказанную информацию о коде и предоставлять длинные последовательности результатов завершения кода. Теперь он был приобретен Codota и является основным промоутером инструмента, заявляя, что он поддерживает все основные языки разработки.

Функции поддержки

Интеллектуальное завершение кода

  • Поддерживает более 20 основных языков разработки.
  • Бесплатная версия предоставляет только более простые функции исправления, платная версия Pro обеспечивает более качественное исправление.
  • Режим удаленного обслуживания, при котором код необходимо загрузить на удаленный сервер, но модели более мощные и занимают меньше места в локальной памяти.
  • Автономный режим, который позволяет вам загружать модель локально и использовать исправление, даже если вы не подключены к Интернету, но объем локальной памяти высок, а иногда может резко увеличиться загрузка ЦП.
  • Профессиональная версия предоставляет возможность адаптировать корпоративный/частный код за плату.

Метрический анализ

  • Простые данные о производительности кодирования предоставляются в среде IDE.

Официальная демоверсия

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

Опыт

По опыту работы с языком Java TabNine может генерировать более длинные последовательности кода для многих случаев, поддерживая не только кодовые символы, но и строки, комментарии, Javadoc и другой автозапрос содержимого, что все еще удобно в этом отношении, но, как правило, автоподсказка подсказки не очень эффективны, ведь генерация такого рода информации требует понимания кода, а TabNine можно генерировать только по выученным выше шаблонам, толком не понимая логики кода. В дополнение к файлам Java файлы, связанные с проектом Java, такие как Yaml, файлы свойств и другие файлы конфигурации, также могут автоматически запрашиваться в соответствии с приведенным выше шаблоном.

Однако TabNine часто рекомендует полусгенерированные результаты завершения и часто рекомендует API, которых нет в проекте. Наиболее неприемлемым аспектом этого является очень высокое использование памяти, а иногда и высокая загрузка процессора при использовании автономного режима.

Давайте рассмотрим несколько примеров (следующие примеры основаны на версии TabNine Pro).

1. Завершения кода, предоставляемые TabNine, часто приводят к неполным фрагментам кода, таким как HSSFWork на изображении ниже.

XSS на изображении ниже также неполный, а параметр sheet = new XSSFRow не является синтаксическим, sheet соответствует классу XSSFSheet.

2. Поскольку вывод модели глубокого обучения требует очень много времени, TabNine будет генерировать код с помощью облегченной модели для первого триггера и кэшировать результаты модели глубокого обучения для следующего триггера по соображениям производительности, поэтому, если мы повторно запустим код в той же позиции курсора, TabNine даст нам лучшие результаты. На обоих изображениях выше показаны результаты первого триггера, а на изображении ниже показаны результаты второго триггера. Вы можете видеть, что генерация кода гораздо менее наполовину усечена, но все же есть синтаксические ошибки.

3. TabNine предоставляет относительно длинные дополнительные результаты, но, к сожалению, метод getSheetCount не существует и имеет синтаксическую ошибку.

4. Самое приятное то, что TabNine лучше изучает код, который появился раньше, и может быстро изучить появившиеся шаблоны кода.

Более подробный сравнительный обзор TabNine будет представлен в следующей статье, поэтому я не буду вдаваться в подробности здесь. В общем, TabNine обеспечивает длинные последовательности завершения кода и имеет самое большое разнообразие поддерживаемых языков разработки и платформ IDE среди всех инструментов такого рода, с которыми мне приходилось сталкиваться. Однако, как и в случае с другими инструментами, он будет рекомендовать неполный код и код с синтаксическими ошибками. Отзывы некоторых разработчиков говорят о том, что некоторым из них нравится возможность изучать шаблоны кода на лету, что является хорошей функцией по сравнению с другими инструментами, хотя возможность извлечения шаблонов кода все еще несовершенна, но я считаю, что она будет улучшена в будущем. будущее.

Если вы заинтересованы в TabNine, вы можете установить его на рынке подключаемых модулей IDE, выполнив поиск по запросу TabNine, и вы можете поделиться своими отзывами в комментариях. В следующем выпуске этой серии вы найдете GitHub Copilot, инструмент кодирования, так что следите за обновлениями!