Pull to refresh
0
0
Send message

Есть один момент, который я ранее не видел в иных статьях.
Я не соглашусь с тем что это нам нужны системы типов, а ИИшкам не надо.
Системы типов в языках нужны по двум причинам.
1. Переиспользуемость кода. На статически типизированном ЯП не получится написать обобщенную функцию без стирания типа, если система типов недостаточно мощная. Да, ИИшки могли бы копипастить код, но это дополнительная когнитивная нагрузка даже для них, да, дженерализация тоже нагрузка, но получить x200 копирований из-за 200 не обобщенных типов такое себе. Это на 90% решает динамический полиморфизм (обычные методы как в C#, C++, Java), возможно мы слишком к ним привыкли, но это решение работает не всегда. Например оно не работает для вещей не являющихся объектами. Эффективный код оперирующий примитивами требует либо кодогенерации под каждый тип, либо рантайм генерацией исполняемого кода. Вешать это на нейронку во всех смыслах опасно, да и ей сложнее учиться.
2. Проверка инвариантов компилятором. Да, гипотетически мы можем делать это все в нашей нейронной сети, как и ИИшка. И компании обучающие ИИ приложили немало усилий чтобы они выдавали компилируемый код почти всегда. Но если какие-то проверки делает не компилятор (по закодированным в нем правилам), а нейросеть, то это значит что аналогичная работа производится в менее эффективном формате: в нейросети. Обучение более ограниченному подмножеству высокоуровневых языков означает что огромное количество неправильного кода просто некорректно для этих языков, а значит такие варианты можно очень быстро отбросить в процессе обучения и не прорабатывать их в рантайме. На данный момент нейронки архитектурно все еще упираются в экспоненциальный рост сложности структуры при увеличении сложности задачи, поэтому кодирование на высокоуровневом языке все еще эффективнее для них.

Information

Rating
Does not participate
Registered
Activity