Специалисты из Массачусетского технологического университета разработали программу Prophet, способную в полностью автоматическом режиме искать ошибки в исходном коде других программ и исправлять их. Согласно отчету авторов программы, для анализа и исправления программа использует стохастическую модель и способна к платформонезависимому применению исправлений кода. Prophet является значительно доработанной версией программы CodePhage.
Для работы с исходным кодом другого программного обеспечения Prophet использует данные об эффективных патчах, исходный код которых и описание опубликованы в открытых источниках в интернете. Для исправления ошибок алгоритм использует полученные из интернета и автоматически измененные патчи, причем он способен анализировать взаимодействие дописанного им самим исправленного кода с остальным кодом исправляемой программы.
Согласно утверждению разработчиков, в отличие от многих других программ для исправления кода, Prophet способен работать с исходным кодом программного обеспечения, состоящим не из нескольких сотен, а тысяч и десятков тысяч строк. При этом новый алгоритм способен к самообучению — при подборе патча к исправляемому программному обеспечению Prophet способен выбирать наиболее правильный код из множества вариантов, причем при выборе используется опыт предыдущих исправлений.
В основу алгоритма разработчики положили гипотезу о том, что у всех программ, независимо от языка, на котором они написаны, и платформы, для которой они предназначены, корректные участки кода имеют определенные универсальные признаки корректности, присутствующие на семантическом уровне. Prophet может составлять карту таких признаков корректности для изученных патчей, а затем переносить ее на анализируемый код программного обеспечения.
При работе с исходным кодом программы Prophet использует статический и динамический анализ кода, что позволяет не только выявить некорректные и потенциально нерабочие участки, но и локализовать ошибки с высокой точностью. Для выбора и изменения обнаруженных патчей и последующего их применения к программному коду также используется динамический анализ. Кроме того, как и Code Phage алгоритм Prophet способен «отмечать» потенциально опасные участки — при их исполнении с ошибкой исправленная программа просто закроется.
Тестирование Prophet раззработчики проводили на 69 известных ошибках в восьми программах с открытым исходным кодом. Результаты работы алгоритма сравнивали с другими такими программами — SPR, Kali, GenProg и AE. На анализ исходного кода и применение патчей всем испытуемым алгоритмам отводились 12 часов. За этот период Prophet сумел найти 19 патчей для 69 дефектов, 18 из которых оказались корректными. Причем 15 из 19 исправлений были подобраны алгоритмом с первой попытки.
В свою очередь SPR за 12 часов смогла найти только 16 правильных патчей из 19, причем только 11 корректных исправлений были подобраны с первой попытки. Kali, GenProg и AE сумели подобрать два, один и два корректных исправления соответственно.
Он пригодится на Марсе, Луне и ледяных спутниках планет-гигантов
Инженеры разработали концепцию робота для будущих миссий по изучению пещер на Марсе, Луне и ледяных спутниках планет-гигантов. Проект ReachBot описывает устройство с несколькими конечностями, которые способны раскладываться и дотягиваться до удаленных точек, на которых можно закрепиться с помощью захвата с металлическими шипами, сообщается в отчете NASA. При поддержке Angie — первого российского веб-сервера С тех пор как орбитальные исследовательские аппараты подтвердили существование пещер под поверхностью Марса и Луны, ученые не перестают размышлять над их полноценным исследованием. Помимо ценной информации об истории формирования небесного тела, в пещерах, куда не проникают ультрафиолетовые солнечные лучи и космические заряженные частицы, могли бы сохраниться и следы внеземной жизни. До последнего времени все подвижные роботы, предназначенные для изучения других планет, разрабатывались с расчетом, что они будут передвигаться только по сравнительно ровной поверхности. Поэтому они имеют относительно простое четырех- или шестиколесное шасси, которое устойчиво и не требует много энергии, но, к сожалению, не позволяет передвигаться по крутым каменистым склонам и скалам, и потому не подходит для исследования пещер. Инженеры под руководством Марко Павоне (Marco Pavone) из Стэндфордского университета уже несколько лет работают над многоэтапным проектом ReachBot для NASA, развивающим концепцию робота, способного перемещаться по пещерам и скалам со сложным рельефом, недоступным для других видов роботов при разных уровнях гравитации. Его главная особенность заключается в необычном способе передвижения. Вместо колес или ног у него есть несколько гибких удлиняющихся конечностей, на конце которых располагаются захваты с множеством мелких металлических шипов, которые цепляются за малейшие неровности на каменной поверхности. Аналогичный способ удержания на вертикальных поверхностях применялся в прототипе робота-скалолаза LEMUR, разработанном Лабораторией реактивного движения NASA. За счет металлических шипов робот может удерживать свое положение, распределив свой вес между несколькими конечностями, пока подыскивает следующую точку опоры для одной из них. Ожидается, что ReachBot сможет передвигаться не только по стенам и потолку, но и по полу как обычный ходячий робот. Однако на данной стадии проектирования конкретной конструкции для конечностей еще нет. Разработчики оценили параметры робота для миссии по исследованию марсианской лавовой трубки с высотой от пола до потолка порядка 30 метров. Это должно быть устройство массой около 10 килограмм, с восемью конечностями, способными развертываться до 20 метров в длину, оборудованное камерами и лидаром для навигации и прокладывания маршрута, а также для картографирования окружения. На предыдущих этапах были разработаны алгоритмы движения робота на плоскости, а также построен примитивный прототип ReachBot. В качестве четырех конечностей на нем используются стальные измерительные рулетки, оснащенные механизмом поворота, который позволяет «наводить» их на объект. После чего другой механизм раскручивает рулетку, на конце которой расположен захват с металлическими шипами. Робот умеет определять положение предметов вокруг с помощью визуальных меток, дотягиваться до них конечностями, ухватываться с помощью захватов и подтягивать себя в нужном направлении. В будущем разработчики планируют построить версию, которая способна двигаться в трехмерном пространстве. https://www.youtube.com/watch?v=Q6uvS_19OcA Существуют и другие концепции исследования инопланетных пещер, куда нет доступа колесных роботам. Одна из них предполагает использование нескольких четвероногих роботов Spot Mini. Каждый из членов группы будет отличаться от других, иметь свою роль и помогать другим.