Pull to refresh

Comments 4

Допустим, вы хотите проверить утверждение, что в среднестатистическом Go коде так никто не пишет (или наоборот, что все так пишут).

Зачем? Я могу придумать, зачем это разработчику компилятора или стандартной библиотеки, но зачем остальным людям - не могу придумать.

Кроме "разработчиков компилятора", это так же полезно в следующих случаях:

  • Разработка инструментов разработчика (IDE и плагины для редакторов, тулы для рефакторинга).

  • Разработка статических анализаторов.

  • Попытка выбора между вариантами X и Y, когда вы составляете гайдлайны стиля для своей команды (выбираете более идиоматичное).

  • Банальное удовлетворение любопытства.

Как вы и сказали, при работе над самим Go это тоже полезно. И именно для этого я это и делал в первую очередь, чтобы можно было как-то аргументировать свои доводы при обсуждении той или иной идее или планов по добавлению оптимизаций в компилятор.

Замечательная утилита, большое спасибо! Мне как новичку в Го очень часто приходится проверять, приняты ли мои подходы из других языков в нашем проекте. А тут целый многомиллионный корпус будет под рукой.

Вот реальный пример где это было полезно:

cmd/compile: detect and optimize slice insertion idiom append(sa, append(sb, sc...)...) · Issue #31592 · golang/go (github.com)

Я сначала даже удивился, что на корпусе было 0 срабатываний, но тесты в gogrep показывают, что матчить такие паттерны он может. Так что делаем выводы, что быстрый insert в слайс если и добавлять, то через внешний generic пакет, а не через распознавание паттерна компилятором.

Хотя это так же может означать, что корпус недостаточно разнородный. Если есть предложения, что ещё добавить - открывайте issue, будем расширять. :)

Sign up to leave a comment.

Articles