Темы второго выпуска: отвечаем на комментарии к пилотному выпуску, что не так с нынешними интернетами, зачем программисту на Java учить Erlang или Haskell и что может предложить Idris вместо трансформаторов монад. Первый, пилотный, выпуск можно послушать здесь.

В этом выпуске: как убедить свое руководство переписать все на Haskell, пишем свою операционную систему, не пускаем на сайт пользователей, сидящих через Tor, и не только. Предыдущие выпуски: декабрь 2013, ноябрь 2013, октябрь 2013, сентябрь 2013.

В любом серьезном приложении должно быть логирование, и по возможности логов должно писаться как можно больше. Тут даже обсуждать нечего. Наиболее каноничным средством для решения этой задачи в мире Haskell является гибкий и богатый возможностями пакет hslogger. Сегодня мы научимся работать с ним.

Если вкратце, микросервисная архитектура (Micro Service Architecture, MSA), это когда ваше приложение представляет собой много-много небольших (буквально несколько сотен строк кода) сервисов, взаимодействующих между собой путем обмена сообщениями. Это могут быть сообщения Erlang‘а, Cloud Haskell‘я, Akka, или же REST API, Protobuf, Thrift, MessagePack и так далее. Давайте же попытаемся понять, в каких задачах может быть целесообразно использовать такой подход, чем он хорош, и, конечно же, чем он плох.

Представляем вашему вниманию пилотный выпуск нового подкаста EaxCast, подкаста о программировании, информационных технологиях и смежных темах. Темы выпуска: зачем было делать еще один подкаст, вебинар о внутреннем устройстве шедулера Erlang’а от ESL, mekao и нужен ли Erlang’у ORM, готовится русский перевод LYSE.

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

На этой неделе мы проделали большую работу. Если вы честно прочитали весь цикл постов о Cloud Haskell, во всем разобрались и прорешали домашку, то можете с чистой совестью пойти в ближайший магазин и купить себе какую-нибудь вкусняшку. Если ничего не поняли, не расстраивайтесь. Спокойно разберитесь в непонятных вопросах и вернитесь к Cloud Haskell через пару-тройку недель. Не пытайтесь разобраться во всем наскоком, в мире Haskell это не работает! В заключение мне хотелось бы поделиться кое-какими своими мыслями, а также привести ссылки на дополнительные материалы по теме.

На данный момент мы уже посмотрели на Cloud Haskell в действии и выяснили, в чем заключаются отличия Cloud Haskell от Erlang. Сегодня же мы посмотрим на основные функции, предоставляемые Cloud Haskell. В том числе, на функции для работы с типизированными каналами, а также функции receiveTimeout, register, whereis, getProcessInfo, и другие. Про распределенщину пока не будет, потому что этот вопрос я и сам еще не до конца осилил :)

Итак, у вас было целых два дня на то, чтобы подготовиться к подаче материала про Cloud Haskell, а также составить общее впечатление об отличиях Cloud Haskell от Erlang. Сегодня же мы наконец-то увидим пусть и простую, но саму что ни на есть настоящую программу, использующую сабж. Возможно, кто-то из читателей предпочел бы сначала ознакомиться с детальным описанием API, но я лично всегда больше любил учиться на примерах, так что API отложим до завтра.

Cloud Haskell — это фреймворк / DSL для разработки конкарент распределенных отказоустойчивых приложений без разделяемого состояния. Типа Erlang, только лучше. Как минимум, за счет строгой статической типизации, компиляции в нативный код и более приятного синтаксиса. Кроме того, как будет показано ниже, Cloud Haskell лишен некоторых родовых травм Erlang’а и в некоторых аспектах более гибок.