Меню:


Баннер для фонда поддержки ФП

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

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

Введение

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

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

Литература на русском языке

В 70-80-е гг. в СССР было выпущено достаточно большое количество литературы, касающейся функционального и декларативного программирования. Список книг включает не только переводные книги, но и книги и учебники отечественных авторов, работавших в данных областях. В 90-е годы издание такой литературы практически сошло на нет, но в последние годы эта ситуация стала исправляться — появились переводы хороших зарубежных книг1, а также вышло несколько книг русскоязычных авторов, в том числе и учебники, разработанные специально для вузов2, описанных ниже.

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

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

Общие вопросы ФП

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

"Функциональное программирование" (Харрисон/Филд)

В 1993 году издательство "Мир" выпустило перевод достаточно известной книги Functional Programming, написанной Петером Харрисоном (Peter G. Harrison) и Антони Филдом (Anthony J. Field) в 1988 году. На русском языке она называется "Функциональное программирование" (ISBN 5-03-001870-0).

Данная книга начинается с рассмотрения функций как таковых и использования функций высшего порядка, а также рассматривает виды вычислений, используемые при функциональном стиле программирования. Для демонстрации приемов программирования в книге вводится язык Hope. Помимо Hope, кратко описываются и другие языки программирования: Lisp, Miranda, FP.

За введением в ФП (функциональное программирование) следует основная часть книги, посвященная вопросам реализации языков программирования, начиная с основ лямбда-исчисления, системы вывода и проверки типов, вопросов интерпретации и компиляции кода, представления данных, сборки мусора, и заканчивая вопросами оптимизации программ (преобразование кода во время компиляции, оптимизация ленивого вычисления данных и т.п.).

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

"Введение в функциональное программирование" (Харрисон)

Данный проект является переводом курса Introduction to Functional Programming Джона Харрисона (John Harrison). Этот курс может использоваться для быстрого ознакомления с основами ФП и семейством языков ML. Он содержит в себе как описание теоретических основ ФП (от лямбда-исчисления до систем типов), так и примеры применения парадигм ФП для решения конкретных задач.

В данном курсе используется язык программирования Caml Light3, входящий в семейство языков ML. По мере прохождения данного курса читатель получает набор знаний, необходимый для освоения данного языка и написания на нем достаточно сложных программ.

Перевод может использоваться как основа курса лекций по ФП — помимо конспектов лекций (lecture notes) в нем содержатся переводы всех сопутствующих слайдов. Последняя версия перевода может быть загружена с сайта проекта.

"Структура и интерпретация компьютерных программ"

В 2006 году был выпущен перевод на русский язык классического учебника MIT по основам программирования "Структура и интерпретация компьютерных программ" (Structure & Interpretation of Computer Programs, SICP). Перевод был выполнен Георгием Бронниковым.

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

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

Качество перевода книги очень высокое, однако имеются недостатки, связанные с изданием самой книги: она вышла в мягком переплете, и ее не очень удобно читать, имеются проблемы верстки и опечатки, а главное — малый тираж (всего 1000 экземпляров), в связи с чем книгу уже тяжело найти в магазинах. В то же время, ее можно найти в электронном виде.

Учебные курсы проекта "Интуит"

Среди учебных курсов проекта "Интуит" имеется несколько курсов, которые посвящены вопросам функционального и декларативного программирования. Некоторые из них предлагают теоретическое изложение принципов ФП, другие посвящены конкретным языкам программирования. Эти курсы могут стать хорошим подспорьем при изучении ФП, поскольку материал рассчитан на людей, только начинающих знакомиться с соответствующими темами. Практически все курсы содержат задачи и упражнения, выполняя которые можно приобрести практический опыт применения полученных знаний.

В настоящее время опубликованы следующие курсы (материалы некоторых курсов доступны также в печатном виде — книги можно заказать с сайта проекта):

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

"Типы в языках программирования" (Пирс)

Эта книга является переводом известной книги Types and Programming Languages Бенджамина Пирса (Benjamin C. Pierce). В книге рассматриваются различные аспекты использования типов в языках программирования: математические основы, различные типовые системы, вывод типов и т.д.

Этот перевод, также как и SICP, осуществляется Георгием Бронниковым. Книга свободно доступна в электронном виде, а больше информации вы сможете найти на сайте проекта. Вы также можете купить ее и в печатном виде (в том числе и в обычных магазинах).

Другие книги, имеющие отношение к ФП

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

О конкретных языках

Наряду с книгами, описывающими общие вопросы программирования на функциональных языках и математические основы лямбда-исчисления, в СССР и России издавались и книги по конкретным функциональным и декларативным языкам программирования. Достаточно широко представлена информация о языках Lisp, Haskell и Prolog, но к сожалению практически отсутствует литература по языку Erlang.

Lisp

Языку Lisp, являющемуся самым старым функциональным языком, в СССР было посвящено несколько публикаций (хотя их не так много, по сравнению с языком Пролог).

В 70-х гг. было выпущено сразу несколько книг по Лиспу:

В 1990 году вышел в свет широко известный двухтомник "Мир Лиспа", являющийся переводом одноименной книги финских авторов Э. Хювёнен и И. Сеппянен. В первом томе содержится описание языка Common Lisp, включая типы данных и наиболее часто используемые функции, ввод и вывод данных, обработку символьных данных и т.п. Кроме того, часть первого тома посвящена введению в методы ФП: использование рекурсии, функций высшего порядка, замыканий и макросов. Второй том содержит введение в другие методы программирования — логическое и объектное, описание среды программирования Лисп, а также большое количество примеров программ на этом языке, включая простой интерпретатор Лиспа.

Из более современных книг стоит упомянуть книги, выпущенные в рамках проекта Интуит, а также книги, которые планируется выпустить в скором времени.

Clojure

К сожалению пока нет книг на русском языке, посвященных этому интересному языку. Список имеющейся англоязычной литературы вы можете найти ниже. На русском языке пока существуют только несколько статей — Язык программирования Clojure, опубликованная в рамках проекта IBM developerWorks, и статья Clojure, или «Вы все еще используете Java? Тогда мы идем к вам!», опубликованная в 4-м номере журнала "Практика функционального программирования" (более свежая версия этой статьи доступна на моем сайте).

Логическое программирование и язык Пролог

За последние тридцать лет в СССР (а затем и в России) было выпущено достаточно большое количество книг на темы логического программирования и искусственного интеллекта вообще и языка Пролог в частности (особенно много их было издано в 80-х гг.). Этот далеко не полный список включает следующие книги:

Haskell

В настоящее время количество русскоязычных материалов по языку Haskell невелико. Только в последние годы стали появляться книги об этом языке (упомянутые далее в статье книги Р. Душкина и Н. Рогановой, курсы проекта "Интуит") и появились энтузиасты, работающие над переводом англоязычных книг и статей на русский язык в целях популяризации Haskell среди русскоязычных программистов.

Книги о Haskell Романа Душкина

В 2006—2007 гг. Роман Душкин, читавший в МИФИ в 2001—2006 гг. курсы по ФП, выпустил две книги, посвященные языку программирования Haskell.

Первая из них называется "Функциональное программирование на языке Haskell" и является учебником по ФП, с примерами на языке Haskell, и используется в ряде вузов в качестве учебного пособия по ФП. В книге рассматриваются основы лямбда-исчисления, принципы построения программ на функциональных языках, а также описывается круг типовых задач, для которых использование функциональных языков является целесообразным. Использование монад, ввод/вывод данных, классы типов (включая стандартные классы языка Haskell) и другие вопросы иллюстрируются примерами на языке Haskell. В последних двух главах рассматриваются вопросы построения трансляторов и имеющиеся в Haskell средства для этого, а также обсуждаются подходы к решению некоторых задач искусственного интеллекта на языке Haskell.

Стоит отметить, что книга содержит достаточно большое количество математики и написана суховатым языком, что делает ее излишне теоретизированой с точки зрения программиста-практика и затрудняет восприятие. Кроме того, в книге не так много примеров, которые показывали бы применимость языка в повседневной разработке (если сравнивать с книгой Real World Haskell, которая является хорошим образцом в этом деле). Еще одной вещью, затрудняющей чтение книги является качество издания — верстки самой книги и бумаги, на которой она напечатана.

Вторая книга этого же автора называется "Справочник по языку Haskell" и является дополнением к первой. Книга предназначена для читателей, уже знакомых с основами языка Haskell, поэтому она не должна рассматриваться как учебник по этому языку. Она содержит краткое описание синтаксиса языка Haskell, основных типов данных, а также (что важно!) основные приемы программирования на этом языке — использование различных видов рекурсии, функций высшего порядка и анонимных функций, защитных выражений и т.д.

Основная часть книги посвящена стандартным библиотекам, входящим в состав Hugs98 & GHC: начиная с Prelude и включая основные библиотеки (Control, System, Data, Text). Для каждой библиотеки приводится описание определенных в ней типов, классов и функций. Приводимые в справочнике определения функций могут использоваться в качестве примеров по написанию "правильного" кода на Haskell и являются хорошим подспорьем в работе.

В ноябре 2009 года была выпущена (при поддержке проекта "Практика функционального программирования") еще одна книга Романа Душкина. Она называется "Практика работы на языке Haskell" и рассматривает инструментальные средства языка Haskell, такие как компиляторы и интерпретаторы Hugs и GHC, поддержку разработки в среде Eclipse, различные утилиты (hlint, darcs, cabal и другие) и различные библиотеки: Parsec, для разработки парсеров, HaskellDB для работы с базами данных, разработки сетевых и графических приложений. По каждой из подсистем дается небольшое описание и примеры использования.

"Функциональное программирование" (Роганова)

В 2002 году Институт ИНФО издал учебное пособие Н.А. Рогановой под названием "Функциональное программирование". В данном пособии основной упор делается на практическое применение ФП для решения конкретных задач (автор выбрала задачи обработки структур данных и различные математические задачи). В нем практически нет теории, изобилующей математикой, что отличает его от других учебников по ФП. Все вводимые понятия иллюстрируются примерами на языке Haskell, который описан достаточно подробно, поэтому данное учебное пособие можно рассматривать в качестве начального по данному языку.

К недостаткам пособия можно отнести то, что отсутствие материала по теоретическим основам ФП (лямбда-исчисление и т.п.) требует изучения дополнительных материалов (которые, к сожалению, не указаны в списке литературы). Кроме того, в части описания языка Haskell мало внимания уделено таким вопросам, как ввод/вывод данных, разбор данных и т.п.

Переводы документации

М. Ландина и В. Роганов в 2005 году выполнили перевод The Haskell 98 Report — основного документа, который определяет синтаксис языка Haskell, а также состав основных библиотек этого языка. Перевод этого документа доступен с сервера haskell.ru как в варианте для печати, так и в online-версии.

Денис Москвин сделал перевод хорошо известного учебника по языку Haskell — Gentle Introduction To Haskell. Данный учебник описывает основные возможности языка Haskell и наиболее часто используемые функции стандартных библиотек, включая ввод и вывод, и может использоваться для изучения основ языка. Перевод учебника доступен с сервера RSDN и состоит из двух частей — часть 1 и часть 2.

Семейство языков ML

О семействе языков ML (Standard ML, Objective Caml, Caml Light) на русском языке существует сравнительно немного литературы. В качестве небольшого введения в программирование на языке Caml Light можно использовать курс лекций "Введение в функциональное программирование", описанный выше.

Кроме того, существует незаконченный перевод книги Developing Applications With Objective Caml — переведено 11 глав, описывающих сам язык OCaml и базовые библиотеки, их можно использовать в качестве учебника по данному языку.

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

Весной 2011-го года, в издательстве "Символ-Плюс" под названием Программирование на F# вышел перевод книги Programming F#, выпущенной издательством O'Reilly. Данная книга описывает 1-ю версию языка, хотя в данный момент уже доступна вторая версия, со многими улучшениями.

Издательство "ДМК Пресс" также учавствует в выпуске литературы по функциональному программированию. В апрелее 2011-го года, там была выпущена книга Дмитрия Сошников Функциональное программирование на F#, которая представляет собой небольшое введение в этот язык, без глубокого погружения в лямбда-исчисление и синтаксис языка, но охватывает основные практические вопросы применения этого языка. Особенно полезной является 7-я глава, которая содержит решения конкретных задач, от математических вычислений, до веб-программирования, графики и программирования для Windows Phone 7.

Планируется выпустить

Книга Сергиевского и Волчёнкова "Декларативное программирование" в настоящее время находится в процессе издания. Книга предназначена для использования в учебных заведениях. Она рассматривает вопросы функционального и логического программирования, включая теоретические вопросы ФП, доказательство свойств программ и т.д. Для примеров используются языки Lisp и Haskell. Отдельная часть учебника посвящена вопросам логического программирования с использованием языка Prolog.

Другие авторы также ведут работу над несколькими книгами, посвященными Haskell. Одна из них касается вопросов создания специализированных языков программирования (DSL) средствами языка Haskell, включая создание синтаксических анализаторов, а также ряда связанных с этим тем.

Также в последнее время ведется работа над переводом на русский язык книги Practical Common Lisp. Книга содержит достаточно подробное введение в язык Common Lisp и содержит большое количество практических примеров, которые помогают начать использование этого языка в повседневной работе. Работа над переводом находится в заключительной стадии, а переведенный материал доступен на сайте проекта.

Еще одна группа энтузиастов начала работу над переводом знаменитой книги On Lisp Пола Грема (Paul Graham). Вы можете помочь в улучшении этого материала путем вычитки переведенных глав или присоединившись к переводу текста.

Англоязычная литература

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

Общие вопросы ФП

В данном списке собраны книги, посвященные общим вопросам разработки ПО на функциональных языках, а также теоретическим вопросам ФП:

Больше книг вы можете найти на страницах проекта Free Tech Books.

Реализация языков программирования

Вопросы реализации функциональных языков программирования рассматриваются в некоторых описанных выше книгах, посвященных теории ФП, но кроме этого, существуют книги, посвященные исключительно вопросам реализации таких языков программирования:

Конкретные языки ФП

Ниже перечислены наиболее интересные книги на английском языке, посвященные конкретным функциональным языкам программирования.

Haskell

Среди публикаций, посвященных языку Haskell, я хотел бы отметить следующие:

Кроме напечатанных книг и учебников, имеются и материалы, доступные online. К наиболее интересным можно отнести:

Erlang

Книга Programming Erlang. Software for a Concurrent World, написанная Джо Армстронгом (Joe Armstrong), является практически единственным доступным печатным изданием, посвященным языку Erlang, поскольку выпущенная ранее книга "Concurrent Programming in Erlang" стала уже библиографической редкостью (в интернете можно найти первую часть этой книги). "Programming Erlang" описывает язык простым языком и знакомит читателя с его основным функционалом. Кроме самого языка, книга описывает более сложные темы: базы данных, использование OTP и т.п.

Издательство O'Reilly в 2009-м году выпустило книгу Erlang Programming, описывающую как сам язык, так и инфраструктурные вопросы, включая OTP, программирование графических приложений, test-driven разработку, отладку и т.д. Эта книга более подробная чем книга Армстронга.

Книга Erlang and OTP in Action, выпущена издательством Manning осенью 2010 года, и посвящена практическим аспектам использования OTP, а также вопросам использования Erlang'а с библиотеками на других языках программирования. Предполагается, что читатель уже немного знаком с языком Erlang.

Кроме того, планируется выпуск следующих книг, посвященных как самому языку Erlang, так и применению его в конкретных задачах:

Caml & Objective Caml

Вопросам программирования на языке Objective Caml (OCaml) посвящено несколько книг.

Наиболее известной является свободно доступная книга Developing Applications with Objective Caml, которая не только описывает сам язык OCaml, но и рассматривает различные вопросы программирования с его использованием.

Недавно также появилась свободно распространяемая книга Introduction to Objective Caml, которая содержит достаточно подробное описание языка и примеры его применения.

Книга OCaml for Scientists посвящена вопросам использования OCaml для "научного программирования" — обработки данных, математических вычислений, визуализации данных и оптимизации кода для лучшей производительности.

Еще одна книга — Practical OCaml, описывает язык OCaml и приемы программирования на нем. К сожалению, по многочисленными отзывами читателей, книга написана не очень хорошо.

Технический отчет The ZINC experiment: an economical implementation of the ML language, написанный Xavier Leroy в 1990 году, представляет собой подробное описание реализации языка ML и может быть интересен тем, кто интересуется внутренним устройством Caml & OCaml.

F#

В настоящее время по языку F# написана серия книг.

Foundations of F#, выпущенная в 2007-м году, описывает основы языка и показывает разные методы программирования на нем, включая создание пользовательских интерфейсов и работу с базами данных. В конце 2009-го года вышла новая версия этой книги, под названием Beginning F#.

Книга Expert F# в свою очередь посвящена более сложным вопросам применения F# для разработки программ, таким как взаимодействие с кодом, написанным на других языках, использование библиотек .Net, разбор данных, асинхронное программирование и т.д.

F# for Scientists является версией книги "OCaml for Scientists", адаптированной для языка F#, и содержит информацию по разным аспектам применения F# в "научном программировании" — визуализации данных, работе с базами данных, обработке данных и т.д.

В октябре 2009-го года издательство O'Reilly выпустило книгу Programming F#, которая содержит описание актуальной версии языка F#, начиная с рассмотрения основ функционального и объектно-ориентированного программирования на данном языке, использование библиотек платформы .Net, метапрограммирование с помощью доступных средств платформы, а также использование возможностей языка для асинхронного и параллельного программирования. Кроме этого, в приложениях приводится информация об имеющихся библиотеках для обработки и визуализации данных.

В конце 2009-го года, издательство Manning опубликовало книгу Functional Programming for the Real World: With Examples in F# and C#, которая описывает декларативный подход к разработке программ, и иллюстрирует его с помощью примеров на языках F# и C#. Данная книга может быть интересна для программистов, имеющих опыт разработки для платформы .Net, и желающих ознакомиться с разными подходами к разработке программ.

В июне 2010-го была выпущена книга Expert F# 2.0 (The Definitive Guide), написанная Don Syme, Adam Granicz и Antonio Cisternino. Данная книга содержит подробное описание самой последней версии языка, которая была выпущена в составе MS Visual Studio 10.

Также летом 2010-го года в издательстве Wrox вышла книга Professional F# 2.0.

Среди свободных ресурсов стоит отметить книгу The F# Survival Guide, которая содержит достаточно полную информацию об основах функционального программирования и самом языке F#.

Standard ML

По языку Standard ML также выпущено достаточно большое количество книг:

Несколько книг посвящены изложению стандарта языка. К ним можно отнести книги The Definition of Standard ML и The Standard ML Basis Library, которые содержат подробную информацию о языке и стандартной библиотеке.

Lisp

Кроме описанных ранее русскоязычных книг по языку Lisp, существует большое количество книг на английском языке, посвященных Lisp и его диалектам:

Осенью 2010-го года, издательство No Starch Press выпустило еще одну книгу по Lisp — Land of LISP: Learn to Program in LISP, One Game at a Time!. Кроме того, у книги есть отдельный сайт, где можно найти более подробную информацию о книге.

А издательство O'Reilly также планирует выпустить книгу о Common Lisp под названием "Lisp Outside the Box", и несколько глав уже доступно для чтения на сайте проекта. Как видно из оглавления, в книге рассматривается широкий круг вопросов — от основ Common Lisp, до разработки приложений для веб и десктопа, а также работа с конкретными библиотеками и средами разработки.

Scheme

По языку программирования Scheme также выпущено несколько книг, в настоящее время можно купить следующие из них:

Книги описывают как сам язык, так и различные аспекты его использования. Эти книги могут использоваться как справочники по языку и являются хорошим дополнением к книгам Structure and Interpretation of Computer Programs и How to Design Programs, в которых язык Scheme использован для примеров.

Prolog

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

Scala

Язык Scala становится достаточно популярным, и начал использоваться в коммерческих проектах, таких как Twitter, LinkedIn, и других. По данному языку существует достаточно большое количество литературы на английском языке:

К изданию планируются следующие книги:

Clojure

Clojure — недавно появившийся Lisp'ообразный язык программирования для Java Virtual Machine (JVM). В отличии от других реализаций, он не совместим полностью ни с Common Lisp, ни с Scheme, а реализует свое подмножество Lisp. Отказ от совместимости с другими реализациями, позволил реализовать некоторые интересные вещи, как неизменяемость данных, неявную параллелизацию кода, очень простую модель конкурентного программирования и другие вещи, при этом обеспечивая возможность двухстороннего взаимодействия с кодом на Java.

В 2009-м году в серии Pragmatic Programmers вышла книга Programming Clojure. Эта книга представляет собой достаточно хорошее введение в язык, описывая основные возможности языка (версии 1.0, существовавшей на время выхода книги). Но в качестве справочника необходимо использовать соответствующий раздел сайта языка, поскольку в книге в основном дается описание концепций языка.

В мае 2010-го года вышла книга Practical Clojure. The Definitive Guide, которая содержит описание всех возможностей языка в достаточно кратком изложении. Но при этом в книге отсутствует описание инфраструктурных вещей, таких как среды разработки, утилиты для сборки кода и т.д. Но несмотря на это, эту книгу можно рекомендовать в качестве учебника по языку.

А в начале 2011-го года, издательство Manning должно выпустить две книги про Clojure: Clojure in Action и The Joy of Clojure. Thinking the Clojure Way. Обе книги уже доступны в рамках программы раннего доступа Manning (MEAP).

Летом 2011-го года издательство O'Reilly должно выпустить книгу Programming Clojure, авторами которой являются известные разработчики языка и библиотек.

Среди свободных источников информации можно отметить Clojure Notes, который использовался в курсе обучения Clojure и книгу Clojure Programming, создаваемую в рамках проекта Wikibooks.

Рекомендации

Если вы хотите познакомиться с принципами создания функциональных языков программирования, то на русском языке базовую информацию вы почерпнете из книг "Структура и интерпретация компьютерных программ", "Функциональное программирование", "Функциональное программирование. Применение и реализация" (Хендерсон) и "Реализация функциональных языков". Из книг на английском языке я могу порекомендовать книги, перечисленные в разделе "Реализация функциональных языков программирования".

Заинтересовавшиеся Common Lisp могут начать его изучение с книги Practical Common Lisp (существующей и на русском языке), которая даст информацию по основным аспектам языка. Более сложные аспекты работы с Lisp описаны в On Lisp, The Art of Metaobject Protocol, Lisp in Small Pieces и других англоязычных книгах.

Для обучения функциональному программированию на языке Haskell можно порекомендовать книгу Introduction to Functional Programming using Haskell Ричарда Бёрда. Для желающих узнать о практическом применении Haskell хорошим выбором будет книга Real World Haskell в которой приводятся практические примеры использования Haskell. Среди учебников можно отметить Yet another Haskell tutorial и A Gentle Introduction to Haskell 98 (также доступный на русском языке), ну и конечно Learn You a Haskell for Great Good!.

Для изучения Erlang я бы посоветовал начать либо с книги Erlang Programming от O'Reilly, либо с Erlang and OTP in Action, выпущенной в Manning — обе эти книги обеспечивают достаточно полное описание как самого языка, так и OTP.

Для ознакомления с языками семейства ML существует достаточно много литературы. Выбравшим OCaml лучше начать с книги Introduction to Objective Caml, используя её вместе со справочником по языку, а потом переходить к Developing Applications with Objective Caml и другим книгам из списка выше. А изучение F# стоит начать с Expert F# 2.0 или Begining F# и продолжить с F# for Scientists.

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

Заключение

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


1. Очень часто они переводились силами энтузиастов функционального программирования.

2. Тут необходимо отметить серию учебников и учебных курсов проекта Интуит.

3. Хочется отметить, что ведется работа над версией курса лекций, адаптированной для языка OCaml, который является развитием Caml Light, но не полностью совместим с ним.

4. Это, к сожалению, беда многих советских и российских учебников.

5. Продолжение — continutation.

Last change: 02.12.2011 14:26

blog comments powered by Disqus