spamsink: (lenin)
[personal profile] spamsink
Какие самые частые слова в языке программирования С++?

Пишем скриптик (комментарии добавлены при публикации):
find Code -name '*.cc' -o -name '*.h' | \ находим все файлы с исходным кодом
 xargs cat | \ собираем вместе
  tee allsource | \ сохраняем чтоб было
   sed s/#/@/g | \ не даем работать препроцессору
    cpp | \ теперь он только комментарии удаляет
     sed '/#/d;/^$/d' | \ удаляем вставленные препроцессором номера строк и пустые строки
      sed "s/'\"'/@/g" | sed 's/\\[\\"]/@/g; s/"[^"]*"/ /g' \ ликвидируем всё в двойных кавычках
> nocomments

wordcnt < nocomments | \ частотный словарь алфавитно-цифровых последовательностей
sort -r -n -k 2 | \ сортируем
grep -v '^ *[0-9]' \ выбрасываем числа
> fullcnts

Перловый скриптик wordcnt таков:
while (<>) {
        @words=split(/[\W\s]+/, $_);
        foreach $word (@words) {
                $wordcnt{$word}++;
        }
}
foreach $word (keys(%wordcnt)) {
        printf "%20s %d\n", $word, $wordcnt{$word};
}


В результате на треть миллиона строк живого кода (nocomments) выходит около 38 тысяч разных умных слов. Частотный словарь начинается так:
                  if 27202
               const 21901
              return 20803
                 int 13856
                void 13070
                char 12530
                bool 10847
                this 8959
                 std 8399
                else 8278
                case 7021
                NULL 6896
                   i 6767
               false 6288
                  it 5855
            unsigned 5396
             include 5287
                true 5158
                Expr 5046
                 mod 4678
              string 4480
                name 4358
               break 4043
                 for 3868
               c_str 3804
               class 3742
                size 3670
              public 3633

(i, it и mod - имена переменных, Expr - имя типа, но не того, которого обычно переменная с именем mod)
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting
Page generated Mar. 7th, 2026 10:27 pm
Powered by Dreamwidth Studios