
Предисловие.
Можете его не читать.
Сейчас на хабаре у каждой статьи есть кликбейтная картинка для завлечения. Почти в 100% случаях она сгенерирована ИИ и в тех же 100% не несёт никакой информационной ценности. Цифровой шум. Меня даже одно время это начало раздражать. Но со временем рациональная часть мозга всё-таки взяла свое. Ну или мясная-нейросеть дотренировала веса и настроила очередные фильтры мусора. И я просто на это забил.
Так что это за картинка, такая красивая и такая же бессмысленная в заголовке? Когда-то давно я сгенерировал, уже не помню и где, имидж по промту “Дождь из хомяков”. Картинка мне понравилась, и я её сохранил. А тут как раз статья. И без кликбейтной картинки.
И что бы не увеличивать энтропию цифрового шума просто из-за лени, я достал из чулана этот имидж. Ну а что? Не хуже, чем у других. Также ярко и бессмысленно.
Вступление
Эта стать была написана в качестве комментария к одной статье, какой уже не помню, но написанную в духе мы все умрём ИИ заменит всех программистов.
Комментарий оказался весьма жирным и я решил оформить его в качестве статьи. Но когда я закончил правки, мне в голову пришла гениальная мысль – да какой в этом смысл? И текст телепортировался в мусоруку место для очень нужных вещей.
Время шло. Статьи наподобие вышеуказанной попадались всё чаще. Сегодня вышла очередная: CEO Anthropic: через полгода 90% кода будет писать ИИ. Через год — 100%
И так как в текущий момент я не пишу код рефлексирую о бессмысленности своего существования, вспомнил про то что я уже как то высказывал свой фи мнение…
Честно сказать – сам пользуюсь постоянно всякими ИИ. Но использую их в качестве продвинутого поиска. Пример: я точно знаю, что так можно сделать, но искать как синтаксически верно это реализовать лень. В этом ИИ мне помогает.
Или я хочу какую-нибудь зубодробительную конструкцию – но не знаю можно ли сделать так в текущем языке или нет. ИИ и тут мне помогает.
Но вот писать код за меня…. Тут как говорится наши полномочии всё…
Почему так думаю и попытался изложить в текстовом виде.
Мнение
В вопросе может ли ИИ писать код – есть одна парадоксальная проблема. Парадокс заключается в том что проблема одновременно и фундаментальная и невидимая.
Невидимая потому что во множестве статей в стиле ИИ победят всех человеков заменят программистов, упоминание этого вопроса встречал лишь иногда в комментариях.
Новички не знают как программировать и им кажется, что ИИ сделает всю работу за них. Как раз в этом и заключается смысл проблемы. Суть – это что ожидает каждая сторона. Что одна сторона (просящая) хочет и что другая (дающая) может дать.
“Юный программист” может только одно – попросить сделать кнопку при нажатии на которую будет х_о_р_о_ш_о получить оконечную программу. Потому как попросить другого он не знает и не может. ИИ же на столь лаконичную просьбу в свою очередь даст столь же “локoничную” программу.
А всё потому, что телепатией не обладает. И не реализует огромный список скрытого функционала, которым обычно обладает даже простая программа хотя бы для минимального запуска. И про существование которого “программист” даже не подозревает.
А нюансов даже в маленьком алгоритме – может быть очень много. Не зря есть мнение что программирование — это описание всех возможных пограничных ситуаций. Или нет ТЗ результат ХЗ максимально подробное ТЗ можно напрямую компилировать в программу.
Возьмём для примера типичное ПО. Его работу можно представить в виде развёрнутого алгоритма. Который в свою очередь будет состоять из множества однотипных кирпичиков. 4 (или сколько там) структурных блоков. Наклонённый квадрат — это условное разветвление. Параллелепипед – цикл. И т.д. Принцип работы каждой отдельной из этих фигур способен понять каждый.
Но если взять даже самую простую программу – не отдельную функцию, а цельную программу. И изобразить алгоритм, отображающий поведение всего кода. То такой алгоритм своей монструозностью будет способен повергнуть в шок даже опытного программиста. Отсюда кстати не взлетели способы визуального программирования. Когда программа растёт, лаконичные алгоритмические структуры на старте, превращаются в живописного монстра, количеству деталей которого позавидовал бы даже Босх. И очень быстро выясняется, что код – это наименьший способ изображения алгоритмов. Поэтому я со скепсисом смотрю на статьи о очередном “nocode” продукте.
И вот тут мы приходим к сути проблемы. Программирование – это построение гигантского алгоритма в уме.
Для этой суперсилы этого навыка должны быть природные данные. Его нужно тренировать годами. На такое способны ох как далеко не все. А достичь высот – только единицы. Моё мнение что, если нет задатка, а под этим я подразумеваю что бы тебе было дико интересно в этом разбирается, и голова у тебя не начинала болеть спустя 5 минут. Если нету способностей – никакие SkilFactory не помогут. Если есть – то просто сам, с дофаминовой поддержкой от собственного мозга, в кайф всё изучаешь. В нете есть бесплатные курсы абсолютно на всё. Люди покупают платные курсы – думают что они чем-то отличаются от бесплатных и их не будет тошнить как от бесплатных. Нет – всё дело в химии мозга. Если не дано, то не дано.
У программистов есть понятие – погрузится в контекст. Обычно день разработчика, когда он приступает к работе начинается с действия, которое называется – погружения в контекст. Вот прям в первые минуты – при просмотре кода, опытный программист и не программист, они не будут особо отличатся. Простыми словами – оба будут смотреть в монитор и видеть “иероглифы”. Но опытный разработчик, просматривая код – постепенно загружает в быструю память гигантский алгоритм программы. Который грамотно накладывается на ранее загруженную и структурированную информацию. И уже после этого построения – может приступать к основной работе. Модификация этого алгоритма. Кстати, построения контекста незнакомого огромного легаси проекта может занять и месяцы.
На практике, конечно, на такие жертвы идут редко. Время – деньги. Поэтому построение контекста делается в какой – то локальной части программы, затем доработка этой части. Отсюда подводные камни, когда не знаешь всей архитектуры программы – очень легко что-то сломать. Да и ломают постоянно. Но как говорил Билл Гейтс (а может и не говорил, сейчас вообще трудно проверить реальность чего-то из интернета) “Я продаю не программы без ошибок, я продаю программы, которые покупают.”
Итог
Способен ли ИИ в текущей его реализации написать полноценную программу от запроса не программиста? Не способен. Т.к. тот, кто будет ставить задачу ИИ, человек без знаний по программирования, не опишет всех нюансов программы.
Однако отдельный маленький законченный участок программы – ИИ реализовать может. Собственно, в этом качестве опытные программисты ИИ сейчас и используют.
Но как же всё-таки достичь желаемого? Говоришь ИИ – мол сделай мне игру где можно грабить караваны. ИИ делает коллекцию объектов: предметы, герои, декорации и т.п. и показывает человеку. Далее “человеческим диалогом” человек говорит: ИИ мол измени мне вон те горы. И вообще я хочу семь красных перпендикулярных линий. ИИ всё меняет и показывает результат. При этом ИИ решает все пограничные состояния “под капотом”.
Для такого диалога нужен сильный ИИ. Но когда он появится – возможно и люди то уже не особо нужны будут. Но как говорится это совсем другая история.
Автор: developer7