The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Система машинного обучения для синтеза типового кода на язык..."
Отправлено opennews, 27-Апр-18 10:04 
Группа исследователей из университета Райса (США) разработала (https://arxiv.org/pdf/1703.05698.pdf) интеллектуальный ассистент разработчика Bayou (https://github.com/capergroup/bayou), позволяющий частично автоматизировать процесс написания кода на языке Java. Проект использует алгоритмы глубинного  машинного обучения и модель, натренированную на примерах рабочего Java-кода, представленного на GitHub. Наработки проекта открыты (https://github.com/capergroup/bayou) под лицензией Apache 2.0, код написан на Java и Python. Модель машинного обучения реализована при помощи платформы Tensorflow (https://www.opennet.ru/opennews/art.shtml?num=46058) и инструментария scikit-learn (http://scikit-learn.org/).


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

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

Online-демонстрацию возможностей Bayou можно найти на
данной странице (http://askbayou.com/).  Например, при возникновении задачи написания кода для чтения из файла разработчик может добавить метку "{ /// 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). В будущем разработчики намерены реализована возможность формирования запросов на естественном языке и добавить функциональность интерактивной оболочки, позволяющей выбирать разные варианты кода и уточнять свои пожелания. В более отдалённой перспективе планируется обеспечить генерацию более сложного кода, включающего группы методов или классов.


URL: https://www.theregister.co.uk/2018/04/26/java_coding_automat.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=48503

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру