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

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

Не знаю, как сейчас, а в свое время одной из главных причин, почему никто не хотел пользоваться Linux, было отсутствие игр под него. Точнее, игры были, но из них достойные можно было пересчитать на пальцах одной руки. Многие игры можно было запустить под Wine, но это было не всегда просто, а для рядового пользователя — и вовсе непосильной задачей. Так вот, недавно я провел небольшое исследование и выяснил, что ситуация за последние пять лет сильно изменилась.

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

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

В свое время я довольно сильно увлекался всевозможной низкоуровщиной — ассемблерами (о чем как бы намекает доменное имя блога), сишечкой и так далее. Даже написал пару несложных драйверов для Windows. Но потом я открыл для себя Perl и понеслось.

Вот многие программисты считают себя умными. Читают Хабр, слушают Радио-Т, рассуждают с умным видом про шаблоны ООП или там теории категорий. И любят делать умные решения. Ведь простые решения любая обезьянка написать может, а вот сложные… Почитывая мой бложик, кто-то из вас мог ошибочно подумать, что я тоже такой весь из себя шибко умный. Знаю там Haskell, книжек много читаю. В действительности, я очень глупый. И поэтому при решении задач стараюсь использовать как можно более простые решения.

В мире Haskell есть такой хороший пакет conduit за авторством небезызвестного Michael Snoyman. Этот пакет позволяет легко и непринужденно делать множество полезных вещей с файлами, сокетами, соединениями с базами данных, всякими там TQueue или даже обычными списками. На первый взгляд пакет кажется сложным и пугающим. Но, как это часто бывает с Haskell, если не пытаться вникнуть во все наскоком, а сесть и спокойно разобраться, выясняется, что в действительности все предельно просто.

Мини заметок не было целых два месяца. Я знаю, вы по ним соскучились! В этом выпуске: настраиваем VNC в Ubuntu, конвертируем онлайн-книги в PDF, изучаем консольные сниферы, клонируем схемы в PostgreSQL и не только. Предыдущие выпуски: тринадцатый, двенадцатый, одиннадцатый, десятый.

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