Пока суд да дело, я подготовил, скомпилировал и фактически опубликовал новую книгу по функциональному программированию и прекрасному языку Haskell, которая называется «Другие 14 эссе о языке Haskell и функциональном программировании — серьёзные». Как понятно из названия, в книге собрано ни много, ни мало — 14 моих статей, которые в разное время были опубликованы в разных местах (в том числе и на Хаброхабре). В отличие от моей предыдущей книги, которая называется «14 занимательных эссе...», в настоящем томе собраны довольно серьёзные и зачастую наполненные «матаном» статьи, особенно во второй части, посвящённой теоретическим основам функционального программирования.
Для заинтересованных читателей приведу так называемое расширенное содержание книги. Так что добро пожаловать под кат…
Расширенное содержание
Книга состоит из трёх частей — «мета», теория и практика. В первой части представлена одна статья-приглашение к дискуссии, в двух других частях — мои статьи на различные темы. Статьи из теоретической части были, в основном, в своё время опубликованы в научно-практическом журнале «Практика Функционального Программирования», а статьи из практической части были опубликованы в разное время здесь на Хаброхабре. Тем не менее, в сборнике есть материалы, ранее нигде не публиковавшиеся, а также статьи даны в авторской редакции без учёта купюр редакторов, которые часто вмешивались в процесс написания статей.
Эссе 1. Соглашение об оформлении исходных кодов на языке Haskell
Когда-то давным-давно, ещё до появления на свет книги «Real World Haskell» у меня возникла идея написать книгу с амбициозным названием «Язык Haskell для профессиональных программистов». Однако идее не суждено было осуществиться по некоторым причинам. Но материалы остались — и данное эссе является одним из написанных тогда приложений к книге.
В эссе приводится предложение по Соглашению об оформлении исходных кодов на языке Haskell в качестве отправной точки в дискуссии по выработке стандарта.
Эссе 2. Функции и функциональный подход
Данное эссе было опубликовано в виде статьи в № 1 научно-практического журнала «Практика функционального программирования» в июле 2009 г.
В эссе в сжатой форме рассказывается про функциональный подход к описанию вычислительных процессов (и, в общем, к описанию произвольных процессов в реальном мире), а также про применение этого подхода в информатике в функциональной парадигме программирования. Примеры реализации функций даются на языке программирования Haskell.
Эссе 3. Алгебраические типы данных и их использование в программировании
Данное эссе было опубликовано в виде статьи в № 2 научно-практического журнала «Практика функционального программирования» в сентябре 2009 г.
Эссе рассматривает важную идиому программирования — алгебраический тип данных (АТД). Приводится теоретическая база, которая лежит в основе практического применения АТД в различных языках программирования. Прикладные аспекты рассматриваются на языке функционального программирования Haskell, а также кратко на некоторых других языках программирования.
Эссе 4. Полиморфизм в языке Haskell
Данное эссе было опубликовано в сокращённом варианте в виде статьи в № 3 научно-практического журнала «Практика функционального программирования» в декабре 2009 г. Здесь приводится в полной авторской редакции.
Эссе предлагает к рассмотрению одно из мощнейших и перспективных средств программирования — полиморфизм, — на примере его использования в функциональном языке программирования Haskell. Описаны различные виды полиморфизма: параметрический со своими подвидами, а также перегрузка имён функций (так называемый «ad-hoc полиморфизм», или «специальный полиморфизм»).
Эссе 5. Мономорфизм, полиморфизм и экзистенциальные типы
Данное эссе было опубликовано в виде статьи в № 4 научно-практического журнала «Практика функционального программирования» в феврале 2010 г.
В эссе описываются экзистенциальные типы данных и их применение в функциональной парадигме программирования. Даются определения необходимых понятий — мономорфизма, полиморфизма (высших рангов) и их связи с экзистенциальными типами. Примеры определений типов и функций для их обработки приводятся в основном на языке программирования Haskell.
Эссе 6. Модель типизации Хиндли — Милнера и пример её реализации на языке Haskell
Данное эссе было опубликовано в виде статьи в № 5 научно-практического журнала «Практика функционального программирования» в мае 2010 г.
Эссе описывает алгоритм Хиндли — Милнера, используемый для автоматического вывода типов выражений. Рассматриваются дополнения данного алгоритма, используемые в функциональном языке программирования Haskell в связи с наличием в этом языке ограниченного полиморфизма. Приводится пример реализации функции для автоматического вывода типов, реализованной на языке Haskell, для чего, в том числе, даются полезные примеры применения библиотеки синтаксического анализа.
Эссе 7. Катаморфизм
Данное эссе основано на тексте, который публиковался в разное время в разных местах в сети Интернет. Текст начинался как перевод англоязычной статьи «Catamorphism» в Википедии, однако затем был значительно расширен в части объяснения и примеров. На текущий момент данное эссе является наиболее полным и непротиворечивым описанием, несмотря на то, что в сети Интернет по различным адресам ещё остаются тексты, похожие на этот.
Одна из базовых схем рекурсии, катаморфизм, — понятие из теории категорий, имеющее непосредственное применение в функциональном программировании. Является одним из базовых примитивов для описания рекурсивных функций (и, более общо, — рекурсивных процессов). Совместно с сопутствующими понятиями анаморфизма, хиломорфизма и параморфизма может использоваться для представления произвольных рекурсивных функций.
Эссе 8. Генерация естественно-языковых фраз при помощи языка Haskell на основе порождающих грамматик и расширенных цепей Маркова
В эссе рассматривается задача по генерации фраз на естественном языке при помощи конкретизации правил порождающих грамматик, в которых имеется вероятностный компонент на основе расширенных цепей Маркова. Реализация метода произведена на языке Haskell.
- Хаброхабр: habrahabr.ru/post/134291/
Эссе 9. Реализация конструирования N-грамм и генерации псевдо ЕЯ-текста на их основе на языке Haskell
В эссе продолжается рассматриваться тема генерации естественно-языковых фраз. На этот раз под пристальным взглядом изучается такое понятие прикладной лингвистики, как N-граммы. Реализация алгоритмов, как обычно, осуществлена на языке Haskell.
- Хаброхабр: habrahabr.ru/post/135127/
Эссе 10. Утилита для работы с N-граммами
В эссе рассказывается про разработку утилиты, работающей в интерактивном режиме цикла опроса пользователя, которая позволяет использовать заданные пользователем тексты для построения словарей N-грамм. Разработка ведётся на языке Haskell.
- Хаброхабр: habrahabr.ru/post/136775/
Эссе 11. Фреймворк для генерации рекурсивных сказок на языке Haskell
В эссе описывается набор готовых шаблонов для разработки программ (фреймворк) для решения задачи по генерации естественно-языковых текстов на примере так называемых рекурсивных сказок на русском языке. Примеры кода, как обычно, приводятся на языке программирования Haskell.
- Хаброхабр: habrahabr.ru/post/136007/
Эссе 12. Поиграем в слова — создаём бота-игрока на языке Haskell
В эссе описывается реализация интерактивной игры «в слова», в которой присутствуют зачатки обучающегося искусственного интеллекта — бота-игрока, который учится играть у своего оппонента. Игра реализована на языке Haskell и работает в консольном режиме.
- Хаброхабр: habrahabr.ru/post/154045/
Эссе 13. Символьные вычисления на примере решения одной несложной задачи по квантовой механике
В эссе рассматривается интереснейшая проблема — выполнение символьных вычислений, — на примере решения очень несложной задачи по квантовой механике (даже более узко, по линейной алгебре). Показана пошаговая реализация модуля выполнения символьных вычислений на языке Haskell.
- Хаброхабр: habrahabr.ru/post/155889/
Эссе 14. Решение некоторых задач по криптографии
В эссе рассматривается то, как при помощи языка Haskell решить шесть довольно несложных, но в то же время интересных задач по криптографии.
- Хаброхабр: habrahabr.ru/post/149712/
Дополнительные ссылки
Осталось привести только некоторые ссылки, чтобы любой заинтересовавшийся мог скачать себе описанную книгу, а также дополнительные книги и материалы, если кто-то заинтересуется. Вот они (кстати, напоминаю, что я предлагаю читателям свои книги на абсолютно безвозмездной основе — скачивайте и читайте на здоровье):
- Другие 14 эссе о языке Haskell и функциональном программировании — серьёзные — в данном томе представлено новые 14 статей автора, которые в разное время были опубликованы в различных источниках — в научно-практическом журнале «Практика функционального программирования» (с дополнениями, которые не были включены в опубликованные статьи), на различных ресурсах в сети Интернет, на тематическом ресурсе Хаброхабр. Статьи сгруппированы в трёх частях — «мета», теоретическая и практическая части. В книге сделан упор на практические знания, предлагается решение некоторых прикладных задач при помощи языка функционального программирования Haskell.
- 14 занимательных эссе о языке Haskell и функциональном программировании — в книге представлено 14 статей автора, которые в разное время были опубликованы или подготовлены к публикации в научно-популярном журнале для школьников и учителей «Потенциал». Статьи расположены и связаны таким образом, чтобы они представляли собой логически последовательное повествование от начал к более сложным темам. Также в книге сделан упор на практические знания, предлагается решение многих прикладных задач при помощи языка функционального программирования Haskell.
- Методы получения, представления и обработки знаний с НЕ-факторами — в монографии рассматриваются три последовательных процесса работы со знаниями — получение, представление и обработка, причём акцент сделан на так называемых НЕ-факторах, то есть факторах неопределённости, которые обычно присутствуют в знаниях экспертов. Приводится обзор современных методов, подходов и технологий извлечения, представления и обработки таких знаний, даётся богатый список специализированной литературы.
- Альманах «Конкурсы по функциональному программированию за 2011 год» — данный том является первым выпуском ежегодного Альманаха «Конкурсы по функциональному программированию», который составляется по результатам проводимых автором конкурсов в сети Интернет. Альманах структурирует и сводит воедино всю информацию, касающуюся конкурсных задач и их решений при помощи языка функционального программирования Haskell.
- Воспитание естественнонаучного мировоззрения у детей дошкольного и младшего школьного возраста. Том 1. Некоторые рекомендации родителям — в книге предлагается описание личного опыта автора в деле воспитания у детей естественнонаучного мировоззрения, системного подхода к познанию окружающего мира и кибернетического метода исследования. По возможности книга написана простым языком, в ней приведены многочисленные примеры, методики и подходы. При этом книга не является педагогическим изданием, в ней всего лишь описывается авторское видение на проблемы воспитания детей. Книга будет интересна любому родителю, который хочет воспитать в своих детях тягу к науке и технологиям.
Все те, кто перечислит свою благодарность в Фонд Поддержки Функционального Программирования ФП(ФП), смогут рассчитывать на персональный электронный экземпляр какой-либо моей книги (на выбор благодарного читателя) с моим автографом и дарственной надписью. Для этого после перечисления благодарности достаточно связаться со мной по электронной почте darkus.14@gmail.com
или прислать личное сообщение здесь.
Автор: Darkus