Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Введение в Elixir: введение в функциональное программирование

Покупка
Артикул: 688699.02.99
Доступ онлайн
699 ₽
В корзину
Красивый, мощный и компактный, язык программирования Elixir отлично подходит для изучения функционального программирования, и это практическое руководство покажет, насколько широкими возможностями он обладает. В книге рассказано, как Elixir сочетает в себе надежность языка функционального программирования Erlang с подходом, свойственным языку Ruby, а также мощную поддержку макросов для метапрограммирования. В итоге вы поймете, почему на Elixir так просто писать параллельные, надежные и отказоустойчивые программы, которые легко масштабируются как вверх, так и вниз!
Сенлорен, С. Введение в Elixir: введение в функциональное программирование / С. Сенлорен Д. Эйзенберг ; пер. с анг. А.Н. Киселева. - Москва : ДМК Пресс, 2017. - 262 с. - ISBN 978-5-97060-518-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/1027766 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Симон Сенлорен и Дэвид Эйзенберг

Введение в Elixir

Simon St. Laurent and J. David Eisenberg

INTRODUCING ELIXIR

Getting Started  
in Functional Programming 

Second Edition

Beijing • Boston • Farnham • Sebastopol • Tokyo   

Симон Сенлорен и Дэвид Эйзенберг

ВВЕДЕНИЕ В ELIXIR

Введение в функциональное  

программирование

Москва, 2017

УДК 004.438Elixir
ББК 32.973.3

С31

Сенлорен С., Эйзенберг Д.

C31
Введение в Elixir: введение в функциональное программирование / пер. с анг. А. Н. Киселева – М.: ДМК Пресс, 2017. – 262 с.: 
ил.

ISBN 978-5-97060-518-9

Красивый, мощный и компактный, язык программирования Elixir отлично 

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

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

УДК 004.438Elixir
ББК 32.973.3

Authorized Russian translation of the English edition of Introducing Elixir, 

2nd Edition, ISBN 9781491956779 © 2017 Simon St. Laurent, J. David Eisenberg. 
This translation is published and sold by permission of O’Reilly Media, Inc., which 
owns or controls all rights to publish and sell the same. 

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

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

ISBN 978-1-491-95677-9 (анг.)
© 2017 Simon St. Laurent and J. David Eisenberg

ISBN 978-5-97060-518-9 (рус.)
© Оформление, издание, ДМК Пресс, 2017

Содержание

Предисловие .......................................................................................................10

Глава 1. Устраиваемся поудобнее .................................................19
Установка ......................................................................................................................19

Установка Erlang ...................................................................................................19
Установка Eli xir .....................................................................................................20

Запуск ............................................................................................................................21
Первые шаги ................................................................................................................22

Навигация по тексту и истории команд .......................................................23
Навигация по файлам .........................................................................................23

Сделаем что-нибудь ..................................................................................................24
Вызов функций ...........................................................................................................25
Числа в Eli xir ...............................................................................................................26
Работа с переменными в оболочке .......................................................................28

Глава 2. Функции и модули ...................................................................31
Игры с fn ........................................................................................................................31
И & ..................................................................................................................................33
Определение модулей ..............................................................................................34
От модулей к свободным функциям ...................................................................38
Деление кода на модули ..........................................................................................38
Комбинирование функций с помощью оператора конвейера ....................40
Импортирование функций .....................................................................................41
Значения по умолчанию для аргументов ..........................................................42
Документирование кода ..........................................................................................43

Документирование функций ............................................................................44
Документирование модулей .............................................................................46

Глава 3. Атомы, кортежи и сопоставление  
с образцом ............................................................................................................48
Атомы .............................................................................................................................48
Сопоставление с образцом и атомы .....................................................................49
Логические атомы ......................................................................................................50

 Содержание

Ограничители ..............................................................................................................52
Обозначайте подчеркиванием все, что не важно ............................................55
Структуры данных: кортежи ..................................................................................57

Сопоставление с образцом и кортежи ...........................................................58
Обработка кортежей ............................................................................................59

Глава 4. Логика и рекурсия ...................................................................62
Логика внутри функций ..........................................................................................62

Конструкция case ..................................................................................................62
Конструкция cond .................................................................................................65
if или else ..................................................................................................................66
Присваивание значений переменным в конструкциях case и if ...........68

Самый желательный побочный эффект: IO.puts ............................................69
Простая рекурсия .......................................................................................................71

Обратный отсчет ...................................................................................................71
Прямой отсчет ........................................................................................................73
Рекурсия с возвратом значения .......................................................................74

Глава 5. Взаимодействие с человеком .....................................79
Строки ............................................................................................................................79
Многострочные строки ............................................................................................82
Юникод ..........................................................................................................................82
Списки символов .......................................................................................................83
Строковые метки ........................................................................................................84
Запрос информации у пользователя ...................................................................85

Ввод символов .......................................................................................................85
Чтение строк текста .............................................................................................86

Глава 6. Списки .................................................................................................91
Основы списков ..........................................................................................................91
Деление списков на головы и хвосты .................................................................93
Обработка содержимого списков .........................................................................94
Создание списка из головы и хвоста ...................................................................96
Смешивание списков и кортежей ........................................................................99
Создание списка списков ........................................................................................99

Глава 7. Пары имя/значение ............................................................103
Списки ключей ........................................................................................................103
Списки кортежей с несколькими ключами ...................................................105

Содержание  7

Словари ......................................................................................................................106
От списков к отображениям ................................................................................107

Создание отображений ....................................................................................108
Изменение отображений .................................................................................108
Чтение отображений .........................................................................................109

От отображений к структурам ...........................................................................109

Объявление структур ........................................................................................110
Создание и чтение экземпляров структур .................................................110
Использование структур в сопоставлениях с образцом .......................111
Использование структур в функциях..........................................................112
Добавление поведения в структуры .............................................................114
Расширение существующих протоколов....................................................116

Глава 8. Функции высшего порядка  
и генераторы списков ..............................................................................118
Простые функции высшего порядка .................................................................118
Создание новых списков с помощью функций высшего порядка .........121

Получение информации о списке ................................................................121
Обработка элементов списка с помощью функций ...............................122
Фильтрация значений в списках ..................................................................123

За пределами возможностей генераторов списков .....................................124

Проверка списков ..............................................................................................124
Разбиение списков ............................................................................................125
Свертка списков .................................................................................................126

Глава 9. Процессы ......................................................................................129
Интерактивная оболочка – это процесс ..........................................................129
Порождение процессов из модулей ..................................................................132
Легковесные процессы ..........................................................................................135
Регистрация процесса ............................................................................................136
Когда процесс останавливается .........................................................................137
Взаимодействие между процессами .................................................................138
Наблюдение за процессами .................................................................................141

Наблюдение за движением сообщений между процессами ................143

Разрыв и установка связей между процессами ............................................145

Глава 10. Исключения, ошибки и отладка ...........................152
Виды ошибок ............................................................................................................152
Восстановление работоспособности после ошибок времени  
выполнения ...............................................................................................................153

 Содержание

Журналирование результатов выполнения и ошибок ...............................156
Трассировка сообщений ........................................................................................157
Трассировка вызовов функций ..........................................................................159

Глава 11. Статический анализ, спецификации  
типов и тестирование ..............................................................................161
Статический анализ ...............................................................................................161
Спецификации типов ............................................................................................164
Модульные тесты ....................................................................................................167
Настройка тестов ....................................................................................................170
Встраивание тестов в документацию ...............................................................172

Глава 12. Хранение структурированных данных ..........173
Записи: структурирование данных до появления структур ....................173

Определение записей .......................................................................................174
Создание и чтение записей .............................................................................175
Использование записей в функциях ...........................................................177

Сохранение данных в долговременном хранилище Erlang ......................179

Создание и заполнение таблицы ..................................................................181
Простые запросы ................................................................................................187
Изменение значений .........................................................................................187
Таблицы ETS и процессы ................................................................................188
Следующие шаги ................................................................................................190

Хранение записей в Mnesia .................................................................................191

Настройка базы данных Mnesia ....................................................................191
Создание таблиц.................................................................................................192
Чтение данных ....................................................................................................196

Глава 13. Основы OTP ..............................................................................198
Создание служб с помощью GenServer ...........................................................199
Простой супервизор ...............................................................................................204
Упаковка приложения с помощью Mix ...........................................................209

Глава 14. Расширение языка Eli xir  
с помощью макросов ...............................................................................213
Функции и макросы ...............................................................................................213
Простой макрос .......................................................................................................214
Создание новой логики .........................................................................................216
Программное создание функций .......................................................................217
Когда (не) следует использовать макросы .....................................................219

Содержание  9

Глава 15. Phoenix .........................................................................................221
Установка базовых компонентов фреймворка ..............................................221
Структура простого Phoenix-приложения .....................................................224
Представление страницы .....................................................................................224

Маршрутизация .................................................................................................225
Простой контроллер .........................................................................................227
Простое представление ....................................................................................228

Вычисления ...............................................................................................................230
Продвижение Eli xir ................................................................................................237

Приложение А. Каталог элементов языка Eli xir .............239
Команды интерактивной оболочки ..................................................................239
Зарезервированные слова ....................................................................................240
Операторы .................................................................................................................241
Ограничители ...........................................................................................................243
Часто используемые функции ............................................................................244

Приложение В. Создание документации  
с помощью ExDoc ........................................................................................247
Использование ExDoc вместе с Mix .................................................................247

Предметный указатель ..........................................................................251

Об авторах ..........................................................................................................259

Колофон ................................................................................................................260

Предисловие

Язык Eli xir предлагает разработчикам мощь функционального и конкурентного языка программирования Erlang, но с более дружественным синтаксисом, обширным набором библиотек и средствами 
метапрограммирования. Программный код на языке Eli xir компилируется в байт-код Erlang, что позволяет объединять его с программным кодом, написанным на Erlang, и использовать инструменты Erlang. Однако, несмотря на общий фундамент, Eli xir создает ощущение 
совершенно другого языка, более похожего, пожалуй, на Ruby, чем на 
Prolog, предшественника Erlang.
Книга «Введение в Eli xir» познакомит вас с этим мощным языком. 

 Это издание книги «Введение в Eli xir» охватывает версию 1.4 языка. 
Мы будем обновлять и дополнять его по мере развития Eli xir. Если 
вы найдете ошибки или опечатки, сообщите нам, воспользовавшись 
системой учета ошибок.

Кому адресована эта книга

Эта книга адресована в основном тем, кто имеет опыт программирования на других языках, но ищет чего-то нового. Может быть, вас 
интересует весьма практичная и распределенная модель программирования, обладающая преимуществами масштабирования и высокой надежности. Может быть, вы хотите увидеть и понять, что такое 
«функциональное программирование». Или просто желаете познакомиться с чем-то новым без конкретной цели.
Мы полагаем, что функциональный стиль программирования стал 
намного более доступным гораздо раньше, чем вы научились программировать с использованием других парадигм. Однако знакомство с Eli xir – а иногда даже просто его установка – требует немалых 
навыков. Поэтому, если вы вообще не имеете опыта программирования, добро пожаловать на борт, но имейте в виду, что по пути вам 
встретится немало сложностей.

Доступ онлайн
699 ₽
В корзину