# Chat GPT в помощь программисту

By [denis-skripnik.eth](https://paragraph.com/@denis-skripnik) · 2023-03-20

---

Chat GPT в помощь программисту
------------------------------

[https://t.me/blind\_dev](https://t.me/denis_skripnik)

Хороший инструмент, хотя, конечно, есть и недостатки...  
С них и начну:

1.  Количество символов сообщения ограничено 1000 или около того: большой код Chat GPT не сможет написать.
    
2.  Продолжение иногда корректно срабатывает: может начать писать код заново или выделить только одну функцию из кода...
    
3.  Если задача поставлена нечётко, скорее всего напишет неправильно...
    
4.  Вероятно, есть и другие минусы, о которых забыл...
    

Но всё перевешивает плюс: порой помогает значительно экономить время (зависит от сложности).

### Для чего эта статья?

Вы наверное подумали, что я совсем отдалился от читателей, раз пишу о своём - программистском. Но нет:

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

### Правила работы с Chat GPT

1.  Небольшие задачи
    
2.  Пишем 1, 2, 3 при пояснении.
    
3.  Указываем, что Chat GPT - профессиональный программист {язык программирования}.
    
4.  Если пишет ерунду, делим задачу на ещё более мелкие.
    

### Практическая задача

Я уже писал про макросы в ноябре прошлого года [https://t.me/blind\_dev/915](https://t.me/blind_dev/915)

Но тогда не было Chat GPT... Давайте создадим аналогичный документ сейчас с его помощью.

1.    
    

### 1\. Создаём промпт

Промп = запрос.

*   В начале пишем, что ИИ профессионал:  
    "Ты - профессионал в программировании макросов Libreoffice calc на VBA".
    
*   Пишем вводные:  
    "Есть calc документ: строка a: Название, доход, расход, остаток.  
    Строка 2: a2: "Результат", B2-D2 - формула суммы значений в соответствующих столбцах.  
    С третьей строки и далее идут уже разные доходы и расходы".
    
*   Ставим задачу:  
    "Создай макрос, который:  
    1\. Вставит в столбец D в строках, где есть заполнение B или C формулу Bn - Cn (где n - строка).  
    2\. В строке 2 добавит формулы сумм значений. Например, у B2 это будет сумма от B3 до B19, если числа есть с 3 по 19 строку.  
    У C2 будет формула от C3 до C17, если есть значения в этих строках.  
    В D - сумма остатков с D3 по D19".
    
*   Добавляем важное, чтоб гарантировать чёткость исполнения:  
    "Важно:  
    Цикл вставок должен опираться на данные в документе, а не на мной указанные числа".
    

Отправил запрос, и получил ответ:

![](https://storage.googleapis.com/papyrus_images/1446f54bb0b2d4e8d27d324e042cb85a1307ac3bee591f3b00be6419c4a82e48.png)

Код:

![](https://storage.googleapis.com/papyrus_images/53b6f0fa1d5b38b74139d257ba82dfecc50589df6239659c19f6aac1f6a6cc84.png)

Вставляем в Libreoffice calc или ваш редактор. Для этого в моём случае иду в Сервис, Макрос, редакировать макросы, выбираю текущий документ, и перехожу в редактор для Standart:

![](https://storage.googleapis.com/papyrus_images/d971edf406ea7e20dcba6c343bb38b7a0ae538488575472fcccec63083122202.png)

f5:

![](https://storage.googleapis.com/papyrus_images/2429539505202f18b8fa1cbfd02bffc73acbaa5b33e9f0e0e80c682bb0dbb776.png)

Ошибка. Смотрим её, строку:  
  lastRowB = Range("B" & Rows.Count).End(xlUp).Row

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

![](https://storage.googleapis.com/papyrus_images/c3841d85c144f0ac335f921eea7d79b0c3d01e0e52d2cb292aa299b114362349.png)

Chat GPT исправил код, но все равно неправильно:

![](https://storage.googleapis.com/papyrus_images/bbd7aa36e305f508fa7c0835eb4d1d3af9e88cadd20a6e984ac3ef911fceaccf.png)

Кстати, вникать в код нет необходимости: достаточно нажимать "Copy code" и вставлять в редактор макросов...

Продолжаю переписку:

![](https://storage.googleapis.com/papyrus_images/9af812009719948dbfe9dece893c6552ab2550303092b9c6ce24ce294760a1eb.png)

![](https://storage.googleapis.com/papyrus_images/72a9f8e2c96ae40dfdd0bc3fe3458627e98d7e5f5f6079b14fb48a3cdc8aa23a.png)

Учёл, что я использую Libreoffice calc, но все равно ошибся:

![](https://storage.googleapis.com/papyrus_images/f4d723725850396e88d9fea153130c8a3a2fd7db9c8b64d505728ee793bb8f1e.png)

Короче, копируем ошибки и вставляем.. до тех пор, пока не получим рабочий код:

![](https://storage.googleapis.com/papyrus_images/225f56b664c85d357ed5fecd2d2d35732c3f093a88654574dddc6487826a7a0c.png)

Запускаем, и видим немного неточный результат:

![](https://storage.googleapis.com/papyrus_images/cdc24774d9649e2411b59d3794b7037f1f6b583ae3fdb6c3aadb915c0b8f7f09.png)

Пишем уточнения:

"Код работает, но почему-то формула для вычитания B3-C3 оказалась в D4, B4-C4 в D5 и так далее.  
Кроме того, вставлены формулы в строках с 7 по 20, хотя в них нет вовсе данных...  
Исправь ошибку, и отправь код. Благодарю."

![](https://storage.googleapis.com/papyrus_images/edc4e0914774b4b7a4e9fcafb284e2a8c82d9fa66e96efeed66530523f7ead2e.png)

И опять прислал Chat GPT код с ошибкой...

В общем, вставляю ошибки и получаю ответы:

![](https://storage.googleapis.com/papyrus_images/9c3ae4e19d033166ef7796f6d451cc14d49b543d87c6859fbd44f28be0449d5f.png)

В итоге надоело, написал:  
"Сделай реализацию через условие, проверяющее значение ячейки. если оно пустое, цикл прерывается."

![](https://storage.googleapis.com/papyrus_images/e5427630968f067882222791ada7e054d6b3cad781d93e70d65be3db9dcf7357.png)

Наверное, весь код (не знаю, влез или нет на скриншот):

![](https://storage.googleapis.com/papyrus_images/0aaa4eb96e5822a76add97541f012a3cdc4dbd31c65c402db89864ebef0d8ea0.png)

"Программа Libreoffice calc после запуска подвисает, будто цикл выполняется без перерыва. При этом, ячейки не заполнены.

Через минуты две появилась ошибка:

"Ошибка времени выполнения Basic.

Свойство или метод не найдены: setCellType."

Строка:

  sheet.getCellByPosition(1, 1).setCellType(com.sun.star.table.CellContentType.VALUE)"

![](https://storage.googleapis.com/papyrus_images/7b05ef1e88a45624cbfcc97c2c8c6bc198987cae597838d0f33796c4e724c509.png)

В общем, тупит...  
Возможно, что codex работает лучше - не пробовал...

Иногда ИИ выводит конкретную строку - тогда надо нажать в редакторе макросов ctrl+f, вставить строку старую, нажать "Enter", и заменить на новую.

В итоге я остановился на этом коде, т. к. он хотя бы работает...:

![](https://storage.googleapis.com/papyrus_images/102207777ea8e0d5e085af302d53456f2200b9f14ac31d17711bb53ddd22c754.png)

Единственное, попросил исправить ошибку с перемещением формулы ниже нужного...  
Для этого написал:

"Ты ранее писал код:  
... тут код  
Но в столбце D почему-то вычитания вставляются на следующей строке... Допустим, в D4 B3-C3, В D5 B4-C4 и так далее...

Исправь это."

Ответ:

![](https://storage.googleapis.com/papyrus_images/dfbb0836f5989e781187eff663d976c2436a4c5f6afd68679f6efaf19d05f194.png)

Заметьте: нет форматированного кода. В этом случае его придётся скопировать вручную.

Далее попросил:

"Можно ли вместо фиксированного числа 19 запрашивать его у пользователя при запуске макроса? Если да, измени код соответствующим образом."

Он ответил, но вернул ошибку. Указал на это:  
"Отлично. И исправь ещё раз ошибку с переносом формулы на следующую строку (В d3 должно быть значение для B3-C3, и т. д.)"

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

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

Итоговый код:

![](https://storage.googleapis.com/papyrus_images/85ebf2268dddbf87ac047d6a9a974ece7e6c951f5575468c3804a2b5b4a0fa0e.png)

![](https://storage.googleapis.com/papyrus_images/bfb4083ebff250c8a0149691827976740ed8b3cdfb6fed60786e919b00234a39.png)

Вставил в редактор макросов, и нажал F5:

![](https://storage.googleapis.com/papyrus_images/53e2c44c9055e09d1eee5fbe8fb41baaa7ceb6a48e93b2cbc8d809088802219b.png)

Запрошен номер строки. Ввожу.

Иду в документ, и вижу введённые формулы:

![](https://storage.googleapis.com/papyrus_images/2736334fadbae7458be4201698c2bbca5ecef38b6127943e9d709716ebfa8343.png)

Допустим, добавили новые данные. Захожу в "Сервис" -> "Макросы" -> "Выполнить макрос":

![](https://storage.googleapis.com/papyrus_images/000f32346f016a81d518b24659580629a1453fdfc57b6177c40cf8ab2e4793e1.png)

Нахожу свой:

![](https://storage.googleapis.com/papyrus_images/9b02b074b3101240c8cc13a8bfa6ee08a2667c0cf7f4d89432c1b49e58d24bb4.png)

Ввожу номер строки:

![](https://storage.googleapis.com/papyrus_images/7e6023f1538596f4e1913ffc2d65fcf3ca01479eec09797ae0c6b43f26a0fa2f.png)

И получаю обновлённые данные:

![](https://storage.googleapis.com/papyrus_images/9bdc146da4e9bd8a3fb909fcfc490aea0d7c89a4a8b1cebeac7ad8ff592da917.png)

### Итог по задаче

Возможно не программисту будет сложновато, но всегда можно писать уточнения, а если не получится все равно, выбрать то, что работает...

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

### Что ещё делал с Chat GPT

1.  Вчера было уже поздно: мне было лень делать вручную, поэтому попросил Chat GPT сделать express api скрипт на основе своего другого:
    

![](https://storage.googleapis.com/papyrus_images/c5f8af8c5aeb9f5d4007b796d0695b05ceef0cbeb5550022eb9b4718cfcad66c.png)

Полученный ответ:

![](https://storage.googleapis.com/papyrus_images/e8f53f45783fd5cb1c5509cec22e7fcc79ef984b53f3fb4dd1fca265943a0fb6.png)

На удивление, получилось с первого раза.

Далее пытался добиться создания авто документации от ИИ, но не получилось... Показывать уже не стану...

2\. А здесь попросил сделать мне модальное окно на основе страницы в dpos.space:

![](https://storage.googleapis.com/papyrus_images/9db9a4c6c0906536be0aae084e6d8fb20d069b5e992207ea4de61bca2bf0702e.png)

Недостаток в том, что если потом добавляешь задачи, он может выдавать не совсем, что нужно.  
В примере этого чата я столкнулся с тем, что Chat GPT отправил мне шаблон кода без указанного добавления...  
Поэтому если и делать запрос, то со всеми данными... Другое дело, что кол-ва символов вряд ли хватит...

Вот продолжение:

![](https://storage.googleapis.com/papyrus_images/54a0b431fd972d399f10623d0550d44c741f0b2c2c5036768c98117736e3e37f.png)

И код бесполезный:

![](https://storage.googleapis.com/papyrus_images/9c08ff35ba19d607991e5636864b9539e4799852cb815a14498cdc8493d849e1.png)

Дальше уже показывать не буду...

3\. Можно спросить у Chat GPT, знает ли он о каком-то проекте / репозитории:

![](https://storage.googleapis.com/papyrus_images/47468875a01b10f6c3efa014f86c16a966ae3acd5df18e4dec1e418d16ad4caa.png)

Далее отправил свой код с комментариями знающих людей о том, что не доделал:

![](https://storage.googleapis.com/papyrus_images/3da35bcb2cb1abaf02593431389012187a9f4f8deae85853d6f2dcdae62cd559.png)

И ИИ исправил:

![](https://storage.googleapis.com/papyrus_images/caa77addaa2e7aeb31e8dbad9b27d6ad8b0843766c12ba4e62a63cb38613dd9a.png)

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

![](https://storage.googleapis.com/papyrus_images/aecc38e805ebbfb8a7fc7f8e722f42667a4a389e6c600a81ca281d5a164e1088.png)

Лишь после отправки полученного кода с просьбой доработать, получил корректный ответ:

![](https://storage.googleapis.com/papyrus_images/a3a3b4f19dfbde7f0d2273165536a3ffe1ed67a3e28a2ad69409cd62d08f0b77.png)

### Упрощаем задачи

Если поставить Chat GPT большую задачу, типа  
"Создай html страницу.

Используй библиотеки minter-js-sdk и bip39-address-key2value.js (файл index.bundle.js).

Документация:

\[Здесь код из Github\]

..."  
И т.д. Моя цель не ввести весь запрос, который большой, а сказать, что такое не сработает... Вспомните про то, что ИИ не может отправить больше 1000 символов.

Поэтому поступим иначе: запросим по частям...

"Ты отличный html и Javascript программист.

Создай html страницу с подключением minter-js-sdk и index.bundle.js.

Создай в секции head функции кодирования и декодирования согласно этой документации:  
\[здесь дока из Github\]

В случае декодирования возвращается text."

![](https://storage.googleapis.com/papyrus_images/a5b9bb791931519ce4c2645c406058f37d379b363b55f07e64dc6f986130d70d.png)

И получаем неправильный код...  
Попросил создать эти функции:

И получил верный код:

![](https://storage.googleapis.com/papyrus_images/66de1418fbaacbd64f288a4ff70245b99b076f3ec21f3e2118a3cc6a6a6d6552.png)

Далее пишу:

"Добавь к существующему коду страницы функцию получения url.

В зависимости от него выводится тот или иной контент.

В body <div id="body"></div>

url могут иметь формат #dao/create, #dao/view/address

И пр.

Структура задаётся в переменной route.":

![](https://storage.googleapis.com/papyrus_images/117d3594086ddc75d81c1a66312ae912de389077208c67673485403eb28f082a.png)

Указал, чтоб сделал объект без switch:

"Сделай объект роута вместо switch.

Пример:

let route = {

dao: {

create: \`<h1>Create dao</h1>\`,

view: {

"$address": \`<h1>View DAO by {address}</h1>\`

}

}

}

Где address - произвольные данные, названные переменной address.":

![](https://storage.googleapis.com/papyrus_images/6085275b13dbf83d0a4558c5cbacac240609e21d17efbb8cea8b54013dd00ea8.png)

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

![](https://storage.googleapis.com/papyrus_images/e12bb4a3d0be4a63add82254e455d30c975a80feb391ef921c1ce496f1054747.png)

Выше показал, что начинает не с того, с чего закончил...

Да ещё и разделил участки кода:

![](https://storage.googleapis.com/papyrus_images/f4e9835ca9d8b17c44d04870d606900f9a322964afa879dedb1fd75b38914824.png)

"Напиши только функцию обработки url и роута.":

![](https://storage.googleapis.com/papyrus_images/41bd481c27cee44c30f4f44bdea0b13b01882a4c5da5bbe6a6167236bd6f25db.png)

Как-то так...

### Всё

Показал вроде бы все возможности Chat GPT.

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

Например, вместо "Добавь к коду страницы ..." указать "Напиши функцию". А уже потом вставлять...

С вами был незрячий программист. Подписывайтесь на [https://t.me/blind\_dev,](https://t.me/blind_dev,) чтоб получать новые обзоры и новости по моим разработкам.

---

*Originally published on [denis-skripnik.eth](https://paragraph.com/@denis-skripnik/chat-gpt)*
