Группа исследователей из университета Райса (США) разработала (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
Ничего, в скором будущем уже не потребуется знания достаточно точных меток и тп.
Возможно, вообще программист не понадобится. Нужен будет толко оператор, который ТЗ вводит в программу.
Ничего не будет такого. Программирование на более высокий уровень поднимется если только.
> Ничего не будет такого. Программирование на более высокий уровень поднимется если только.Вот конкретно от этой инициативы ничего никуда не поднимется.
О COBOL говорили тоже самое;p
Да и SQL сначала предполагался как конечное звено, фронтэнд, в цепочке общения "обычной домохозяйки" с информационной системой. А на практике в некоторых запросах на много страниц без поллитры не разберешься.
Не нужно будет печатать, нужно будет проверять, не факт что в человеко-часах это будет дешевле
Скорее всего из этого появится новый мета язык.
Описываешь модель какую-то, а потом эта модель преобразуется в программный код.
Таким образом, разработка приложений станет быстрее, возможно где-то действительно программист будет нужен минимально, только для контроля данных или отладки.
Появится новая профессия - мета-программист, который гораздо (в теории) будет эффективнее нынешних программистов, который будет писать на одном мета яызке, а его код будет компилироваться в тот, который наиболее подходит под задачу... Лет через 20-30 посмотрим, что из этого выйдет.
> Нужен будет толко оператор, который ТЗ вводит в программу.То есть, программист. Потому, что чёткое и однозначное ТЗ называется программой.
> При возникновении задачи написания кода для чтения из файла разработчик может добавить метку "{ /// call:readLine }"И в чем суть машинного обучения здесь?
Ровно то же самое десятилетиями успешно делается и без него.
Так можно ж пару грантов под это дело распилить, особо не напрягаясь
> Так можно ж пару грантов под это дело распилить, особо не напрягаясьВот это кажется самым разумным применением.
Это как снипеты, только ни автор ни разработчики этой системы не знают какой код будет написан:
корячишь ключевые слова после /// 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
> Наверное, эта забавная фишечка скоро будет в каждой крутой IDEТо есть ТОЛЬКО в Intellij :) хотя я и сейчас половину проблемы решил Live Template-ами, а вторую половину alt+tab, `grep -Ri keyword IdeaProjects/`
Если только научится со StackOverflow подтягивать результаты, это было бы неплохо :)
Раньше такую кодогенерацию описывали правилами, и это было сложно, дорого и невоспроизводимо (каждый пишет эти правила заново), а теперь - примерами для обучения, и их можно переиспользовать. Саму нейросеть (эту или другую, обученную на тех же примерах) можно использовать в качестве блока в более сложной сети, позволяющей комбинировать блоки типового кода во всё более высокоуровневые конструкции.Это как с машинным переводом, который существует больше полвека уже, но большую часть времени системы перевода были просто наборами правил, которые срабатывали только в очень простых случаях. Потом туда пришло машинное обучение, сначала в виде простых языковых моделей, потом - нейронных сетей, и каждый раз это был скачок в качестве. Сейчас качество перевода по многим языковым парам не отличается от уровня средненького переводчика, а интеграция перевода с распознаванием и синтезом голоса сделали возможным автоматический синхронный перевод.
То же самое относительно скоро (в ближайшие лет 10, я думаю) случится и с кодингом, не требующим сильно глубоких знаний. В большой степени он станет автоматическим переводом из ТЗ в код, достаточно пристойный и поддерживаемый.
> То же самое относительно скоро (в ближайшие лет 10, я думаю) случится и с кодингом, не требующим сильно глубоких знаний. В большой степени он станет автоматическим переводом из ТЗ в код, достаточно пристойный и поддерживаемый.Качество пока не очень, но это пока. Лет 10 назад над статистическим переводом посмеивались ребята, пилившие перевод при помощи правил, а над нейронными сетями - ребята, занимавшиеся языковыми моделями.
Главное, чтобы наборы для обучения машинного кодинга были не от АНБ, ФСБ и прочих "добрых" контор.
Да какая разница? Ключи всё равно потребуют сдать. Хотя бы от квартиры, где деньги лежат, если нет шифровальных....
> автоматическим переводом из ТЗ в код, достаточно пристойный и
> поддерживаемый.Компилятор однако. С некоего ТЗ. >:-)
(только с крайне вероятностно работающим результатом, если будет делаться гм... конкретно вами. Личности такие...)
> То же самое относительно скоро (в ближайшие лет 10, я думаю) случится
> и с кодингом, не требующим сильно глубоких знаний. В большой степени
> он станет автоматическим переводом из ТЗ в код, достаточно пристойный и
> поддерживаемый.Ох. Профессия программиста автоматизируется с зарождения. И основное средство автоматизации называется "компилятор".
Да, этим самым метаязыком, заменяющим "кодинг на С, не требующий сильно глубоких знаний" сейчас, как правило, служит Питон.
Ты не понимаешь, о чём говоришь. Для языков используются нейронки потому, что у живых языков правила не столь строгие. При это результат получается менее-более приемлемый для того, чтобы его мог понять человек, но уж точно далеко не идеальный.Что касается программирования, то строгий формализм -- это явно не удел нейронок. Нейронка тут собственно почти не причём. Сам AST формируется разработчиком и подаётся ей на вход, а уж она просто пытается угадать, какие шаблоны кода подходят к тому или иному случаю.
То, что это работает в простых случаях -- это конечно здорово. Но если она, как и большинство нейронок, будет выбирать правильный шаблон лишь в 80% случаев -- это никуда не годится при проектировании сложных систем.
А впрочем, даже если в 99% случаев она будет права, Вы представляете себе ту боль, которой обернётся дебаг оставшегося одного процента её жизнедеятельности?
И это притом, что на вход ей всё равно нужно писать программу. На некоем языке шаблонов, но всё же программу. Не лучше ли просто взять более высокоуровневый язык, вот в чём вопрос?
> Не лучше ли просто взять более высокоуровневый язык, вот в чём вопрос?И менее многословный, чем Java. Например, Haskell. :-)
>> Не лучше ли просто взять более высокоуровневый язык, вот в чём вопрос?
> И менее многословный, чем Java. Например, Haskell. :-)Да, пожалуй, это одна из причин, по которым OCaml я люблю больше, чем Haskell. :)
Собственно, строгий формализм - это не удел и человека тоже.Есть огромное количество однотипных бизнес-задач, где абсолютная корректность не нужна, а нужно, чтобы было написано быстро и дёшево и работало в этих 99% случаев, а убытки от оставшегося 1% с лихвой компенсирует экономия на разработке.
Эти задачи сейчас обслуживает армия низкоквалифицированных кодеров, которые уже, по сути, являются такими нейронками: им на вход приходит подробное ТЗ, а они выдают нечто, что работает как-то похоже на то, что просили.
А что касается эксперимента, то он пока что выглядит игрушечным, я с этим и не спорю.
О, эксепшены. В добрый путь.
а можно подробнее?
Возможно имелось в виду возвращение результатов функциями как в Go.
Это, наверное, самый большой фейл Go
Почему же, вполне удачная попытка обойтись без костылей C не ценой кидания исключений. Можно сделать получше, но и такой вариант весьма неплох.
> Почему же, вполне удачная попытка обойтись без костылей C не ценой кидания
> исключений. Можно сделать получше, но и такой вариант весьма неплох.Exception-Driving-Development )
Вообще-то исключения - при вменяемом проектировании, конечно - упрощают код и ускоряют приложение. Проблема, как обычно, в том, что вменяемо проектировать таки надо, а Go - это попытка сделать "нативный язык для обезьянки". В результате имееем несконаемую (и адски утомившую ещё с сей) простыню явных проверок на каждый вызов, которая адски загромождает код и на быстродействие влияет ни разу не лучшим образом.
> Вообще-то исключения - при вменяемом проектировании, конечно - упрощают код и ускоряют приложение.Вообще-то это вопрос спорный. Александреску на этот счёт хорошо высказался: https://www.youtube.com/watch?v=R5PL1hyspSg
И, кстати, решение, которое он предлагает, выглядит лучше гошного.> В результате имееем несконаемую (и адски утомившую ещё с сей) простыню явных проверок на каждый вызов, которая адски загромождает код и на быстродействие влияет ни разу не лучшим образом.
Ещё вопрос, что хуже для читаемости кода, — проверки или вынос обработки ошибок в место, очень далёкое от того, где они произошли. Если же далеко не выносить, обработка исключений выглядит ещё более громоздко. А уж что касается быстродействия, исключения — ни с чем не сравнимый тормоз.
Смотря в каком языке. Если в Форте, то там исключения быстрая штука :)
В питоне тоже. Ну, по меркам питона :)
> В питоне тоже. Ну, по меркам питона :)Да уж, исключения в питоне не тормозней самого питона. Потому что нет ничего тормозней питона.
Это ты perl6 не видел.
Специально для "необезьянки" сообщаю, при помощи panic и recover ты можешь использовать в Go свой любимый стиль обработки ошибок всем скопом через исключения. Но среди "обезьянок" такой стиль считается неприемлемым из-за наличия более подходящего механизма. Поэтому твой код с исключениями и код "обезьянок" с возвращением ошибки будут плохо сочетаться в одном проекте.Ну а еще "необязьянке" неплохо было бы освоить некоторые "обезьяньи" техники программирования вроде итераторов, врапперов и кодогенераторов. А заодно при помощи бенча проверить насколько исключения "ускоряют" работу программы по сравнению с условиями.
Не надо тиражировать сказку про "обезьянок". Кто читал классическую "Практику программирования" Кернигана и Пайка, тот знает, что они уже там ругали жабовскую манеру кидать исключения на каждый чих. В Go реализован подход, соответствующий этой позиции, а "обезьянки" тут совершенно ни при чём.
В данном случае кавычки обозначали сарказм, а не цитирование.
> Специально для "необезьянки" сообщаю, при помощи panic и recover ты можешь использовать
> в Go свой любимый стиль обработки ошибок всем скопом через исключения.
> Но среди "обезьянок" такой стиль считается неприемлемым из-за наличия более подходящего
> механизма. Поэтому твой код с исключениями и код "обезьянок" с возвращением
> ошибки будут плохо сочетаться в одном проекте.Я всё же думаю, что основная мысль заключается в том, что исключения действительно упрощают дело, и плюс к тому в ряде случаев приводят к ускорению работы программы.
> Ну а еще "необязьянке" неплохо было бы освоить некоторые "обезьяньи" техники программирования
> вроде итераторов, врапперов и кодогенераторов. А заодно при помощи бенча
> проверить насколько исключения "ускоряют" работу программы по сравнению с условиями.Делал бенчи на OCaml. Исключения весьма неплохо работают, если надо вернуться сразу через большое число кадров стека.
Итераторы, врапперы, Option.t/Result.t весьма неплохо сочетаются с исключениями при грамотном подходе.
Ничто не мешает натравить ту же модель нейросети на Scala, Kotlin, Хруст. Что там у нас еще модненького.
> Ничто не мешает натравить ту же модель нейросети на Scala, Kotlin, Хруст.
> Что там у нас еще модненького.В скале и без нейросети очень удобно писать неподдерживаемый код..... Я не думаю, что кому-то придёт в голову реально в скале что-то подобное генерировать, если она вообще будет жива на горизонте лет в 5....
а потом сиди, разбирайся с еле-еле читаемым кодом.
"
- а вы и есть за меня будете?
- а-ага!!!!
" (с) мультик про двоих из ларца
Ну вот только только в Java перестали копипастить код. И Java оказался лидером по относительному количеству уникального кода на GitHub.Сейчас они этой штукой всю статистику испортят)
> Ну вот только только в Java перестали копипастить код. И Java оказалсяА почему это произошло (не в теме)?
Это говорит об исключительности и офигенности Java-разработчиков, они настолько божественны, что пишут код без копипасты. А нейросети им теперь малину подпортят )
Т.к. в жаве куча готовых библиотек, и в отличие от Node.js экосистемы они в среднем лучшего качества, так что их проще импортить в свой проект вместо копипасты.
> Т.к. в жаве куча готовых библиотек, и в отличие от Node.js экосистемы
> они в среднем лучшего качества, так что их проще импортить в
> свой проект вместо копипасты.Ммм, как мило. Видимо, очень хотелось сказать, что для Java библиотеки лучшего качества, но язык не поворачивался. Тогда добавил "в отличие от Node.js" -- и ура, ура, теперь повернулся! Впрочем, кто бы сомневался. Это ж Node.js.
У Java тем не менее проблема обычная. Библиотек переизбыток, и большинство из них кусок сами знаете чего.
Отлично!Ждем в си да и вообще везде.Зато учить больше ничего не придется.
>Ждем в си да и вообще везде.И будут присылать Торвальдсу такие вот "патчи" :)
>>Ждем в си да и вообще везде.
> И будут присылать Торвальдсу такие вот "патчи" :)Нет, заменят Торвальдса на нейросеть принятия патчей. Которая будет водить моделью пальца Торвальдса.
и изгонять бесов в красных колпаках
> Отлично!Ждем в си да и вообще везде.Зато учить больше ничего не придется.И работать не придется, и кушать тебе тоже не придется.
А я и не работаю и кушать люблю но все равно отлично! хорошая новость.
И опции выходного кода надо сделать --indusocode, --bydlocode :)
Да, чтобы искал на govnokod.ru
> Да, чтобы искал на govnokod.ruТак ли велика разница с гитхабом?
А всего-то нужны нормальные библиотеки, не заставляющие писать тонны бойлерплейта, и никакое машинное обучение не понадобится.
ну может сделаешь хотя бы одну? Все будут равняться
И нормальные языки с мощными шаблонами вроде того, что в D
> для воплощения парадигмы разработки copy&pasteНаоборот пытаешься уйти от этого шлака, а тут тебе такой "подарок"...
>> для воплощения парадигмы разработки copy&paste
> Наоборот пытаешься уйти от этого шлака, а тут тебе такой "подарок"...Нагенерят овнокода, зато потом будешь поддерживать! Как это? Вспомнил! "Умение разбираться в чужом коде"
Искусственный индус.
ganesh3000
А заметили, что двое из четырех авторов публикации - индусы? :)
Серьезный софт эта система писать конечно не сможет, но заменить веб-макак сможет вполне.
> Серьезный софт эта система писать конечно не сможет, но заменить веб-макак сможет
> вполне.Повысит скорость вывода в пром для мартышек!
> модель, натренированную на примерах рабочего Java-кода, представленного на GitHub.Вау, они создали макаку, таскающую куски чужого кода с Гитхаба!
>> модель, натренированную на примерах рабочего Java-кода, представленного на GitHub.
> Вау, они создали макаку, таскающую куски чужого кода с Гитхаба!да, недоработочка - незаслуженно забыт stackoverflow, причем надо иметь два искусственных разума - один обученный только на ответах, а другой - копипастящий и из вопросов тоже.
>>> модель, натренированную на примерах рабочего Java-кода, представленного на GitHub.
>> Вау, они создали макаку, таскающую куски чужого кода с Гитхаба!
> да, недоработочка - незаслуженно забыт stackoverflow, причем надо иметь два искусственных
> разума - один обученный только на ответах, а другой - копипастящий
> и из вопросов тоже.Если будет копипастить из вопросов, то я в такой скафандр не залезу, если узнаю, что ПО на нем так было разработано )
А про кардиостимуляторы вообще молчу...
ха, как будто если сейчас то же самое делает живой индус, он работодателю в этом признается!
> позволяющий частично автоматизировать процесс написания кода на языке JavaА есть такой же, но позволяющий автоматизировать процесс ЧТЕНИЯ кода на языке Java?
Писать-то быстро все и так могут. Проблема с тем, чтобы ЭТО потом читать и понимать быстро.
а зачем? Если оно произведено подобным образом, то уже не важно, живая там макака или синтетическая- удаляешь и пишешь с чистого листа заново, оно проще и надежней.
А как ты узнаешь что писать?
> А как ты узнаешь что писать?в смысле, ты реверсить ее творчество, что-ли, собрался? Посмотришь в _исходник_, а не в сгенеренный код на жабе, и узнаешь.
Ты бы еще плакал, что код, произведенный cfront, невозможно было ни прочитать, ни поправить.
А вот за что мой ответ потерли. За то, что я порекомендовал в ВУЗ пойти учиться профильный? А-ха-ха-ха. Шигорин, ты ли это трешь комменты? )
> В этом суть джаваскрипта. Как только люди не извращаются — создают кучу
> диалектов, языков, фреймворков, которые в итоге все равно компилируются в джаваскрипт.
> При этом без знания джаваскрипта все равно не обойтись. Как в
> анекдоте про завод, который мог производить только автоматы Калашникова.Джава, Джаваскрипт. Автор, пиши исчо! Тебе что 1С, что бейсик, что C++... Facepalm )
Подумаешь! Я вот как-то просматривал вакансии, вижу - "системный программист". Думаю, хренасе, кому у нас в городе такой понадобился? Что за ребята серьезными разработками занимаются? Лезу, читаю: "требуется программист для работы в системе 1С"...
Как всегда большинство комментариев от тех, кто на Джаве максимум года два назад закодил окно на AWT, или Swing, и считает, что может теперь рассуждать о достоинствах и недостатках.ну и уж конечно все, кто пилит на Джаве, по их мнению не разработчики и не программисты, а просто недотепы и неучи. и ничего, что в крупных фирмах бОльшая часть корпоративных приложений, вебсервисов, и многого другого делается именно в Джаве, и прекрасно себе справляются с поставленными задачами, как на мобильных телефонах, так и на высоконагруженных системах типа банков, страховок, бронирования турпоездок, и т.д.
> ничего, что в крупных фирмах бОльшая часть корпоративных приложений, вебсервисов, и
> многого другого делается именно в Джаве, и прекрасно себе справляются с
> поставленными задачами, как на мобильных телефонах, так и на высоконагруженных системах
> типа банков, страховок, бронирования турпоездок, и т.д.ничего что в крупных фирмах (даже некоторых банках, не говоря про всякий треш типа турпоездок) многое делается на php - "и ничего, справляется"? Падает, кстати, пореже жаба-приложений.
о чем вы? если о фронтенде, то PHP используется широко, никто не спорит. но разработка бэкенда на PHP станет для авторов незабываемым эротическим приключением на долгие годы. Java идеальна для бизнес логики и предоставляет массу стандартизированных фреймворков на любой случай, а случаи, как известно разные бывают. в плане инструментов разработки, отладки, тестирования, непрерывной интеграции и серверов приложений все остальные ЯП уныло курят в стороне.>Падает, кстати, пореже жаба-приложений.
>не говоря про всякий треш типа турпоездоклично знаю несколько крупных контор, которые предоставляют высокопроизводительные сервисы на джаве и ничего у них не падает.
> лично знаю несколько крупных контор, которые предоставляют высокопроизводительные сервисы на джаве и ничего у них не падает.Семидесятилетний пациент пришел к сексопатологу с жалобой на половую слабость.
- И как часто Вы теперь имеете секс?
- Ну-у... раз в две-три недели.
- Ну что ж, в Вашем возрасте это прекрасно.
- Да, но мой сосед, который куда старше меня говорит что спит с женой каждую ночь.
- И Вы говорите! Кто Вам мешает?
>Семидесятилетний пациент пришел к сексопатологу с жалобой на половую слабость.у кого что болит
Топ сайтов с серверной частью на Java EE
https://sohabr.net/habr/post/220757/
> у кого что болитТо есть смысл анекдота ты не понял.
> Топ сайтов с серверной частью на Java EE
Для джаверов сообщаю, топ сайтов всегда доступен не потому, что java не падает и программисты на java пишут идеальный код, а потому, что там есть админы, которые поставили несколько бекендов и балансировщик перед ними. Так что абсолютно фиолетово жаба там, пых или еще что.
>Для джаверов сообщаю, топ сайтов всегда доступен не потому, что java не падает и программисты на java пишут идеальный кодесли вы заметили название Amazon в списке, то сообщаю вам для общего кругозора, что сия компания является крупнейшей в мире платформой розничной торговли, а также разработчиком и вендором одной из крупнейших в мире кластерных инфраструктур. так что поверьте, что в их распоряжении имеется достаточное количество высококлассных спецов, которые досканально проанализировали ТЗ и стратегию разработки, прежде чем остановить свой выбор на Джаве.
да и весь ваш пламенный доклад - сплошное тыкание пальцем в небо, сопровождаемые воплями о каких-то мифических недостатках в Джаве.
А анекдот то- на 146% в тему :)))Архитектура Амазон
https://www.insight-it.ru/highload/2008/arkhitektura-amazon/Все началось с одного приложения, обменивающегося данными с внутренним интерфейсом, написанного на C++.
Оно росло. За годы усилий, направленных на масштабирование, Amazon сфокусировался на масштабировании баз данных для хранения постоянно растущего объема информации о предметах, покупателях, заказах, для поддержки нескольких интернациональных сайтов. В 2001 году стало ясно, что исходное веб-приложение больше не в состоянии масштабироваться такими темпами. Базы данных были разбиты на маленькие части и для каждой их них был построен отдельный интерфейс, выполненный в виде сервиса, который являлся единственным способом получить доступ к данным.
Базы данных стали общим ресурсом, что затрудняло рост бизнеса в целом. Интерфейсы, связанные с пользователями и базами данных, были сильно ограничены в своей эволюции, так как они одновременно использовались множеством разных команд разработчиков и процессов.
Их архитектура тесно связана и построена вокруг сервисов. Ориентированная на сервисы архитектура дала им необходимый уровень изоляции для построения множества программных компонентов быстро и независимо.
Система выросла до сотен сервисов и не меньшего количества серверов приложений, агрегирующих информацию, полученную от сервисов. Приложение, генерирующее страницы для Amazon.com, является одним из таких серверов. То же самое можно сказать и про приложения, служащие в роли интерфейса для Веб-сервисов, сервиса, обслуживающего покупателя, интерфейса для продавцов.Многие другие технологии очень трудно масштабировать до размеров Amazon, особенно технологии коммуникационной инфраструктуры. Они отлично работают до какого-то предела в размерах системы, а после перестают справляться с выполнения своих обязанностей. Именно это подтолкнуло Amazon на создание своих технологий в этой области.
Не ограничиваясь одним конкретным подходом, некоторые части системы используют Java/Jboss, но они являются всего лишь сервлетами.
C++ используется для обработки запросов, в то время как Perl и Mason - для составления контента.
> А анекдот то- на 146% в тему :)))
> Архитектура Амазон
> https://www.insight-it.ru/highload/2008/arkhitektura-amazon/И да, если вы не доверяете переводчику- там есть ссылки на источники.
>> А анекдот то- на 146% в тему :)))
>> Архитектура Амазон
>> https://www.insight-it.ru/highload/2008/arkhitektura-amazon/
> И да, если вы не доверяете переводчику- там есть ссылки на источники.Самое смешное, что
"
Топ сайтов с серверной частью на Java EE
https://sohabr.net/habr/post/220757/
"
как раз ссылается на тот же первоисточник. То есть люди которые рассуждают о том, что амазон использует джава- на первоисточник не ходили, и того каким именно местом амазон использует джава- не интересовались. Им хватило пересказа на хабре :)Говорят Рабинович неплохо поет песни Карузо :)
> если вы заметили название Amazon в списке, то сообщаю вам для общего кругозора, что сия компания является крупнейшей в мире платформой розничной торговли, а также разработчиком и вендором одной из крупнейших в мире кластерных инфраструктур. так что поверьте, что в их распоряжении имеется достаточное количество высококлассных спецов, которые досканально проанализировали ТЗ и стратегию разработки, прежде чем остановить свой выбор на Джаве.А я Вам сообщаю, что эти высококлассные спецы сделали абсолютно неюзабельное оно, которое может только тормозить, грузить процессор и слать по 100500 запросов на каждое шевеление мышки и даже без него. У Алика и то лучше лабаз работает. Это всё, конечно, про вебню, что там в бекенде — не знаю, но сомневаюсь, что сильно лучше. Только благодаря «одной из крупнейших в мире кластерных инфраструктур», небось, и пыхтит.
> большинство комментариев от тех, кто на Джаве максимум года два назад закодил окно на AWT, или Swingна яве писал только под андроид, там по производительности сравнить было не с чем. но лично мне оказалось крайне неудобно работать с чужим кодом, где на 2 строки кода приходится 15 строк вспомогательной информации типа явадоков, фигурных скобок, заголовков функций (оттого, что функции длиннее 2 строк всегда можно разбить на более мелкие).
пытался пользоваться десктопным ява-софтом: в разы большие системные требования и тормоза, чем у плюсовых аналогов.
слышал отзывы людей, работающих (отдел тестирования) с софтом, пишущимся "в крупных фирмах": в момент релиза оно работает без очевидных ошибок лишь если повезёт (а ждать больше нельзя, потому что есть сроки, бюджеты, другие просроченные проекты, но нет квалификации java-программистов). про то чтобы это как-то оптимизировать речи даже не идёт.
> в крупных фирмах
предпочитают иметь 1000 взаимозаменяемых биоробота, чем 10 незаменимых специалистов, а "поставленные задачи" в 95% имеют политический и коммерческий, а вовсе не технический характер. это даже не оскорбление, это просто опыт
>на 2 строки кода приходится 15 строк вспомогательной информации типа явадоков, фигурных скобок, заголовков функцийя учился программировать на Си, и не вижу в синтаксе Джаве ничего сверхъестественного
>пытался пользоваться десктопным ява-софтом: в разы большие системные требования и тормоза, чем у плюсовых аналогов.лично я в команде разработки бэкенда и вебсервисов для туризма. и для Бэкенд бизнес приложений Джава подходит отлично и предлагает все необходимое и еще больше. об этом я и говорил.
>слышал отзывы людей, работающих (отдел тестирования) с софтом, пишущимся "в крупных фирмах": в момент релиза оно работает без очевидных ошибок лишь если повезётэто классический пример эффекта танцора
> не вижу в синтаксе Джаве ничего сверхъестественногоА проблема не в синтаксисе.
Можно ведь написать
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;
}
Надо просто выделить readLine в отдельную библиотеку, как npm leftpad.
А-а-а, так вот как появится скайнет!
Индийские джависты напряглись - могут у них отобрать индустрию г*вн*кодерства
Перефразируя нетленное:
программисты сами сделают нам верёвку, на которой мы их и повесим!
:-D_
гомнокод теперь будут генерировать нейросети. Что-то не вижу в комментариях замечания, что тут даже try/catch поставлен неправильно.
> гомнокод теперь будут генерировать нейросети. Что-то не вижу в комментариях замечания,
> что тут даже try/catch поставлен неправильно.потому что правильно он поставлен.
Что в нем правильного? Файл не закрывается. Он должен быть блоке try с ресурсами
> Файл не закрывается.Для тех, кто привык пользоваться языком, где "не нужно за памятью следить", это вообще не аргумент. Скажет админам, чтоб файловых дескрипторов в ulimit побольше поставили (любую систему надо настраивать). Или автоперезапускалку настроит, чтоб ресурсы операционка освобождала (работать должен человек, а не компьютер).
> (работать должен человек, а не компьютер).зараза, опечатался :( хотел наоборот написать.
Ресурсом, который нужно освобождать, владеет FileReader. Поэтому try должен быть после него. А ты больше не вноси вклад в развитие этого программного продукта, двоечник.
> Ресурсом, который нужно освобождать, владеет FileReader. Поэтому try должен быть после него.А можно поподробнее? Как вынос FileReader наружу от try/catch исправит ситуацию?
> Что-то не вижу в комментариях замечания, что тут даже try/catch поставлен неправильно.Жабокодеры слишком увлеклись доказательством, что это лучший из языков.
Я конечно подозревал, что С# и джавистов можно заменить нейросетью, но я придумал способ эффективнее и экономнее - не использовать ни тех, ни других, ни третьих.
перешел на демо страничку, выполнил действия, оно висит уже третью минуту.
чот не то с этим ии, сломался, несите другой.
>... ассистент разработчика Bayou (https://github.com/capergroup/bayou),
> позволяющий частично автоматизировать процесс написания кода на языке Java. ...Почитал я комментарии и удивился: никто не захотел и не предложил встроить нейросеть в систему поиска ошибок (в статический анализатор) и в систему тестирования (написания тестовых методов).
В нынешнее время программируют все, кому не лень, а вот тестировщиков мало. И вообще, тестирование - очень занудное дело.
> И вообще, тестирование - очень занудное дело.Поэтому те, кому нужен надёжный софт, используют языки со строгой статической типизацией вплоть до Agda/Idris. Там тестирования требуется значительно меньше.
Забавно. Это значит начал ты проект как костылик, который надо было по-быстрому и уже вчера, получил первый результат этого наколенного "прототипа" и начальство сказало "давай закидывай ЭТО в продакшн и пили в темпе вальса дальше". Накидал еще больше костылей ибо время для анализа и построения архитектуры тебе никто не давал. Нужно больше и быстрее - и ты натравил на него этот ИИ. "Научил его плохому" (c). Ну и все, гогнокод начнет генерироваться в утроенном темпе, а понятия "рефакторинг" и "архитектура приложения" будут вообще занесены в словарь табуированных матерных слов, а поддержка такого поделия закончится скорым самоубийством его создателя.
Я так и знал, что жабакодеров можно заменить нейросетью.