Астрологи объявили неделю (месяц?, год?) кухонной аналитики по AI и ML на Хабре. Настало время для этой статьи, которую я писал два года назад. И вот что удивительно — она должна была устареть, однако не устарела.
Основной урок истории заключается в том, что уроками истории, как правило, пренебрегают. Этот афоризм описывает в первую очередь политику, но вполне неплохо применим и к технологиям.
Есть много технологий, поменявших мир, но поменяли они его не за счёт более быстрых лошадей, как говорил известный инноватор Форд. Новая страница истории начинается, когда технологии начинают решать задачу новым способом. Порой даже полностью изменяя её, как это было с лошадьми и автомобилями.
Так что же такого революционного дали нам нейросети применительно к программированию?
Вопрос кажется наивным. Ну серьёзно, это же огромный шаг вперёд — генерация кода по словесному описанию!
На самом деле нет, это не огромный шаг вперёд, это лишь крохотный шажок. Собственно говоря, всё, что мы имеем сейчас, было вполне доступно лет десять назад, просто не было настолько на виду. Узкоспециальные же задачи по написанию кода были реализованы куда как раньше. Сделать API и базу данных по чуть более формальному описанию, чем сейчас это требуется для ChatGPT — перечисление параметров и типов — можно уже лет тридцать как.
Давайте устроим небольшую ретроспективу. Итак, много лет тому назад программирование перешло от перекидывания перемычек на плате к использованию перфокарт. Всеобщее ликование, радость, прогнозирование стремительного роста числа программистов.
Не выросло.
Следующий этап — написание кода на клавиатуре. Теперь можно исправлять ошибки без перфоратора и стопки карт. Вот теперь любой мало-мальски образованный человек сможет писать программы.
Не смог.
Языки программирования высокого уровня. Даже не обязательно знать коды прерываний и особенности работы процессора. Любая кухарка сможет управлять компьютером!
Не смогла.
Появляются специализированные среды разработки. Автодополнение, подсветка синтаксиса, навигация по коду и прочие сниппеты. Теперь даже помнить все конструкции языка не обязательно! Программисты вообще будут не нужны!
Нужны.
Веб входит в жизнь человечества. Любой компьютер может выполнять программы на лету, твой сервер может обслуживать клиентов со всего мира на любой операционной системе, виртуализация позволяет абстрагироваться от физической реализации. Теперь даже дети могут писать несложные программы!
Не смогли.
Конструкторы сайтов, no-code, вот это всё! Теперь ВООБЩЕ не нужно знать как работает компьютер, не нужно знать ни одного языка программирования, надо только желание сделать сайт!
Всё ещё нужно.
Специально обученный чат-бот напишет всё за вас! Только скажите, что вам надо и готово!
⬆ Мы находимся здесь.
Справедливости ради, все эти конструкторы и нокоды взлетели, но очень невысоко. Никакой проект сложнее лендинга с их помощью никто успешно не реализовал. А те, кто реализовал, всё-таки писали код, причём много, больно и сложно. Потому, что исправление ошибок сложно, как приседания со штангой, потому, что производительность на уровне почты России, потому, что масштабируемость как у сталилетейного комбината, потому, что нестандартный функционал добавить так же непросто, как на космическом корабле. Много всякого было отдано в обмен на лёгкость создания минимального приложения.
И вот тут мы вплотную подошли к проблеме написания кода с помощью чатботов. Уже много раз было сказано, что это магия — что-то делается, но никто не знает как. Развернём чуть-чуть это высказывание.
Во-первых, эффективность решения, как минимум, неочевидна. Да, бот написал вам сайт, он даже работает. Как быстро он работает, насколько он надёжен, как много пользователей он может обслуживать в час, сколько ресурсов ему надо и т. д.? Если попросить бота написать клон Facebook и он его напишет, сколько будет открываться ваша личная страница?
Во-вторых, после определённого уровня сложности, время на внесение правок начинает расти экспоненциально. Не знаю, в курсе ли вы, но описание задачи в сложном проекте может иметь сотни страниц. Это для человека, причём для человека в контексте. Предполагаю, что на сегодняшний день предел написания кода с помощью бота — это приложение уровня инженерного калькулятора. Мысленный эксперимент: попробуйте описать все алгоритмы загрузки скриптов, фотографий, содержимого других соцсетей, кэширования и прочего на странице Facebook так, чтобы бот вас понял.
В-третьих, мы не знаем, какие сторонние эффекты создаёт такое приложение. Это магия, помните? Подтянуть картинки, защищённые авторским правом, перепутать негров и горилл (реальная история), вставить мат в тексты, выбрать капчу повышенной сложности, нарушить регуляцию персональных данных, распространять майнеры, вставить рекламу порнхаба — эти и многие другие опции могут быть вам доступны. А могут и не быть. Но пока весь сайт тщательно не изучите, не узнаете.
В общем, не так уж и далеко от нокода. Как-то работает, но как именно мы не знаем, чтобы работало именно так, как надо, придётся приложить много усилий.
То есть, получается, что для получения хорошего приложения надо описать принцип его работы в деталях. Но минуточку!.. Ведь именно этим и занимаются программисты, просто используют специальный язык!
Тут можно возразить, что теперь-то можно программы писать на русском/английском/суахили/вставьте нужное. Однако, языки программирования, как правило, на порядки эффективнее естественных в описании алгоритмических задач. А ещё надо помнить, что результат изменения описания непредсказуем. Потому, что магия. И надо все возможные непредсказуемости прописывать.
Если попробовать описать это языком математики, то получим что-то примерно такое:
После красной точки, которую я бы оценил примерно в 10 цикломатической сложности, разрыв будет расти стремительно. Несомненно, что за счёт более умных моделей эта точка будет сдвигаться всё дальше и дальше, например, можно будет написать что-то типа «Создай стандартную систему прав пользователей» вместо описания ролей.
Но всегда будет существовать такое значение сложности, при котором реализация задачи путём словесного описания станет слишком объёмна, а после некоторого значения и вовсе невозможна, так как превысит возможности человеческой памяти.
Да, человечество получило отличный инструмент для решения несложных задач. Да, этот инструмент будет становиться всё более и более совершенным.
Но тот момент, когда словесное описание задачи станет настолько эффективным, что победит написание кода на языке программирования, представляется мне куда более далёким, чем моя предполагаемая пенсия.
Пусть сравнение сильно некорректно, но да, мы получили армию бесплатных программистов. Бесплатных, глупых, неопытных, со склерозом, шизофренией и лёгкой формой дебилизма. А, ещё они под кислотой.
Удачи вам с постановкой задачи.
Если вы читаете статью, лишенную практической ценности, тот там обязательно должна быть ссылка на канал. А чем я не гондольер?
Подписывайтесь на мой канал.
Комментарии (43)
Zoolander
05.04.2023 08:47+14С каждым новым инструментом, облегчающим программирование, программисты освобождали себя от части труда и начинали заниматься следующим уровнем сложности.
Вы привели в качестве примера очень сложные продукты. Они стали возможны именно благодаря развитию инструментов.
Пресловутая "архитектура", "паттерны", "чистой код" Дядюшки Боба - возникли довольно поздно после возникновения языков высокого уровня.
Именно эти вещи являются наиболее сложными, недопонятыми и недорассказанными. Первые попытки изучить их и описать нельзя назвать удачными, но они были лучше, чем ничего.
С развитием чат-ботов мы получаем инструмент, который легко напишет любую программу уровня 60х годов.
Если вам нужны, если вы понимаете, умеете использовать с выгодой простые программы - вы получаете буст и карт-бланш.
Существует миллион простых идей и микропрограмм, которые никогда не реализовывались, потому что запрягать живого программиста было слишком дорого.
Теперь это пространство открыто - в том числе и для самих программистов. "Там, внизу много места" (с) ФейнманДерзайте. Просто подумайте об очень простых программах, которые раньше были запредельно дороги. Которые надо было не только написать, но и ввести (те самые перфоркарты и перемычки).
Программисты останутся нужны, потому что запрос на сложные продукты растет и они хорошо оплачиваются.
Но там, внизу, бесконечное количество простых идей, за которые вы никогда бы не взялись раньше, даже будучи кодером.
Отдайте их роботам.Electrohedgehog Автор
05.04.2023 08:47+4Ваш комментарий невероятно оптимистичен и, как мне кажется, ошибочен. Ещё в глубоком детстве я читал в знаменитой книге "А я был в компьютерном городе" проблему составления точного алгоритма. И график, если так можно его назвать, приведённый в статье, это прекрасно иллюстрирует.
Для примера - попробуйте заставить сетку написать cat, sed, awk... Да хотя бы cowsay. Я удивлюсь если у вас это вообще получится.
Пресловутая "архитектура", "паттерны", "чистой код" Дядюшки Боба - возникли довольно поздно после возникновения языков высокого уровня.
Книга - да, а шаблоны почти сразу. В семидесятые. И тому были предпосылки, которые никуда не делись.
event1
05.04.2023 08:47+7Уровень 60-х годов был совсем не низким. Размером с Маргарет Гамильтон, пимерно
Ну или предложите чатботу написать компилятор кобола, например
BlackSCORPION
05.04.2023 08:47Я бы с удовольствием отдал рутинное программирование роботам оставив себе концептуальный дизайн, архитектуру и алгоритмы решения тех или иных задач, но пока чатгпт больше усложняет чем реально помогает, пока он пробка, надеюсь люди придумают как научить машину хоть немного но думать, на уровне марвеловского джарвиса, тогда работа программиста станет идеальной.
Vladimirsencov
05.04.2023 08:47+1Я ради эксперимента попросил жену написать калькулятор на Chat GPT. Она справилась. Правда приоритет операторов не поддерживался. Попытка объяснить это боту была намного сложнее, чем сделать это руками.
Electrohedgehog Автор
05.04.2023 08:47Не переживайте, это не всем людям доступно, не то что ботам. А калькулятор инженерный или обычный?
BlackSCORPION
05.04.2023 08:47Не соглашусь что это недоступно людям, это школьный курс математики, дети по одной книге понимают как и что делать, думаю ребёнок вполне справится с задачей написать калькулятор если уделит этому время на обучение.
Linder666
05.04.2023 08:47+2Если у вас стояла задача, чтобы жена с помощью ChatGPT написала калькулятор в один запрос-ответ(пускай запрос постоянно корректируется фразами "добавь обработку скобок", "добавь функцию извлечения корня" и т.п.), то это вполне логично, что она не сможет этого сделать. ТЗ слишком объёмное.
Если задачу разделить - дай метод обработки умножения/деления, дай метод корня, степени и т.д. - справится каждый. Если будет понимать, как добавлять метод в код/класс/интерфейс... Но в таком случае все равно надо думать, а не банально копипаст в рандомный файл в рандомную строку.
Alexey2005
05.04.2023 08:47+7Поскольку все такие модели основаны на статистике, то чем реже встречается какая-либо задача в реальном коде, тем труднее для ChatGPT её решить. Создать какой-нибудь Hello World на Python для такого бота - плёвое дело, а вот сделать даже самую простейшую игрушку для NES, хотя бы уровня змейки - подозреваю, что вообще неразрешима для данной модели. Даже под ZX-Spectrum на BASIC'е и то вряд ли напишет змейку - слишком специфические особенности архитектуры требуется учитывать.
bapxat
05.04.2023 08:47+8Тот момент, когда проще всё написать самому, чем объяснять ChatGPT, как это сделать. ^_^
AlexEx70
05.04.2023 08:47Не знаю как вы, но я прежде чем решать комплексную задачу, всегда сам себе объясняю и расписываю письменно что нужно делать. Сразу в код — это если только нужен просто прототип.
Fedorkov
05.04.2023 08:47+15У меня традиция — раз в пару лет вспоминать цитату из Совершенного кода:
Десятилетиями поставщики инструментария и ученые мужи обещают, что создание средств, которые позволят отказаться от программирования, не за горами. Первым и, кажется, самым забавным случаем присвоения этого ярлыка, был язык Fortran. Fortran задумывался как средство, которое даст ученым и инженерам возможность просто набирать формулы и, таким образом, обойтись без помощи программистов.
…
За последние десятилетия программисты видели массу инструментов, которые предположительно должны были устранить необходимость программирования. Сначала это были языки третьего поколения, потом — четвертого. Потом — автоматическое программирование. Потом — CASE-средства. Потом — визуальное программирование. Каждое из этих достижений привносило значительные улучшения, и общими усилиями они сделали программирование абсолютно неузнаваемым для тех, кто изучал его до этих нововведений. Но ни одна из этих инноваций не устранила программирования как такового.
Причина в том, что программирование — принципиально сложный процесс даже при наличии хорошего инструментария. Дело не в инструментах — программистам приходится бороться с несовершенством реального мира; нам нужно досконально продумывать последовательности, зависимости и исключения, иметь дело с конечными пользователями, которые никак не могут ничего решить. Нам всегда придется бороться с плохо определенными интерфейсами с другими программными и аппаратными средствам и всегда принимать во внимание инструкции, бизнес-правила и другие источники сложных проблем, возникающие вне мира программирования.
Нам всегда будут нужны люди, способные заполнить брешь между задачей реального мира, которую нужно решить, и компьютером, предназначенным для решения этой задачи. Эти люди будут называться программистами независимо от того, манипулируют они машинными регистрами на ассемблере или диалоговыми окнами в Microsoft Visual Basic. Пока у нас есть компьютеры, нам будут нужны люди, которые говорят компьютерам, чтó делать, и эта деятельность будет называться программированием.
Когда вы слышите заявления о том, что «новый инструментарий устранит необходимость компьютерного программирования», бегите! Или хотя бы посмейтесь про себя над этим наивным оптимизмом.
anz
05.04.2023 08:47+1И да, и нет. Сейчас бот не заменит программиста. Потому что он не умеет думать, делать выводы, на основе сделанных выводов делать новые выводы и так далее. Ну как, немножко умеет (читай соседнюю статью как сеть научилась арифметике).
А вот как научится думать, тогда да, наверное обратно на пальмы залезем. Что, с какой-то стороны, не так уж и плохо
Просто всем начинает казаться что это уже гораздо ближе, чем нам всем казалось.
acsent1
05.04.2023 08:47+2Напоминает эйфорию 60х годов прошлого века. Казалось вот-вот и все будет: и роботы и ядерный синтез и космические путешествия
bbs12
05.04.2023 08:47+4Казалось вот-вот и все будет: и роботы
Недавно показывал мужику старшего поколения, ему 60 лет, современный квадрокоптер - улетел на 4км, потом нажал кнопку автовозврата, положил пульт, взял пачку чипсов и стал точить. Квадр сам прилетел и сам приземлился. Этот мужик слегка перевозбудился и потом целый день охреневал в стиле "Не ну ты видал, оно само летает! Да не может быть, будущее наступило!".
Квадр первый мавик про.
agray
05.04.2023 08:47+2Просто и ты и мужик далеки от технологий. Ракеты с "компьютерным зрением" были ещё в 60е годы https://en.wikipedia.org/wiki/TERCOM и про это много где рассказывалось, мол, анализируют местность, корректируют, могут летать без спутников, будущее.
Конечно же ничего сложного для квадрокоптера использовать технологии 60х годов прошлого века нет.
Gradiens
05.04.2023 08:47+2Когда мне нужно узнать, что там занимает место в БД, отчего это она распухла, я пишу в гугле "select table size ms sql"
Click, Ctl+C, Alt-tab, Ctl+V, F5
Все.
Никакой "магии", и результат за несколько секунд.
А формулировать вопрос нашей языковой модели и наслаждаться ее рассуждениями займет много больше времени. Зато можно сказать, что она пишет код, и бояться, что она заменит всех кожаных мешков.
Ну да, модель неимоверно крута.
Ну да, это еще один "помогатор".
Но никак не замена.
Ostapus
05.04.2023 08:47много времени на формулировку это не заняло.
Refridgerator
05.04.2023 08:47Это же касается любых СУБД, а не только MS SQL, которая совершенно случайно одна из самых популярных, да ведь? Как насчёт dBase, Paradox, Interbase? Для чистоты эксперимента. Ну и — процитировать часть официальной документации много ума не надо. Как насчёт задачи чуть посложнее — перевести хранимую процедуру с одного SQL-диалекта на другой? Особенно когда в одном диалекте есть фичи, отсутствующие в другом.
FanatPHP
05.04.2023 08:47Да, это касается и любых других СУБД. Умная железяка точно так же перепечатает популярный ответ из стаковерфлоу %)
Refridgerator
05.04.2023 08:47Так его же там может и не быть. Не на все вопросы уже есть готовые ответы на стаковерфлоу. Иногда ответы приходится искать в официальной документации, иногда в древних мануалах, отсканированных и выложенных на богом забытых домашних страничках, иногда в обсуждениях на форумах, а иногда даже лично писать автору на почту.
BlackSCORPION
05.04.2023 08:47Или залезть в исходники и разобраться самому ибо автор уже настолько преисполнился в своём познании )
Refridgerator
05.04.2023 08:47Реально приходилось декомпилировать dll для Sybase, чтобы исправить в ней ошибку)
kool79
05.04.2023 08:47Ну вот тут как раз ЖПТ и рулит. Так как Ваш запрос о select table size уже изначачально может привести к неправильному результату. А плюс ЖПТ в том, что ему можно задать вопрос человеческим языком, а не языком гугла (правильно сформулировав, учитывая доменную область). К тому же Вы ведь хотели узнать, отчего база распухла, а не размеры таблиц? Скрин прикрепить не могу, но ЖПТ на Ваш же вопрос "что там занимает место в БД, отчего это она распухла" выдал:
"В базе данных может занимать место множество различных объектов, таких как таблицы, индексы, представления, процедуры и триггеры. Размер каждого объекта зависит от количества данных, которые он содержит, а также от способа, которым они хранятся в базе данных.Вот несколько возможных причин того, что может занимать много места в базе данных: .... " И далее список из 6 пунктов, из которых размер таблицы хоть и первый но не единственный.
(Следующий вопрос будет (в зависимости от уже вашего контекта), например: "как узнать размеры таблиц?", "а как индексов?")
А вот подобный запрос в гугле может разве что выдать ссылку на эту страницу.Gradiens
05.04.2023 08:47Я в принципе согласен. Но смотрите, получается, что мы ведем разговор о том, как быстрее или удобнее получить информацию. Чтобы плавно, перетекая от одного вопроса к другому, докопаться до проблемы и решить ее.
То есть речь не о замене программиста. Речь об удобном ассистенте. И с такой ролью ЖПТ вполне справится. Он вряд ли станет универсальным инструментом. Но заменить условный Гугл в определенных случаях сможет.
Заменить самого программиста - нет.
Ну просто потому, что программист, это тот человек, который объясняет машине, что надо делать. Когда-то, как верно было подмечено в статье, для этого надо было пробивать перфокарты. Сейчас - формулировать на высокоуровневом ЯП алгоритм работы. С ЖПТ (возможно) мы перейдем на следующую ступень абстракции, и будем формулировать задачи машине еще более высокоуровнево.
Никуда мы не денемся. Просто вместо условных отверток у нас будут условные шуруповерты.
MrRewolwer
05.04.2023 08:47+3Вы все ещё делаете сайты и лендинги? Вы закончились. Вы делаете веб-приложения? Что-то вроде фотошоп - онлайн? У вас ещё лет 100.
Проблема нейросетей о которой никто не говорит - это обучающая база. Если никто не выложил онлайн-фотошоп (как пример), то нейросети его и не освоят.
Вы можете предложить творческий потенциал в нейросети. Я соглашусь, но уверен что его ещё недостаточно для соревнования 8 млрд * 200 трон связей.
ChatGPT сегодня выглядит буквально как трехлетний ребёнок с феноменальной памятью. Он даже не умеет лгать, потому что не понимает какова выгода от лжи.
Его фантазии это буквально фантазии ребенка о человеке-пауке. Каждый раз когда он галюцинирует, я, будто обращаясь к собственному сыну, говорю "вот ты фантазер".
Перед нами ребенок с феноменальной памятью. И ему нужны родители и педагоги. А ну идиоты с запретами.
anone289477
05.04.2023 08:47Вы все ещё делаете сайты и лендинги? Вы закончились.
Простите за иронию, но так про wordpress говорили) А потом про шаблонизаторы)
О, кстати, вспомнил, есть еще очень веселая верстка имейлов :) Интересно, сможет ли GPT сверстать нормально, под большинство почтовых клиентов.
А верстальщики всегда были низкоквалифицированной работой. Полноценные фронтендеры- совершенно другой уровень (но все еще ниже бекендеров).
Electrohedgehog Автор
05.04.2023 08:47Тут вы не совсем правы. Когда верстальщик это именно верстальщик а не фронтэндер низкого полёта, то зарплата у него высока как и у любого узкого специалиста.
Ostapus
05.04.2023 08:47ChatGPT сегодня выглядит буквально как трехлетний ребёнок с феноменальной памятью. Он даже не умеет лгать, потому что не понимает какова выгода от лжи.
спросите в chatgpt откуда пошел мем "сам себе злой буратино". выгоды конечно никакой - но насчет лгать.... :)
Gryphon88
05.04.2023 08:47Ответ чатгпт это фактически голос коллективного бессознательного, расспрашивая его про историю и политику ты скорее всего получишь кучу городских мифов. Да, с кодом или иными техническими сущностями он помогает хорошо, но это обычно связано с качеством обучающей выборки и однозначностью ответа.
Electrohedgehog Автор
05.04.2023 08:47+1Просто из любопытства - кто-то открывал ссылку на канал? Тут дело какое... Там совсем-совсем не канал, я просто терпеть не могу всех этих любителей подписывания и решил пошутить.
И вот я думаю, это все такие сдержанные, никто не написал что ссылка неправильная, или за 10000 просмотров никто на неё не нажал? Если второе, то я перестал понимать, зачем на Хабре вообще эти бессмысленные статьи про что попало с призывами подписываться.ispite
05.04.2023 08:47Если Вы хотели увидеть конверсию, то может стоило создать канал с 0 подписчиков, не?
А так кажется вы делаете неверные выводы.
Electrohedgehog Автор
05.04.2023 08:47Чой-то неверные? Логичные вполне выводы! Если люди вообще никак не отреагировали на этот "канал", то какие есть причины полагать, что на настоящие каналы они как-то реагируют? Кроме того, вот вам побочный аргумент: мою самую популярную статью прочитало 209000 человек, а подписаны на меня 42. Или у вас есть основания полагать, что люди, подписывающиеся на авторов Хабра это совсем не те люди, которые подписываются на каналы в Телеграм?
В целом аргументацию понимаю, но не согласен. Думаю, что сделаю такую ссылку, но со счётчиком желающих подписаться.
Neversayeverornever
05.04.2023 08:47Спасибо за статью, приятно что кто-то таки опускает народ с небес на землю.
myswordishatred
Теперь мобильные поделия с рекламой через каждые пять секунд будут генерировать нейросети, а не люди с пониженной
социальной ответственностьюпланкой качества и завышенным желанием заработать.Electrohedgehog Автор
Ну так и что это изменит? Больше, чем есть сейчас, я надеюсь, их всё равно уже не напихать, а кто их генерит - дело десятое.
myswordishatred
Я абсолютно уверен, что если что-то плохо, то может стать хужеих во-первых может стать больше, а во-вторых шаловливые ручки прежних авторов найдут себе новое применение.
Electrohedgehog Автор
В начале своей карьеры работал на фабрике по производству мусорных приложений. Как-то за неделю наклепал 97 штук вида "Научись риовать Х в стиле аниме".
Контора внезапно развалилась. Внезапно, так как и в самом деле была успешна, но попалась на махинациях с рекламным трафиком. Около 600 человек за полгода покинули тонущий корабль.
Из тех коллег, с кем я пересекаюсь, люди сейчас в финтехе (хороший финтех, не микрозаймы), ВК, Яндексе, игродельне мирового уровня (свой стенд на Е3).
Себя оценивать не буду.
Есть у меня предположение, что перестав делать всякую дрянь люди могут начать делать что-то полезное. Но это не точно.
panvartan
Все значительно хуже - читать эти поделия будут тоже нейросети. С другой стороны, вы же лично не читает вывод интерфейса sata - зачем вам знать о распродаже в супермаркете или изменение рекомендуемой нормы углеводов?