Юрий, Вы заврались (про Haskell vs C)

То, что не подходит под другие описания
Ответить
БудДен
Сообщения: 3049
Зарегистрирован: 07.10.18 14:01

Юрий, Вы заврались (про Haskell vs C)

Сообщение БудДен » 07.04.25 02:43

Началось с утверждения Юрия, что Хаскель работает "до 1500 раз медленнее Си", а не "в два раза". Это, конечно, явная ложь, пришлось разобраться. В ходе этого разбирательства выяснилось, что:

* Юрий меряет программу на Хаскеле, но не берётся судить, эффективна ли она. Программа объявлена написанной правильно на том основании, что она опубликована.
* Моё предположение о том, что проблема в ленивости (проверенное с помощью DeepSeek) - это ошибка, и что ленивости в этой программе нет.

Здесь уже противоречие - Юрий не берётся судить об эффективности программы на Хаскеле, но знает, что ленивости в ней нет. А при том, знать, что в программе нет ленивости - это уже сильное утверждение об эффективности этой программы, в случае Хаскеля. Одна ложь уже есть - не берётся судить, но судит. Просто самообман или что-то другое? Я считал, что самообман, но теперь склоняюсь к более плохой версии. Тем более, как выяснилось в ходе дискуссии, пример был специально подобран так, чтобы Хаскель сработал наиболее плохо и является результатом определённой работы, по, можно сказать, целенаправленной дискредитации Хаскеля. Т.е. тезис о том, что Юрий считает этот пример эффективным и правильным, тоже начинает выглядеть не очень искренним. Я совершенно не люблю Хаскель, но здесь речь уже совсем о другом.

Далее, ошибся ли я? Программа, приведённая Юрием (вот здесь) https://compiler.su/c-vs-haskell-sravne ... mere.php#4 страдает экспоненциальным замедлением по мере роста размера обрабатываемого файла, хотя её задача состоит в том, чтобы пройти по файлу и посчитать некую "контрольную сумму". Мы все понимам, что эта задача должна выполняться за линейное время и требовать константной памяти.

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

Код: Выделить всё

{-# LANGUAGE Strict #-}
По утверждению DeepSeek, эта строчка устраняет всякую ленивость. Как результат, программа стала работать за линейное время. Да, она работает всё ещё примерно в 10 раз медленнее программы на Си, но никак не в 1500. Т.е., чтобы это ни было, но что-то в программе, и скорее всего ленивость, её замедляло. Когда ленивость запретили, оно перестало замедлять. Что же это такое было? Предлагаю теперь Юрию объясниться, в чём же дело, а я после этого подумаю, продолжать ли считать его честным человеком.

Ответить