Искусственный интелект научили самостоятельно писать программы…почти

Новости, Технологии

Исследователи из Microsoft и Кембриджского университета создали систему под названием DeepCoder, которая уже сейчас умеет решать базовые задачи, которые обычно даются для решения на олимпиадах по программированию.

DeepCoder использует технику, называемую «синтез программы» — создание новых программ осуществляется путём склеивания строк кода, взятых из существующего программного обеспечения — в принципе аналогичным образом поступают и обычные программисты.

Основным преимуществом искусственного интелекта в подобных операциях — более тщательный поиск и больший охват исходного материала для анализа (в разы больше, чем может изучить живой человек), поэтому ИИ может найти ответ и выдать результат такого вида или взятый из такого источника, о котором живой человек мог бы и не догадаться. Более того, DeepCoder использует алгоритмы машинного обучения для постоянного прочесывания баз данных исходного кода и сортировки фрагментов в соответствии с их вероятной полезностью для той или иной задачи.

Все это делает систему DeepCoder намного быстрее своих предшественников: DeepCoder создает рабочие программы за доли секунды, в то время как более старые подобные системы трудились над подобными заданиями по несколько минут для склеивания нескольких возможных рабочих комбинаций, пока какая-то одна из них не оказывалась в итоге рабочей. DeepCoder самосовершенствуется анализируя итоговые комбинации исходного кода на работоспособность, тем самым каждый раз улучшая результаты при работе с новыми задачами.

Как говорит Марк Блокшмидт, сотрудник Microsoft Research и один из создателей DeepCoder, главная цель системы сводится к тому, чтобы человек, который не является профессиональным программистом, мог просто описать идею для программы, а умная система сама построит конечный код.

Как говорит Армандо Солар-Лезама из Массачусетского технологического института (который не принимал участия в работе над системой DeepCoder), в такого рода системах заложен потенциал для автоматизации рутинных процессов, что приведёт к огромному сокращению усилий, которые требуются для разработки программного кода. Но, тем не менее, он не думает, что подобные системы оставят программистов без работы, т.к. с помощью синтеза программного кода можно автоматизировать только некоторые из самых утомительных и монотонных частей программирования, а освободившееся время кодеры смогут посвятить более сложным работам.

На данный момент DeepCoder способен решать задачи программирования, которые на выходе включают в себя только около пяти строк кода. Но, как замечают профессионалы, иногда несколько строк — это все, что необходимо для достаточно сложных программ.

«Создание действительно большого куска программного кода за один раз — трудно и потенциально нереально» — говорит Солар-Лезама — «Но на самом деле большие куски программного кода собраны воедино из множества мелких кусочков»

Источник: New Scientist