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

Осваиваем язык Julia

Покупка
Артикул: 712478.01.99
Доступ онлайн
799 ₽
В корзину
Julia — это хорошо структурированный язык программирования с большим быстродействием, устраняющий классическую проблему выполнения анализа на одном языке и трансляции его результатов на второй с целью повышения производительности. Приведены этапы инсталляции и выполнения Julia в разных операционных средах. Описываются различные способы работы с языком, его ключевой функционал, пошагово разбираются практические примеры. Рассмотрена работа Julia с внешними процессами, благодаря которым происходит значительное улучшение качества визуализации графиков и данных. Не обделено вниманием метапрограммирование, формирующее сетевую и распределенную вычислительную среду языка. Издание предназначено для специалистов в области анализа данных, а также разработчиков, желающих познакомиться с новым языком программирования.
Шеррингтон, М. Осваиваем язык Julia / М. Шеррингтон ; пер. с анг. А.В. Логунова. - Москва : ДМК Пресс, 2017. - 416 с. - ISBN 978-5-97060-370-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1028117 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Малкольм Шеррингтон

Осваиваем язык Julia

Malcolm Sherrington

Mastering Julia 

Develop your analytical and programming skills further 
in Julia to solve complex data processing problems

BIRMINGHAM - MUMBAI

Малкольм Шеррингтон

Осваиваем язык Julia

Совершенствование мастерства в области аналитики 
и программирования при помощи Julia в целях  
решения задач комплексной обработки данных

Москва, 2017

УДК 004.438Julia
ББК 32.973.2
Ш49

Шеррингтон М.

Ш49 Осваиваем язык Julia / пер. с анг. А. В. Логунова. – М.: ДМК Пресс, 2017. –

416 с.: ил.

ISBN 978-5-97060-370-3

Julia – это хорошо структурированный язык программирования с большим быстродействием,

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

Издание предназначено для специалистов в области анализа данных, а также разработчиков,

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

УДК 004.438Julia

ББК 32.973.2

Copyright ©Packt Publishing, 2015. First published in the English language under the title

«Mastering Julia -(9781783553310)»

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

бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность

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

ISBN 978-0-13-407770-3 (анг.) 
Copyright © Packt Publishing, 2015.

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

Содержание

Осваиваем язык Julia ......................................................12

Об авторе ......................................................................13

О рецензентах................................................................14

Предисловие .................................................................15
О чем рассказывает эта книга ..................................................................................................16
Что вам потребуется для работы ............................................................................................17
Для кого эта книга .......................................................................................................................17
Соглашения ....................................................................................................................................18
Обратная связь .........................................................................................................................19
Скачивание исходного кода программ ............................................................................19
Ошибки и опечатки ................................................................................................................19
Нарушение авторских прав .................................................................................................19
Вопросы ......................................................................................................................................20
Readme от автора ..........................................................................................................................20
Комментарий переводчика .......................................................................................................20
Выполнение примеров программного кода на Julia ....................................................21
Установка среды разработки Julia .....................................................................................22
Установка пакетов в среду разработки Julia ..................................................................23
Установка и удаление IDE Juno/Atom ............................................................................25
Установка и работа с плагином для Eclipse ....................................................................25
Работа с Julia в облаке JuliaBox ..........................................................................................26
Установка и удаление дистрибутива Anaconda Python .............................................26
Запуск сервера записных книжек Jupyter ......................................................................27
Факультативные настройки среды ...................................................................................27

Среда разработки Julia ....................................................29
Введение ..........................................................................................................................................29
Философия ................................................................................................................................30
Роль в науке о данных и в области больших данных .................................................31
Сопоставление с другими языками ..................................................................................32
Характеристики .......................................................................................................................34
Начало работы ...............................................................................................................................35
Исходные тексты Julia ...........................................................................................................36
Сборка из исходников ...........................................................................................................37
Изучение стека исходного кода .........................................................................................41
Интегрированная среда разработки Juno .......................................................................42

 Содержание

Плагин JuliaDT для среды программирования Eclipse .............................................43
Среда программирования IJulia .........................................................................................44
Краткий обзор языка Julia ........................................................................................................46
Julia через консоль ..................................................................................................................47
Установка некоторых пакетов .............................................................................................50
Мои эталонные испытания ..................................................................................................52
Управление пакетами .................................................................................................................53
Вывод перечня пакетов, добавление и удаление..........................................................53
Выбор и ознакомление с пакетами ...................................................................................54
Как деинсталлировать Julia .................................................................................................58
Добавление незарегистрированного пакета ..................................................................59
Особенности языка Julia ............................................................................................................59
Параллельная обработка ......................................................................................................59
Множественная диспетчеризация ....................................................................................60
Гомоиконные макрокоманды ..............................................................................................60
Межязыковое взаимодействие ...........................................................................................60
Заключение ....................................................................................................................................61

Разработка на Julia .........................................................62
Целые числа, биты, байты и логические значения ...........................................................62
Целое ...........................................................................................................................................63
Логические и арифметические операторы .....................................................................65
Логический тип ........................................................................................................................65
Массивы ..........................................................................................................................................66
Операции на матрицах ..........................................................................................................68
Поэлементные операции ......................................................................................................68
Простая марковская цепь – кошки и мышки ................................................................69
Символьный и строковый типы .............................................................................................70
Символьный тип .....................................................................................................................70
Строковый тип .........................................................................................................................71
Пример: игра «Быки и коровы» .........................................................................................74
Вещественные, комплексные и рациональные числа .....................................................76
Вещественные ..........................................................................................................................77
Рациональные числа ..............................................................................................................78
Комплексные числа ................................................................................................................78
Составные типы ............................................................................................................................82
Дополнительно о матрицах ......................................................................................................82
Векторизованный и девекторизованный программный код ...................................83
Многомерные массивы .........................................................................................................83
Разреженные матрицы ..........................................................................................................85
Массивы и таблицы данных .....................................................................................................86

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

Словари, множества и прочее ..................................................................................................87
Словари ......................................................................................................................................87
Множества .................................................................................................................................89
Другие структуры данных....................................................................................................90
Заключение ....................................................................................................................................91

Типы и диспетчеризация ..................................................92
Функции..........................................................................................................................................92
Объекты первого класса .......................................................................................................92
Передача аргументов .............................................................................................................96
Область видимости.............................................................................................................. 100
Задача о восьми ферзях ..................................................................................................... 103
Система типов Julia .................................................................................................................. 104
Обзор рационального типа ............................................................................................... 104
Тип данных для транспортных средств ........................................................................ 107
Перечисляемый тип ............................................................................................................ 116
Множественная диспетчеризация ...................................................................................... 118
Параметрические типы ...................................................................................................... 119
Операции преобразования и приведения .................................................................... 121
Модуль для фиксированного 3D-вектора ................................................................... 122
Заключение ................................................................................................................................. 124

Функциональная совместимость .....................................125
Взаимодействие с другими программными средами ................................................... 125
Обращение к программам на C и Fortran .................................................................... 126
Язык Python ........................................................................................................................... 131
Некоторые другие языки ................................................................................................... 133
Программный интерфейс Julia ........................................................................................ 133
Обращение к API из C ........................................................................................................ 134
Метапрограммирование ......................................................................................................... 136
Символические имена ........................................................................................................ 136
Макрокоманды ...................................................................................................................... 138
Тестирование ......................................................................................................................... 141
Макрокоманда enum ........................................................................................................... 143
Объект Task и многозадачность ........................................................................................... 145
Параллельные операции .................................................................................................... 146
Распределенные массивы .................................................................................................. 148
Простая модель MapReduce ............................................................................................. 151
Исполнение команд .................................................................................................................. 152
Запуск команд на исполнение ......................................................................................... 153
Работа с файловой системой ............................................................................................ 155

 Содержание

Перенаправление ввода-вывода и конвейеры ........................................................... 157
Заключение ................................................................................................................................. 160

Работа с данными .........................................................161
Базовая система ввода-вывода ............................................................................................. 161
Терминальный ввод-вывод ............................................................................................... 161
Дисковые файлы .................................................................................................................. 163
Обработка текста .................................................................................................................. 165
Двоичные файлы .................................................................................................................. 167
Структурированные наборы данных ................................................................................. 169
Файлы CSV и DLM ............................................................................................................. 169
Файлы HDF5 ......................................................................................................................... 173
Файлы XML ........................................................................................................................... 176
DataFrames и RDatasets .......................................................................................................... 179
Пакет DataFrames ................................................................................................................ 179
Таблицы данных DataFrame ............................................................................................. 180
Пакет RDatasets .................................................................................................................... 183
Статистика ................................................................................................................................... 187
Простые статистики ............................................................................................................ 188
Выборки и их оценка .......................................................................................................... 190
Модуль Pandas ...................................................................................................................... 190
Отдельные темы ........................................................................................................................ 192
Временные ряды ................................................................................................................... 192
Распределения вероятностей ........................................................................................... 195
Проверка статистических гипотез ................................................................................. 197
Обобщенная линейная модель ........................................................................................ 199
Заключение ................................................................................................................................. 202

Научное программирование ...........................................203
Линейная алгебра ...................................................................................................................... 204
Система уравнений .............................................................................................................. 204
Разложение матриц ............................................................................................................. 206
Собственные значения и собственные векторы ........................................................ 207
Матрицы специального вида ........................................................................................... 210
Обработка сигналов ................................................................................................................. 211
Частотный анализ ................................................................................................................ 211
Фильтрация и сглаживание .............................................................................................. 211
Цифровые фильтры ............................................................................................................. 214
Обработка изображений .................................................................................................... 214
Дифференциальные уравнения ........................................................................................... 217
Решение обыкновенных дифференциальных уравнений ...................................... 217

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

Нелинейные обыкновенные дифференциальные уравнения .............................. 219
Дифференциальные уравнения в частных производных ...................................... 222
Оптимизационные задачи ...................................................................................................... 224
Пакет JuMP ............................................................................................................................ 225
Пакет Optim ........................................................................................................................... 227
Пакет NLopt ........................................................................................................................... 229
Стохастические задачи ............................................................................................................ 233
Стохастическое моделирование ...................................................................................... 233
Байесовские методы и марковские процессы ............................................................ 237
Заключение ................................................................................................................................. 243

Графика ......................................................................244
Базовая графика в Julia ........................................................................................................... 245
Построение текстовых графиков .................................................................................... 245
Пакет Cairo ............................................................................................................................. 246
Пакет Winston ....................................................................................................................... 248
Визуализация данных ............................................................................................................. 251
Пакет Gadfly ........................................................................................................................... 252
Пакет Compose ...................................................................................................................... 257
Графические движки ................................................................................................................ 259
Пакет PyPlot .......................................................................................................................... 259
Пакет Gaston .......................................................................................................................... 262
Пакет PGFPlots .................................................................................................................... 264
Использование сети Интернет ............................................................................................. 267
Пакет Bokeh ........................................................................................................................... 267
Пакет Plotly ............................................................................................................................ 268
Растровая графика .................................................................................................................... 271
Возвращаясь к пакету Cairo ............................................................................................. 272
Возвращаясь к пакету Winston ........................................................................................ 273
Пакеты Images и ImageView ............................................................................................. 274
Заключение ................................................................................................................................. 276

Базы данных ................................................................278
Общий обзор баз данных ........................................................................................................ 278
Вот две таблетки: красная и синяя. Выбирай! ........................................................... 279
Взаимодействие с базами данных .................................................................................. 280
Другие соображения ........................................................................................................... 282
Реляционные базы данных .................................................................................................... 283
Создание и загрузка ............................................................................................................ 283
Нативные интерфейсы ....................................................................................................... 286
Программный интерфейс ODBC ................................................................................... 289

 Содержание

Другие методы взаимодействия...................................................................................... 293
Интерфейс DBI ..................................................................................................................... 294
Пакет PyCall .......................................................................................................................... 296
Стандарт взаимодействия JDBC .................................................................................... 298
Хранилища данных NoSQL ................................................................................................... 299
Системы «ключ-значение» ............................................................................................... 300
Документоориентированные хранилища данных .................................................... 303
Взаимодействие с RESTful .................................................................................................... 306
Данные в формате JSON .................................................................................................... 307
Интернет-СУБД ................................................................................................................... 308
Графовые системы хранения данных ............................................................................ 311
Заключение ................................................................................................................................. 314

Сетевое взаимодействие ...............................................315
Сокеты и серверы ...................................................................................................................... 315
Стандартные порты ............................................................................................................. 315
Сокеты UDP и TCP в Julia ............................................................................................... 316
«Зазеркальный» эхо-сервер.............................................................................................. 317
Именованные каналы ......................................................................................................... 320
Работа в сети Интернет ........................................................................................................... 321
Веб-служба на основе TCP ............................................................................................... 321
Группа пакетов JuliaWeb .................................................................................................... 323
Сервер цитат .......................................................................................................................... 326
Технология WebSocket ....................................................................................................... 328
Обмен сообщениями ................................................................................................................ 332
Электронная почта .............................................................................................................. 332
Социальная сеть Twitter .................................................................................................... 333
СМС-сообщения .................................................................................................................. 335
Облачные службы ..................................................................................................................... 338
Введение в веб-службы Amazon ...................................................................................... 339
Пакет AWS.jl .......................................................................................................................... 340
Платформа Google Cloud .................................................................................................. 344
Заключение ................................................................................................................................. 347

Работа с Julia ...............................................................348
Внутреннее устройство ........................................................................................................... 348
Язык Femtolisp ...................................................................................................................... 349
Программный интерфейс Julia ........................................................................................ 350
Генерация машинных кодов ............................................................................................. 352
Советы относительно производительности .................................................................... 355
Наиболее успешная практика .......................................................................................... 355

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