beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2022-12-27 06:37 pm

ChatGPT для программиста

Я понял, что бы я хотел вот от этого ChatGPT. Это, конечно, нифига не интеллект. Но это — хрень, которая работает без ошибок и не задалбывается от рутины.

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

А хочу я написать эти 10 содержательных строчек, сказать "а теперь вставь все проверки и очистку как в соседних функциях" и получить на выходе код, обвешанный некоторой обвязкой. Можно ещё проверить на типовые ошибки типа buffer overflow. В общем, даже на первый взгляд производительность содержательно растёт в разы.
yurikhan: (Default)

[personal profile] yurikhan 2022-12-28 02:26 pm (UTC)(link)

Тогда [[nodiscard]] без дополнительных уточнений. Компилятор откажется компилировать вызов, чей результат немедленно отбрасывается. А если он сохраняется в неиспользуемую переменную, то дальше включаем ворнинг про неиспользуемые переменные и промотируем его до ошибки.

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