Сообщение Re[8]: И еще рассуждения об ИИ от 02.02.2026 6:33
Изменено 02.02.2026 7:12 Pavel Dvorkin
Re[8]: И еще рассуждения об ИИ
Здравствуйте, Sinclair, Вы писали:
PD>>Ну так PVS Studio и давали файл кода. Больше ничего.
S>А тут — не "файл", а проект. На смеси языков.
В общем, не стоит эту тему продолжать, тем более, что я не знаю, что PVS сейчас может.
S>Нет, я говорю о том, что обычные, не ИИ инструменты в проекте уже есть. И они все ничего не нашли. А вот ИИ посмотрел — и увидел, что логика нарушена.
А все-так, пожалуйста, объясните, как работает. Я что-то вижу противоречие между "ИИ посмотрел — и увидел, что логика нарушена" и словами из прошлого сообщения о том, что он делает свой анализ после запуска unit тестов. На что именно посмотрел ? На код или еще и на результат прохождения юнит-тестов ? Вообще-то юнит — тесты сами либо ничего не сообщают, либо выдают информацию про непрошедшие assert или про падению по исключению. Поэтому просто при их запуске ничего о том, что происходило внутри, узнать не удастся. Получить что-то большее от прохождения юнит-тестов можно только если их запустить под собой, то есть инструментировать код в стиле профайлера или Code Coverage. Это делается или нет ? Если нет, а просто юнит-тесты запускаются — какую информацию ИИ может собрать от их прохождения, чтобы делать выводы? Вот это я пока не понимаю.
S>Нет. Я же привёл пример. ИИ в отличие от шаблонных анализаторов пишет понятным языком "Код открывает файл лога вызовом CreateFile(), но её результат не проверяется. Поэтому при неудаче открытия запись FileWeite на три строки ниже не сработает".
Ну слава богу. Если бы анализатор выдал просто "CreateFile result not checked", то, как говорил Воланд, "Без тебя бы мы никак не догадались об этом". Кстати, о том, что потом используется этот непроверенный хендл, он сообщит, думаю. Тут и без ИИ несложно сделать.
S>Не, я меня нет задачи убедить кого-то, что божьей искры не существует. Но ИИ сейчас успешно берёт на себя функции, которые ещё год назад казались подвластными _исключительно_ человеку.
S>Как насчёт задачки "проверь соответствие кода спецификации"? Спецификация — на естественном языке, записана в маркдауне.
S>Или "найди противоречия в документации проекта". Вот прямо так, даже без перечисления файлов документации.
S>Или "найди все ссылки в документах проекта и сделай их гиперссылками", где под "ссылкой" понимается любое упоминание вроде "список констант лежит в файле consts.hpp в папке common".
S>Всё это никакие линтеры и ПВЗ студии не делают.
Я с этим не спорю. PVS не делает, не его это дело. Существуют ли программы без ИИ, которые нечто подобное делают — не знаю, но готов допустить, что без ИИ это невозможно. Вот только все это к 1-6 не имеет отношения, я ограничился только этой тематикой.
S>Ладно, пёс с ним, допустим, PVS Studio нашла V1051. Исправить эту проблему в коде она может?
Нет, конечно. Не ее функции. Она же только статический анализатор кода.
PD>>Ну так PVS Studio и давали файл кода. Больше ничего.
S>А тут — не "файл", а проект. На смеси языков.
В общем, не стоит эту тему продолжать, тем более, что я не знаю, что PVS сейчас может.
S>Нет, я говорю о том, что обычные, не ИИ инструменты в проекте уже есть. И они все ничего не нашли. А вот ИИ посмотрел — и увидел, что логика нарушена.
А все-так, пожалуйста, объясните, как работает. Я что-то вижу противоречие между "ИИ посмотрел — и увидел, что логика нарушена" и словами из прошлого сообщения о том, что он делает свой анализ после запуска unit тестов. На что именно посмотрел ? На код или еще и на результат прохождения юнит-тестов ? Вообще-то юнит — тесты сами либо ничего не сообщают, либо выдают информацию про непрошедшие assert или про падению по исключению. Поэтому просто при их запуске ничего о том, что происходило внутри, узнать не удастся. Получить что-то большее от прохождения юнит-тестов можно только если их запустить под собой, то есть инструментировать код в стиле профайлера или Code Coverage. Это делается или нет ? Если нет, а просто юнит-тесты запускаются — какую информацию ИИ может собрать от их прохождения, чтобы делать выводы? Вот это я пока не понимаю.
S>Нет. Я же привёл пример. ИИ в отличие от шаблонных анализаторов пишет понятным языком "Код открывает файл лога вызовом CreateFile(), но её результат не проверяется. Поэтому при неудаче открытия запись FileWeite на три строки ниже не сработает".
Ну слава богу. Если бы анализатор выдал просто "CreateFile result not checked", то, как говорил Воланд, "Без тебя бы мы никак не догадались об этом". Кстати, о том, что потом используется этот непроверенный хендл, он сообщит, думаю. Тут и без ИИ несложно сделать.
S>Не, я меня нет задачи убедить кого-то, что божьей искры не существует. Но ИИ сейчас успешно берёт на себя функции, которые ещё год назад казались подвластными _исключительно_ человеку.
S>Как насчёт задачки "проверь соответствие кода спецификации"? Спецификация — на естественном языке, записана в маркдауне.
S>Или "найди противоречия в документации проекта". Вот прямо так, даже без перечисления файлов документации.
S>Или "найди все ссылки в документах проекта и сделай их гиперссылками", где под "ссылкой" понимается любое упоминание вроде "список констант лежит в файле consts.hpp в папке common".
S>Всё это никакие линтеры и ПВЗ студии не делают.
Я с этим не спорю. PVS не делает, не его это дело. Существуют ли программы без ИИ, которые нечто подобное делают — не знаю, но готов допустить, что без ИИ это невозможно. Вот только все это к 1-6 не имеет отношения, я ограничился только этой тематикой.
S>Ладно, пёс с ним, допустим, PVS Studio нашла V1051. Исправить эту проблему в коде она может?
Нет, конечно. Не ее функции. Она же только статический анализатор кода.
Re[8]: И еще рассуждения об ИИ
Здравствуйте, Sinclair, Вы писали:
PD>>Ну так PVS Studio и давали файл кода. Больше ничего.
S>А тут — не "файл", а проект. На смеси языков.
В общем, не стоит эту тему продолжать, тем более, что я не знаю, что PVS сейчас может.
S>Нет, я говорю о том, что обычные, не ИИ инструменты в проекте уже есть. И они все ничего не нашли. А вот ИИ посмотрел — и увидел, что логика нарушена.
А все-так, пожалуйста, объясните, как работает. Я что-то вижу противоречие между "ИИ посмотрел — и увидел, что логика нарушена" и словами из прошлого сообщения о том, что он делает свой анализ после запуска unit тестов. На что именно посмотрел ? На код или еще и на результат прохождения юнит-тестов ? Вообще-то юнит — тесты сами либо ничего не сообщают, либо выдают информацию про непрошедшие assert или про падению по исключению. Поэтому просто при их запуске ничего о том, что происходило внутри, узнать не удастся. Получить что-то большее от прохождения юнит-тестов можно только если их запустить под собой, то есть инструментировать код в стиле профайлера или Code Coverage. Это делается или нет ? Если нет, а просто юнит-тесты запускаются — какую информацию ИИ может собрать от их прохождения, чтобы делать выводы? Вот это я пока не понимаю.
S>Нет. Я же привёл пример. ИИ в отличие от шаблонных анализаторов пишет понятным языком "Код открывает файл лога вызовом CreateFile(), но её результат не проверяется. Поэтому при неудаче открытия запись FileWeite на три строки ниже не сработает".
Ну слава богу. Если бы анализатор выдал просто "CreateFile result not checked", то, как говорил Воланд, "Без тебя бы мы никак не догадались об этом". Кстати, о том, что потом используется этот непроверенный хендл, он сообщит, думаю. Тут и без ИИ несложно сделать.
S>Не, я меня нет задачи убедить кого-то, что божьей искры не существует. Но ИИ сейчас успешно берёт на себя функции, которые ещё год назад казались подвластными _исключительно_ человеку.
S>Как насчёт задачки "проверь соответствие кода спецификации"? Спецификация — на естественном языке, записана в маркдауне.
S>Или "найди противоречия в документации проекта". Вот прямо так, даже без перечисления файлов документации.
S>Или "найди все ссылки в документах проекта и сделай их гиперссылками", где под "ссылкой" понимается любое упоминание вроде "список констант лежит в файле consts.hpp в папке common".
S>Всё это никакие линтеры и ПВЗ студии не делают.
Я с этим не спорю. PVS не делает, не его это дело. Существуют ли программы без ИИ, которые нечто подобное делают — не знаю, но готов допустить, что без ИИ это невозможно. Вот только все это к 1-6 не имеет отношения, я ограничился только этой тематикой.
S>Ладно, пёс с ним, допустим, PVS Studio нашла V1051. Исправить эту проблему в коде она может?
Нет, конечно. Не ее функции. Она же только статический анализатор кода. Но в принципе ничто не мешает ей это сделать, если потребуется. Уж если она код С++ анализирует, и довольно серьезно, то добавить
if(hFile == INVALID_HANDLE_VALUE) ...
вполне мог бы.
Да бог с ней, с PVS. Мне IDEA для программ на Java то и дело выдает всякие рекомендации типа "этой переменной стоит дать модификатор final" или "лучше заменить вызов лямбда-функции на ссылку на метод" и т.п. Но сама не делает обычно, а предлагает мне подтвердить. Соглашусь — сделает. А еще у нее есть пункт "Code cleanup", и там она автоматом все изменения делает. Я его боюсь
PD>>Ну так PVS Studio и давали файл кода. Больше ничего.
S>А тут — не "файл", а проект. На смеси языков.
В общем, не стоит эту тему продолжать, тем более, что я не знаю, что PVS сейчас может.
S>Нет, я говорю о том, что обычные, не ИИ инструменты в проекте уже есть. И они все ничего не нашли. А вот ИИ посмотрел — и увидел, что логика нарушена.
А все-так, пожалуйста, объясните, как работает. Я что-то вижу противоречие между "ИИ посмотрел — и увидел, что логика нарушена" и словами из прошлого сообщения о том, что он делает свой анализ после запуска unit тестов. На что именно посмотрел ? На код или еще и на результат прохождения юнит-тестов ? Вообще-то юнит — тесты сами либо ничего не сообщают, либо выдают информацию про непрошедшие assert или про падению по исключению. Поэтому просто при их запуске ничего о том, что происходило внутри, узнать не удастся. Получить что-то большее от прохождения юнит-тестов можно только если их запустить под собой, то есть инструментировать код в стиле профайлера или Code Coverage. Это делается или нет ? Если нет, а просто юнит-тесты запускаются — какую информацию ИИ может собрать от их прохождения, чтобы делать выводы? Вот это я пока не понимаю.
S>Нет. Я же привёл пример. ИИ в отличие от шаблонных анализаторов пишет понятным языком "Код открывает файл лога вызовом CreateFile(), но её результат не проверяется. Поэтому при неудаче открытия запись FileWeite на три строки ниже не сработает".
Ну слава богу. Если бы анализатор выдал просто "CreateFile result not checked", то, как говорил Воланд, "Без тебя бы мы никак не догадались об этом". Кстати, о том, что потом используется этот непроверенный хендл, он сообщит, думаю. Тут и без ИИ несложно сделать.
S>Не, я меня нет задачи убедить кого-то, что божьей искры не существует. Но ИИ сейчас успешно берёт на себя функции, которые ещё год назад казались подвластными _исключительно_ человеку.
S>Как насчёт задачки "проверь соответствие кода спецификации"? Спецификация — на естественном языке, записана в маркдауне.
S>Или "найди противоречия в документации проекта". Вот прямо так, даже без перечисления файлов документации.
S>Или "найди все ссылки в документах проекта и сделай их гиперссылками", где под "ссылкой" понимается любое упоминание вроде "список констант лежит в файле consts.hpp в папке common".
S>Всё это никакие линтеры и ПВЗ студии не делают.
Я с этим не спорю. PVS не делает, не его это дело. Существуют ли программы без ИИ, которые нечто подобное делают — не знаю, но готов допустить, что без ИИ это невозможно. Вот только все это к 1-6 не имеет отношения, я ограничился только этой тематикой.
S>Ладно, пёс с ним, допустим, PVS Studio нашла V1051. Исправить эту проблему в коде она может?
Нет, конечно. Не ее функции. Она же только статический анализатор кода. Но в принципе ничто не мешает ей это сделать, если потребуется. Уж если она код С++ анализирует, и довольно серьезно, то добавить
if(hFile == INVALID_HANDLE_VALUE) ...
вполне мог бы.
Да бог с ней, с PVS. Мне IDEA для программ на Java то и дело выдает всякие рекомендации типа "этой переменной стоит дать модификатор final" или "лучше заменить вызов лямбда-функции на ссылку на метод" и т.п. Но сама не делает обычно, а предлагает мне подтвердить. Соглашусь — сделает. А еще у нее есть пункт "Code cleanup", и там она автоматом все изменения делает. Я его боюсь