Изучай Haskell во имя добра!

Изучай Haskell во имя добра!

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

Язык Haskell имеет множество впечатляющих возможностей, но главное его свойство в том, что меняется не только способ написания кода, но и сам способ размышления о проблемах и возможных решениях. Этим Haskell действительно отличается от большинства языков программирования. С его помощью мир можно представить и описать нестандартным образом. И поскольку Haskell предлагает совершенно новые способы размышления о проблемах, изучение этого языка может изменить и стиль программирования на всех прочих.

Ещё одно необычное свойство Haskell состоит в том, что в этом языке придаётся особое значение рассуждениям о типах данных. Как следствие, вы помещаете больше внимания и меньше кода в ваши программы.

Вне зависимости от того, в каком направлении вы намерены двигаться, путешествуя в мире программирования, небольшой заход в страну Haskell себя оправдает. А если вы решите там остаться, то наверняка найдёте чем заняться и чему поучиться!

Эта книга поможет многим читателям найти свой путь к Haskell.

Отображения, монады, моноиды и другое!

Всё сказано в названии: «Изучай Хаскель во имя добра!» – весёлый иллюстрированный самоучитель по этому сложному функциональному языку.

С помощью оригинальных рисунков автора, отсылке к поп-культуре, и, самое главное, благодаря полезным примерам кода, эта книга обучает основам функционального программирования так, как вы никогда не смогли бы себе представить.

Вы начнете изучение с простого материала: основы синтаксиса, рекурсия, типы и классы типов. Затем, когда вы преуспеете в основах, начнется настоящий мастер-класс от профессионала: вы изучите, как использовать аппликативные функторы, монады, застежки, и другие легендарные конструкции Хаскеля, о которых вы читали только в сказках.

Продираясь сквозь образные (и порой безумные) примеры автора, вы научитесь:

• Смеяться в лицо побочным эффектам, поскольку вы овладеете техниками чистого функционального программирования.

• Использовать волшебство «ленивости» Хаскеля для игры с бесконечными наборами данных.

• Организовывать свои программы, создавая собственные типы, классы типов и модули.

• Использовать элегантную систему ввода-вывода Хаскеля, чтобы делиться гениальностью ваших программ с окружающим миром.

Нет лучшего способа изучить этот мощный язык, чем чтение «Изучай Хаскель во имя добра!», кроме, разве что, поедания мозга его создателей.

Миран Липовача (Miran Lipovača) изучает информатику в Любляне (Словения). Помимо его любви к Хаскелю, ему нравится заниматься боксом, играть на бас-гитаре и, конечно же, рисовать. У него есть увлечение танцующими скелетами и числом 71, а когда он проходит через автоматические двери, он притворяется, что на самом деле открывает их силой своей мысли.

Жанр: Программирование
Серии: -
Всего страниц: 149
ISBN: 978-5-94074-749-9
Год издания: 2012
Формат: Фрагмент

Изучай 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, так и серьёзных идиом языка, пришедших из теории категорий (функторы, аппликативные функторы, монады). Притом автор пользуется очень простым языком и приводит доступные для понимания примеры. Вообще, книга насыщена разнообразными примерами, и это её положительная черта.

При работе над русским изданием коллектив переводчиков постарался сохранить своеобразный стиль автора, чтобы передать своеобразие оригинала. Однако в процессе научного редактирования некоторые моменты были сглажены, терминология приведена к единообразию и согласована с уже устоявшимися терминами на русском языке. Тем не менее манера изложения материала далека от сухого академического стиля, который характерен для многих публикаций о функциональном программировании.


Рекомендуем почитать
Клятва огня

Приключения Ната продолжаются. Юноша вовсе не планировал возвращаться на планету Алмоа, но из-за поломки в двигателе ему пришлось приземлиться в пустыне. Некогда она была обитаемой местностью, но из космоса упал метеорит и буквально выжег ее дотла. Бортовой компьютер корабля радостно сообщил Нату, что на устранение поломки уйдет больше четырех лет. Не собираясь киснуть в «консервной банке» весь этот немалый срок, Нат решается выйти наружу, где царит смертоносная жара. Впереди его ждут встречи с демонами пустыни и искателями волшебной воды – агуальвы.


Могила моей сестры

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


Зайти с короля

Что могут короли?Вопрос далеко не праздный. Существует своеобразный кодекс, регулирующий в монархических государствах отношения между главой королевской фамилии и главой правительства.У нового монарха и нового премьер-министра Великобритании отношения сразу не заладились: уж очень они разные — аскетический, благородный, высоконравственный король и не ведающий угрызений совести и моральных ограничений политик. Король оказывается в паутине шантажа, подлогов, слежки, умело сплетенной премьером. Их противоборство рождает острую современную интригу, в которую втянуты парламент, телевидение, пресса, общественное мнение и которой мог бы позавидовать сам Александр Дюма.


«Уткашея»

Женщины в Афганистане… Что приводило их в воюющую страну… У каждой была своя причина.


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.