Со всех сторон приходят новости о том, что, мол, Google создал нейросеть, способную заменить программистов. Вот одна из заметок подобного рода.
Холдинг Alphabet, созданный основателями Google, разработал особую нейросеть, способную самостоятельно писать программный код и превращать его в работающие программы. Как пишет The Verge, над нейросетью, получившей название AlphaCode, работали специалисты компании DeepMind, входящей в холдинг.
Разработчики уверены, что в перспективе AlphaCode сможет заменить собой далеко не только начинающих программистов, чьи навыки в кодинге пока далеки от совершенства. Эта нейросеть может лишить работы и программистов более высокого уровня – со слов авторов AlphaCode, она уже «ничем не хуже среднего программиста».
Другими словами, на текущий момент работу в случае широкого распространения AlphaCode сохранят лишь самые опытные и талантливые программисты. Однако нейросети имеют свойство обучаться, и нет гарантии, что со временем она не заменит и их. Вероятность такого исхода подтверждает и тот факт, что в настоящее время AlphaCode находится на ранней стадии разработки, о чем The Verge сообщил Ориол Виньялс (Oriol Vinyals), главный научный сотрудник DeepMind.
Во-первых, Google заменил не программиста, а участника олимпиады по программированию. Разница в точности как между драг-рейсером и водителем такси или тракером-дальнобойщиком) Во-вторых не среднего, а медианного, это тоже разные вещи, хоть и не настолько.
Теперь почему все программисты завтра или через 10 лет не останутся без работы. Олимпиадное программирование - это максимально быстрое достижение очень жёстко поставленной цели. Победителя определяет скорость работы программы, но это не главное, главное - что для того, чтобы все участники были в равных условиях - олимпиадные задачи снабжаются широким набором тестов: программ, проверяющих, что конкурсные программы действительно делают то, что написано в задаче.
И вот эти тесты "стоят" в человеко-часах намного больше, чем само решение. Применить такой подход в коммерческой разработки ПО - всё равно что, возвращаясь к аналогии с гонщиками, расставить через каждую 1/4 мили ампайров с клетчатыми флагами, оборудование для фотофиниша, стартовые светофоры, а также перекрыть всё движение на время проведения заезда по всему городу (для таксистов) или по всей трассе (для дальнобойщиков). Уверен, что при таких вводных автономные такси и фуры уже давно бороздили бы всё, что подобным образом оборудовано.
Тем не менее у этой истории есть несколько векторов развития.
Первое. В разработке ПО есть такая дисциплина, как формальная верификация. Это способ математически доказать, что вот эта вот программа действительно делает ровно то, что она должна делать. Это очень дорогой процесс, он стоит в разы больше, чем разработка самого ПО, и поэтому применяется в системах типа космических аппаратов, атомных станций и т.п., где цена ошибки пропорционально высока. Одним из применений AlphaCode может быть как раз переписывание уже формально верифицированного ПО, с целью его оптимизации. Критерии оптимизации могут быть разными - размер программы (если надо её уместить в более дешёвый процессор), скорость выполнения (если нужна более оперативная реакция) и т.д. Но даже до этого нам скорее всего не один год.
Второе. Также есть такая штука, как автоматизированное тестирование ПО: когда часть функционала программы проверяется другой программой на адекватность. Практически все хорошие программы сегодня имеют ту или иную степень покрытия автотестами. Но это не является формальной верификацией, потому что автотесты покрывают только некоторые типичные и краевые случаи применения, а не вообще все; стало быть и написать по автотестам код нейросеть не сможет.
Есть, однако, такая штука, как fuzzy testing, когда на вход автотесту подаются всегда разные случайные значения, а тест на основе этих значений может понять, правильный ли ответ дала программа. На базе таких тестов AlphaGo возможно сможет сотворить что-то представляющее интерес. Давайте понаблюдаем, как оно там будет развиваться.