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

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

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

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

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

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

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

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

Left комментирует...

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

Qrilka комментирует...

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

eao197 комментирует...

@Left и Qrilka:

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

Qrilka комментирует...

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

eao197 комментирует...

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

Rustam комментирует...

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

eao197 комментирует...

@Rustam:

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

Rustam комментирует...

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

Rustam комментирует...

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

jazzer комментирует...

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

eao197 комментирует...

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

jazzer комментирует...

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

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

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

eao197 комментирует...

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