Исследователи из компании Microsoft Research и Кембриджского университета создали систему искусственного интеллекта под названием DeepCoder, которая уже способна самостоятельно писать не очень сложные программы, решающие задачи наподобие типовых задач для соревнований по программированию. Дальнейшее развитие данного направления может привести к тому, что созданием компьютерных программ смогут заниматься люди, абсолютно ничего не понимающие в программировании. Для этого им потребуется лишь описать решаемую задачу, придерживаясь набора определенных правил.
Система DeepCoder использует технологию, называемую программным синтезом. Она берет готовые участки кода, извлеченные из кода других программ, и соединяет их в собственную последовательность, учитывая список входных и выходных данных каждого фрагмента кода. Отметим, что подобный подход широко используется и людьми-программистами, которые используют для этого свои собственные разработки, по большей части, и чужие — в более редких случаях.
Одним из основных преимущество подхода автоматизированного программного синтеза является то, что искусственный интеллект имеет возможность для составления собственной программы выбрать или наиболее эффективные участки исходного кода, или участки, наилучшим образом подходящие для данного конкретного случая. Более того, искусственный интеллект может использовать такие приемы и методы, которые никогда бы не использовали люди в силу особенностей человеческого мышления.
Принцип работы системы DeepCoder в чем-то подобен принципу работы системы, разработанной в 2015 году специалистами из Массачусетского технологического института, которая исправляет ошибки в программах, заменяя участки исполняемого кода работоспособными участками, взятыми из других программ.
Одной из самых важных составных частей системы DeepCoder является система, производящая поиск по всем общедоступным базам исходных кодов, сортировку кода, оценку его оптимальности, функциональности и полноценности. И с этой работой система DeepCoder справляется намного быстрее, нежели другие подобные системы, созданные ранее.
Система DeepCoder способна создать несложную работоспособную программу за доли секунды, в то время, как другим системам, производящим последовательную проверку различных комбинаций участков кода, требуется на такое же действие время, исчисляющееся минутами и часами. Это происходит потому, что система DeepCoder постоянно изучает, какие участки кода работают и как они делают свое дело. И система постоянно улучшает свои навыки в этом деле по мере увеличения количества решенных ею задач.
В настоящее время возможности системы DeepCoder весьма и весьма скромны, она способна решать задачи и составлять программы, состоящие из нескольких строчек кода. Но, при правильном подходе к программированию, эти несколько строчек могут заключать в себе решение достаточно сложных задач.
Читая все вышесказанное, можно почувствовать беспокойство по поводу того, что в будущем программисты, благодаря появлению подобных систем, могут остаться без работы. Однако, это совершенно не так, благодаря таким системам именно программисты будут освобождены от необходимости делать утомительную, однообразную и рутинную работу по программированию каких-либо типовых функций. А освободившееся время они смогут направить на выполнение более сложных работ.
Источник: