Не все с этими новомодными AI алгоритмами так уж и плохо.
Я вот, к примеру, недавно пописал код на C# в Visual Studio 2022 и был приятно удивлен качеством подсказок, которые мне выдавались по ходу работы. Чаще всего они были тривиальными, из области каких-то общеизвестных алгоритмических вещей (типа поиска минимального или максимального значения). Да и объем анализируемого кода, исходя из которого можно было бы сгенерировать такого рода подсказу, обычно весьма скромный, на уровне класса из двух-трех десятков строк. И сами подсказки, как правило, ограничивается строго одной строкой. Но, тем не менее, работа в связке с такими вот полуавтоматическими подстановками кода это особый, весьма прикольный опыт.
С другой стороны, надо понимать, что где-то в 10-15% случаев подсказки оказываются нерелевантными и это, на самом деле, большая проблема. Получается, что программист все равно должен напрягаться в полную силу и держать в голове корректный код. И вряд ли кто-то всерьез будет считать, что главное достоинство такого рода подсказок заключается в том, что ты просто набираешь чуть меньше букв -- производительность программиста редко когда упирается просто в скорость набора текста.
Короче, из-за несовершенства алгоритма подсказок, получается ситуация точно как с автопилотом в электрокарах Tesla. Он вроде как есть, но доверять ему нельзя и нужно все время следить за тем, что он делает и за ситуацией на дороге. Потому что иногда он ошибается и такого рода ошибки могут стоит жизни пассажирам авто. При написании кода ставки, безусловно, не столь высоки, но уверен, что активно пользующиеся такого рода фичами, могут рассказать о случаях, когда машинально принятая подсказка приводила потом к потерянному времени в отладчике и тщетным попыткам найти непонятно откуда взявшийся баг в совершенно банальном коде.
***
И если мой опыт с AI в Visual Studio это скорее позитивная история, то вот общение с ChatGPT это бесконечная череда разочарований.
Я не сильно большой фанат этого решения и даже в тех редких случаях, когда пытаюсь его использовать, постоянно натыкаюсь на крайне раздражающие моменты.
Вот список проблем:
- потеря контекста в самых простых и однозначных диалогах. Машина внезапно "забывает" то, о чем вы общались буквально одно-два предложения назад и начинает выдавать совершенно нерелевантные ответы, без учета очевидных, подразумевающихся из контекста, факторов. Например, с самого начала код просили писать на C++, а через пару промптов выдача почему-то начинается на другом языке программирования.
- выдача абсолютно общих, бессодержательных ответов на конкретно сформулированные запросы.
- выдача откровенной лжи и некорректной информации (т.н. эффект галлюцинаций). Иногда речь идет о совершенно базовых и общеизвестных вещах, сведения о которых находятся в Википедии за пару секунд.
- работа в режиме безграничного доверия и потакания клиенту: исходные запросы и утверждения имеют какие-то сверхприоритеты в системе, поэтому их содержание очень часто перекрывает истинное положение вещей. Если в запросе попросили перечислить виды слонов, обитающих в Латинской Америке, то AI кинется их перечислять, а не поставит под сомнение изначальную корректность этой просьбы. Если человек скажет, что написанный выше (абсолютно корректный) код не компилируется, то AI готов до бесконечности искать, находить и "исправлять" несуществующие ошибки.
Несколько иллюстраций.
Вот, к примеру, мой запрос о сравнении работы SIP протокола поверх TCP и поверх WebSocket.
Абсолютно некорректная (и просто бредования) выдача:
Кто не в курсе, WebSocket это надстройка поверх TCP, т.е. быть более эффективной и легковесной она просто не может быть по определению.
Так же ужасно обстоят дела с "написанием" кода. Однажды попросил написать сохранение скриншота окна в BMP файл под Windows. Сразу получил достаточно правдоподобный код, который скомпилировался и даже сохранял BMP файл при работе. Только файл был некорректного формата и не открывался ни одной программой. После нескольких безуспешных итераций в попытках исправить код (во время которых мне на руки стали выдаваться версии, которые уже просто не компилировались), AI предложил кардинально сменить стратегию и начать использовать для работы с BMP изображением какой-то там специализированный COM класс, который тянет внешние зависимости. На выходе получился принципиально новый код, который, разумеется, тоже корректно не работал. И не заработал даже после того, как я намекнул AI, что нужно все-таки не забывать вызывать CoInitialize (кстати, код имел кучу точек отказа и ноль строчек для их диагностики и обработки). После ряда безуспешных попыток на свет родилась еще одна, принципиально новая, версия с использованием GDI+. Точно такая же неработающая.
По итогу, потеряв полчаса, я пошел гуглить и через 10 секунд нашел идеально работающую версию необходимого кода на StackOverflow (на 99% совпадающую с примером из MSDN).
Даже не знаю, что тут еще комментировать... Кстати, а как там обстоят дела с запретом на использование AI для написание ответов на SO? Он все еще действует?
Мне вообще повезло, потому что все закончилось относительно быстро, но вообще в жизни случаются куда как более веселые истории. Вот тут рассказ о том, как человек попросил ChatGPT сгенерировать ему LUT обработку данных для Python. Буквально 10 строчек кода, с которыми человек потом сношался несколько часов. Знаете почему? Потому что AI при вызове функции рисования графика почему-то переставил координаты x и y местами. Ошибка, с которой можно бороться очень, очень долго даже в таком маленьком объеме кода...
Международная банковская система держится на компьютерах. Компьютеры помогают человеку управлять атомными электростанциями и десятки лет ведут космические спутники за пределы Солнечной системы. Компьютеры это наши незаменимые супер-помощники, потому что, в отличии от человека, они никогда не ошибаются.
Однако тот процесс, начало которого мы сейчас наблюдаем, это попытки заставить компьютеры работать в совершенно новой для себя роли. Мы опустили их до такого уровня, что не можем им доверить даже такую ерунду, как управление стиральной машинкой.