Осваиваем язык Julia
Покупка
Издательство:
ДМК Пресс
Автор:
Шеррингтон Малкольм
Перевод:
Логунов А. В.
Год издания: 2017
Кол-во страниц: 416
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-370-3
Артикул: 712478.01.99
Julia — это хорошо структурированный язык программирования с большим быстродействием, устраняющий классическую проблему выполнения анализа на одном языке и трансляции его результатов на второй с целью повышения производительности. Приведены этапы инсталляции и выполнения Julia в разных операционных средах. Описываются различные способы работы с языком, его ключевой функционал, пошагово разбираются практические примеры. Рассмотрена работа Julia с внешними процессами, благодаря которым происходит значительное улучшение качества визуализации графиков и данных. Не обделено вниманием метапрограммирование, формирующее сетевую и распределенную вычислительную среду языка. Издание предназначено для специалистов в области анализа данных, а также разработчиков, желающих познакомиться с новым языком программирования.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Малкольм Шеррингтон Осваиваем язык 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