ChatGPT сильно удивил: самостоятельно пишет нормальный рабочий код по моим командам, и это уже далеко не просто решения задачек с литкода

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2022-12-28 12:50

разработка по

ChatGPT сильно удивил: самостоятельно пишет нормальный рабочий код по моим командам, и это уже далеко не просто решения задачек с литкода. Я скормил AI задания по "дипломному" проекту, который мои курсанты делают в качестве проверки после того, как прошли технические курсы коллег по стеку/фреймворку. Учатся они там пару месяцев + читают обычно учебники дополнительно, процесс достаточно трудный, а по результатам получается часто весьма слабо, многие типовые джуниорские вещи не могут с ходу сделать, путаются в отношениях между моделями, в разных технических нюансах и т. п. А пояснить некому (некому было до сегодняшнего дня :).

В моём проекте (если на Python, то фреймворк Django) десяток моделек, несколько цепочек один-ко-многим, подавал я эти модельки постепенно, и AI их успешно создавал пошагово, связывал, причём правильно корректировал прежний код!

Затем я попросил добавить REST API — он тут же сделал норм. Честно говоря, я не ожидал :) Тогда дальше запросил пример выдачи подобного запроса (не рассчитывая его получить), так AI, во-первых, показал сам запрос из curl, и во-вторых, выдал пример JSON, с наглядными значениями полей вроде

{ id=2, city="New York", ... }

Причём везде AI писал пояснения, что зачем делается.

Вот тут я реально удивился. Конечно, ни о каком "понимании" говорить не приходится, иначе нам придётся полностью отказаться от академического понимания понятия понимания. Но факт, что я сам даже просто дольше бы набирал подобный код, которого довольно много получилось, ну и конечно где-то пришлось бы дополнительно подумать, погуглить что-то, на память не всё помню, синтаксис джанговских фич...

=

Потом я попросил AI сделать движок игры сокобан на C#. AI сгенерировал соответствующие классы (включая методы перемещения героя и ящиков), сам написал код, где выводится расстановка герой + ящики, и даже показал возможный вывод игры на консоль!

Потом я сказал AI добавить стены (клетка может быть пустой или непроходимой — стена), и он добавил в класс Cell булев флажок isPassable :)

Я порекомендовал сделать наследники Cell, три класса — пустая клетка, стена, и целевая клетка, куда надо ставить ящики, и AI буквально меня понял! Специально для класса TargetCell он добавил флажок isComplete, а в метод MoveBox добавил напрашивающийся по логике код, что ящик прибыл на место:

// Check if destination cell is a TargetCell

if (cells[newRow, newCol] is TargetCell targetCell) {

targetCell.isComplete = true;

}

Причём, обратите внимание, как правильно он проверяет целевую клетку по её типу. Вдобавок AI написал код генерации исходной расстановки, где края игрового поля — непроходимые стены (как он это понял? я ничего подобного ему не говорил), и поставил героя и несколько ящиков в пустые клетки...

Затем я попросил избавиться от флажка isPassable. Тут AI снова меня поразил, сделав наконец Cell абстрактным классом, без моих подсказок. Он добавил в классы-наследники версии метода IsPassable:

public override bool IsPassable()

return true; для классов пустой клетки и целевой клетки

return false; для класса стены

И подправил метод перемещения героя.

После чего я принудил AI избавиться и от метода IsPassable(), и он наконец сделал правильную иерархию:

class PassableCell : Cell { }

class ImpassableCell : Cell { }

class TargetCell : Cell {

bool isComplete;

public TargetCell() { isComplete = false; }

}

и везде в коде где нужно заменил IsPassable() на проверки типа класса ячейки.

Это реальное понимание! Это конечно не может быть просто "поиск похожих шаблонов на гитхабе", AI действительно достаточно аккуратно сам пишет код, помнит его структуру и способен его рефакторить.

=

Дальше я запросил AI сразу создать целиком графическую игру "Автогонки" (код) с использованием pygame, и он её сгенерил! Потребовалось буквально 2-3 подсказки, чтобы он сделал игру нормально работающей.

Снова подчеркну, что самое ключевое тут не в том, что AI предложит готовый шаблон, похищенный с какого-то гитхаба, нет — главное, что он условно понимает смысл этого кода, и может его рефакторить и развивать!

А вчера например вычитал, как пацан приложение на Swift для айфона с помощью AI написал.

=

Резюме такое, что, как минимум, в учебных проектах AI уже сегодня становится крайне полезным! Полезна возможность получить по конкретным вопросам качественные справки с оригинальными примерами, кусочками кода. Причём чат можно продолжить, попросить уточнения, доработки кода, AI помнит контекст.

Но и в рабочих задачках, пока относительно небольших, однозначно можно добиться очень существенного ускорения, причём потенциал тут x10-x100 (я даже полагаю, что и x100 — это будет лишь нижняя граница, но пока немного подождём).

Важно, что код многих проектов масштабируется не вертикально, в сторону усложнения, а горизонтально — просто по числу сущностей. Мой "дипломный" проект по числу классов можно легко увеличить в 10 раз, и человеку это уже будет трудно просто потому, что связи уже между десятками классов в голове держать сложно, и начинаешь быстро запутываться и постоянно копаться в коде.

А AI пофиг, да пусть хоть миллион классов будет, когда отношения между ними аккуратно продуманы, он и сейчас уже будет с ними молниеносно работать как с тремя классами.

=

Главное, надо учиться давать очень точные подсказки, и не жалеть места для пояснения смысла требуемого кода — этот смысл AI как-то ухитряется "понимать".

Чтобы продуктивно использовать ChatGPT, надо думать как ChatGPT :)

Потому что поиск в стиле гугла и общение с AI — концептуально разные use cases.

Но уже сейчас можно попросить AI написать код, даже с технической спецификой, и довольно сложный, и он сделает это весьма качественно и быстро. Вот именно поэтому сейчас будет (возможно) взлетать функциональное программирование!

Пишу регулярно о его сильных сторонах, ну вот ровно потому что ФП — это чистые функции и иммутабельность (ну, на уровне понимания джуниоров :), такой стиль великолепно ложится под GPT-like системы. Декомпозируем систему в автономные кусочки без внутренних состояний, которые легко и просто тестируются и прекрасно отдаются на реализацию AI.

Декомпозиции ребята обычно учатся довольно хорошо, но вот если нету исходного понимания (которое лишь следствие правильного проектирования), как выполнять последующую композицию, архитектурную "сборку" хорошо и надёжно работающей системы из таких кусочков, на выходе всё равно получается запутанная фигня. И это отдельная тема, где не обойтись без развития соответствующего мышления — как правильно думать о проекте не на уровне кода, а сильными абстракциями. И прямо сейчас оно становится крайне актуальным! А я ведь годами об этом твержу.

Короче говоря, в 2023-м, вот увидите, во всех ведущих онлайн-ит-школах добавятся курсы по обучению программистов работе с AI.

Что, впрочем, быстро приведёт к их саморазрушению )))

А вы сегодня можете с помощью ChatGPT получить огромное конкурентное преимущество, и снять все самые вкусные сливки!

Только не тяните. Такие революции в ИТ случаются раз в десять лет, причём эта последняя, больше ничего подобного уже не будет — технологическая сингулярность начинается прямо сейчас, на 20 лет раньше самых смелых прогнозов.

Пересматриваю мои курсы и треки, включая "дипломный" проект и СильныеИдеи, в контексте использования AI во всех возможных смыслах, и очень активно думаю об этом. Ну мой акцент не на уровне начинающих, чем будут заниматься все остальные, потому что это ещё будет какое-то короткое время очень хорошо продаваться :) а ровно наоборот — как профикам проектировать ultra large scale systems, теперь конкретно с помощью искусственного интеллекта, и как писать соответствующий код без ошибок, правильно вразумляя при этом AI. Ну и более прозаические темы конечно, как доучиться с его помощью до элитного уровня MAANG.

Очень сложные системы можно потенциально создавать уже сегодня в десятки раз быстрее и качественнее, отвечаю. Не все классы систем, но многие (которые масштабируются горизонтально), уровень тех же госуслуг например.

Главное — хорошая методика. ?

=

Кстати, тренд такой, что доступ у нас будет не просто к одному AI-ассистанту, а к облаку из мириад таких цифровых умов, только плати :) Как ими управлять? Это отдельный уникальный скилл, который пока вообще никто не умеет, но вам я по секрету подскажу, как этому учиться и тренироваться уже сейчас, совмещая полезное с полезным: пишите код в модели обмена сообщениями (берём декларативную параллельную модель, и добавляем ей асинхронный канал связи).

Раньше рассказывал про модель акторов Карла Хьюитта, и какие прикладные фреймворки тут полезно поизучать. Так вот, активно беритесь за akka.* , ну и Erlang конечно.

Программные архитектуры будущего — это чистые вычисления (как сами вычисления, так и вычисления вычислений в смысле автоматической кодогенерации), которые надо будет уметь прежде всего правильно структурировать с помощью формальных протоколов (монадическими цепочками, например).

=

Ну и наверняка возрастёт спрос на обучение начинающих с нуля (как хорошо, что я в Школе это направление вовремя закрыл :), потому что скоро окажется (да уже, фактически), что любой может собрать свой программный продукт, просто общаясь с AI в чате. Наверняка уже в 2023-м мы увидим немало примеров, как не-айтишники зарабатывают миллионы на программном воплощении своих идей. Но для этого требуется всё же минимальное понимание программирования, буквально на простейшем уровне написать сортировку списка и создать по шаблону интернет-магазин на Django. Любому сообразительному школьнику это по силам! ?

=

Конечно, объективно, AI сейчас работает на уровне пет-проекта с нуля — объёмный сторонний код в ChatGPT не запихнуть (пока), ну и приличное сомнение, что он сможет в нём действительно разобраться на уровне некоего условного "понимания".

Хотя, что мы знаем о потенциале больших языковых моделей? Какое-то внутреннее "мышление", пусть и совсем нечеловеческое, им уже явно присуще, и оно постоянно растёт. Ведь их "тупой ум" пока довольно прямо коррелирует с их размером (фактически — с вычислительными ресурсами, вкладываемыми в их обучение, а вкладывается их сегодня в AI очень много в США и Китае, потому что там хорошо понимают, что это критически важные инфраструктуры).

И на подходе уже GPT-4 с поддержкой unsupervised learning — эта модель в тысячу раз крупнее, чем нынешняя ChatGPT3, и её авторы пока осторожно намекают, что это будет уровень крепкого миддла. Эффект от неё ожидается на уровне прорывов, которые прогнозировались лишь к 2040-му году. Эффект, увы, не только позитивный — провал мировой экономики из-за того количества людей, которые потеряют работу, говорят, будет сравним с последствиями ковида.

ChatGPT is Skynet. OpenAI is Cyberdyne Systems.

Да и аналогичные супер-нейросетки других топовых ит-корпораций, инвестирующих в них миллиарды долларов, тоже на подходе. Из этих моделей, очевидно, в общий доступ предоставляются далеко не всё возможности.

Эй, Мэйлру Озон Сбер Яндекс! где русские модели для программистов? ?

=

Дорогие, пусть 2023-й с AI помощью станет лучшим годом в вашей жизни!


Источник: vk.com

Комментарии: