URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 114170
[ Назад ]

Исходное сообщение
"Система машинного обучения для синтеза типового кода на язык..."

Отправлено 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.me/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.me/opennews/art.shtml?num=48503


Содержание

Сообщения в этом обсуждении
"Система машинного обучения для написания типового кода на яз..."
Отправлено Аноним , 27-Апр-18 10:04 
Ничего, в скором будущем уже не потребуется знания  достаточно точных меток и тп.
Возможно, вообще программист не понадобится. Нужен будет толко оператор, который ТЗ вводит в программу.

"Система машинного обучения для написания типового кода на яз..."
Отправлено Антон , 27-Апр-18 10:17 
Ничего не будет такого. Программирование на более высокий уровень поднимется если только.

"Система машинного обучения для написания типового кода на яз..."
Отправлено Vkni , 28-Апр-18 17:41 
> Ничего не будет такого. Программирование на более высокий уровень поднимется если только.

Вот конкретно от этой инициативы ничего никуда не поднимется.


"Система машинного обучения для написания типового кода на яз..."
Отправлено анонимтут , 27-Апр-18 10:27 
О COBOL говорили тоже самое;p

"Система машинного обучения для написания типового кода на яз..."
Отправлено Очередной аноним , 28-Апр-18 09:04 
Да и SQL сначала предполагался как конечное звено, фронтэнд, в цепочке общения "обычной домохозяйки" с информационной системой. А на практике в некоторых запросах на много страниц без поллитры не разберешься.

"Система машинного обучения для написания типового кода на яз..."
Отправлено Аноним , 27-Апр-18 12:47 
Не нужно будет печатать, нужно будет проверять, не факт что в человеко-часах это будет дешевле

"Система машинного обучения для написания типового кода на яз..."
Отправлено Alex , 28-Апр-18 15:28 
Скорее всего из этого появится новый мета язык.
Описываешь модель какую-то, а потом эта модель преобразуется в программный код.
Таким образом, разработка приложений станет быстрее, возможно где-то действительно программист будет нужен минимально, только для контроля данных или отладки.
Появится новая профессия - мета-программист, который гораздо (в теории) будет эффективнее нынешних программистов, который будет писать на одном мета яызке, а его код будет компилироваться в тот, который наиболее подходит под задачу... Лет через 20-30 посмотрим, что из этого выйдет.

"Система машинного обучения для написания типового кода на яз..."
Отправлено Vkni , 28-Апр-18 17:29 
> Нужен будет толко оператор, который ТЗ вводит в программу.

То есть, программист. Потому, что чёткое и однозначное ТЗ называется программой.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 10:04 
> При возникновении задачи написания кода для чтения из файла разработчик может добавить метку "{ /// call:readLine }"

И в чем суть машинного обучения здесь?
Ровно то же самое десятилетиями успешно делается и без него.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Анонимидзе , 27-Апр-18 10:50 
Так можно ж пару грантов под это дело распилить, особо не напрягаясь

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Vkni , 28-Апр-18 17:29 
> Так можно ж пару грантов под это дело распилить, особо не напрягаясь

Вот это кажется самым разумным применением.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 11:00 
Это как снипеты, только ни автор ни разработчики этой системы не знают какой код будет написан:
корячишь ключевые слова после /// call:keyword и тебе выдаётся самый распространнённый код, подходящий к этим ключевым словам.

Болванчик туповат, но как-то работает:
/// call:exists

выдаёт
      String pathname1;
      boolean b1;
      b1 = file.exists();
      return;

причём это такие параметризуемые снипеты:
/// call:exists call:remove
      boolean b1;
      boolean b2;
      if ((b1 = file.exists())) {
        b2 = file.delete();
      } else {
      }
      return;

Наверное, эта забавная фишечка скоро будет в каждой крутой IDE


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено лютый жабист__ , 27-Апр-18 11:19 
> Наверное, эта забавная фишечка скоро будет в каждой крутой IDE

То есть ТОЛЬКО в Intellij :) хотя я и сейчас половину проблемы решил Live Template-ами, а вторую половину alt+tab, `grep -Ri keyword IdeaProjects/`

Если только научится со StackOverflow подтягивать результаты, это было бы неплохо :)


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено yyyy , 27-Апр-18 11:29 
Раньше такую кодогенерацию описывали правилами, и это было сложно, дорого и невоспроизводимо (каждый пишет эти правила заново), а теперь - примерами для обучения, и их можно переиспользовать. Саму нейросеть (эту или другую, обученную на тех же примерах) можно использовать в качестве блока в более сложной сети, позволяющей комбинировать блоки типового кода во всё более высокоуровневые конструкции.

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

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено yyyy , 27-Апр-18 11:33 
> То же самое относительно скоро (в ближайшие лет 10, я думаю) случится и с кодингом, не требующим сильно глубоких знаний. В большой степени он станет автоматическим переводом из ТЗ в код, достаточно пристойный и поддерживаемый.

Качество пока не очень, но это пока. Лет 10 назад над статистическим переводом посмеивались ребята, пилившие перевод при помощи правил, а над нейронными сетями - ребята, занимавшиеся языковыми моделями.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 11:35 
Главное, чтобы наборы для обучения машинного кодинга были не от АНБ, ФСБ и прочих "добрых" контор.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 20:03 
Да какая разница? Ключи всё равно потребуют сдать. Хотя бы от квартиры, где деньги лежат, если нет шифровальных....

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Анонимный Алкоголик , 28-Апр-18 05:30 
> автоматическим переводом из ТЗ в код, достаточно пристойный и
> поддерживаемый.

Компилятор однако. С некоего ТЗ. >:-)
(только с крайне вероятностно работающим результатом, если будет делаться гм... конкретно вами. Личности такие...)


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Vkni , 28-Апр-18 17:45 
> То же самое относительно скоро (в ближайшие лет 10, я думаю) случится
> и с кодингом, не требующим сильно глубоких знаний. В большой степени
> он станет автоматическим переводом из ТЗ в код, достаточно пристойный и
> поддерживаемый.

Ох. Профессия программиста автоматизируется с зарождения. И основное средство автоматизации называется "компилятор".

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено freehck , 30-Апр-18 02:24 
Ты не понимаешь, о чём говоришь. Для языков используются нейронки потому, что у живых языков правила не столь строгие. При это результат получается менее-более приемлемый для того, чтобы его мог понять человек, но уж точно далеко не идеальный.

Что касается программирования, то строгий формализм -- это явно не удел нейронок. Нейронка тут собственно почти не причём. Сам AST формируется разработчиком и подаётся ей на вход, а уж она просто пытается угадать, какие шаблоны кода подходят к тому или иному случаю.

То, что это работает в простых случаях -- это конечно здорово. Но если она, как и большинство нейронок, будет выбирать правильный шаблон лишь в 80% случаев -- это никуда не годится при проектировании сложных систем.

А впрочем, даже если в 99% случаев она будет права, Вы представляете себе ту боль, которой обернётся дебаг оставшегося одного процента её жизнедеятельности?

И это притом, что на вход ей всё равно нужно писать программу. На некоем языке шаблонов, но всё же программу. Не лучше ли просто взять более высокоуровневый язык, вот в чём вопрос?


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Vkni , 30-Апр-18 02:28 
> Не лучше ли просто взять более высокоуровневый язык, вот в чём вопрос?

И менее многословный, чем Java. Например, Haskell. :-)


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено freehck , 30-Апр-18 02:39 
>> Не лучше ли просто взять более высокоуровневый язык, вот в чём вопрос?
> И менее многословный, чем Java. Например, Haskell. :-)

Да, пожалуй, это одна из причин, по которым OCaml я люблю больше, чем Haskell. :)


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено yyyy , 08-Май-18 18:11 
Собственно, строгий формализм - это не удел и человека тоже.

Есть огромное количество однотипных бизнес-задач, где абсолютная корректность не нужна, а нужно, чтобы было написано быстро и дёшево и работало в этих 99% случаев, а убытки от оставшегося 1% с лихвой компенсирует экономия на разработке.

Эти задачи сейчас обслуживает армия низкоквалифицированных кодеров, которые уже, по сути, являются такими нейронками: им на вход приходит подробное ТЗ, а они выдают нечто, что работает как-то похоже на то, что просили.

А что касается эксперимента, то он пока что выглядит игрушечным, я с этим и не спорю.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 10:19 
О, эксепшены. В добрый путь.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Илья , 27-Апр-18 10:23 
а можно подробнее?

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено VladSh , 27-Апр-18 12:01 
Возможно имелось в виду возвращение результатов функциями как в Go.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Crazy Alex , 27-Апр-18 13:36 
Это, наверное, самый большой фейл Go

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 15:52 
Почему же, вполне удачная попытка обойтись без костылей C не ценой кидания исключений. Можно сделать получше, но и такой вариант весьма неплох.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 27-Апр-18 19:07 
> Почему же, вполне удачная попытка обойтись без костылей C не ценой кидания
> исключений. Можно сделать получше, но и такой вариант весьма неплох.

Exception-Driving-Development )


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Crazy Alex , 27-Апр-18 19:23 
Вообще-то исключения - при вменяемом проектировании, конечно - упрощают код и ускоряют приложение. Проблема, как обычно, в том, что вменяемо проектировать таки надо, а Go - это попытка сделать "нативный язык для обезьянки". В результате имееем несконаемую (и адски утомившую ещё с сей) простыню явных проверок на каждый вызов, которая адски загромождает код и на быстродействие влияет ни разу не лучшим образом.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 20:17 
> Вообще-то исключения - при вменяемом проектировании, конечно - упрощают код и ускоряют приложение.

Вообще-то это вопрос спорный. Александреску на этот счёт хорошо высказался: https://www.youtube.com/watch?v=R5PL1hyspSg
И, кстати, решение, которое он предлагает, выглядит лучше гошного.

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

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Forth , 27-Апр-18 21:12 
Смотря в каком языке. Если в Форте, то там исключения быстрая штука :)
В питоне тоже. Ну, по меркам питона :)

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 10:40 
> В питоне тоже. Ну, по меркам питона :)

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено angra , 28-Апр-18 10:42 
Это ты perl6 не видел.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено angra , 28-Апр-18 08:57 
Специально для "необезьянки" сообщаю, при помощи panic и recover ты можешь использовать в Go свой любимый стиль обработки ошибок всем скопом через исключения. Но среди "обезьянок" такой стиль считается неприемлемым из-за наличия более подходящего механизма. Поэтому твой код с исключениями и код "обезьянок" с возвращением ошибки будут плохо сочетаться в одном проекте.

Ну а еще "необязьянке" неплохо было бы освоить некоторые "обезьяньи" техники программирования вроде итераторов, врапперов  и кодогенераторов. А заодно при помощи бенча проверить насколько исключения "ускоряют" работу программы по сравнению с условиями.



"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 10:38 
Не надо тиражировать сказку про "обезьянок". Кто читал классическую "Практику программирования" Кернигана и Пайка, тот знает, что они уже там ругали жабовскую манеру кидать исключения на каждый чих. В Go реализован подход, соответствующий этой позиции, а "обезьянки" тут совершенно ни при чём.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено angra , 28-Апр-18 10:41 
В данном случае кавычки обозначали сарказм, а не цитирование.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено freehck , 30-Апр-18 02:35 
> Специально для "необезьянки" сообщаю, при помощи panic и recover ты можешь использовать
> в Go свой любимый стиль обработки ошибок всем скопом через исключения.
> Но среди "обезьянок" такой стиль считается неприемлемым из-за наличия более подходящего
> механизма. Поэтому твой код с исключениями и код "обезьянок" с возвращением
> ошибки будут плохо сочетаться в одном проекте.

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

> Ну а еще "необязьянке" неплохо было бы освоить некоторые "обезьяньи" техники программирования
> вроде итераторов, врапперов  и кодогенераторов. А заодно при помощи бенча
> проверить насколько исключения "ускоряют" работу программы по сравнению с условиями.

Делал бенчи на OCaml. Исключения весьма неплохо работают, если надо вернуться сразу через большое число кадров стека.

Итераторы, врапперы, Option.t/Result.t весьма неплохо сочетаются с исключениями при грамотном подходе.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Вареник , 27-Апр-18 19:56 
Ничто не мешает натравить ту же модель нейросети на Scala, Kotlin, Хруст. Что там у нас еще модненького.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 20:06 
> Ничто не мешает натравить ту же модель нейросети на Scala, Kotlin, Хруст.
> Что там у нас еще модненького.

В скале и без нейросети очень удобно писать неподдерживаемый код..... Я не думаю, что кому-то придёт в голову реально в скале что-то подобное генерировать, если она вообще будет жива на горизонте лет в 5....


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Илья , 27-Апр-18 10:24 
а потом сиди, разбирайся с еле-еле читаемым кодом.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено ыы , 27-Апр-18 10:35 
"
- а вы и есть за меня будете?
- а-ага!!!!
" (с) мультик про двоих из ларца

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 10:53 
Ну вот только только в Java перестали копипастить код. И Java оказался лидером по относительному количеству уникального кода на GitHub.

Сейчас они этой штукой всю статистику испортят)


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 12:51 
> Ну вот только только в Java перестали копипастить код. И Java оказался

А почему это произошло (не в теме)?


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 27-Апр-18 19:00 
Это говорит об исключительности и офигенности Java-разработчиков, они настолько божественны, что пишут код без копипасты. А нейросети им теперь малину подпортят )

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено qsdg , 28-Апр-18 02:47 
Т.к. в жаве куча готовых библиотек, и в отличие от Node.js экосистемы они в среднем лучшего качества, так что их проще импортить в свой проект вместо копипасты.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено freehck , 30-Апр-18 10:12 
> Т.к. в жаве куча готовых библиотек, и в отличие от Node.js экосистемы
> они в среднем лучшего качества, так что их проще импортить в
> свой проект вместо копипасты.

Ммм, как мило. Видимо, очень хотелось сказать, что для Java библиотеки лучшего качества, но язык не поворачивался. Тогда добавил "в отличие от Node.js" -- и ура, ура, теперь повернулся! Впрочем, кто бы сомневался. Это ж Node.js.

У Java тем не менее проблема обычная. Библиотек переизбыток, и большинство из них кусок сами знаете чего.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено патриот , 27-Апр-18 11:27 
Отлично!Ждем в си да и вообще везде.Зато учить больше ничего не придется.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 11:31 
>Ждем в си да и вообще везде.

И будут присылать Торвальдсу такие вот "патчи" :)


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Вареник , 27-Апр-18 19:58 
>>Ждем в си да и вообще везде.
> И будут присылать Торвальдсу такие вот "патчи" :)

Нет, заменят Торвальдса на нейросеть принятия патчей. Которая будет водить моделью пальца Торвальдса.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено abi , 28-Апр-18 15:16 
и изгонять бесов в красных колпаках

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 27-Апр-18 19:01 
> Отлично!Ждем в си да и вообще везде.Зато учить больше ничего не придется.

И работать не придется, и кушать тебе тоже не придется.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено патиот , 27-Апр-18 19:46 
А я и не работаю и кушать люблю но все равно отлично! хорошая новость.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 11:29 
И опции выходного кода надо сделать --indusocode, --bydlocode :)

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 11:41 
Да, чтобы искал на govnokod.ru

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 15:53 
> Да, чтобы искал на govnokod.ru

Так ли велика разница с гитхабом?


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено fdw , 27-Апр-18 11:30 
А всего-то нужны нормальные библиотеки, не заставляющие писать тонны бойлерплейта, и никакое машинное обучение не понадобится.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 11:52 
ну может сделаешь хотя бы одну? Все будут равняться

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Crazy Alex , 27-Апр-18 13:37 
И нормальные языки с мощными шаблонами вроде того, что в D

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено VladSh , 27-Апр-18 12:03 
> для воплощения парадигмы разработки copy&paste

Наоборот пытаешься уйти от этого шлака, а тут тебе такой "подарок"...


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 27-Апр-18 19:02 
>> для воплощения парадигмы разработки copy&paste
> Наоборот пытаешься уйти от этого шлака, а тут тебе такой "подарок"...

Нагенерят овнокода, зато потом будешь поддерживать! Как это? Вспомнил! "Умение разбираться в чужом коде"


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено KonstantinB , 27-Апр-18 12:38 
Искусственный индус.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 17:02 
ganesh3000

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено KonstantinB , 27-Апр-18 22:01 
А заметили, что двое из четырех авторов публикации - индусы? :)

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено vantoo , 27-Апр-18 13:22 
Серьезный софт эта система писать конечно не сможет, но заменить веб-макак сможет вполне.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 27-Апр-18 19:02 
> Серьезный софт эта система писать конечно не сможет, но заменить веб-макак сможет
> вполне.

Повысит скорость вывода в пром для мартышек!



"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 13:29 
> модель, натренированную на примерах рабочего Java-кода, представленного на GitHub.

Вау, они создали макаку, таскающую куски чужого кода с Гитхаба!


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним_ , 27-Апр-18 14:06 
>> модель, натренированную на примерах рабочего Java-кода, представленного на GitHub.
> Вау, они создали макаку, таскающую куски чужого кода с Гитхаба!

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 27-Апр-18 19:03 
>>> модель, натренированную на примерах рабочего Java-кода, представленного на GitHub.
>> Вау, они создали макаку, таскающую куски чужого кода с Гитхаба!
> да, недоработочка - незаслуженно забыт stackoverflow, причем надо иметь два искусственных
> разума - один обученный только на ответах, а другой - копипастящий
> и из вопросов тоже.

Если будет копипастить из вопросов, то я в такой скафандр не залезу, если узнаю, что ПО на нем так было разработано )

А про кардиостимуляторы вообще молчу...


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним_ , 27-Апр-18 22:28 
ха, как будто если сейчас то же самое делает живой индус, он работодателю в этом признается!

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 13:41 
> позволяющий частично автоматизировать процесс написания кода на языке Java

А есть такой же, но позволяющий автоматизировать процесс ЧТЕНИЯ кода на языке Java?

Писать-то быстро все и так могут. Проблема с тем, чтобы ЭТО потом читать и понимать быстро.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним_ , 27-Апр-18 14:05 
а зачем? Если оно произведено подобным образом, то уже не важно, живая там макака или синтетическая- удаляешь и пишешь с чистого листа заново, оно проще и надежней.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено wins proxy , 27-Апр-18 18:57 
А как ты узнаешь что писать?

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним_ , 27-Апр-18 22:30 
> А как ты узнаешь что писать?

в смысле, ты реверсить ее творчество, что-ли, собрался? Посмотришь в _исходник_, а не в сгенеренный код на жабе, и узнаешь.

Ты бы еще плакал, что код, произведенный cfront, невозможно было ни прочитать, ни поправить.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 28-Апр-18 09:46 
А вот за что мой ответ потерли. За то, что я порекомендовал в ВУЗ пойти учиться профильный? А-ха-ха-ха. Шигорин, ты ли это трешь комменты? )

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Диносуслик , 27-Апр-18 19:06 
> В этом суть джаваскрипта. Как только люди не извращаются — создают кучу
> диалектов, языков, фреймворков, которые в итоге все равно компилируются в джаваскрипт.
> При этом без знания джаваскрипта все равно не обойтись. Как в
> анекдоте про завод, который мог производить только автоматы Калашникова.

Джава, Джаваскрипт. Автор, пиши исчо! Тебе что 1С, что бейсик, что C++... Facepalm )


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено жабабыдлокодер , 27-Апр-18 20:17 
Подумаешь! Я вот как-то просматривал вакансии, вижу - "системный программист". Думаю, хренасе, кому у нас в городе такой понадобился? Что за ребята серьезными разработками занимаются? Лезу, читаю: "требуется программист для работы в системе 1С"...

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Andrew , 27-Апр-18 20:34 
Как всегда большинство комментариев от тех, кто на Джаве максимум года два назад закодил окно на AWT, или Swing, и считает, что может теперь рассуждать о достоинствах и недостатках.

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним_ , 27-Апр-18 22:32 
> ничего, что в крупных фирмах бОльшая часть корпоративных приложений, вебсервисов, и
> многого другого делается именно в Джаве, и прекрасно себе справляются с
> поставленными задачами, как на мобильных телефонах, так и на высоконагруженных системах
> типа банков, страховок, бронирования турпоездок, и т.д.

ничего что в крупных фирмах (даже некоторых банках, не говоря про всякий треш типа турпоездок) многое делается на php - "и ничего, справляется"? Падает, кстати, пореже жаба-приложений.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Andrew , 27-Апр-18 23:02 
о чем вы? если о фронтенде, то PHP используется широко, никто не спорит. но разработка бэкенда на PHP станет для авторов незабываемым эротическим приключением на долгие годы. Java идеальна для бизнес логики и предоставляет массу стандартизированных фреймворков на любой случай, а случаи, как известно разные бывают. в плане инструментов разработки, отладки, тестирования, непрерывной интеграции и серверов приложений все остальные ЯП уныло курят в стороне.

>Падает, кстати, пореже жаба-приложений.
>не говоря про всякий треш типа турпоездок

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено angra , 28-Апр-18 09:06 
> лично знаю несколько крупных контор, которые предоставляют высокопроизводительные сервисы  на джаве и ничего у них не падает.

Семидесятилетний пациент пришел к сексопатологу с жалобой на половую слабость.
   - И как часто Вы теперь имеете секс?
   - Ну-у... раз в две-три недели.
   - Ну что ж, в Вашем возрасте это прекрасно.
   - Да, но мой сосед, который куда старше меня говорит что спит с женой каждую ночь.
   - И Вы говорите! Кто Вам мешает?


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Andrew , 28-Апр-18 10:35 
>Семидесятилетний пациент пришел к сексопатологу с жалобой на половую слабость.

у кого что болит

Топ сайтов с серверной частью на Java EE
https://sohabr.net/habr/post/220757/


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено angra , 28-Апр-18 20:08 
> у кого что болит

То есть смысл анекдота ты не понял.

> Топ сайтов с серверной частью на Java EE

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


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Andrew , 28-Апр-18 20:30 
>Для джаверов сообщаю, топ сайтов всегда доступен не потому, что java не падает и программисты на java пишут идеальный код

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

да и весь ваш пламенный доклад - сплошное тыкание пальцем в небо, сопровождаемые воплями о каких-то мифических недостатках в Джаве.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено ыы , 28-Апр-18 22:47 
А анекдот то- на 146% в тему :)))

Архитектура Амазон
https://www.insight-it.ru/highload/2008/arkhitektura-amazon/

Все началось с одного приложения, обменивающегося данными с внутренним интерфейсом, написанного на C++.
Оно росло. За годы усилий, направленных на масштабирование, Amazon сфокусировался на масштабировании баз данных для хранения постоянно растущего объема информации о предметах, покупателях, заказах, для поддержки нескольких интернациональных сайтов. В 2001 году стало ясно, что исходное веб-приложение больше не в состоянии масштабироваться такими темпами. Базы данных были разбиты на маленькие части и для каждой их них был построен отдельный интерфейс, выполненный в виде сервиса, который являлся единственным способом получить доступ к данным.
Базы данных стали общим ресурсом, что затрудняло рост бизнеса в целом. Интерфейсы, связанные с пользователями и базами данных, были сильно ограничены в своей эволюции, так как они одновременно использовались множеством разных команд разработчиков и процессов.
Их архитектура тесно связана и построена вокруг сервисов. Ориентированная на сервисы архитектура дала им необходимый уровень изоляции для построения множества программных компонентов быстро и независимо.
Система выросла до сотен сервисов и не меньшего количества серверов приложений, агрегирующих информацию, полученную от сервисов. Приложение, генерирующее страницы для Amazon.com, является одним из таких серверов. То же самое можно сказать и про приложения, служащие в роли интерфейса для Веб-сервисов, сервиса, обслуживающего покупателя, интерфейса для продавцов.

Многие другие технологии очень трудно масштабировать до размеров Amazon, особенно технологии коммуникационной инфраструктуры. Они отлично работают до какого-то предела в размерах системы, а после перестают справляться с выполнения своих обязанностей. Именно это подтолкнуло Amazon на создание своих технологий в этой области.

Не ограничиваясь одним конкретным подходом, некоторые части системы используют Java/Jboss, но они являются всего лишь сервлетами.

C++ используется для обработки запросов, в то время как Perl и Mason - для составления контента.



"Система машинного обучения для синтеза типового кода на язык..."
Отправлено ыы , 28-Апр-18 22:49 
> А анекдот то- на 146% в тему :)))
> Архитектура Амазон
> https://www.insight-it.ru/highload/2008/arkhitektura-amazon/

И да, если вы не доверяете переводчику- там есть ссылки на источники.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено ыы , 28-Апр-18 22:56 
>> А анекдот то- на 146% в тему :)))
>> Архитектура Амазон
>> https://www.insight-it.ru/highload/2008/arkhitektura-amazon/
> И да, если вы не доверяете переводчику- там есть ссылки на источники.

Самое смешное, что
"
Топ сайтов с серверной частью на Java EE
https://sohabr.net/habr/post/220757/
"
как раз ссылается на тот же первоисточник. То есть люди которые рассуждают о том, что амазон использует джава- на первоисточник не ходили, и того каким именно местом амазон использует джава- не интересовались. Им хватило пересказа на хабре :)

Говорят Рабинович неплохо поет песни Карузо :)


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 29-Апр-18 09:44 
> если вы заметили название Amazon в списке, то сообщаю вам для общего кругозора, что сия компания является крупнейшей в мире платформой розничной торговли, а также разработчиком и вендором одной из крупнейших в мире кластерных инфраструктур. так что поверьте, что в их распоряжении имеется достаточное количество высококлассных спецов, которые досканально проанализировали ТЗ и стратегию разработки, прежде чем остановить свой выбор на Джаве.

А я Вам сообщаю, что эти высококлассные спецы сделали абсолютно неюзабельное оно, которое может только тормозить, грузить процессор и слать по 100500 запросов на каждое шевеление мышки и даже без него. У Алика и то лучше лабаз работает. Это всё, конечно, про вебню, что там в бекенде — не знаю, но сомневаюсь, что сильно лучше. Только благодаря «одной из крупнейших в мире кластерных инфраструктур», небось, и пыхтит.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 19:25 
> большинство комментариев от тех, кто на Джаве максимум года два назад закодил окно на AWT, или Swing

на яве писал только под андроид, там по производительности сравнить было не с чем. но лично мне оказалось крайне неудобно работать с чужим кодом, где на 2 строки кода приходится 15 строк вспомогательной информации типа явадоков, фигурных скобок, заголовков функций (оттого, что функции длиннее 2 строк всегда можно разбить на более мелкие).

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

слышал отзывы людей, работающих (отдел тестирования) с софтом, пишущимся "в крупных фирмах": в момент релиза оно работает без очевидных ошибок лишь если повезёт (а ждать больше нельзя, потому что есть сроки, бюджеты, другие просроченные проекты, но нет квалификации java-программистов). про то чтобы это как-то оптимизировать речи даже не идёт.

> в крупных фирмах

предпочитают иметь 1000 взаимозаменяемых биоробота, чем 10 незаменимых специалистов, а "поставленные задачи" в 95% имеют политический и коммерческий, а вовсе не технический характер. это даже не оскорбление, это просто опыт


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Andrew , 28-Апр-18 20:16 
>на 2 строки кода приходится 15 строк вспомогательной информации типа явадоков, фигурных скобок, заголовков функций

я учился программировать на Си, и не вижу в синтаксе Джаве ничего сверхъестественного


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

лично я в команде разработки бэкенда и вебсервисов для туризма. и для Бэкенд бизнес приложений Джава подходит отлично и предлагает все необходимое и еще больше. об этом я и говорил.


>слышал отзывы людей, работающих (отдел тестирования) с софтом, пишущимся "в крупных фирмах": в момент релиза оно работает без очевидных ошибок лишь если повезёт

это классический пример эффекта танцора


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 01-Май-18 00:56 
> не вижу в синтаксе Джаве ничего сверхъестественного

А проблема не в синтаксисе.

Можно ведь написать

int min (int a, int b) { return a < b ? a : b; }
а можно

/*
* Compare two values and returns the minimal one.
*
* @param int firstValue The first value to compare.
* @param int secondValue The second value to compare.
*
* @return int The minimal of the two values passed.
*/
int
min (
    int firstValue,
    int secondValue)
{
    int result = 0;

    if (firstValue < secondValue)
    {
        result = firstValue;
    }
    else
    {
        result = secondValue;
    }

    return result;
}


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Простите , 27-Апр-18 17:33 
Надо просто выделить readLine в отдельную библиотеку, как npm leftpad.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 17:39 
А-а-а, так вот как появится скайнет!

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 19:57 
Индийские джависты напряглись - могут у них отобрать индустрию г*вн*кодерства

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено _ , 27-Апр-18 21:36 
Перефразируя нетленное:
программисты сами сделают нам верёвку, на которой мы их и повесим!


:-D

_


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Димон , 27-Апр-18 21:43 
гомнокод теперь будут генерировать нейросети. Что-то не вижу в комментариях замечания, что тут даже try/catch поставлен неправильно.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним_ , 27-Апр-18 22:34 
> гомнокод теперь будут генерировать нейросети. Что-то не вижу в комментариях замечания,
> что тут даже try/catch поставлен неправильно.

потому что правильно он поставлен.



"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 27-Апр-18 23:01 
Что в нем правильного? Файл не закрывается. Он должен быть блоке try с ресурсами

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 19:30 
> Файл не закрывается.

Для тех, кто привык пользоваться языком, где "не нужно за памятью следить", это вообще не аргумент. Скажет админам, чтоб файловых дескрипторов в ulimit побольше поставили (любую систему надо настраивать). Или автоперезапускалку настроит, чтоб ресурсы операционка освобождала (работать должен человек, а не компьютер).


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 19:32 
> (работать должен человек, а не компьютер).

зараза, опечатался :( хотел наоборот написать.



"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Димон , 28-Апр-18 10:48 
Ресурсом, который нужно освобождать, владеет FileReader. Поэтому try должен быть после него. А ты больше не вноси вклад в развитие этого программного продукта, двоечник.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 01-Май-18 01:05 
> Ресурсом, который нужно освобождать, владеет FileReader. Поэтому try должен быть после него.

А можно поподробнее? Как вынос FileReader наружу от try/catch исправит ситуацию?


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 20:33 
> Что-то не вижу в комментариях замечания, что тут даже try/catch поставлен неправильно.

Жабокодеры слишком увлеклись доказательством, что это лучший из языков.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 01:56 
Я конечно подозревал, что С# и джавистов можно заменить нейросетью, но я придумал способ эффективнее и экономнее - не использовать ни тех, ни других, ни третьих.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Аноним , 28-Апр-18 07:12 
перешел на демо страничку, выполнил действия, оно висит уже третью минуту.
чот не то с этим ии, сломался, несите другой.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено svboobnov , 28-Апр-18 07:53 

>... ассистент разработчика Bayou (https://github.com/capergroup/bayou),
> позволяющий частично автоматизировать процесс написания кода на языке Java. ...

Почитал я комментарии и удивился: никто не захотел и не предложил встроить нейросеть в систему поиска ошибок (в статический анализатор) и в систему тестирования (написания тестовых методов).

В нынешнее время программируют все, кому не лень, а вот тестировщиков мало. И вообще, тестирование - очень занудное дело.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Vkni , 28-Апр-18 17:39 
> И вообще, тестирование - очень занудное дело.

Поэтому те, кому нужен надёжный софт, используют языки со строгой статической типизацией вплоть до Agda/Idris. Там тестирования требуется значительно меньше.


"Система машинного обучения для синтеза типового кода на язык..."
Отправлено Очередной аноним , 28-Апр-18 13:15 
Забавно. Это значит начал ты проект как костылик, который надо было по-быстрому и уже вчера, получил первый результат этого наколенного "прототипа" и начальство сказало "давай закидывай ЭТО в продакшн и пили в темпе вальса дальше". Накидал еще больше костылей ибо время для анализа и построения архитектуры тебе никто не давал. Нужно больше и быстрее - и ты натравил на него этот ИИ. "Научил его плохому" (c). Ну и все, гогнокод начнет генерироваться в утроенном темпе, а понятия "рефакторинг" и "архитектура приложения" будут вообще занесены в словарь табуированных матерных слов, а поддержка такого поделия закончится скорым самоубийством его создателя.

"Система машинного обучения для синтеза типового кода на язык..."
Отправлено anomymous , 28-Апр-18 15:56 
Я так и знал, что жабакодеров можно заменить нейросетью.