Исследователи из Кембриджского университета и компании Microsoft, используя машинное обучение, разработали программу, которая способна создавать другие программы, заимствуя код. Ознакомиться с работой ученых можно здесь, а ее краткое изложение приводит New Scientist. Для работы новой программе, получившей название DeepCoder, нужны лишь входные и выходные данные.
В настоящее время существует множество языков программирования низкого и высокого уровней. При этом программистам для успешной работы нередко приходится изучать несколько языков программирования. При это программирование как правило недоступно людям, не изучавшим машинные языки.
Новая программа DeepCoder, по утверждению разработчиков, в будущем позволит программировать даже тем людям, которые не знают ни одного языка. Для этого им достаточно лишь будет словами описать, какой результат желательно получить; программу в соответствии с представленным описанием DeepCoder составит сам.
В настоящее время новой программе для работы необходимы лишь входные и выходные данные, то есть некий набор значений на входе программы и другой набор значений на выходе. Опираясь на эти данные программа может определить закономерности.
После того, как закономерности, связывающие входные и выходные данные будут найдены, DeepCoder самостоятельно будет искать в других программах подходящие куски кода и из них составлять готовую собственную программу. В случае, если дать DeepCoder описание промежуточных шагов, программа составит готовый код в несколько раз быстрее.
В конце января прошлого года исследователи из Массачусетского технологического университета представили программу Prophet, способную самостоятельно искать ошибки в исходном коде других программ и исправлять их. Для анализа и исправления программа использует стохастическую модель и способна к платформонезависимому применению исправлений кода.
Для работы с исходным кодом другого программного обеспечения Prophet использует данные об эффективных патчах, исходный код которых и описание опубликованы в открытых источниках в интернете. Для исправления ошибок алгоритм использует полученные из интернета и автоматически измененные патчи.
Во время автоматического исправления ошибок программа способна анализировать взаимодействие дописанного ей исправленного кода с остальным кодом исправляемой программы. Prophet способна работать с исходным кодом программного обеспечения, состоящим не из нескольких сотен, а тысяч и десятков тысяч строк. При этом новый алгоритм способен к самообучению.
Василий Сычёв
Пока лишь со скоростью 1,6 миллиметра в секунду
Американские инженеры разработали робота, способного автономно передвигаться в толще сыпучего материала, проталкивая себя вперед с помощью двух конечностей, напоминающих плавники. В испытаниях робот продемонстрировал способность передвигаться в песке на глубине около 127 миллиметров со скоростью до 1,6 миллиметра в секунду. Статья опубликована в журнале Advanced Intelligent Systems. Сыпучие материалы, такие как песок, мягкие почвы, снег или лунный реголит, представляют собой довольно сложную среду для передвижения. Объекты, движущиеся в их толще, испытывают высокое сопротивление, возрастающее с глубиной погружения. Кроме того, сыпучая среда ограничивает возможности зондирования и обнаружения препятствий. Тем не менее инженеры пытаются создать роботов, способных передвигаться в таких условиях. Например, американские разработчики представили прототип робочервя, способного двигаться в толще песка. Для снижения сопротивления он выдувает перед собой воздух, и одновременно разматывает мягкую оболочку своей передней части, выталкивая ее вперед, в то время как остальное тело остается неподвижным. Это позволяет значительно снизить сопротивление движению. Однако для его работы требуется воздух, который приходится подводить с поверхности. Создать робота, который смог бы передвигаться в песке автономно, решили инженеры под руководством Ника Гравиша (Nick Gravish) из Калифорнийского университета в Сан-Диего. Разработанный ими робот перемещается, проталкивая себя вперед через толщу сыпучей среды с помощью двух гибких конечностей, напоминающих плавники морской черепахи. Конечности состоят из пяти звеньев. Каждое звено способно вращаться относительно предыдущего, но углы их отклонений ограничиваются с помощью фиксаторов. В движение оба плавника приводятся через червячную трансмиссию с помощью единственного электромотора. При этом трансмиссия воздействует только на первые ближайшие к корпусу звенья. Благодаря фиксаторам, ограничивающим углы поворотов звеньев, при движении вперед конечности изгибаются, испытывая меньшее сопротивление среды, а при движении назад наоборот, распрямляются, позволяя роботу отталкиваться от песка. На концах конечностей разработчики поместили сенсоры, с помощью которых робот может обнаруживать расположенные сверху объекты. Корпус робота длиной около 26 сантиметров имеет прямоугольное сечение и утолщение в передней части, которое позволяет снизить сопротивление песка при движении. Нос робота заострен и имеет наклонную поверхность сверху, которая необходима для компенсации подъемной силы, возникающей при движении в песке. С этой же целью по бокам после проведенных тестов пришлось разместить два дополнительных наклонных неподвижных плавника, так как робот имел тенденцию задирать нос при движении под действием выталкивающей силы. Чтобы избежать попадания песчинок в механизм, конечности поместили в чехлы из нейлоновой ткани. Разработчики протестировали робота, погруженного на глубину 127 миллиметров в песок, сначала в небольшом искусственном резервуаре, а после в естественных условиях в песке на пляже. В сухом песке робот смог развить скорость 1,6 миллиметра в секунду. В более влажном песке на пляже робот двигался медленнее, со скоростью около 0,57 миллиметра в секунду. В будущем инженеры планируют увеличить скорость передвижения робота, а также научить его самостоятельно погружаться в песок. Ранее мы рассказывали об исследовании, в котором физики выяснили, что происходит со структурой песка при передвижении по нему с помощью прыжков. Они обнаружили, что при правильно подобранном времени задержки между приземлениями и новым толчком, можно увеличить высоту прыжка на 20 процентов и даже больше.