Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Сверхмалый размер HNC снижает риск никому неизвестного инструмента

Мой опыт использования библиотек с открытым исходным текстом показывает, что все они - багливое дерьмо, за редкими исключениями вроде zlib и openssl.

Поэтому, беря на вооружение библиотеки, я включаю их в кодобазу проекта и понимаю, что они так же будут нуждаться в поддержке и исправлениях, как и приватный код проекта.

Понятно, что предпочтение отдается маленьким библиотекам: если Redis для меня "никому не известный инструмент", и я не уверен в его качестве - то я не буду брать его на maintenance, а возьму node-dirty размером 200 строк. Понятно, что это trade-off, и мне как менеджеру приходится принимать тяжёлые решения, но так же понятно, что исправление потенциальных багов чужих качественно спроектированных с виду 200 строк гораздо дешевле, чем написание этих же строк с нуля.

Также понятно, что трудность исправления багов не прямо пропорциональна размеру кода, а растет как минимум квадратично. В этом плане мейнтенанс 60KLOC (размер Haskell-части GHC) не в 6 раз более затруднителен, чем мейнтенанс будущих 10KLOC HNC (я надеюсь, что будет ещё меньше), а в 36 раз.

Низведя размер HNC до уровня доморощенного DSL, я существенно ускоряю adoption. Поэтому размер кода является критической для успеха метрикой. Написание на Java не только увеличит размер кода, но и не сократит в существенной мере требования к внутрикорпоративному инструменталисту, поддерживающему HNC - мейнтенанс кодогенераторов требует достаточно продвинутых скиллов вне зависимости от языка реализации.

HNC в текущей инкарнации - это DSL для моего внутреннего использования, и всё вышенаписанное 100% работает в моей коммерческой реальности. Если у кого-то ещё сработает - я буду рад.
Tags: fp, programming
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments