Category: общество

Book

Haskell vs Prolog

Неожиданно пришёл развёрнутый ответ на мой старый (неумный, так что нет смысла приводить его здесь) пост о Haskell vs Prolog. Возражений 2: а) хаскелл не равноценная замена Прологу б) не надоть нам ентих абстракций.

> Хаскел не сложнее Пролога. Но он

возражаю. именно что "мощнее" (более широкого применения), но и сложнее на пару порядков. в понимании и применении.

1) любая претендующая на универсальность механика сложнее специализированной и оптимизированной под конкретный тип задач.

2) реализовать на Хаскеле или другом языке типа МЛ механику примитивного варианта пролога конечно можно. очень просто. несколько строк. но эта реализация будет годна лишь для простых задач. она _не будет конкурентоспособна_ и сравнима по эффективности с нормальными развитыми реализациями пролога, на более-менее крупных реальных проблемах. ни по скорости поиска решения. ни по обьему потребляемой памяти. ни по эффективности доступа к памяти (в том числе излишняя нагрузка на GC). не будет в ней и новых логических разработок типа constraints. которые дают во многих реальных задачах много порядков _алгоритмического_ преимущества перед примитивным старым движком пролога.

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

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

а далее найденное и проработанное во всех моментах решение переписывается на сильнотипизированном языке, да. для упрощения поддержки отдельной командой индусов. но и тут хаскель не идеал. тут лучше что-то типа МЛ или меркури применять. это гораздо более прямолинейные языки а чем меньше всяких хитровыделанностей и спецабстракций в языке тем лучше он подходит на роль промышленного, для команд индусов/студентов.

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

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

с уважением, 4KCheshireCat
megarazor

коммерческое фп - будущее?

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

здесь вроде много людей, которые фп деньги зарабатывают, посоветуйте, как у вас карьера в этом плане складывается? заранее большое спасибо!
anonym_mouse

О глубокой философии программирования (серьезный разговор)

.
Есть на Интернете программист-блоггер, 7 лет проработавший в Амазоне. Зовут его Стив Егге, и славен он тем, что в блоге публикует свои "rants" на компьютерные темы. Каждая запись - страниц 5 убористого текста. Многое разумно (ему 39 лет и он достаточно много программировал), но хотя бы из-за объема, многое противоречит себе же. Стив Егге - прототипический п..бол.

И однако одна из записей поразила меня глубоким проникновением в тему. Я давно о ней размышлял, именно в таких, грамматических, терминах. Представляю вам где-то 2/3 его записи в сокращенном несколько виде.


Steve Yegge:
ИСПОЛНЕНИЕ КОРОЛЕВСКИХ ПОСТАНОВЛЕНИЙ[*] В ЦАРСТВЕ СУЩЕСТВИТЕЛЬНЫХ

[*] - игра слов. В оригинале заголовок одновременно означает "Казнь в Царстве Существительных" (execution).

Hello, world!
Здравствуй, мир! Сегодня мы послушаем рассказ о Злом Царе Явы и его борьбу за всемирное уничтожение глаголов.

ПРЕДУПРЕЖДЕНИЕ: у этой сказки нет счастливого конца. Эта сказка не для слабых духом ни для критикующего гласа. Если вы легко обижаетесь или превращаетесь в противного парня в своих комментариях, немедленно перестаньте читать.

Прежде чем начать, разберемся с одним концептуальным изгибом.
Collapse )