Serguey Zefirov (thesz) wrote,
Serguey Zefirov
thesz

Небольшой опыт использования Хаскеля для параллельного программирования.

Хаскель не является серебряной пулей сам по себе. Это скорее снайперская винтовка с автоматическим ведением огня и набором боеприпасов.

Написал я программу, вроде, заработала. Подумал, что мне необходимо сделать определение тишины на нескольких каналах. Начал делать, а оно стало падать. Оказалось, что решение находится в районе Control.Concurrent.STM.TChan.

Это был единственный случай сбоя ментальной модели при работе с параллельными библиотеками Хаскеля.

Сделал, всё заработало. Однако при первом же серьёзном нагрузочном тестировании оказалось, что TChan слишком накладен. Подумав немного, я придумал замену прямому и тупому определению тишины. Оно должно было работать и с Chan и могло быть использовано в будущем для других систем обмена сообщениями. И реализовал. И всё начало потихоньку масштабироваться.

Чем ещё хорош Хаскель для параллельного программирования: в нём нет отладчика. Поэтому ловля и исправление ошибок идёт через чтение логов и вдумчивое пристальное вглядывание в код. В параллельной программе ошибки принципиально нельзя отлаживать, можно только наблюдать и понимать, что же произошло.
Tags: Хаскель, параллельное программирование, работа
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 15 comments