Новости и события » Hi-Tech » Система машинного обучения для синтеза типового кода на языке Java

Система машинного обучения для синтеза типового кода на языке Java

Как сообщает opennet.ru группа исследователей из университета Райса (США) развивает интеллектуальный ассистент разработчика Bayou, позволяющий частично автоматизировать процесс написания кода на языке Java. Проект использует алгоритмы глубинного машинного обучения и модель, натренированную на примерах рабочего Java-кода, представленного на GitHub. Наработки проекта открыты под лицензией Apache 2.0, код написан на Java и Python. Модель машинного обучения реализована при помощи платформы Tensorflow и инструментария scikit-learn.

На основе задаваемых разработчиком меток c упоминанием методов API и типов данных, которые следует использовать в коде, Bayou позволяет синтезировать готовые программные блоки с реализацией шаблонов использования Java API, соответствующих контексту уже имеющегося кода. Иными словами, Bayou позволяет использовать методы машинного обучения для воплощения парадигмы разработки copy&paste, при которой разработчик находит и использует готовые куски кода, применяемые в других проектах.

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

Online-демонстрацию возможностей Bayou можно найти на данной странице. Например, при возникновении задачи написания кода для чтения из файла разработчик может добавить метку "{ /// call:readLine }":

import java.io.File; public class Test { void read(File file) { { /// call:readLine } } }

После обработки данной конструкции будет предложен готовый вариант кода:

import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.FileNotFoundException; import java.io.FileReader; public class TestIO { void read(File file) { { FileReader fr1; BufferedReader br1; String s1; try { fr1 = new FileReader(file); br1 = new BufferedReader(fr1); s1 = br1.readLine; } catch (FileNotFoundException _e) { } catch (IOException _e) { } return; } } }

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

В текущем виде система требует задания достаточно точных меток, не поддерживает указание масок для типов и может использовать лишь ограниченный набор API (java.lang, java.io и java.util). В будущем разработчики намерены реализована возможность формирования запросов на естественном языке и добавить функциональность интерактивной оболочки, позволяющей выбирать разные варианты кода и уточнять свои пожелания. В более отдаленной перспективе планируется обеспечить генерацию более сложного кода, включающего группы методов или классов.


Maxtang MAX-N100 - мини-ПК со встроенным блоком питания как у Mac...

Maxtang MAX-N100 - мини-ПК со встроенным блоком питания как у Mac mini

В продажу поступил новый компактный компьютер Maxtang MAX-N100 Mini PC. Единственное, чем он примечателен, это встроенный блок питания как у Mac mini (2024). У большинства современных мини-ПК блок питания внешний, но Maxtang MAX-N100 Mini PC - не тот...

сегодня 15:15

Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх