Изначальная идея

Да, про эту нейросеть сейчас слышно отовсюду, как она пишет текста песен, сдает экзамены, пишет куски кода, но я подумал, а сможет ли она сама целиком завершить проект под моим руководством?

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

Тема проекта

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

Начало работы

О том, что должно содержать портфолио я решил спросить у неё же
О том, что должно содержать портфолио я решил спросить у неё же

Сначала я решил сгенерировать статичный HTML файл со всей информацией. С английским у меня пока ещё не всё хорошо, поэтому я воспользуюсь переводчиком.

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

Генерация прошла не без ошибок
Генерация прошла не без ошибок

Тут мы сталкиваемся с первой проблемой при попытке написать большой и длинный код, иногда она беспричинно зависает и перестает что-либо писать. Поэтому я попробовал попросить её продолжить код, она это сделала, но...

...есть нюанс.
...есть нюанс.

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

Переписываем проект на React

Я решил, что будет неинтересно просто попросить её сгенерировать HTML (с чем она отлично справилась) и поэтому решил переписать всё на фреймворке. Сначала я выбрал Vue.js, но с ним она справлялась с трудом, делала кучу ошибок, выбирала очень странные подходы которые мне даже не удавалось загуглить, поэтому я перешёл к реакту. И сходу попросил её переписать весь код самостоятельно. (предварительно я попросил её рассказать мне как создать проект с React и TypeScript, так что за создание проекта ответственна тоже она, я лишь исполнял инструкции, разбивал на файлы и т.д)

Просто попроси её что-то переписать и она сразу это сделает
Просто попроси её что-то переписать и она сразу это сделает

С вашего позволения я не буду вставлять в статью все скриншоты, переписывание всей структуры на React заняло 5-6 длинных скриншотов, но покажу интересные моменты ниже.

Она вынесла все данные в state, получилось очень даже неплохо
Она вынесла все данные в state, получилось очень даже неплохо
Изначально весь код был размещен в одном файле - App.tsx
Изначально весь код был размещен в одном файле - App.tsx

Почему-то она не стала разбивать код на компоненты и сделала всё в один файл, что как бы лишает перенос из HTML в React какого-либо смысла, но я получил первый результат!

Уже можно отправлять в продакшн
Уже можно отправлять в продакшн

Начало долгого и мучительного процесса

Передо мной (или перед ней) стояла цель разбить файлы на компоненты, и в принципе, она поняла мою просьбу, но постоянно зависала в процессе, забывала какие-то детали, затирала данные которые ранее сама и написала. Например вот, она удалила данные из state и код начал выдавать ошибку:

Причем она вместо данных зачем-то оставила комментарии
Причем она вместо данных зачем-то оставила комментарии

Я решил целиком скопировать ошибку и отдать ей, без объяснения, что надо с этим делать и, на удивление, она поняла в чем проблема и начала её исправлять.

Объект она починила, но про данные забыла
Объект она починила, но про данные забыла

Теперь надо опять попросить заполнить пустые данные

Ура! Данные восстановлены.
Ура! Данные восстановлены.

В целом, кое как, очень сильно стараясь и постоянно зависая, она разбила код на несколько файлов, которым сама и дала названия:

  • App.tsx

  • AboutMe.tsx

  • Projects.tsx

  • Resume.tsx

  • Reviews.tsx

  • Contact.tsx

По какой-то причине Header и Footer она выносить в отдельные файлы отказалась, но да и ладно. Теперь мне было интересно возможно ли заставить её написать стили самостоятельно. По началу я дал лишь наводку:

Она понимает, что такое BEM
Она понимает, что такое BEM

По какой-то причине она забыла, что существуют другие файлы и пришлось прописывать подобный код почти для каждого блока и создавать файлы стилей для них. В некоторых она прописала классы, но не прописала CSS, из-за чего выдавало ошибку о не найденных классах. Пока что я оставил это без внимания и продолжил дальше. Хотел чтобы она прописала конкретный CSS, а не только классы.

Успех, из моих пожеланий она придумала цвета
Успех, из моих пожеланий она придумала цвета

Она положила глобальные стили в App.module.css который не был подключен, попросив её подключить файл (add styles connection to the App), она, внезапно, прописала классы хедеру, навбару и футеру. Чтож, идей как заставить писать её CSS у меня почти не осталось, мне хотелось чтобы она стилизовала страницу, а не создавала пустые классы, и вдруг она очень хорошо отреагировала на следующий запрос:

В .nav_link она решила написать SCSS, почему бы и нет, правда?
В .nav_link она решила написать SCSS, почему бы и нет, правда?

В принципе, она прописала почти всем блокам padding-и, где-то окрасила текст и больше ничего делать не стала, а я решил перестать её мучать. Давайте посмотрим, что наш интеллект смог написать почти за часа два:

Готов в продакшн!
Готов в продакшн!

Итоги

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

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

Ссылка на репозиторий и демо проекта

Комментарии (68)


  1. davidaganov21 Автор
    30.01.2023 12:29
    +4

    Прошло несколько дней с момента как я написал статью, за это время успел еще поиграться с нейронкой. Пример того, что я её просил:

    1) Спросил про то, что такое замыкание

    Получил ответ с абстрактным кодом

    2) Попросил дать практический пример

    Привела в пример подсчет количества нажатий на кнопку

    3) Написал код без замыкания с тем же функционалом, скопировал его в диалог с ней и спросил почему нельзя использовать подобный подход

    Ответила в 3 развернутых пункта почему в подобной ситуации лучше использовать замыкание.

    Так же нашёл расширение CodeGPT для VSCode и теперь генерирую в один комментарий простенькие шаблоны для реакт компонентов, благодаря чему с нуля сделать хороший типизированный компонент, для условной кнопки, занимает у меня минуты 2 после того как она выдала свой вариант.

    Она умеет генерировать СВГ. Об этом я вообще нигде не видел ещё. Попросил сделать её кнопку для бургер-меню, а она написала простенькую свг-иконку внутри кнопки. Как по мне это идеально когда делаешь какой-нибудь тестовый проект и не хочется тащить какой-нибудь пак иконок или искать свгшку в интернете.

    Найти нужное API. Например попросить сделать запрос к гитхабу за каким-то определенным репозиторием. Или сказать "напиши запрос чтобы получить курс биткоина", и она сама подберет API и напишет запрос.

    Короче, подключить её к рабочему процессу уже сейчас можно, и порой что-то простенькое сделать быстрее через неё. Программисты всё ещё нужны, как минимум пару раз она забывала поставить в конце скобочку))


  1. IvanGanev
    29.01.2023 21:35
    +33

    А можно было просто одеть варежки и попытаться кодить в них.

    Какой смысл в том что ChatGPT умеет создавать сайты если для того что бы он делал то что вам нужно, нужно, ну, самому уметь создавать сайты? Это просто лишняя прослойка, которая только мешает.


    1. Gobl1n
      29.01.2023 21:39
      +8

      Пока что. И люди, подобные автору, делают так, чтобы это с каждым днем становилось лучше. Им - спасибо.


      1. IvanGanev
        29.01.2023 21:49
        +38

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


        1. AlchemistDark
          29.01.2023 23:13

          Когда-то машины и в крестики-нолики играть не умели, но если бы Каспаров никогда не играл с компьютерами в шахматы, то возможно и в го бы Ли Сидоля не обыграли.


          1. Krasovsky
            30.01.2023 13:52
            +3

            Шахматы, крестики нолики - это все сущности имеющие понятные цели и четкие правила.

            Мое мнение - нейросеть не сможет писать код, пока не научится владеть контекстом как человек. А для того, что бы владеть контекстом как человек надо быть человеком, или очень близко к этому


            1. AlchemistDark
              30.01.2023 19:51

              Я не к тому, что если сейчас такие системы не тестировать, не искать приделы их возможностей, то они будут медленнее развиваться. Смогут они «то-то» или «то-то» из того, что не могут сейчас — вопрос открытый. Но если ничего с ними не делать, то точно не смогут.


          1. Chillingwilli
            31.01.2023 20:56

            То ли ещё будет с этими машинами.


        1. 0x131315
          30.01.2023 02:11
          +15

          Вот да. Огромный проект с миллионами строк кода. Структура сложная, много говнокода, лютое легаси. Документации, кроме самого кода, нет, как оно работает никто не скажет. Задача поправить там что-то сама по себе простая: берешь и правишь, делов то. Но прежде чем править что-то, сперва нужно во всей этой структуре отыскать место для правки - нужно проанализировать много кода, понять что он делает, в десяток мест залезть с отладчиком, убедиться что происходит именно то, что предполагается. А потом нужно понять что и как в этой структуре можно и нужно изменить, чтобы и требования выполнить, и ничего не поломать, имея ввиду что код может выполнять какие-то неизвестные и неописанные в требованиях на правки функции, да еще и постараться сделать это красиво и надёжно, чтобы не плодить говнокод и упростить поддержку. Что-то в ходе этих изысканий неизбежно вызовет фейспалмы и подвергнется рефакторингу, или даже будут найдены скрытые ошибки в какой-то логике. Вот это вот все превращает простые правки в сложный квест с невероятным сюжетом и неожиданной концовкой.

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

          У машины тут только одно преимущество: она в теории может запомнить весь код, а когда в голове держишь весь код, правки хорошо согласованы. Основная проблема человека: слишком малая ёмкость памяти, если для правки нужно держать в голове слишком много кода, часть его тут же вытесняется и забывается, получается частично что-то делаешь вслепую. Отсюда и все ООП пошло: чтобы абстрагироваться от кода и оперировать как можно меньшим количеством частей в один момент времени, не теряя ничего из виду. Но конкретно у нейронки ресурсов намного меньше, чем у машины: даже если бы она понимала что делает, ей доступно намного меньше ресурсов, чем есть на ее хосте, так что большие кодовые базы тут даже рассматривать не стоит.

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


          1. sim31r
            30.01.2023 11:17

            подвергнется рефакторингу

            Вот нейронная сеть для этого идеальна будет. Сразу укажет на переменные которые не используются и не влияют на результат. Дублирующийся код. Лишний код в принципе.


            1. solver
              30.01.2023 11:51
              +7

              Вот нейронная сеть для этого идеальна будет. Сразу укажет на переменные которые не используются и не влияют на результат. Дублирующийся код.

              Так это сейчас нормальные IDE безо всяких нейронок делают)


            1. vedenin1980
              30.01.2023 11:55
              +2

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


            1. 0x131315
              30.01.2023 12:12

              Нейронке такое можно доверить только при условии ее непогрешимости


            1. VSNN
              31.01.2023 02:47
              +1

              Так уже сейчас IDE имеют функционал подсветки неиспользуемых переменных и мест, где код был продублирован)


            1. IvanGanev
              31.01.2023 18:44

              Многие думают что легаси это обязательно куча не нужного кода. Проблема обычно обратная - что весь этот код зачем-то таки нужен.

              Код может быть легаси-вермишелью, и при этом не иметь ни единой лишней строчки. Более того, этот код может прекрасно работать и выполнять бизнес задачу.

              Проблемы начинаются тогда когда бизнесу нужно добавить новую фичу. Изменить формат данных, или внести в логику какую-то новую переменную. И тут окажется что, а куда и как вносит изменения что бы все не поломалось?


              1. developer7
                01.02.2023 01:25

                Сколько я таких видел. У таких людей ещё как правило мантра есть- а давайте всё это удалим, и напишем всё с нуля, что бы было всё правильно и красиво.


    1. hw_store
      29.01.2023 22:35
      +13

      "...надеть..." (с)


    1. Wesha
      29.01.2023 22:41
      +17

      Уже в который раз повторюсь:

      С этим вашим ИИ просто появляется очередное звено: в самом начале разработчик писал код низкого уровня (на ассемблере), который транслировался в машинный код, который исполнялся процессором. Потом разработчик стал писать код на языке высокого уровня, который транслировался в код низкого уровня, который транслировался в машинный код, который исполнялся процессором. Теперь разработчик нового уровня будет писать очень-очень подробное техническое задание, которое транслируется в код на языке высокого уровня, который транслируется в код низкого уровня, который транслируется в машинный код, который исполняется процессором....


      1. IvanGanev
        29.01.2023 23:07
        +4

        Не знаю, может быть, но то что сейчас выдает ChatGPT это явно не про это.


      1. RC_Cat
        29.01.2023 23:29
        +1

        >Теперь разработчик нового уровня будет писать очень-очень подробное техническое задание

        Лишняя абстракция, кмк. И что делать с поддержкой кода написанного ИИ?


        1. Kreastr
          30.01.2023 00:45

          Говорят оно умеет находить ошибки в коде. Какого рода ошибки - не знаю. Лично не проверял. Но в целом было бы логично предположить, что достаточно мощная сеть сможет найти типовые логические ошибки на уровне статического анализатора. Опять же для этого даже можно сделать искусственный датасет из случайных ошибок добавленных в рабочие проекты на уровне AST и проверенные существующими статическими анализаторами (чтобы сообщение об ошибке было чуть более информативным).


        1. 0x131315
          30.01.2023 02:20

          Поддерживать вручную, на большее в ближайшем будущем явно не стоит рассчитывать. Как с нейросетями для художников: можно получить простенькую заготовку по описанию, но допиливать и поддерживать ее придется самому.

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

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


        1. johnfound
          30.01.2023 02:33
          +9

          И что делать с поддержкой кода написанного ИИ?

          Разве не ясно? Дополняем техзание, а ИИ пишет все с нуля.


          1. zhulan0v
            30.01.2023 09:37
            +2

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


            1. sim31r
              30.01.2023 11:28

              И наоборот, по имеющемуся коду генерировать ТЗ. Берем программу конкурента, получаем ТЗ, дополняем и получаем программу с новым кодом, которую продаем по демпинговой цене. Это может вообще всё поменять.


              1. zhulan0v
                30.01.2023 15:49

                Тут шаг генерации ТЗ лишний, тогда уже проще писать сразу - сделай мне твиттер на питоне =)


          1. FirExpl
            30.01.2023 10:45

            И вот тут TDD раскроет себя во всей красе. Разработчик будет писать не ТЗ, а тесты и иногда делать точечные правки в результат работы нейронки


            1. PrinceKorwin
              30.01.2023 10:48
              +5

              Ну как вам сказать... У меня chatGPT пишет тесты :)


          1. vedenin1980
            30.01.2023 12:02

            Разве не ясно? Дополняем техзание, а ИИ пишет все с нуля.

            Для этого нужно, чтобы ИИ всегда писал идеально, а так не бывает (точнее придется сначала написать идеальную операционку и идеальные драйверы и т.д). Рано или поздно написанное ИИ натолкнется на какой-нибудь баг в чужом софте и выдаст ошибку 8276 (потому что где-нибудь что-то пошло не так) и ИИ ничего с этим сделать не сможет, а программист отладить программу тоже не сможет.


        1. Tantacula
          31.01.2023 01:49

          Если эта абстракция пишет за минуту код, который вы напишете за полчаса, для бизнеса это серьезная экономия. А чтобы легче было поддерживать, можно попробовать декомпозировать свой запрос и сгенерировать простые блоки, а не просить "написать соцсеть". Хотя через несколько лет и это скорее всего будет под силу.


      1. smx_ha
        30.01.2023 00:14
        +6

        Вы пропустили один этап, уже давно разработчик прежде чем писать высокоуровневый код, вначале пишет более высокоуровневый запрос в Гугл или Stackoverflow :) Chatgpt просто развитие этого этапа, ничего нового по сути, просто более продвинутый уровень поисковика. Причем пока что это именно поисковик, потому что если выйдет какой то новый язык/фрэймфорк то chatgpt не сможет на нем писать пока не появится достаточное количество материалов написанных человеком и обработанных chatgpt


        1. Wesha
          30.01.2023 02:51
          +6

          уже давно разработчик прежде чем писать высокоуровневый код, вначале пишет более высокоуровневый запрос в Гугл или Stackoverflow

          "Отучаемся говорить за всех" (c)


      1. Rive
        30.01.2023 07:57
        +4

        Уже пытались добавлять дополнительные звенья - например визуальное программирование), дальше специфичных областей типа геймдева они не пошли.

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


        1. Wizard_of_light
          30.01.2023 10:07
          +4

          текст на языке программирования пока остаётся наиболее гибким и удобным интерфейсом ввода сложных команд

          Это у компиляторов пока не хватает ресурсов распарсить естественный язык и задать уточняющие вопросы по неясным моментам, поэтому мясным мешкам приходится втискиваться в прокрустово ложе формальных языков. Но по сравнению с пробиванием дырочек в перфокартах прогресс таки заметен.


          1. developer7
            30.01.2023 15:26
            +3

            Вся проблема в том что естественный язык он общий. А в программировании приходится описывать все случаи.

            Например есть человеческая фраза: «Не лезь в розетку — убъёт!»

            В программировании будет выглядеть так:

            Не лезь в розетку — убъёт!
            ЕСЛИ ты электрик — то можешь лезть
            ЕСЛИ в розетки есть напряжение 220 и ты электрик — не лезь
            ЕСЛИ ты электрик но в перчатках — то лезь
            ЕСЛИ напряжении 10kV и ты в перчатках — не лезь
            ЕСЛИ напряжении 10kV и ты используешь клетку Фарадея и специальный уравнивающий щуп…

            И т.д. миллион вариантов

            Что бы не писать миллион букв (привет бейсику )) просто всё заменяется на X,Y,Z и прочие переменные, а условия на операторы if,for и другие.

            И вуаля! Получаем язык С. На котором удобно писать программы и понимать их. И не нужны никакие прослойки.


          1. vkni
            31.01.2023 20:44

            О глупости «программирования на естественном языке» — https://habr.com/ru/company/jugru/blog/656173/

            Естественный язык можно распарсить, просто уточняющих вопросов будет слишком много, вы задолбаетесь отвечать на что-то типа «может ли такси провозить > +9223372036854775809 или < -9223372036854775808 пассажиров?».

            Компилятор должен генерировать абсолютно работающий код, при любых условиях. У него нет права на ошибку, т.к. инструкции выполняются со скоростью 10^9 штук в секунду.


            1. developer7
              01.02.2023 01:28

              Глянул статью и увидел классную картинку из классной книги, которую мне посчастливилось в детстве получить. Ностальгия… Ещё там был крутой компьютер нарисован в виде ноутбука. Раскроешь книгу — и представляешь как будто за реальным компом сидишь.image


      1. toivo61
        30.01.2023 12:07

        Оптимист!

        ... который транслируется в байткод, который исполняется виртуальной машиной, которая исполняется... гипервизор ...


    1. Dartess
      29.01.2023 22:45
      +1

      Есть вещи которые быстрее попросить сгенерировать нейронку. Например, если у тебя есть только понимание общих концепций и нужно потратить большое количество времени на восстановление / изучение нужных для задачи вещий. Или наоборот, когда у тебя есть отличное понимание задачи и возможность её хорошо формализовать, но нет желания тратить время на реализацию.

      Пример 1 на моей практике: понадобилось быстренько поправить поведение ios-аппа, а я в swift ни бум бум (и никто в компании ни бум бум). В итоге сели с нейросеточкой и за день бизнес-задачу закрыли. Сколько я бы времени потратил, разбираясь в концепциях свифта и ios-приложений, боюсь представить. Навскидку несколько недель. Думаю, столько же, если бы я сказал что не могу сделать, и нужно искать аутсорс. Но там бы ещё денег потратили.

      Пример 2 на моей практике: понадобилось написать специфичное правило на eslint-а. Опыт написания правил у меня был, но давно, поэтому гуглить все вещи, вспоминать базовую структуру и тд я не стал, попросил сгенерировать нейронку, она же набросала документацию и тесты, буквально за 15 минут основная часть была готова. А я свой ресурс потратил уже только на шлифовку, правку документации и добавление недостающих тест-кейсов.

      Вот какой смысл в том что ChatGPT умеет делать что-то, что можешь сделать и ты сам. Экономия ресурсов - времени и "мыслетоплива".


      1. Wesha
        29.01.2023 22:57
        +25

        понадобилось быстренько поправить поведение ios-аппа, а я в swift ни бум бум (и никто в компании ни бум бум). В итоге сели с нейросеточкой и за день бизнес-задачу закрыли.

        А раз Вы, как сами признаётесь, "ни бум-бум", то откуда Вы знаете, что, использовав непонятный Вам код, Вы не внесли в своё приложение как минимум уязвимость, а как максимум — бэкдор?


        1. edtech
          30.01.2023 03:40
          +4

          Если человек знаком с другим языком программирования, то код становится уже не совсем непонятным, и можно попробовать понять его логику, прежде чем копи-пастить. Конечно, гарантий безопасного кода никто не даст, но в этом нельзя быть уверенным, и, если написать код самостоятельно, наспех изучив Swift, или в случае аутсорса. Картинка не отражает реальности, на практике ChatGPT хорошо справляется с большим числом несложных задач.


          1. Wesha
            30.01.2023 09:40
            +1

            Помнится, в моё время добрые люди любили подбрасывать новичкам пару строчек абсолютно неудобочитаемого текста на перле, который при выполнении разворачивался в rm -rf /. Особо добрые рекомендовали из-под рута запускать.


            1. izogfif
              31.01.2023 22:38

              Хороший способ приучить делать snapshot'ы виртуалок (а если не пользуетесь виртуалками, то начать пользоваться) перед выполнением чего-то непонятного, пришедшего извне.


              1. Wesha
                01.02.2023 01:26
                +1

                Это было в моё время. Тогда виртуалок ещё не было.


      1. alexshipin
        30.01.2023 09:55
        +3

        Пример 1 на моей практике: понадобилось быстренько поправить поведение ios-аппа, а я в swift ни бум бум (и никто в компании ни бум бум). В итоге сели с нейросеточкой и за день бизнес-задачу закрыли. Сколько я бы времени потратил, разбираясь в концепциях свифта и ios-приложений, боюсь представить. Навскидку несколько недель. Думаю, столько же, если бы я сказал что не могу сделать, и нужно искать аутсорс. Но там бы ещё денег потратили.

        Ура, менеджмент на высоте, иметь приложение под iOS, но не поддерживать его.

        У вас была простая задача, раз вы за сутки смогли её решить не имея опыта в данном языке, но с которой полноценный разработчик на Swift справился бы за несколько часов (минут).

        Пример 2 на моей практике: понадобилось написать специфичное правило на eslint-а. Опыт написания правил у меня был, но давно, поэтому гуглить все вещи, вспоминать базовую структуру и тд я не стал, попросил сгенерировать нейронку, она же набросала документацию и тесты, буквально за 15 минут основная часть была готова. А я свой ресурс потратил уже только на шлифовку, правку документации и добавление недостающих тест-кейсов.

        "Повторение - мать учения"

        И в первом и во втором случаях вы показали только то, что ChatGPT подходит как справочник и помощник в решении самых редких и очень простых но затратных по времени потребностей, и не более того.

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

        -----

        Короткий итог исправленной цитатой из первого комментария

        Это просто лишняя прослойка, которая только мешает...

        ChatGPT - пока прослойка, которая мешает тем, кто умеет, и будет подсказывать тем, кто не знал/забыл.

        ChatGPT пытается быть "Готовым домашним заданием по программированию", но его уровень на ближайшее время - "Справочник по забытым простым решениям" (либо любой другой удобный, но схожий по смыслу, для вас вариант названия)


    1. MRD000
      29.01.2023 23:30
      +1

      Недавно нужно было написать быстрый скрипт, который получает список задач от nomad. Еще я обычно использую requests в python, но поскольку не я пишу, а AI, решил попросить написать с urllib (встроена, не нужно устаналивать на всех серверах). Я думаю, что сам бы я долго копался все это с нуля писать. С ChatGPT вместе за примерно 10 минут получилось без изучения особенностей nomad API и какой там base url и т.п.
      Мне лично было приятнее так.


      1. 0x131315
        30.01.2023 02:23
        +1

        А если потребуется что-то изменить в ее коде, который ты не понимаешь?


        1. IvanPetrof
          30.01.2023 04:21
          +1

          Оно умеет и в обратную сторону.

          Кидаешь в неё кодом и говоришь что нужно доработать. Существующий chatgpt, конечно, ограничен размером контекста. Но даже в таком виде он умеет в реверсинжениринг небольших примеров кода. Подождём следующей версии.


        1. PrinceKorwin
          30.01.2023 07:17

          Можно попросить объяснить код словами. И GPT объяснит как этот код работает.


    1. Wotar
      31.01.2023 14:37
      -1

      • Какой смысл писать в 70-ьіх программьі с графикой. Фотошоп все равно не получится. Ой постойте...

      • Какой смьісл учить фотошоп, пару раз тьікнул в него, а Монна Лиза не нарисовалась... Ой постойте...

      • Какой смьісл учить программирование, ведь ни когда ии не сгенерит код/графику/пройдет игру лучше. Ой постой...

      • Какой смьісл создавать летающий аппарат тяжелее воздуха ( вставить шаблон ).

      • Какой смьісл Королеву изобретать ракету и пулять деревенского и его собак в космос ( вставить шабдон )

      • Какой смьісл вьіводить каракули вместо картинок, назьівать єто письменностью, и говорить, что так лучше? Заждіть...

      • Какой смьісл соберать и тьікать в землю семена, вместо охотьі? Ой заждіть.

      • Який сенс в тому круглому ободу? ...

      • Вся історія цивілізації це зміни та подолання протиріч!!! Як я змінив ворожу р на гарну Українську за один цей текст, чого і всім адептам тої мови бажаю ((;. Немає сенсу ТІЛЬКИ ВІЙНА ТА ЇЇ АДДЕПТИ ЗАГАРБНИКИ. Все א


      1. Wesha
        31.01.2023 21:30

        Какой смьісл Королеву изобретать ракету и пулять деревенского и его собак в космос

        Алё, гараж, Королёв вообще-то изобрёл межконтинентальную баллистическую ракету. А потом ради шутки вместо ИЗДЕЛИЯ в неё посадили деревенскую собаку, и всё заверте... /s


    1. ogregor
      31.01.2023 16:12

      Нейросеть это всего лишь инструмент в руках мастера. Мне надо было реализовать анимацию шейка в своем React Native проекте. Я бы конечно сделал и сам, но она сделала это за пару секунд. Мне осталось только впихнуть ее решение в код приложения.


  1. vmkazakoff
    29.01.2023 21:55
    +8

    По какой-то причине она забыла, что существуют другие файлы

    Сейчас делаю рабочий инструмент (не для кода, для обучения) на гыпытыке. Первое с чем столкнулся - оно обнуляется после каждого моего запроса. Как же так, ведь в чате оно поддерживает контекст... Но нет - оказывается в чате в каждом запросе уходит не только последний вопрос, но и история (и вопросы, и даже ответы). Только вот незадача - у модели есть ограничение на вход (сложно описать, примерно 4-6к букв, лучше почитать доку про их токены) и в какой-то момент общения история перестает помещаться и начинается так называемый дрифт. Собственно оно у вас и было.

    Вместо пруфов: https://community.openai.com/t/getting-chatgpt-to-remember-previous-chat-messages/38106/ и https://thoughtblogger.com/continuing-a-conversation-with-a-chatbot-using-gpt/


  1. FulgerX2007
    29.01.2023 22:47
    +8

    Автор написал сайт с помощью ChatGPT потому что сам разбирается в том что OpenAI генерирует если это будет делать человек который с этим не знаком то он далеко не уйдёт.


    1. codecity
      30.01.2023 00:21
      +7

      У меня так и получилось. Хотел чтобы оно сконфигурировало Kuber. Дает примеры когда, но они не работают почему-то. Разобраться почему не работает оно не может - даю ему текст ошибки - а ответов оно корректных не дает, как бы водит по кругу. Если бы я был знаком с конфигурацией k8s, то, наверное, понял в чем проблема, возможно там мелочь была. Но пока оно мне ничем не помогло - пришлось смотреть примеры в доке.


  1. johnfound
    30.01.2023 02:39
    +1

    Можно написать простой чат бот, который будет давать задание chatGPT, и потом мучать его пока код не заработает. Тоесть спрашивать – «этот код в каком файле»? «А вот здесь ошибка компиляции.» И т.д.


    1. NNikolay
      30.01.2023 05:06
      +9

      Меня терзают смутные сомнения... очень становится похоже как менеджер-бот терзает разработчика-бота, а он терзает джуна-бота.... слишком похоже на реальную жизнь


    1. sim31r
      30.01.2023 11:34

      И система может уйти в цикл бесконечный. Чат бот может забраковать хороший код из-за предупреждения компилятора и пропустить кривой код, но которой без ошибок тестов и компилятора пройдет.


      1. johnfound
        30.01.2023 15:21

        Хороший код с предупреждениями компилятора не бывает. А вот, плохой код без предупреждений компилятора, увы да, бывает.


        Но конечно, это зависит от того как реализован чат бот–начальник. Там какая-то интеллигентность понадобиться тоже. Но на много порядков проще чем chatGPT.


        1. vedenin1980
          30.01.2023 15:27

          Хороший код с предупреждениями компилятора не бывает

          Почему? Зависит от того как сделан компилятор и конкретного случая. Иногда предупреждения могут быть параноидальными, а некоторые правила эффективнее нарушить, чем соблюдать.

          Если бы предупреждения всегда приводили к плохому коду — им просто сделали бы ошибками компиляции.


          1. johnfound
            30.01.2023 19:21

            Если бы предупреждения всегда приводили к плохому коду — им просто сделали бы ошибками компиляции.
            Ну уж нет. Плохой код и неработающий код, это две большие разницы.

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


            А я говорил именно о плохом коде.


        1. developer7
          30.01.2023 15:40
          +1

          Неправда. Во первых никогда не бывает абсолютных утверждений. И это абсолютно. Шутка.

          Во вторых. Например я никогда не оставляю код с предупреждениями. И в 99% случаях они правильные. Но всегда есть нестандартные случаи. Например навскидку:

          Компилятор C# всегда ругается на не инициализированные переменные. Но проблема в том что он не смотрит вглубь кода больше чем на 1 уровень. И если инициализация будет после двух if — он этого не увидит.

          Опять же у меня в практике был случай когда статические классы инициализировать через рефлексию — тоже была ругань. Ну и так по мелочи.

          Опять же если речь про C# — то это живой язык и там чуть лине через день прилетают обновы. И порой прилетает такое — что вполне рабочий код становится жёлтым на половину. А всё потому что решили ввести новое предупреждение — не помню что, что то с null связано было. Пришлось отключать это через настройки глобально.


  1. NNikolay
    30.01.2023 05:04
    +4

    Примерно через год на Хабре будет статья какого-нибудь чувака с галеры - "Как ChatGPT год писал код вместо меня и закрыл 100500 тикетов." Запомните этот твит!


  1. ht-pro
    30.01.2023 12:14
    +1

    Можно сделать основной вывод из статьи: разработчикам, в данный момент, бояться нечего.


  1. davidaganov21 Автор
    30.01.2023 12:29
    +4

    Прошло несколько дней с момента как я написал статью, за это время успел еще поиграться с нейронкой. Пример того, что я её просил:

    1) Спросил про то, что такое замыкание

    Получил ответ с абстрактным кодом

    2) Попросил дать практический пример

    Привела в пример подсчет количества нажатий на кнопку

    3) Написал код без замыкания с тем же функционалом, скопировал его в диалог с ней и спросил почему нельзя использовать подобный подход

    Ответила в 3 развернутых пункта почему в подобной ситуации лучше использовать замыкание.

    Так же нашёл расширение CodeGPT для VSCode и теперь генерирую в один комментарий простенькие шаблоны для реакт компонентов, благодаря чему с нуля сделать хороший типизированный компонент, для условной кнопки, занимает у меня минуты 2 после того как она выдала свой вариант.

    Она умеет генерировать СВГ. Об этом я вообще нигде не видел ещё. Попросил сделать её кнопку для бургер-меню, а она написала простенькую свг-иконку внутри кнопки. Как по мне это идеально когда делаешь какой-нибудь тестовый проект и не хочется тащить какой-нибудь пак иконок или искать свгшку в интернете.

    Найти нужное API. Например попросить сделать запрос к гитхабу за каким-то определенным репозиторием. Или сказать "напиши запрос чтобы получить курс биткоина", и она сама подберет API и напишет запрос.

    Короче, подключить её к рабочему процессу уже сейчас можно, и порой что-то простенькое сделать быстрее через неё. Программисты всё ещё нужны, как минимум пару раз она забывала поставить в конце скобочку))


  1. trabl
    30.01.2023 14:06

    На самом деле я заметил что ChatGPT стал работать хуже, я не знаю почему, но у меня это именно так. Если раньше я закидывал код и просил исправить ошибки и выдать рекомендации по оптимизации, всё было ок. Сейчас меня просит скинуть код повторно, скидываю, начинает мне рассказывать что делает этот код, ок. Прошу исправить ошибки, снова просит скинуть код, и так по кругу)). Опять же, если раньше по просьбе выдавала весь код целиком, то теперь ограничивается примерами. И заставить вывести весь код целиком очень проблемно. У меня у одного так?)


    1. zhulan0v
      30.01.2023 15:54
      +1

      Видимо поджали размер буфера для контекста из-за наплыва трафика =))


    1. PrinceKorwin
      30.01.2023 15:59
      +1

      Бобро пожаловать в платное API... Ну или они так намекают :)


  1. franky_d_zoro
    30.01.2023 16:09

    Очень интересная статья! Спасибо