DARPA финансирует проект большой базы данных кода


DARPA выделило 11 миллионов долларов на проект, инициированный в Университете Райса, который направлен на «автозаполнение» и «автокоррекцию» кода с использованием базы данных «всего доступного кода в мире». Это безумие?

Фонды, срок действия которых составляет четыре года. предназначены для проекта PLINY, в котором будут участвовать более двух десятков компьютерных ученых из Райса, Техасского университета в Остине, Университета Висконсин-Мэдисон и компании GrammaTech в рамках программы DARPA Mining and Understanding Software Enclaves (MUSE).

MUSE, анонсированный в начале этого года:

«стремится добиться значительных успехов в способах создания, отладки, проверки, обслуживания и понимания программного обеспечения. Центральным элементом его подхода является создание инфраструктуры сообщества, построенной вокруг большого, разнообразного и развивающегося корпуса программного обеспечения, созданного из сотен миллиардов строк открытого исходного кода, доступных сегодня »

Проект PLINY получил свое название от Плиния Старшего, автора первого века общей эры одной из первых в мире энциклопедий, и его цель — создать и использовать массивный репозиторий открытого исходного кода, чтобы программист мог написать первую. несколько строк собственного кода, а остальные автоматически появляются, «подобно программному обеспечению для выполнения поисковых запросов и исправления орфографии в современных веб-браузерах и смартфонах».

Подробная информация о PLINY в этом видео. Вивек Саркар, председатель отдела компьютерных наук Райс и главный исследователь проекта, использует стопку файлов и кусочки цветной бумаги, чтобы проиллюстрировать, как это будет работать. Он объясняет, что дело не только в том, чтобы поместить текст всего доступного кода в базу данных, вместо этого исследователи хотят извлечь интересные функции, такие как функции, переменные, зависимости. Саркад продолжает, что с терабайтами данных, собранными таким образом в «большой базе данных кода»,

«Вопрос в том, как его можно использовать, чтобы помочь программистам писать новый код или исправить старый».

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

Саркар заключает, говоря:

Райс исторически был сильным в программировании, языки программирования теперь становятся все более сильными в больших данных, и захватывающая часть этого проекта заключается в том, что они действительно собираются объединиться.

[У нас] команда мечты, которая стремится решить действительно важную проблему для будущего компьютерного программного обеспечения.

Почему я не убежден — после всего этого питч собрал 11 миллионов долларов от DARPA? Множество причин — я уверен, что вы сможете придумать больше. Чтобы перечислить всего три

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

Идея использования шаблонов проектирования и фрагментов кода, которые их выполняют, далеко не нова.

И хотим ли мы сгенерировать тот же самый старый код — это похоже на препятствие для каких-либо действительно новых идей.

Даже в естественных языках существует проблема того, что синтаксические правила уступают место семантической свободе по мере увеличения длины текста.

Для коротких фрагментов текста синтаксис ограничивает то, что может быть рядом с небольшим набором возможностей. Если вы пытаетесь прогнозировать все дальше и дальше вперед, то синтаксис становится менее ограничивающим, и вы можете выбирать, что будет дальше, в зависимости от смысла. Задача завершения кода для больших фрагментов кода похожа на попытку предсказать текст романа по первому предложению. В малых масштабах синтаксис ограничивает. В большем масштабе семантические возможности множатся. Это то, что делает язык значимым.

Причина еще более глубокая — компьютерные языки совсем не похожи на естественные. Это в первую очередь делает неприемлемыми аналогии вроде автокоррекции. Вы можете возразить, что компьютерные языки имеют строгий синтаксис, и поэтому они должны быть подвержены еще большим статистическим закономерностям. Большая проблема в том, что компьютерные языки всегда критически нестабильны. Возьмите человеческий язык и удалите слово или даже замените слово, и хотя оно может показаться неправильным или странным, значение сохранится. Теперь попробуйте это с программой, и в результате будет что-то, что не может быть запущено вообще, и если оно все же запустится, результат не будет связан с тем, что он делал раньше. Код, близкий по тексту, может сильно отличаться по поведению.

Компьютерные языки очень чувствительны к небольшим изменениям, а рабочие программы — это языковые системы на грани хаоса. Это делает статистические методы более чем сложной задачей.


Добавить комментарий