Вопрос скорее философский и больше имеет отношение к языкам программирования, нежели к нейросетям.
Начнём с самого начала. Как будет звучать постановка задачи для нейросети?
Например: напиши 10 раз строку "hello world" с паузой в 1 сек между ними.
Окей, с этим нейросеть вполне справится. На Ruby получится что-то типа:
10.times { puts 'hello world'; sleep(1) }
Но постойте, ведь это почти тоже самое, что мы написали на человеческом языке!
Тут появляется второй вопрос — какой должен быть уровень детализации задачи, чтобы уровень детализации кода соответствовал ему?
И тут мы, немного подумав, понимает, что языки программирования — это и есть та самая нейросеть — интерпретатор или компилятор как мостик между человеческим описанием задачи и его машинной реализацией.
Усложняем задачу. Человек говорит нейросети: хочу игру с шариком, который скачет по экрану, отскакивает от стен, разбивает стену из кирпичей, а пользователь управляет доской и отбивает его.
Понятно, что человек сразу представляет в уме игру Арканоид. Но у нейросети нет такого опыта! Тут начинается погружение в детали. С какой скоростью мяч летает? Пропадает ли мяч, если его не отбить доской? А даётся ли втрой шанс? А третий? А что если все кирпичи буду разбиты?
Всё программирование состоит из тысяч мелких вопросов-требований, о которых мы даже не задумываемся, когда пишем код. А нейросеть как должна обо всём этом узнать? И опять мы приходим к тому, что достигнув максимального уровня детализации требований, получится, что мы написали программу на естественном языке и её уже не составит труда перевести в машинный. А если столько работы уже проделано, так почему бы человеку самому не закодировать эту задачу сразу на языке программирования?