понедельник, 17 января 2011 г.

[prog.flame] Понравился комментарий в споре лисперов с хаскелистами

Комментарий, доказывающий, что порог вхождения в Хаскел очень низок (выделение мое):

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

Хаскелл. Объективно. Ниже только у перла.

Понравилось мне это тем, что Хаскел и Перл – это два языка, желание изучать которые напрочь пропадало после первого же знакомства с их синтаксисом. Такой очень низкий порог вхождения :)

PS. Такое впечатление, что сейчас становится модно зарабатывать на жизнь Жабой, Шарпом или Плюсами, но изучать Хаскел “для души”…

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

  1. ИМХО проблема "гиковости" хаскеля не в синтаксисе (он-то как раз довольно-таки "чистый") а в code conventions которые похоже писАли математики а не программисты. Что-то сродни безумной перегрузке всех подряд операторов в С++ ;) - то что это делает код нечитаемым это скорее проблема авторов кода а не языка.

    ОтветитьУдалить
  2. Только вот в комментарии не о том, о чём ты пишешь. Синтаксис-то у хаскеля довольно простой (хотя не сишный, но тыж на рубях пишешь?), а заморочки вылезают про "совокупность знаний и различных деталей", хотя про детали я тоже не соглашусь ибо referential transparency рулит, а вот навароты аля извращения с типами - вот это на "порог" много больше сказывается

    ОтветитьУдалить
  3. @Left и Qrilka:

    Думаю, что вы указываете мне на одну и ту же вещь. И вы оба правы, но я скажу вот что: язык сейчас это уже не только его ядро, но и устоявшиеся практики его использования (в том числе и "околостандартный" code convention, зафиксированный в стиле оформления стандартных библиотек). И вот с этой точки зрения для меня что Perl, что Haskell -- не велика разница. Хотя да, я понимаю, что проблема Perl-а в перегруженности самого базиса языка, а Haskell-я -- в устоявшихся способах программирования на нем.

    ОтветитьУдалить
  4. Ну дак тогда не пиши про синтаксис, правда осмысленность поста несколько теряется :)

    ОтветитьУдалить
  5. @Qrilka: не, в моем случае желание изучать языки пропадало, когда я задалбывался выяснять, что обозначает тот или иной символ или закорючка. Так что все-таки синтаксис :)))

    ОтветитьУдалить
  6. Не синтаксис все-таки фигня. У Хаскеля и Окамла он вполне близок, но Хаскель например я так и не осилил, а Окамл дался достаточно просто.

    ОтветитьУдалить
  7. @Rustam:

    Кстати да, OCaml осваивается проще.

    ОтветитьУдалить
  8. Еще пример, синтаксис перла вполне близок к сишному, но питон с его инопланетным синтаксисом осваивается намного проще и быстрее.

    ОтветитьУдалить
  9. Все-таки хаскель переусложнен и слишком насыщен сложными вещами. Ведь есть же более простой и целостный язык из той же категории чистый, ленивый, функциональный - Clean. По моему у него порог вхождения существенно ниже, хотя могу и ошибаться я сужу по только по давнему чтению мануала и написанным тогда небольшим тестикам.

    ОтветитьУдалить
  10. перл не трожь!
    это один из мощнейших и удобнейших скриптовых языков!

    ОтветитьУдалить
  11. @jazzer: так я и не трогаю. Уже давно :)

    ОтветитьУдалить
  12. я вот буквально вчера написал скриптец в одну строчку? нужно было достать/обработать кое-какую информацию из лога - чистая функциональщина!
    Нечто вроде (разобью на строчки, чтоб читалось лучше):
    { $h{$1}{$2}=$3 if m/регэксп/ }
    END { map {код1} grep {предикат2} sort {предикат1} values %h }

    первая строчка - это парсинг лога, результаты собраны в двухуровневый хэш.
    Вторая строчка с END - то, что исполнится, когда парсинг будет закончен.
    "код" и "предикат" - это куски кода прямо по месту (лямбды!). Т.е. мы берем второй и третий уровень хэша (values %h), сортируем с предикатом1, потом фильтруем с предикатом2, потом трансформируем кодом1. Естественно, можно навесить еще и фильтров, и обработчиков.

    Я ощущаю практически сексуальное удовольствие, когда пишу подобные однострочники на перле :)
    Имхо, для обработки текстов ничего лучше нет и не предвидится.

    ОтветитьУдалить
  13. @jazzer: если бы Perl применялся бы только для однострочников... А то ведь на нем умудряются системы в сотни тысяч строк писать... :(

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