четверг, 17 декабря 2009 г.

20 000 строк кода на Common Lisp

Подсчитал с помощь SLOCCount, что за последние полтора года написал на Common Lisp чуть менее 20 000 строк кода, половина - открытый код.

7 комментариев:

  1. А как ты на лиспе закрытый код пишешь? Я темноват в этом вопросе...

    ОтветитьУдалить
  2. Так же, как и на открытый, просто его не публикую :) Он работает на наших серверах и за пределы компании не выходит.

    ОтветитьУдалить
  3. А я вот так считаю:

    find . -iname '*.lisp' | xargs grep -h -v '^\s*;.*$' | grep -v '^\s*$' | wc

    ОтветитьУдалить
  4. @Valeriy Fedotov
    А пустые строки? А комментарии? Нормальная считалка должна считать только реальный код...

    ОтветитьУдалить
  5. Она его и считает. :)

    grep -h -v '^\s*;.*$' -- выкидываем комментарии. -h нужно, чтобы имя файла на строчке не печаталось.

    grep -v '^\s*$' -- выкидываем строки из пробельных символов.

    У этой считалки есть один недостаток: она всё суммирует, не видно было статистику по каждому файлу.

    ОтветитьУдалить
  6. Улучшенная версия:

    #!/bin/bash

    FILES=`find . -iname '*.lisp'`

    for i in $FILES
    do
    echo -ne `grep -v '^\s*;.*$' "$i" | grep -v '^\s*$' | wc -l`
    echo -e "\t$i"
    done

    echo -n `find . -iname '*.lisp' | xargs grep -h -v '^\s*;.*$' | grep -v '^\s*$' | wc -l`
    echo -e '\ttotal'

    Кстати, считая таким макаром строки в своём проекте, заметил, что добавляю функциональность а объём кода почти не растёт. :) Видимо, сначала писал слишком раздуто, а теперь умудряюсь новые фичи вжимать в прежний размер.

    ОтветитьУдалить
  7. @Valeriy Fedotov
    Ну, я не сторонник минимализма, зачем изобретать скрипт, если уже есть готовый? Потом, реально это не так просто, ибо есть много ньюансов (правда, для Common Lisp их меньше). Я в свое время тренировался и написал считалки кода для нескольких языков на C++, Python и Perl - потренировался и хватит, теперь предпочитаю использовать готовое решение.

    > добавляю функциональность
    > а объём кода почти не растёт
    Ну это обычная ситуация, когда объём кода начинает даже стремительно уменьшатся. Это часто встречается.

    ОтветитьУдалить