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-28 06:11 am (UTC)[[nodiscard]]
же? Можно под макросом, чтоб проверять только в одной специальной сборке, а обычным клиентам не мешать жить.no subject
Date: 2022-12-28 01:43 pm (UTC)no subject
Date: 2022-12-28 02:26 pm (UTC)Тогда
[[nodiscard]]
без дополнительных уточнений. Компилятор откажется компилировать вызов, чей результат немедленно отбрасывается. А если он сохраняется в неиспользуемую переменную, то дальше включаем ворнинг про неиспользуемые переменные и промотируем его до ошибки.Это, впрочем, автоматизация проверки того, что человек не забыл написать проверку результатов, а не автоматизация написания проверки результатов как таковой.