ChatGPT для программиста
Dec. 27th, 2022 06:37 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Я понял, что бы я хотел вот от этого ChatGPT. Это, конечно, нифига не интеллект. Но это — хрень, которая работает без ошибок и не задалбывается от рутины.
В моём любимом OpenSSL типичная функция на 10 строчек содержательной работы содержит 10 строчек инициализации, 40 строчек проверок того, что инициализация и содержательная работа удались (функция вернула нужное значение) и ругань по этому поводу, и ещё 10 строк очистка тех ресурсов, которые я насоздавал. И форматирование, которое, впрочем, можно поручить редактору, осталось понять, как именно.
А хочу я написать эти 10 содержательных строчек, сказать "а теперь вставь все проверки и очистку как в соседних функциях" и получить на выходе код, обвешанный некоторой обвязкой. Можно ещё проверить на типовые ошибки типа buffer overflow. В общем, даже на первый взгляд производительность содержательно растёт в разы.
В моём любимом OpenSSL типичная функция на 10 строчек содержательной работы содержит 10 строчек инициализации, 40 строчек проверок того, что инициализация и содержательная работа удались (функция вернула нужное значение) и ругань по этому поводу, и ещё 10 строк очистка тех ресурсов, которые я насоздавал. И форматирование, которое, впрочем, можно поручить редактору, осталось понять, как именно.
А хочу я написать эти 10 содержательных строчек, сказать "а теперь вставь все проверки и очистку как в соседних функциях" и получить на выходе код, обвешанный некоторой обвязкой. Можно ещё проверить на типовые ошибки типа buffer overflow. В общем, даже на первый взгляд производительность содержательно растёт в разы.
no subject
Date: 2022-12-27 06:02 pm (UTC)В некоторых языках, отличных от C, проверки, что инициализация и содержательное удались, и ругань по этому поводу, прячутся в автопроброс исключений. А очистка ресурсов — в детерминированно вызываемые деструкторы, или в менеджеры контекстов, или в финализаторы. И, казалось бы, никакой ChatGPT не нужен. Однако, тем не менее, люди находят всё новые грабли, на которые наступать.
(no subject)
From:(no subject)
From:no subject
Date: 2022-12-27 06:33 pm (UTC)Насчёт того, что ChatGPT работает без ошибок - ну это явно преувеличение. И дебажить его код - то ещё удовольствие. Причём, ошибки вполне человеческие: например, он запутался с приоритетами тернарного оператора и присваивания.
Возможно, из ChatGPT можно сделать хороший линтер. Но, опять же, он будет работать "скорее всего", и поломка им кода не будет означать ошибку в ChatGPT, в отличие от используемых сейчас линтеров и оптимизаторов, которые должны работать математически строго.
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2022-12-27 06:40 pm (UTC)- Иваныч, приходи к нам обратно, нам программист нужен.
- Так у вас же обезьяна с GPT-3 есть.
- Обезьяна с GPT-3 уже тимлидом стала, нам опять программист нужен.
(no subject)
From:(no subject)
From:no subject
Date: 2022-12-27 07:15 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2022-12-27 07:45 pm (UTC)no subject
Date: 2022-12-27 07:56 pm (UTC)Мое такое ощущение, что тебе нужен dsl. Нет?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2022-12-27 08:16 pm (UTC)Или оно не настолько единообразно, чтобы позволить такой подход?
Или мы боремся за такты, и нам всегда надо внутреннюю функцию инлайнить, чтобы сэкономить вызов, а компилятор такое колдунство не умеет?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2022-12-28 01:59 am (UTC)А ход и логику выполнения надо либо контролировать, либо не контролировать, убирая под диван. На чём же и как сконцентрировать своё внимание в тексте – это вопрос может быть и к визуализатору текста.
no subject
Date: 2022-12-28 01:06 pm (UTC)no subject
Date: 2022-12-28 02:29 pm (UTC)О, а ещё за форматирование. Сейчас в C++-мире, за неимением лучшего, форматирование кода поручают clang-format’у. Который ужасен настолько, что считает допустимым мешать табы с пробелами. Нейронка, которая будет смотреть на весь уже имеемый стиль кода проекта, и форматировать последний дифф под него —
:take_my_money:
(на самом деле нет, take my employer’s money).(no subject)
From:(no subject)
From: