Китайские ученые опубликовали исследование, которое является небольшим шажком к тому, чтобы ушла в небытие еще одна человеческая специальность — разработчик программного обеспечения. Ссылки: оригинал статьи (русский перевод).
Авторы исследования тренировали RNN-сеть, используя базу с короткими программами, которые писались студентами и были определены как валидные (путем запуска системой проверки заданий). Описания заданий были сокращены до такого: «найти максимальное и следующее за ним по величине число».
В результате был сгенерирован следующий код (стиль отступов и пунктуация «автора» сохранены без изменений):
Он содержит 4 ошибки, после исправления которых программа стала решать поставленную задачу.
Важно, что сгенерированный код не содержал в чистом виде ни одного из исходных примеров. В противном случае, пришлось бы признать, что таким извращенным способом удалось написать обычную систему поиска по базе кода. С помощью ccfinder были найдены наиболее близкие примеры из обучающей выборки (более 500 образцов исходного кода):
Из первого примера взята структура, из второго — наименования идентификаторов.
Интересно, что сеть сама определила синонимичность конструкций “i<n” и “i<=n-1”.
Также, следует учесть, что никто не обучал специально RNN синтаксису языка C — все правила она вывела самостоятельно на основе примеров начинающих программистов.
Конечно, данный пример очень прост, но он показывает способность RNN-сетей к обобщению кода и переводу не только между естественными языками. Исследователи называют срок «ближайшие десятилетия» как время, когда компьютер будет писать программу на основании описания на естественном языке. Да, срок очень расплывчатый с учетом того, что это время того же порядка, что и все время жизни отрасли.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (57)
rPman
19.06.2016 20:13Вполне возможно что некоторый класс задач будет автоматизирован в ближайшее десятилетие, красивый пример — Wolfram Alpha, решает львиную часть простых задач по математик, правда заданных на языке математики а не естественном.
Вполне возможно, следующими будут красивые решения на базе IBM Watson, сначала как вопрос-ответные системы по доступу к базам данных (этакие системы исполнения запросов поиска к базам данных на естественном языке), и потихоньку в сторону управления.
конечно голосовые ассистенты уже сейчас могут выполнить много, что скажет человек, но это конечно же все еще не программирование.
Sadler
19.06.2016 20:46+5Теперь я знаю, кто писал китаекод, который мне пришлось полгода доводить до ума на прошлой работе.
perfect_genius
19.06.2016 22:27Рано или поздно найдётся программист, который автоматизирует и свою работу.
vedenin1980
19.06.2016 23:55+2Мое ИМХО, уже сейчас многое автоматизируется: автоматическое тестирование, статический анализ, кодогенерация, но:
1. написание кода это только часть функции программистов, основная это умение решать задачи (не всегда даже используя компьютер). Клиенты всегда ставят задачи под виду нарисовать семь красных линий, никогда компьютеру без реально сильного ИИ, их не понять. А с настолько сильным ИИ все профессии станут бессмысленными,
2. аппетит приходит во время, еды так что даже если программисты будут заниматься переводом задач «семь красных линий» в естественный язык понятный компьютеру «используя алгоритм Пауло-Бройла построить семь красных линий в геометрии Лабочевского», то программистов меньше не станет, всем найдется работа,ilya_1
20.06.2016 00:43Ну вообще-то уже сейчас программист очень далеко от машинных кодов, инструкций, и пр. Опять-же задача сводится от «хочу то не знаю что» заказчика до объяснения компьютеру понятным ему языком, причем с каждым новым яп задача упрощается
vedenin1980
20.06.2016 00:49Да, а с фреймворками, cms и конструкторами сайтов задача ещё больше упрощается. Но даже если можно будет объяснять задачу компьютеру обычным обычным человеческим языков все равно этим будут заниматься программисты, так как клиенты такого наобъясняют…
atepeq
20.06.2016 00:55Поначалу — да. Нужно будет правильно объяснять. Но конечная цель как раз в том, чтобы любой человек мог объяснить компьютеру, какая программа ему нужна. И, если что-то непонятно или противоречиво, то компьютер должен будет задать наводящие вопросы — стать более активной составляющей.
ProVal
20.06.2016 01:01Это уже надо, чтобы компьютер читал мыслеобразы клиента, видя напрямую его внутреннее представление конечного результата. Иначе, зная, как объясняют свои желания клиенты, и никакие наводящие вопросы не помогут. Не говоря уже о том, что клиент обычно вообще не знает, чего хочет. Он просто хочет.
atepeq
20.06.2016 01:18Для этого есть свои методики (извлечения знаний эксперта и т.п.) Кроме того, для начала вполне можно использовать чек-листы с типичными вопросами-ответами. А, после первой итерации клиент уже сам расскажет, что не так — благо, машину, в отличие от белкового программиста, не будет расстраивать (хотя, как знать) выброшеный код из первой итерации.
Конечно, это уже другой уровень по сравнению с описанным примером. Но лет 5 назад сегодняшний уровень автономного распознавания устной речи тоже казался фантастикой.
Насчет мыслеобразов — этим занимаются многочисленные уровни глубоких нейронных сетей. Их глубина уже сейчас превышает ту, что есть в человеческом мозгу. Это означает, что потенциально они могут достигать более высоких уровней абстракций. Вопрос в правильных примерах, настройках алгоритма обучения, структуре самой сети.
Prog23
20.06.2016 17:34«Вопрос в правильных примерах...» — ход Ваших мыслей очень правильный, но нужно посмотреть чуть-чуть со стороны: данная ветка ИИ (нейронные сети) может обучаться на УЖЕ имеющихся примерах.
Но как она сможет создавать новое — то, чего еще нет?
Точнее: сможет ли подобная система создавать ПО для которых еще не создано алгоритмов?
ПРИМЕР:
— Создай самую лучшую ОС. (Знаем Линь, Винь, ДОС, ср-м, Юникс, run-time и т.д....)
— Сможет ли абориген из джунглей Амазонки «создать» при помощи вышеописанного устройства, мерседес, боинг, компьютер?
У описанного устройства отсутствует «творческий потенциал» — Разработай компьютер на основе фуллеренов или — разберись за что отвечает каждый нейрон в головном мозге хомо сапиенс («на сегодня» порядка 96 миллиардов нейронов)…
Нейросети хороши для задач типа: улучши работу светофора на перекрестке пр-кта Центральный и ул. Лесная…
Для творческой деятельности нужна другая ветка ИИ (Пролог и т.д.) — подобные системы могут отвечать на вопросы типа: Почему лучше сделать так, а не по другому.atepeq
20.06.2016 18:35обучаться на УЖЕ имеющихся примерах
— даже если использовать только это, то представим себе объем знаний, хранящихся в проектах типа stackoverflow, sourceforge. Только на этом багаже можно двинуться достаточно далеко.
Но как она сможет создавать новое — то, чего еще нет?
— в качестве примера таких алгоритмов могу привести различные эволюционные стратегии (GA, GP, tierra). Да, скорость изобретения новых трюков эволюцией не очень велика, но она принципиально возможна.
Система AlphaGo, обыгравшая Ли Седаля тренировалась, играя сама с собой.
Сможет ли абориген из джунглей Амазонки «создать» при помощи вышеописанного устройства, мерседес, боинг, компьютер?
— Думаю, что если этого аборигена взять в раннем детстве и воспитывать в обычном для нас окружении, то вероятность того, что он сможет стать продвинутым технарем не очень будет отличаться от обычного выпускника Пекинского ВУЗа. Конечно, нужно проверять — существуют разные точки зрения на то, как гены разных национальностей влияют на способности в разных областях. Моя текущая точка зрения состоит в том, что у человека, как у вида достаточно молодого, внутривидовые отличия индивидуумов существенно превышают отличия между средними значениями внутри определенных популяций (национальности, пол и т.п.) Я высказался сейчас несколько вольно, но точная формулировка будет слишком длинной.Prog23
20.06.2016 22:41— «Думаю, что если этого аборигена взять в раннем детстве и воспитывать в обычном для нас окружении, то...»
Прошу прощения за мою «косноязычность» — речь идет о том, что если прогресс и дальше будет идти с увеличивающейся скоростью, то мы и есть те «аборигенты» по сравнению с уровнем лет через 50…
Другими словами:
— Кто нас сейчас может «взять в раннем детстве и воспитывать» в окружении, которое будет через 50 лет?
— Речь идет о том, что «тот, кто не ел ничего слаще редьки» — не сможет сообщить системе чего он хочет — а стало быть, система не сможет создать «то, чего не знаю сам» — так понятнее?
— «даже если использовать только это, то представим себе объем знаний, хранящихся в проектах типа stackoverflow, sourceforge. Только на этом багаже можно двинуться достаточно далеко.»
Это как раз «тормоз» для системы:
— каких она должна быть размеров?
— Сколько энергии потреблять?
и т.д.
— «Да, скорость изобретения новых трюков эволюцией не очень велика, но она принципиально возможна.»
Нейросети хороши там, где идет повторение — они само обучаются и «в следующий раз» превосходят человека.
Приведенный пример будет хорош в колл-центрах и support-центрах, но не в девелопе (особенно «на краю познаний» — там лучше работает исчисление предикатов… Опять же, Вы готовы «отдать на лечение» своего ребенка доктору, который не может объяснить «почему так лучше»?
А вот в качестве «мотора» прогресса они «так себе» — если не сказать жестче…
vedenin1980
20.06.2016 01:14Если будут существовать такой ИИ, то человек не будет нужен ни на какой стадии, один ИИ будет объяснять другому ИИ, какая программа на самом деле людям нужна. Тогда ИИ заменит вообще все профессии. Но сомневаюсь что люди позволят довести разработку ИИ до этой стадии.
atepeq
20.06.2016 01:26Честно говоря, я думаю, что к этому и идет. И вряд ли люди договорятся, что нужно остановиться — ведь элементы ИИ позволяют тем, кто их разработали, получать немалые деньги. Поэтому под любыми предлогами (в том числе, обманывая сами себя относительно его безопасности), разработки будут продолжаться, пока не наступит момент, когда человек станет ненужным. В том числе, этим будут заниматься и военные, у которых будет бронебойный довод — если это не сделаем мы, это сделают наши противники.
Единственный перспективный вариант, который мне кажется реальным — концепция усилителей разума, когда человек включается решающим звеном в интеллектуальную систему, которая передает ему переваренные данные (если сделаем так, то получим 100000 денег прибыли, если эдак — убыток).vedenin1980
20.06.2016 04:081. ИМХО, сомневаюсь, так как пока экономической необходимости в сильном ИИ нет, в большом кол-ве слабых ИИ (водителей, распознавателей видео, текст) — есть и большая, а вот сильное ИИ требует намного больше вычислительных ресурсов, а у сильного ИИ польза под вопросом (если это будет виртуальный человек аналогичный разуму обыкновенного человека, но потребляющий ресурсы суперкомпьютера), а как создать супер ИИ (то есть превосходящий разум человека как мы превосходим животных) пока непонятно, так как пока далеко до создания хотя бы подобия человеческого разума со всеми его недостатками.
2. Не так важно, будет сильный ИИ или нет, работа программиста по работе с клиентами будет автоматизированна одной из последних, потому что решение абсолютно любой задачи нечетко поставленной нетиповой задачи — одна из самых сложных для ИИ,rPman
20.06.2016 10:15Как минимум сильный ИИ нужен в 'далеком' космосе, там где человека держать ОЧЕНЬ дорого, а удаленное управление слишком медленное.
vedenin1980
20.06.2016 11:39Возможно, хотя на мой взгляд и там лучше и безопаснее использовать очень хороший специализированный слабый ИИ, на вроде автопилота у гугл кар или альфа го. ИМХО, задачи разведки и добычи ресурсов в космосе попроще c точки зрения ИИ чем, например, управления автомобилем на переполненном шоссе. А отпускать сильный ИИ в дальний космос, несколько страшно.
Единственная проблема — встреча с другой цивилизацией, но и там сильный ИИ скорее дров наломает (кто его знает, может он развяжет межгалактическую войну с вполне мирной цивилизацией?)rPman
20.06.2016 16:58Перебарщиваете, нам бы свои астероидные пояса освоить, для нас сейчас это дальний космос ;)
vedenin1980
20.06.2016 17:05Ну, свои астероидные пояса сильный ИИ не нужен, даже до Плутона радиоволны идут 5 часов с хвостиком, вполне можно стратегические решения (что строить, какие астероиды лучше разрабатывать) принимать и на Земле.
rPman
20.06.2016 17:06какая глобальная стратегия, мы топчемся на простейших операциях — болтик закрутить, пакетик развернуть!
Корень зла — нештатки, ехали из точки А в точку Б, по пути колесо сломалось, да так что ни один конструктор не предугадает, манипулятором схватили предмет а он возьми и сомнись (а думали что камень, максимум рассыпется) и т.п.
Каждое такое событие — остановка работы на 10 часов в лучшем (5 часов сигнал в одну сторону) и это в лучшем случае, альтернатива смерть проекту.vedenin1980
20.06.2016 17:19Для этого есть слабые ИИ, вспомним сколько сил потрачено чтобы избежать нештаток в автопилотах гугла. Можно виртуально прогнать большинство возможных ситуаций. Нештатка в автоматической машине может привести к человеческим жертвам и огромным искам, а возможных ситуаций на дорогах города на порядки раз больше.
С другой стороны, сильный ИИ так далеко от людей может доэволюционировать до создания собственного флота. И красной кнопкой его на таком расстоянии не остановить.
Соотношение, вышедший из подчинения сильный ИИ с риском гибели Человечества, и потерянная фабрика по глюку слабого ИИ, все-таки неспопоставимы. Не говоря уже о том, что астероидный пояс намного ближе чем Плутон, в моменту разработки Плутона технология будет обкатана на той же Луне, например.rPman
20.06.2016 19:45Вас кидает в крайности… надо наверное определиться что есть слабый ИИ и сильный. Я считаю слабый ИИ это проекты уровня wolfram alpha или на основе ibm watson, ставим узкую задачу но решаем ее максимально хорошо. Изображения распознать, манипулятором порулить (на хабре были примеры управления манипулятором с помощью генетического алгоритма, с возможностью выполнения при частичных повреждениях),…
Сильный ИИ способен принимать решения, не заложенные в его программу, т.е. без явных рамок… кроме чисто физических. никакой ИИ никакой флот не построит, если у него не будет для этого инструментов и ресурсов. Саморепликация это больше инженерная задача а не ИИ, а это практически главное (и наверное единственное) требование, которое необходимо интеллекту для самосовершенствования… и конечно ресурсы.
Даже такой ресурс как энергия, при его нехватке, превратит план по захвату управления даже очень смышленым интеллектом, в нечто растянувшееся на годы и столетия. Космос очень пустое место, особенно когда вы далеко от солнца.vedenin1980
20.06.2016 20:22Я согласен с вами, сильный ИИ это как минимум аналог человека по своему мышлению или даже многих людей. Если отправлять ИИ добывать ресурсы и производить из них оборудование сложно будет проконтролировать, например, то чтобы ИИ не добыл обогащенного урана, сварганил простую бомбу и не отправил её к Земле вместе с партией руды.
Надо понимать что сильный ИИ это по сути те же Люди (интеллектуально), которые предоставлены сами себе. При определенном желании и интеллекте люди даже в концлагерях устраивали диверсии, а тут разум за много миллионов км. от любого человека у которого есть инструменты для добычи полезных ископаемых и её обработке. Не стоит проверять что ему может придти на ум.
mrtime336
20.06.2016 12:37возможно логическим продолжением идеи ИИ, будут «кластера ИИ», где грубо говоря одни сети будут делать учебные выборки для других узкоспециализированных ИИ, чтобы «те не отвлекались на всякие ненужные знания»…
dipsy
20.06.2016 12:38А в чем тут проблему вы видите? Людям нравится работа ради работы? Я бы предпочел иметь некоторую свободу, даже сейчас есть люди, которые сами что-то изготавливают, хотя можно пойти в магазин и купить не хуже. Есть игры, есть походы на эверест и прочие развлечения для любителей пострадать и поиспытывать судьбу, хотя можно жить в тепле и комфорте.
Или сверхразумные роботы всех истребят за ненадобностью? Тут конечно есть вероятность. С другой стороны развитие разума и цивилизации это и рост гуманизма, и к людям и к более низшим животным, по крайней мере в человеческом обществе, с роботами конечно не факт.vedenin1980
20.06.2016 16:37Проблема в том что люди привыкли что от их существования что-то зависит. Если ИИ полностью заменить Человечество, то есть будет вообще любую работу, есть большой шанс что люди потеряют смысл жизнь. Да, можно играть, ходить на эверест, но это нижние уровни пирамиды Маслоу, а верхние в мире, где роботы все и всегда делают лучше людей, будут недоступны (какой смысл пытаться что-то делать, если у роботов это получится всегда лучше). А нижние уровни пирамиды Маслоу не способны заменить верхние, то есть жизнеспособность такого общества сомнительна.
От сюда сомнительно что Человечество когда-либо полностью заменит свои функции сильным ИИ, это просто против его природы. Какие-то критичные вещи — да, но никогда все. Возможно будет создавать ненужные работы, сознательно тормозить использование ИИ, но не даст ИИ полностью заменить людей.fivehouse
20.06.2016 16:49ИИ очень много поменяет в жизни людей, городов, экономик, стран. Но ВСЕХ проблем он не решит. Множество проблем останутся, но да, первое время пока ИИ будет всюду проникать на эти проблемы можно будет закрыть глаза. Это как с ПК и новой электроникой и Интернетом, но на принципиально другом уровне. Размер финансового пузыря, когда сделают ИИ и начнут его пристраивать к месту и не к месту мне даже представить на самом деле страшно.
dipsy
20.06.2016 17:10Представьте, вы будете 100% уверены, что можно взять (сделать) робота, вместо вас посадить и он лучше вас любую работу сделает. Причем его и учить не надо, сам всё необходимое скачает и загрузит. Это попытка бухгалтера продолжать считать на счетах, когда вокруг все баланс на компьютере сводят. Только в данном случае счеты это мы.
Да и насчет ограничений использования. Почти бесплатные, делающие сами себя «рабы», готовые нам во всем услужить, это прямой путь к «полному соцпакету» из доступных благ для каждого, комфортное жильё, средства передвижения, отдыха, кто от этого добровольно откажется? Мне не нужна работа, мне нужно то, что я могу купить на деньги, заплаченные за мою работу.vedenin1980
20.06.2016 18:44>> это прямой путь к «полному соцпакету» из доступных благ для каждого, комфортное жильё, средства передвижения, отдыха, кто от этого добровольно откажется? Мне не нужна работа, мне нужно то, что я могу купить на деньги, заплаченные за мою работу
Уверены, что это для всех людей? Я знаю очень многих кто из вариантов всю оставшуюся жизнь ничего не делать и работать на интересной работе выберет второе. В конце концов, многие могли бы продать квартиру в Москве, уехать в тропические страны/Азию и жить ничего не делая на одни проценты. Но ведь не уезжают.dipsy
20.06.2016 19:20«ничего не делать» и «делать что угодно» это несколько разные вещи. В конце концов, можно объединиться в клуб по интересам, уехать в глушь, организовать там колонию таких же любителей жить по канонам конца 20 века, или даже в виртуальную реальность… oh shi…
vedenin1980
20.06.2016 20:09Тут не важно, «делать что угодно» == «ничего не делать» если в этом не будет никакой пользы для человечества. Рисовать картины, писать книги, придумывать стихи — роботы сделают быстрее и лучше. То есть любое хобби имеет такой же смысл как собирания гербария из сушенных листьев, вроде вы что-то делаете, но с совершенно нулевой пользой.
Поэтому нет, все доступные блага за то что за всю свою жизнь 100% не сможешь сделать ничего полезного — плохой размен на которые достаточно многие не согласятся.dipsy
20.06.2016 20:22Про картины наверное у человека всё-таки будет шанс, сделать лучше тут невозможно, можно сделать иначе, вариантов бесконечность. Даже прочая работа для человека останется, только платить за неё не будут, т.к. любой электронный болванчик сделает то же самое бесплатно, а так какая разница кто будет асфальт мести, человек или машина. Конечно до вождения транспорта и другой ответственной работы человека никто не допустит, или только в безопасных для других людей местах.
fivehouse
20.06.2016 10:01«Китайские ученые опубликовали исследование, которое является небольшим шажком к тому, чтобы ушла в небытие еще одна человеческая специальность — разработчик программного обеспечения.» Маленькие шажки имели бы смысл, если у двигающихся был бы более мение понятный план движения и каждый следующий шажок можно сделать с места, до которого дошли ранее. Нет ни того ни другого. Не известно куда двигаться и полезность шажков сомнительна. Полноценный же программист-компьютер появится никак не ранее, чем появится полноценный машинный интеллект. А полноценный машинный интеллект вытеснит очень много чего и кого, не только программистов. Машинный интеллект изменит мир неузнаваемо. До сих пор фантастика описывающая будущее с массовым распространением машинного интеллекта достаточно слабая и не проработанная.
Bukvva
20.06.2016 12:38+1>Полноценный же программист-компьютер появится никак не ранее, чем появится полноценный машинный интеллект.
Это необязательно скачкообразный процесс: раз — и появился. Постепенно достаточно «глупый» механизм будет развиваться получая опыт (не обязательно свой — например, подключая новые модули разработанные и продуманные человеком)
Человеку-программисту будет отводиться область постановки и алгоритмической формализации задач, впрочем как и сейчас только на более высоком уровне. И с каждым поумнением машины человеку можно будет все меньше конкретизировать задание и человеку же все меньше нужно будет тратить времени на достаточно низкоуровневое копание в коде.fivehouse
20.06.2016 16:28«И с каждым поумнением машины человеку можно будет все меньше конкретизировать задание...» Не будет и такого. Ведь как минимум надо общаться с рассматриваемым вами недоинтеллектом не неком недоязыке. И с каждым «поумнением» должен умнеть и сам язык. А язык сам устроен как большой взрыв по ряду причин. И еще, для полноценного программирования необходимо иметь в голове множество моделей мира, в том виде, как мы люди его понимаем этот мир. Это понимание и есть основа нашего языка и основа любой коммуникации. Мы впитали часть этих моделей еще в детстве. И модели эти должны иметь правильный доступ к себе.
Bukvva
20.06.2016 21:24+1«Ведь как минимум надо общаться с рассматриваемым вами недоинтеллектом не неком недоязыке. И с каждым «поумнением» должен умнеть и сам язык.»
Полностью согласен, все так и будет. Этот процесс уже начался давно, еще с того момента как программы писались машинными кодами, потом появились ассемблеры, потом языки программирования высокого уровня, потом в них стали появляться различные модели и парадигмы вроде ООП. Всякие фреймворки, UML и ORM-ы, специальные математические пакеты, САПР это тоже один из малых шажков к более высокоуровневому построению программ. Потом появятся формализаторы человеческого языка в более простой понятный пока еще «глупой» машине, которой даже необязательно на этом этапе пользоваться всяческими хитрыми нейросетями и прочей попыткой эмулировать психику человека. Например, это можно сравнить с работой со структурированными данными на SQL и на обычном ЯП: на SQL почти на обычном человеческом языке можно сказать какие данные получить и что нужно с ними сделать. А вот на ЯП придется долго попыхтеть чтобы самому сделать то, что за нас сделает СУБД понимающая SQL и под каждую задачу потом все переделывать(насмотрелся я на старых Clipper-щиков, которые с современными СУБД работают по-старинке затрачивая впустую кучу времени), а если мы захотим сделать сами что-то универсальное, то опять же получится СУБД которая понимает какой-то нами изобретенный язык запросов.
«Модели мира как его понимают люди» в машину загрузят сами люди. Как слепому с рождения не объяснить что такое цвет и свет или глухому что такое музыка, так и машине не объяснить человеческих понятий если у нее нет «мозга» и органов чувств. Поэтому некоторые вещи будут для машин аксиомами и для каждых непонятных новых областей будут жестко задаваться людьми. А на основе аксиом машины будут строить теоремы. Ведь и сейчас компьютеры работают на очень простых основах двоичной логики состоящей всего из нескольких операций, и все что мы сейчас видим на экране это их комбинация.
Предложу такой пример на основе которого должно быть боле наглядно видно, как это будет выглядеть.
Человек (Ч) говорит Машине (М): «Напиши программу типа Арканоид»
М: "???????????", что означает — совсем непонятно.
Голос за кадром(ГЗК) нам комментирует:«Если первые три слова приказа машине после простого логического парсинга терминов понятны, то последнее нет, т.к. машина абсолютно не знает что такое Арканоид. Человеку далекому от компьютеров это слово тоже показалось бы непонятным, т.к. в его памяти нет таких воспоминаний и ассоциаций. Машина ничего делать не будет, пока термин не будет разъяснен на основе имеющихся терминов или на основе подключенного модуля — черного ящика созданного человеком. На начальном этапе развития умных машин — программистов у них не будет никакого интеллекта т.к. недоработанный интеллект, который сейчас представляют нейросети, полностью негоден для такого точного процесса как программирование, так же как и человек-гуманитарий. Нейросети сейчас умеют рисовать, сочинять музыку, распознавать объекты, даже генерировать похожие на человеческие рассказы, но тут нет и грамма логической осмысленности, просто тупые случайные НЕточные комбинации шаблонов с тысячами обучающих примеров.(Замечательная статья по теме — https://habrahabr.ru/post/259191/ Внезапный диван леопардовой расцветки). Т.е. тут будет простой парсер человеческого языка во внутреннее представление, примерно как в SQL и этого достаточно „
Ч уточняет задание: “Арканоид это игра. Правила следующие: Игрок контролирует небольшую платформу-ракетку, которую можно передвигать горизонтально от одной стенки до другой, подставляя её под шарик, предотвращая его падение вниз. Удар шарика по кирпичу приводит к разрушению кирпича. После того как все кирпичи на данном уровне уничтожены, происходит переход на следующий уровень, с новым набором кирпичей. (С) Википедия „
ГЗК: “Забегая вперед могу сказать, что из этого описания Машина следующего поколения уже может самостоятельно сделать то, что есть в описании, замещая некоторые умолчания своим „опытом“, но результат будет соооовсем не тем, который мы ждем. Впрочем и этого описания даже по-человечески недостаточно, только умудренный опытом аксакал может додумать свое видение окунувшись в свой богатый жизненный опыт, фактически написав от себя ТЗ (такое и сейчас бывает, когда заказчик не знает, что хочет и за него надо додумывать самому). Тут не сказано, про то, что шарик может отскакивать под разными углами и вообще не сказано, что он должен отскакивать и откуда появляться. Такое слишком „гуманитарное“ описание пока еще трудно для нашей неинтеллектуальной машины»
А наша Машина первого поколения только и может на это сказать: "??????????"
Ч предпринимает попытку создать формулировку четким простым «детским» языком:«Задача: Пользователь с помощью манипулятора типа Мышь управляет прямоугольным объектом закрашенным зеленым цветом размером в 5 мм в высоту и 30 в ширину под названием Ракетка внизу экрана: при передвижении мыши по горизонтали объект Ракетка передвигается в соответствующую сторону до края экрана. В начале программы объект Шар имеющий форму круга диметром 5 мм закрашенного синим цветом начинает двигаться равномерно под углом 210 градусов из центра экрана со скоростью N мм/сек. Шар отскакивает от боковых, верхних сторон экрана и Ракетки по закону отражения. При пересечении нижней стороны экрана программа завершается с выводом сообщения „Ты проиграл!“. Объект Кирпич имеет форму прямоугольника закрашенного красным цветом размерами 10 мм в высоту и 20 в ширину. Кирпич при пересечении с Шаром исчезает, а Шар дальше движется по закону отражения.
В начале программы объекты Кирпич в количестве 10 штук располагаются в произвольном месте верхней половины экрана не пересекаясь друг с другом. Когда исчезает последний объект кирпич программа завершается с выводом сообщения „Ты выиграл!“.
ГЗК: „Это описание уже под силу реализовать в программу простому парсеру. Математические, физические, графические понятия уже знакомы Машине и являются модулями-аксиомами написанными человеком. А более простые языковые конструкции можно достаточно легко перевести в алгоритм. Непонятностей нет. Возможно мы что-то забыли, чего-то не учли, но сам алгоритм действий стал понятен машине.“
Наконец-то М говорит: „Задание ясно. Компилирую“.
Если бы машина не знала, что такое закон отражения и что вообще такое отражение, то она могла бы начать задавать уточняющие вопросы. И только когда непонятных терминов и языковых оборотов становится слишком много, то тут только и остается выдать »???????".
Повторюсь: на данном этапе развития не нужно применять «человеческо-нейронную» логику, достаточно простых парсеров естественного языка переводящих задание во внутренний алгоритмический язык(современные поисковые системы тому пример), оттранслировать который уже дело техники.
В дальнейшем, когда компьютеры начнут потихоньку «логически мыслить» можно будет скрещивать парсеры предыдущего поколения с новой более мощной нечеткой и в чем-то самостоятельно творческой логикой, тогда язык общения с машинным интеллектом будет более «гуманитарным». Да и вполне возможно, что новая «логическая» машина будет сделана как раз с помощью своего предшественника описанного в примере. И она будет способна творчески по-своему создать программу и даже не один вариант(в школе на олимпиаде по программированию у нас было тоже задание написать Арканоид и каждый написал свой отличный от других вариант) из самого первого ТЗ без подробных расписываний мелочей. Вот тут и произойдет как вы говорите «взрыв», но он не будет казаться таким большим — сейчас уже обычные люди тоже «программируют» голосом свои смартфоны на естественном языке выдавая короткие задания «ОК Г.....».Gryphon88
21.06.2016 14:35Вы же понимаете, проблема не в слове «Арканоид», а в слове «типа». Самой лучшей моделью объекта является сам объект, поэтому на запрос «Хочу игру, похожую на Арканоид», компьютер скачает и запустит Арканоид.
Bukvva
21.06.2016 15:37Если бы все компьютеры были такими умными, то проблем бы не было. Я описал ситуацию как это будет выглядеть не через сто лет(ну ладно, пусть пятьдесят), а в ближайшем будущем и это будет не мегамозг с эксабайтами памяти без которых никакой сколько-нибудь умной, логичной и самостоятельной машины не сделать, а обычный современный нам домашний компьютер с несложным «глупым» парсером естественного языка…
Gryphon88
21.06.2016 15:39Ну… оно немножечко уже есть: программа самостоятельно училась играть в игры Amiga, делался автогенератор драйверов по спецификациям, в прологе появились интеллектуальные агенты…
maxpsyhos
20.06.2016 10:58+1ИМХО, это в принципе тупиковый путь. Языки программирования создаются не для того, чтобы «распугивать гуманитариев», а потому что именно таким способом легче и короче «объяснить» компьютеру стоящую перед ним задачу. На естественном языке исчерпывающее описание задачи в большинстве случаев займёт гораздо больше места и будет гораздо сложнее читаться, чем решение на специально для этого предназначенном языке.
Ну и никто не отменял, что описание того, что должна делать программа и того, как она будет это делать — зачастую две большие разницы.atepeq
20.06.2016 12:55Да, думаю, что машины, если будут писать «для себя» (т.е., без цели интегрировать код с человеческим), будут переводить его не в С, а во что-то другое. Возможно, какое-то графовое представление. А может — сразу в машинный код.
Тот подход, что описан здесь не очень хорошо поддается масштабированию влоб — в более-менее сложной системе (при произвольном языке описания) он приведет к проблемам, связанным с комбинаторной сложностью всех возможных вариантов. Скорее, этот подход может служить аналогом того, что у хорошего программиста получается сделать почти без раздумий — найти максимальный, минимальный элементы, отсортировать пузырьком, найти подстроку в массиве строк, загрузить объект (используя ORM) из DB. Дальнейшую комбинацию этих задач нужно осуществлять уже на другом уровне абстракции, где может стоять своя RNN (или что-то еще).
Но вот обратите внимание, что таким, бессознательным образом генерируется программа, в которой еще и согласованы идентификаторы. Многие ли люди способны это сделать, параллельно разговаривая по телефону (для меня это показатель того, что действие производится автоматично)? Так что как минимум этот уровень, искусственные нейросети способны взять на себя не хуже обычных людей. Я имею в виду в ближайшей перспективе. Своеобразный продвинутый саджест методов и классов. Более высокие уровни композиции — видимо несколько позже.
BelBES
20.06.2016 17:59+1Ну почему тупиковая ветвь… лично мне тут видится очень интересным вариант, при котором результатом "обучения" сети на данных будет не набор весов, а некий детерминированный код, который решает задачу. Тогда "доучивание сети" на новых данных может сводиться к "дополнительным if'ам" и не портить ранее достигнутые результаты.
punzik
20.06.2016 14:00+1А если поручить ей создать саму себя, справится?
atepeq
20.06.2016 17:48Можно конечно подумать о движении в направлении, аналогичном методу раскрутки компилятора. Но пока это будут спекуляции, ни на чем не основанные.
RuddyRudeman
20.06.2016 16:56Вполне реально. На аргумент о том, что естественный язык неоднозначен и «гуманитарии такого наговорят» можно вообразить решение: написание программы будет диалогом с компьютером, где на все неоднозначности будут генерироваться уточняющие вопросы от «компилятора».
vedenin1980
20.06.2016 18:08Не работает это, есть генераторы сайтов, позволяющие создавать сайты клиенту таким способом. Плохо это работает, клиенты сами толком не знают что им нужно, задача программиста/аналитика понять точно им реально нужно и предложить вариант.
Yuuri
21.06.2016 15:29> На аргумент о том, что естественный язык неоднозначен
Глядишь, так и выстрелят проекты языков типа ложбана.atepeq
21.06.2016 16:10Есть в искусственных языках и другое направление — максимальное упрощение языка. При этом разрешение неоднозначностей возлагается на интеллект (пока естественный). За счет контекста. Тут нейронные сети как раз в тему. Чтобы понять фразы типа (я немного изменю оригинал): «нафига дофига нафигачили? расфигачивайте».
Пример такого языка — Токипона
marenkov
20.06.2016 17:40На самом деле, мы давно уже не пишем программы на машинном языке. Все используемые современные языки — это адаптация человеческого языка в понятный машине диалект. Данный пример — попытка перейти на еще один уровень вверх.
Несогласным предлагаю программировать на ассемблере, а еще лучше — в машинных кодах.
eldarmusin
20.06.2016 18:10Визуальное программирование это как раз таки промежуточный этап. Псевдо код уже генерируется неплохо.
Конечно до создания САП ещё далеко. Но элементарные куски программ так и будут создаваться.
Yuuri
21.06.2016 15:37> Он содержит 4 ошибки, после исправления которых программа стала решать поставленную задачу.
Что-то мне подсказывает, что для их поиска и исправления потребуется на порядок больше времени, чем для решения задачи с нуля.atepeq
21.06.2016 16:14Конечно, это всего лишь наметки на то, как в будущем может выглядеть программирование. Но я бы обратил внимание на такую вещь, как способность RNN к обобщению, возможность объединения различных вариантов. А эти 4 ошибки — это как раз ожидаемо. Со временем пройдет.
vedenin1980
А если кто-то считает, что и через 50 лет компьютеры сами писать программы не будут, какой пункт ему выбирать?
atepeq
Для этого подразумевался последний пункт про прокрастинацию — просто не хотелось писать так сухо. Могу конечно переписать, но боюсь, что пропадут тогда данные опроса.