Честные границы
Любой бенчмарк может нарисовать красивый рейтинг. Гораздо честнее — прямо сказать, где его цифрам уже можно верить, а где пока рано. Эта страница про это.
В двух словах
- Надёжно — категория A (алгоритмика), оси Синтаксис и Семантика. Оценку ставят автоматические проверки, результат воспроизводим.
- Надёжно — категория B (платформа), оси Семантика и Платформа. Стали надёжными, когда код начали по-настоящему запускать в 1С.
- Осторожно — Оптимальность. Машина видит только грубые проблемы; тонкое оценивает эксперт.
- Пока не доказано — согласие машины с экспертом. Наш главный аргумент, но эксперт был только один.
Чему уже можно верить
Алгоритмика (категория A), оси Синтаксис и Семантика. Оценку ставят автоматические проверки — компилятор и тесты. У них нет настроения и мнения: тот же код прогонишь дважды — получишь тот же балл. Это и есть надёжность.
Платформа (категория B), оси Семантика и Платформа. Раньше платформенный код оценивали «на чтение», и это было слабым местом. Теперь код по-настоящему запускается в 1С против учебной базы — и запуск видит то, чего не видно глазами: например, что модель обратилась к полю, которого в базе нет.
Где пока рано доверять
1. Согласие машины с экспертом ещё не доказано. Главная идея PRISM: машинной оценке можно верить, потому что на проверке она совпадает с живым экспертом. Звучит хорошо — но пока эксперт был только один. А из одного человека «согласие» не посчитать: нужно хотя бы двое-трое, и проверять надо на задачах, которые не использовались для настройки самой метрики. Пока этого нет, называть оценку «подтверждённой экспертами» — аванс, а не факт.
2. Банк задач ещё маленький. Несколько десятков задач — мало, чтобы уверенно заявлять «эта модель лучше той»: разница между моделями может оказаться в пределах случайности. Рейтинг станет весомым, когда задач станет заметно больше и они станут разнообразнее. Поэтому пополнение банка — наш приоритет №1.
3. Оптимальность (O) меряется по-разному в A и B. В алгоритмике (A) оптимальность теперь проверяется следующим образом: подаём решению большой объём входных данных и смотрим, как растёт число операций, — так машина различает быстрый алгоритм и медленный (вплоть до низких баллов). В платформенных задачах (B) проще: машина ловит типовые тяжёлые ошибки (запрос к базе в цикле и подобное), но «удачно ли выбран подход» — не её уровень, это к эксперту, и снизу её оценка там ограничена. Неалгоритмическую оптимальность — выбор структуры, стиль — машина не судит ни там, ни там: это Уровень 2.
Что мы делаем, чтобы границы расширить
По приоритету:
- Больше задач — чтобы рейтинг перестал быть «в пределах шума».
- Разметка двумя-тремя экспертами — чтобы впервые честно измерить согласие машины и эксперта, а не верить ему авансом.
- Раздельная настройка и проверка — пороги метрики настраивать на одних задачах, а согласие проверять на других.
- Честная оптимальность — для алгоритмики (A) это уже сделано: O меряется исполнением. Осталось откалибровать её против эксперта на Уровне 2 и честно оговаривать предел там, где машина слепа (архитектура решения; оптимальность в категории B).
Почему мы это вообще пишем
Потому что честный измеритель важнее красивого рейтинга. Если мы говорим «модель X лучше» — за этим должно стоять то, что мы готовы открыто показать, включая собственные слабые места.
