Команда исследователей из Массачусетского технологического института (MIT) и Intel создала алгоритм, который способен самостоятельно создавать алгоритмы. В долгосрочной перспективе это может радикально изменить роль разработчиков ПО, сообщает портал ZDNet.
Для подавляющего большинства людей написание кода сродни изучению нового языка, и чтобы упростить эту задачу, исследователи из Intel и MIT решили шагнуть за пределы классического программирования. Решение, над которым они работают — изобретение кода, который может самостоятельно писать код. Область, которую изучают исследователи, называется машинным программированием и связана с автоматизацией разработки ПО. Представленный командой инструмент MISIM (Machine Inferred code Similarity) еще на один шаг приближает разработчиков к появлению машин, которые смогут сами себя программировать. Новая технология, предварительно изучает фрагменты кода, чтобы понять, что намеревается делать та или иная часть ПО. Затем система присваивает аналогичному программному коду определенный уровень сходства и создает базу данных.
Исходя из полученных данных, имеющихся в базе, MISIM умеет распознавать намерения нового алгоритма и предлагать программистам другие способы программирования, вносить поправки или варианты, что делает код более эффективным. На данный момент Intel планирует использовать этот инструмент для внутренних проектов, чтобы помочь разработчикам в решении повседневных задач, таких как отладка, которая, как считается, занимает у программистов половину времени, отведенного на разработку. Компания рассчитывает, что когда MISIM выйдет на рынок, разработчики проявят к ней огромный интерес. «Цель MISIM — помочь разработчикам в повседневной работе с решением вопросов типа „какой наиболее эффективный способ использования этого API“ или » как правильно проверить эти данные". Система должна дать инженерам гораздо больше времени, чтобы сосредоточиться на тех элементах работы, которые на самом деле приносят реальную пользу«, — сказал исследователь Intel Labs Раян Маркус.
Лежащий в основе MISIM принцип «схожести кода» — не новый: технологии, которые определяют, похож ли один фрагмент кода на другой, существуют давно и широко применяются разработчиками для получения информации из других существующих программ. Facebook, например, использует систему рекомендаций кода под названием Aroma, которая, как и автотекст, предлагает для уже написанного инженерами фрагмента кода расширения, исходя из частоты и повторяемости ранее написанного ими кода. Отличие MISIM от других существующих систем состоит в том, что она пытается спрогнозировать действия фрагментов кода независимо от того, как он разработан, тогда как вторые фокусируются на методиках разработки, чтобы уловить сходство с другими программами. Это означает, что MISIM сможет установить сходство даже если для выполнения одних и тех же вычислений используются разные языки, структуры данных и алгоритмы.
Инструмент использует новую технологию, называемую контекстно-зависимой семантической структурой (context-aware semantic structure, CASS), которая позволяет ему интерпретировать код на более высоком уровне — он распознает не только структуру программы, но и ее намерение. Другими словами, MISIM разбирает код программы, затем его алгоритм переводит код в форму, которая отражает действия программы и игнорирует схему ее написания. Далее полученный в ходе анализа кода результат сравнивается с результатами миллионов других программ, взятых из онлайн-хранилищ. После нахождения связей с другими фрагментами кода MISIM может выступать в качестве системы рекомендаций, предлагая инженерам альтернативные способы выполнения вычислений, но с поправкой на скорость и эффективность.
Поскольку разработка ПО становится все более сложной, говорит руководитель исследовательской группы Intel по машинному программированию Джастин Готчлих, система может оказать большое влияние на продуктивность программирования. «Скорость, с которой мы выращиваем старших разработчиков, отстает от темпа внедрения новых процессорных архитектур и сложности ПО, — сказал он. — Современное гетерогенное оборудование — процессоры, графические процессоры, FPGA, ASIC, нейроморфные, а вскоре и квантовые чипы — не просто усложняет поиск разработчиков, которые могут правильно, эффективно и безопасно программировать на всем этом оборудовании, но делает его практически невозможным».
Долгосрочная цель машинного программирования состоит не просто в помощи в разработке ПО в ее нынешнем виде. В конце концов, если технология умеет угадывать намерения и предлагать в ответ соответствующие фрагменты кода, не кажется столь уж неправдоподобным, что когда-то алгоритм станет настолько развитым, что будет предлагать не только код, но и качественные идеи. Например, MISIM в сочетании с обработкой естественного языка теоретически сможет реагировать на словесные подсказки и однажды окажет помощь людям в написании программ, воспринимая их «на слух». Другими словами, выступит в роли Alexa, но для разработки ПО. Готчлих объяснил, что в настоящее время во всем мире насчитывается 27 млн. разработчиков. Конечная цель машинного программирования — расширить их число и в будущем позволить людям выражать свои идеи не в виде кода, а при помощи естественного языка, визуальных диаграмм или даже жестов.
Можно ли говорить о том, что когда-нибудь MISIM заменит разработчиков? Не стоит делать скоропалительных выводов, говорит Готчлих. Дело в том, что машинное программирование вряд ли когда-либо обойдется без данных в виде кода, то же касается специализированных аспектов программирования — вне всяких сомнений, что для того, чтобы справиться с ними, без участия профессионалов не обойтись. Суть применения MISIM сводится к тому, что пытаться создавать ПО будут миллионы людей, так что у традиционных программистов станет еще больше работы. «Мы считаем, что когда машинное программирование достигнет зрелости, это не станет причиной сокращения людей, более того, из-за него, возможно, появятся миллионы новых рабочих мест», — сказал Готчлих.
До автоматизированной разработки ПО еще далеко, считает команда разработчиков MISIM. Но, как и в случае со многими инновациями, уже пора подумать о последствиях, к которым приведет эта технология. Одновременно с решением технических проблем, связанных с машинным программированием, лаборатории Intel и MIT изучают философские и этические вопросы. В частности они изучают, как смягчить потенциально негативное влияние технологии, и вряд ли стоит ожидать, что в ближайшее время у них закончатся темы для дискуссий.