DARPA вложит 11 миллионов долларов в проект, инициированный Университетом Райса. Его цель – создать систему «автодополнения» и «автокоррекции» кода при помощи базы данных «всего доступного в мире кода». Насколько это реально?
Деньги, которые предполагается потратить в течение четырех лет, пойдут на развитие проекта PLINY. Над ним будут работать более двух десятков компьютерных исследователей из Университета Райса, Университета Техаса, Университета Висконсина и компании GrammaTech. Этот проект является частью программы MUSE (Mining and Understanding Software Enclaves).
MUSE, анонсированная в начале этого года, «стремится добиться значительного прогресса в том, как создается, отлаживается, проверяется, поддерживается и понимается программное обеспечение. Центральное место в этой программе занимает создание общественной инфраструктуры вокруг большой, разнообразной и развивающейся базы ПО, собранной из сотен миллиардов строк открытого кода, доступного сегодня».
Цель проекта PLINY, который назвали в честь Плиния Старшего, автора одной из первых энциклопедий, созданной в первом веке нашей эры, состоит в создании и использовании большого репозитория open source кода, с помощью которого программист мог бы написать первые несколько строчек кода, а система автоматически дополнила бы его. Во многом «это напоминает автодополнение для поисковых запросов или исправление грамматики в браузерах и смартфонах».
В этом видео Вивек Саркар, глава департамента компьютерных наук в Райсе и главный исследователь в проекте PLINY объясняет принципы работы проекта на примере цветной бумаги.
Он объясняет, что дело не просто в том, чтобы собрать весь доступный в мире код в базу данных. Исследователи хотят вычленить интересные особенности, такие как функции, переменные, зависимости. С терабайтами данных, накопленных в «большой базе данных кода», продолжает Саркар, «вопрос в том, как их можно использовать для помощи программистам в написании нового кода или исправлении старого».
Ответ дает Сварат Чодхери, ассистент профессора компьютерных наук в Райса. Он при помощи бумаги и ножниц объясняет, как PLINY будет работать с неполным кодом: в конце концов, система должна вернуть программисту код, наиболее подходящий тому, что уже написано.
Саркар делает вывод, что его «команда мечты должна решить действительно важную для будущего компьютерного программного обеспечения проблему».
Какие сложности будут у инженеров и пользователей? Скорее всего, база будет во многом повторяться и содержать код с ошибками, да сделать новый код с ее помощью вряд ли получится: новые идеи на основе старых шаблонов не придумать. Сама идея использовать шаблоны и снипеты в разработке далеко не нова. Кроме того, чем больше проект, тем вариантов дальнейшего развития все больше. Программирование можно сравнить с шахматной партией: на первом ходе у белых есть 20 вариантов, на втором – 29 и дальше это количество увеличивается в геометрической прогрессии. Так же и с кодом: одну строчку можно дополнить сравнительно легко, а пять уже практически невозможно. Умножьте это на разнообразие языков программирования, и вы поймете сложность проблемы.
Тем не менее, пока разработчики планируют в PLINY распознавать простые шаблоны и анализировать код на наличие ошибок и уязвимостей. Получится это в промышленных масштабах или нет, мы узнаем спустя 11 миллионов долларов и четыре года.