Миран Липовача
Изучай Haskell во имя добра!
Эта книга начиналась как англоязычный онлайновый учебник по языку Haskell, написанный словенским студентом, изучающим информатику, Мираном Липовачей (Miran Lipovača) в 2008 году. В мае 2009 года на сайте translated.by пользователь Дмитрий Леушин предложил первые главы учебника для перевода на русский язык. Его инициативу подхватил Александр Синицын. В переводе также принимали участие Виталий Капустян, Иван Терёхин, Дмитрий Крылов, пользователи olegchir, artobstrel95, Julia и другие. Оригинальный учебник оказался настолько популярным, что в 2011 году он был издан в печатном виде. Текст онлайнового издания при подготовке печатного издания был серьёзно исправлен и улучшен. Последние пять глав учебника переводились уже по печатному изданию Ясиром Арсанукаевым. Готовый текст был отредактирован Романом Душкиным. На втором этапе редактированием занимался Виталий Брагилевский; он также привёл текст первых десяти глав книги в соответствие с англоязычным печатным изданием и переработал текст раздела «Исключения». Оформление, вёрстка и другие технические работы выполнялись сотрудниками издательства «ДМК Пресс».
Когда в начале 2006 года я садился за свою первую книгу по функциональному программированию [2], в которой намеревался проиллюстрировать все теоретические положения при помощи языка Haskell, у меня возникали некоторые сомнения на сей счёт. Да, за плечами уже был пятилетний опыт чтения потоковых лекций по функциональному программированию в Московском Инженерно-Физическом Институте (МИФИ), для которых я и ввёл в учебный процесс этот замечательный язык вместо использовавшегося прежде языка Lisp. Однако в качестве методической основы тогда ещё не было практически ничего, кроме формального описания языка и нескольких статей. Существовало, впрочем, несколько книг о Haskell на английском языке [3, 4, 5, 7], но в те времена достать их было несколько затруднительно. Тем не менее я выбрал именно этот язык, поскольку создавать очередной том о функциональном программировании на Lisp (на каком-либо из его многочисленных диалектов) было бы нецелесообразно – такие книги имелись в избытке.
Сегодня можно уверенно сказать, что тогда я не ошибся в своём выборе. Развитие языка шло темпами набирающего скорость локомотива. Появлялись компиляторы (в том числе и полноценная среда разработки Haskell Platform), разно образные утилиты для помощи в разработке, обширнейший набор библиотек, а главное – сложилось сообщество программистов! За несколько лет язык приобрёл огромное количество почитателей, в том числе русско язычных. Притом возник так называемый эффект «петли положительной обратной связи»: стремительно растущее сообщество стало ещё активнее развивать язык и всё, что с ним связано. И вот уже количество библиотек для Haskell насчитывает не одну тысячу, охватывая всевозможные задачи, встречающиеся в повседневном процессе коммерческой разработки. Выходят новые книги, одна из которых [6] буквально взрывает общественное мнение. Теперь Haskell уже не воспринимается в качестве языка «нёрдов», получая статус вполне респектабельного средства программирования. На русском языке начинают выходить многочисленные переводы статей по Haskell (в том числе и официальные), основывается первый журнал, посвящённый функциональному программированию – «Практика функционального программирования» (ISSN 2075-8456).
И вот сегодня вы, уважаемый читатель, держите в руках переводное издание новой интересной книги о языке Haskell и основах реального программирования на нём. Эта публикация опять же стала возможной благодаря деятельности профессионального сообщества. Группа инициативных любителей языка Haskell перевела значительную часть текста, после чего издательством «ДМК Пресс», которое уже становится флагманом в деле издания книг о функциональном программировании в России, был проведён весь комплекс предпечатных работ – научное редактирование, корректура, вёрстка.
Миран Липовача – автор из Словении, который написал свою книгу «Изучай Haskell во имя добра», с тем чтобы сделать процесс освоения Haskell лёгким и весёлым. Оригинал книги, опубликованный в сети Интернет, написан в весьма вольном стиле – автор позволяет себе многочисленные жаргонизмы и простое (даже, можно сказать, простецкое) обращение с читателем. Текст дополнен многочисленными авторскими рисунками, предназначенными исключительно для развлечения читателя и не несущими особой смысловой нагрузки. Поначалу всё это заставляет предположить, что книга «несерьёзная», однако это впечатление обманчиво. Здесь представлено очень хорошее описание как базовых принципов программирования на Haskell, так и серьёзных идиом языка, пришедших из теории категорий (функторы, аппликативные функторы, монады). Притом автор пользуется очень простым языком и приводит доступные для понимания примеры. Вообще, книга насыщена разнообразными примерами, и это её положительная черта.
При работе над русским изданием коллектив переводчиков постарался сохранить своеобразный стиль автора, чтобы передать своеобразие оригинала. Однако в процессе научного редактирования некоторые моменты были сглажены, терминология приведена к единообразию и согласована с уже устоявшимися терминами на русском языке. Тем не менее манера изложения материала далека от сухого академического стиля, который характерен для многих публикаций о функциональном программировании.
Напоследок, впрочем, стоит отметить и некоторые недостатки. Автор сам признаётся, что написал свою книгу с целью структуризации и классификации собственных знаний о языке Haskell. Так что к ней надо относиться с определённой долей осторожности, хотя в процессе научного редактирования не было обнаружено фактологических ошибок. Ещё один минус – полное отсутствие каких-либо сведений об инструментарии языка: читателю предлагается лишь скачать и установить Haskell Platform, а затем приступать к работе. Можно именно так и поступить, но вдумчивому читателю будет интересно узнать о способах использования инструментария. Этот пробел можно восполнить книгой [1].
В целом книгу Мирана Липовачи можно рекомендовать в качестве дополнительного источника информации о практическом использовании языка Haskell. Она будет полезна всем, кто интересуется функциональным программированием, равно как и студентам, обучающимся по специальностям, связанным с программированием и вычислительной техникой.
ДУШКИН Роман Викторович, автор первых книг о языке Haskell на русском языке, Москва, 2011 г.
Ссылки на источники1. Душкин Р. В. Практика работы на языке Haskell. – М.: ДМК-Пресс, 2010. – 288 стр., ил. – ISBN 978-5-94074-588-4.
2. Душкин Р. В. Функциональное программирование на языке Haskell. – М.: ДМК-Пресс, 2007. – 608 стр., ил. – ISBN 5-94074-335-8.
3. Davie A. J. T. Introduction to Functional Programming Systems Using Haskell. – Cambridge University Press, 1992. – 304 p. – ISBN 0-52127-724-8.
4. Doets K., Eijck J. v. The Haskell Road To Logic, Maths And Programming. – King’s College Publications, 2004. – 444 p. – ISBN 0-95430-069-6.
5. Hudak P. The Haskell School of Expression: Learning Functional Programming through Multimedia. – Cambridge University Press, 2000. – 382 p. – ISBN 0-52164-408-9.
6. O’Sullivan B., Goerzen J., Stewart D. Real World Haskell. – O’Reilly, 2008. – 710 p. – ISBN 0-596-51498-0.
7. Thompson S. Haskell: The Craft of Functional Programming. – Addison Wesley, 1999. – 512 p. – ISBN 0-20134-275-8.
Перед вами книга «Изучай Haskell во имя добра!» И раз уж вы взялись за её чтение, есть шанс, что вы хотите изучить язык Haskell. В таком случае вы на правильном пути – но прежде чем продолжить его, давайте поговорим о самом учебнике.
Я решился написать это руководство потому, что захотел упорядочить свои собственные знания о Haskell, а также потому, что надеюсь помочь другим людям в освоении этого языка. В сети Интернет уже предостаточно литературы по данной теме, и когда я сам проходил период ученичества, то использовал самые разные ресурсы.
Чтобы поподробнее ознакомиться с Haskell, я читал многочисленные справочники и статьи, в которых описывались различные аспекты при помощи различных методов. Затем я собрал воедино все эти разрозненные сведения и положил их в основу собственной книги. Так что этот учебник представляет собой попытку создать ещё один полезный ресурс для изучения языка Haskell – и есть вероятность, что вы найдёте здесь именно то, что вам нужно!
Эта книга рассчитана на людей, которые уже имеют опыт работы с императивными языками программирования (C++, Java, Python...), а теперь хотели бы попробовать Haskell. Впрочем, бьюсь об заклад, что даже если вы не обладаете солидным опытом программирования, с вашей природной смекалкой вы легко освоите Haskell, пользуясь этим учебником!
Моей первой реакцией на Haskell было ощущение, что язык какой-то уж слишком чудной. Но после преодоления начального барьера всё пошло как по маслу. Даже если на первый взгляд Haskell кажется вам странным, не сдавайтесь! Освоение этого языка похоже на изучение программирования «с нуля» – и это очень занимательно, потому что вы начинаете мыслить совершенно иначе...