Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Categories:
Блять!!! Да обдрочились вы там все на хуи тридцатисантиметровые!!! Не ставилась задача показать, что Хаскел лучше, короче и быстрее, чем какой-то другой инструмент. Тем более, что это микробенчмарк, который ни о чем не говорит.

Задачи ставились:

1) Выяснить, насколько худший результат по размеру и поддерживаемости кода дают средства метапрограммирования в Хаскеле по сравнению с domain-specific средствами Перла

Выяснилось, что не только не худший, а даже лучший - библиотека регулярок Хаскеля лучше подходит для трудных задач парсинга, чем перловая, если требуются смещения, пре- и постматчи или другая подобная инфа. Большой недостаток перла в том, что код, работающий с регулярками плохо абстрагируется, если нужно что-то сложное - приходится городить eval, куда-то копировать глобальные переменные и т п. А в простых задачах Хаскел хуже на пару токенов, что перекрывается бесскобочным синтаксисом и простым синтаксисом функций.

2) Выяснить, насколько худший результат даёт Хаскелевский IO без сайд-эффектов в задачах с интенсивным вводом-выводом.

Выяснилось, что использование композиции Клейсли >=> и бесточечного стиля позволяет получить такое же качество. Более того, после годов тренировки™ получается думать уже бесточечно и соответственно писать сразу вот так, а не рефакторить изначально точечный код в бесточечный. В процессе написания написал только пару временных лямбд, в процессе разбирательств в композицией Клейсли, остальной же код сразу писал "так". Разумеется, общность process я сразу не увидел, он вылез только после трехчасовых рефакторингов, после укрупнения ушли и >=>.

3) Выяснить, насколько убог репозиторий библиотек и насколько уебищен процесс установки библиотек.

Выяснилось, что cabal-install и hackage более уёбищны, чем PPM, и ровно в той же степени уебищны, как CPAN. Нужные библиотеки оказались, но установка PCRE потребовала таких же танцев с бубном, как скажем, в Перле установка XML::LibXSLT, и я забил, ограничившись медленными Text.Regex.Posix, которые шли в комплекте. Библиотеки оказались безглючными, что по моему опыту тоже примерно совпадает с CPAN. И там, и там, есть как глюкавые, так и нормальные либы, но соотношение в целом одинаково.

Также выяснилось:

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

Monomorphism restriction напрягает. Инфиксные же функции и ascii-art играют значительную роль в повышении читаемости сложного кода. Т.е в языке нужна  поддержка инфиксности, а в ide нужны средства визуализации вроде leksah source candy, неотключаемого автоформатирования кода вроде vb6 и input method вроде epigram
Subscribe

Recent Posts from This Journal

  • 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.
  • 14 comments

Recent Posts from This Journal