- PVSM.RU - https://www.pvsm.ru -
Машинное обучение продолжает проникать в самые разные сферы человеческой деятельности, и такая технологичная область, как разработка ПО, конечно, не могла стать исключением. По прогнозу специалиста по ИИ и машинному обучению Сергея Маркова, озвученному в лекции «Итоги ИИ-2019» [1], в 2020-м году появится большое количество инструментов разработки, использующих машинное обучение. Это навело меня на мысль, что какие-то из этих инструментов должны быть доступны на рынке уже сейчас — могут ли они в таком случае помочь «в быту» обычному веб-девелоперу, пишущему на Java, Python и JS?
Забегая вперед, скажу, что, к моему сожалению, решений, способных генерировать хоть сколько-нибудь «боевой» код, в открытом доступе сейчас нет. Ближе всего к этому подошли Bayou [2] и DeepCoder, но и эти проекты всё еще слишком сырые. Больший прогресс наблюдается в смежных направлениях — таких как автокомплит, статический анализ, генерация тестов. Об этом я и расскажу в статье.

Сайт: https://kite.com/ [3]
Цена: Полностью бесплатный.
Плагин для ускорения написания кода при помощи «умного» автодополнения. Kite индексирует кодовую базу проекта, что подразумевает показ наиболее релевантных подсказок. Помимо собственно автокомплита, при необходимости можно в один клик раскрыть встроенную документацию с примерами кода для 800+ библиотек (наиболее полезно для библиотек типа numpy или pandas). Раз в неделю на почту присылается отчет со статистикой использования функции автоподстановки.

Предложения Kite (помечены значком) намного релевантнее нативных. Pop-up с документацией подскажет, что можно передать в kwargs
Раньше Kite отправлял небольшие куски кода на сервер, что многим не подходит по соображениям безопасности, но — хорошая новость! — сейчас Kite от этой практики отказался, и весь анализ происходит локально. В использовании плагин вполне дружелюбен — легко устанавливается и шустро работает, не загружая систему. Kite поддерживает большинство популярных IDE: Idea,PyCharm, Sublime, Vim, Vs code, Spyder и Atom.

В сухом остатке: пожалуй, самый готовый для боевого использования проект в подборке. Рекомендую всем, кто пишет на Python.
Для других языков есть аналогичные продукты — Codota для Java или TabNine, который поддерживает 22 языка. Не успел их распробовать, но по ощущениям, Codota предлагает более консервативные подсказки, в то время как TabNine (для Java) предлагает целые куски кода, включая имена переменных (иногда без всякого контекста) и попадает в точку.
Сайт: https://www.deepcode.ai/ [4]
Цена: Cloud версия бесплатна для opensource-проектов и команд до 30 человек. Есть self-hosted вариант для GitLab и BitBucket Enterprise, цена договорная.
По меткому выражению разработчиков, DeepCode — это Grammarly для кода. Назначение — помощь разработчику в обнаружении ошибок и уязвимостей в коде. Self-hosted решение поставляется в виде docker-контейнера, интегрируется в систему контроля версий через хуки и настраивается буквально за 10 минут. Также доступен бот для проверки пулл-реквестов. Заявлена поддержка языков Java, Python, JavaScript, и TypeScript.

Пример рекомендации DeepCode
Впечатления от использования: очень порадовал низкий процент ложных срабатываний. Все найденные проблемы были вполне реальными и не выстреливали по не зависящим от качества проверки причинам (код с багами не запускался, небезопасный код не использовал пользовательский ввод). Предупреждения, связанные с производительностью, также выглядят вполне резонно. Количество обнаруженных проблем в сравнении с анализатором Java кода FineBugs или той же PVS-Studio выглядит незначительным — 200 против 2-4 тысяч. Не знаю, считать ли это плюсом, но 200 штук по крайней мере реально разобрать, чего не скажешь о 4 тысячах.

Бот проверяет каждый pull request
В сухом остатке: если при работе с линтерами вас всегда расстраивало количество ложных срабатываний, стоит попробовать DeepCode. Также это отличный способ контрибьютить в opensource: форкните проект себе, прогоните тест — и парочка полезных pull requests у вас в кармане.
Сайт: https://www.diffblue.com/ [5]
Цена: 3375$ в месяц для команды из 25 человек. Бесплатный тариф для индивидуального использования пока в планах.
Этот продукт выглядит самым амбициозным в подборке. Британский стартап, в прошлом году получивший 20 миллионов в качестве инвестиции от Goldman Sachs. Если изначально я искал что-то, что генерирует код по тестам, то DiffBlue генерит тесты по коду с возможностью встраивания в CI. Продукт отличает хорошая интеграция с тестовой инфраструктурой Spring Boot. Работает с Gradle, Maven, testng, Junit.
Разработчиком заявлены два режима работы:
DiffBlue поставляется как CLI утилита для встраивания в CI или как плагин к IntelliJ IDEA для генерации тестов в процессе разработки.

DiffBlue сам мокает классы, генерирует фикстуры и ассерты.
На реальных проектах DiffBlue показал себя неоднозначно.

Бывает и так. Для класса с десятком публичных методов и сложной логикой получилась пустышка.
В сухом остатке: если бы все заработало, как задумывалось, это было бы очень круто и имело смысл, но до этого пока далеко. Версия 0.1 показывает, что у ребят еще все впереди.
Использование ИИ для программирования набирает обороты, но пока индустрия еще в самом начале пути. Возможных областей применения множество: в некоторых уже наметилась конкуренция, в других пока представлены только единичные продукты. Главная и самая, казалось бы, очевидная цель — генерация собственно кода — еще никем не взята, но повысить скорость разработки, уменьшить количество багов в старом коде и предотвратить появление новых искусственный интеллект способен уже сейчас.
Автор: densol92
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/iskusstvenny-j-intellekt/347974
Ссылки в тексте:
[1] «Итоги ИИ-2019»: https://youtu.be/ks_kAK4eXEs
[2] Bayou: https://www.i-programmer.info/news/90-tools/11767-bayou-ai-to-help-you-code.html
[3] https://kite.com/: https://kite.com/
[4] https://www.deepcode.ai/: https://www.deepcode.ai/
[5] https://www.diffblue.com/: https://www.diffblue.com/
[6] Источник: https://habr.com/ru/post/490280/?utm_campaign=490280&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.