Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
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 (дата обращения: 16.04.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

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

Профилирование .................................................................................................................. 357
Статический анализ кода .................................................................................................. 359
Отладка .................................................................................................................................... 361
Разработка пакета ..................................................................................................................... 363
Анатомия ................................................................................................................................. 363
Классификация ..................................................................................................................... 366
Использование Git............................................................................................................... 367
Публикация ............................................................................................................................ 369
Сообщества программистов .................................................................................................. 370
Классификации .................................................................................................................... 371
Группа пакетов JuliaAstro .................................................................................................. 371
Группа пакетов JuliaGPU .................................................................................................. 378
Что не вошло в книгу? ............................................................................................................. 381
Заключение ................................................................................................................................. 382

Символическая математика с Julia ..................................384
Введение ....................................................................................................................................... 384
О пакете ................................................................................................................................... 385
Уравнения ............................................................................................................................... 386
Элементарная алгебра ........................................................................................................ 386
Решение уравнений ............................................................................................................. 387
Построение графиков выражений ................................................................................. 390
Пределы ................................................................................................................................... 392
Производные ......................................................................................................................... 393
Экстремумы ........................................................................................................................... 394
Интегрирование.................................................................................................................... 394
Применения ........................................................................................................................... 395

Глоссарий основных терминов и сокращений ....................398

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


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

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

Для кого эта книга написана

Это практическое руководство предназначено для специалистов в области науки 
о данных. Книга предполагает наличие некоторых навыков работы с Julia и навыков программирования на скриптовом языке, таком как Python и R, либо на 
компилируемом языке, таком как C или Java.

Чему вы научитесь, прочитав эту книгу

 
 Инсталлировать среду разработки и выполнять ее сборку и настройку под 
вашу операционную среду.
 
 Создавать проекты в области науки о данных в рамках полного цикла ETL, 
анализа и визуализации данных.
 
 Понимать систему типов и принципы множественной диспетчеризации для 
получения большей отдачи от программирования на Julia.
 
 Взаимодействовать с файлами и таблицами данных с целью изучения простых статистических и аналитических показателей.
 
 Отображать графики и визуальные данные с целью проведения на Julia 
имитационного моделирования.
 
 Использовать Julia для взаимодействия с базами данных SQL и NoSQL.
 
 Работать с распределенными системами в веб-среде и в облаке.
 
 Разрабатывать свои собственные программные пакеты и участвовать в деятельности сообщества программистов на Julia в качестве соавтора.

Об авторе

Малкольм Шеррингтон работает в сфере информационных технологий более 
35 лет. Он имеет степени в области математики, химии и инженерно-технических 
наук и читал лекции в двух различных университетах Великобритании, а также 
работал в аэрокосмической и медицинской отраслях экономики. В настоящее 
время руководит собственной компанией в финансовом секторе, с определенными интересами к высокоэффективным вычислениям и приложениям на основе 
графического процессора и параллельных вычислений.
Будучи деятельным специалистом, Малкольм начал программировать научные 
задачи на Fortran и C, совершенствуя навыки программирования на Ada и Common 
LISP, и недавно занялся обработкой данных и аналитикой на Perl, Python и R.
Малкольм Шеррингтон является организатором Лондонской ассоциации программистов на Julia. Кроме того, он является coорганизатором британской meetupгруппы по высокопроизводительным вычислениям и финансовым технологиям 
и лондонской meetup-группы финансовых аналитиков.

Я бы хотел посвятить эту книгу памяти моей покойной жены, 
Хэйзел Шеррингтон, без поддержки которой я бы не взялся осваивать 
Julia и которой не суждено было увидеть подтверждения своей проницательности.
Кроме того, хочу выразить особую благодарность Барбаре Доре 
и Джеймсу Уэймсу за их существенную помощь и материальную поддержку при подготовке этой книги.

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

Гурурагав Гопал в настоящее время работает консультантом по управлению рисками в стартапах. Ранее он работал в Paterson Securities в качестве разработчика 
в области финансовой аналитики и консультанта по трейдингу. Кроме того, занимал должность консультанта по анализу данных и был связан с организацией 
электронной торговли. Он преподавал студентам и аспирантам в Технологическом университете VIT в Веллуру (Индия), специализируясь на распознавании 
образов, машинном обучении и больших данных. Как научный сотрудник связан 
с несколькими исследовательскими организациями, а именно IFMR и NAL. Кроме того, выступил рецензентом книги Learning Data Mining with R («Изучение 
интеллектуального анализа данных при помощи R»), вышедшей в издательстве 
Packt Publishing, а также нескольких журналов и конференций.
Он имеет степень бакалавра в области электротехники и электроники, а также 
степень магистра в области информатики и инженерии. Позже он выполнил свою 
курсовую работу от Института финансового управления и исследования (IFMR), 
Индия, по финансовой инженерии и управлению рисками, и с тех пор был занят 
в финансовой отрасли. Завоевал множество наград и имеет несколько международных публикаций.
Гурурагав Гопал интересуется программированием, обучением и выполняет 
консалтинговые услуги, а в свободное время слушает музыку.
По вопросам профессиональных консультаций к нему можно обратиться на его 
странице в соцсети LinkedIn (in.linkedin. com/in/gururaghavg).
Жуо СЛ – свободный разработчик из Китая с десятилетним опытом разработок 
в Linux, на C, C++, Java и Perl. Любит принимать участие в деятельности сообщества программистов (разумеется, включая сообщество программистов на Julia), 
в том числе в качестве соватора. Ведет свой личный веб-сайт на http://kdr2.com, 
где о Жуо можно узнать еще больше.
Дэн Власюк – автор различных пакетов Julia, включая пакеты TimeSeries 
и Quandl; основатель группы JuliaQuant на веб-сайте Github, связанной с программными пакетами в области квантитативных финансов.

Предисловие

Julia – относительно молодой язык программирования. Первоначальные проектные работы по языку Julia начались в Массачусетском технологическом институте 
(MIT)1 в августе 2009 года, и к февралю 2012-го он стал общедоступным. Заслуга 
по созданию этого языка в основном принадлежит трем разработчикам: Стефану 
Карпински, Джеффу Безансону и Виралу Шаху. Все трое, наряду с Аланом Эдельманом, до сих пор активно развивают проект Julia в MIT, где в настоящее время 
проводится ряд курсов по Julia, многие из которых доступны в Интернете.
Первоначально разработчики задумывали Julia как язык для научного программирования с быстродействием, достаточным для восполнения потребности 
в моделировании на интерактивном языке с последующей неизбежной переработкой кода на компилирующем языке, таком как C или Fortran. В то время главные 
языки для научного программирования, как, например, MATLAB и Mathematica, 
были защищены правами интеллектуальной собственности и до сих пор остаются относительно медленными. При этом имеются клоны этих языков в области 
открытого программного обеспечения, например GNU Octave и Scilab, но они 
работают еще медленнее. Когда язык Julia был запущен, сообщество программистов увидело в нем замену MATLAB, однако это не совсем верно. Несмотря на 
то что синтаксис Julia похож на MATLAB настолько, что любой компетентный 
в MATLAB специалист может легко изучить Julia, он не разрабатывался как клон. 
Это язык с более развитым функционалом и со многими существенными отличиями, которые будут подробно рассмотрены далее.
Период с 2009 года засвидетельствовал рост двух новых вычислительных дисциплин: больших данных / облачных вычислений и науки о данных. Обработка 
больших данных на Hadoop традиционно рассматривается как область программирования на Java, поскольку Hadoop выполняется в виртуальной машине Java. 
Разумеется, существует возможность обрабатывать большие данные при помощи 
языков программирования помимо тех, которые основаны на Java и используют 
парадигму jar-файлов с потоковой передачей, и тут Julia может применяться по 
аналогии с тем, как это делается на C++, C# и Python.
Появление науки о данных возвестило о начале использования языков программирования, которые просты для аналитиков, обладающих некими навыками 
программирования, но не являющихся специалистами в этой области. Два языка, 
развитие которых ускорилось, чтобы заполнить этот пробел, – R и Python. Оба 
они относительно стары и уходят своими корнями в 1990-е годы. Однако популярность обоих демонстрирует стремительный рост, по иронии, примерно с того 

1 Массачусетский технологический институт – университет и исследовательский центр, 
расположенный в Кембридже (штат Массачусетс, США). Также известен как Массачусетский институт технологий и Массачусетский технологический университет.

 Предисловие

времени, когда общественности был представлен язык Julia. Тем не менее, даже 
имея такую признанную и солидную оппозицию, этот язык взволновал научное 
программистское сообщество и продолжает проводить рейды в этом направлении.
Цель этой книги состоит в том, чтобы охватить все аспекты языка Julia, которые 
делают его привлекательным для аналитиков данных. Язык развивается быстро. 
Двоичные дистрибутивы доступны для Linux, Mac OS X и Windows, но они отстают от текущих исходников. Поэтому, чтобы выполнять при помощи Julia серьезную работу, важно понимать, как получать и собирать рабочую систему из исходных текстов. Кроме того, для Julia доступны интерактивные среды разработки 
(IDE), и в данной книге будут проанализированы IDE Jupyter, Juno и плагин JuliaDT для среды Eclipse.

О чем рассказывает эта книга

Глава 1 «Среда разработки Julia» рассказывает о том, как запустить дистрибутив 
Julia и привести его в состояние готовности к работе. Важно уметь получать самые 
последние исходные тексты и собирать систему с нуля, а также находить и устанавливать надлежащие пакеты и при необходимости их удалять.
Глава 2 «Разработка на Julia» содержит краткий обзор части стандартных синтаксических конструкций языка. Julia – язык новый, но он отнюдь не покажется 
новым читателям с компетенцией в MATLAB, R или Python, поэтому цель главы 
состоит в том, чтобы с помощью примеров кратко довести до читателей информацию о Julia и направить их к онлайновым источникам. Кроме того, важно понимать разницу работы через консоль и с интегрированными средами разработки 
Jupyter/Juno/JuliaDT.
Глава 3 «Типы и диспетчеризация» посвящена системе типов Julia и показывает, 
каким образом она предоставляет разработчику мощные методы посредством ее 
de facto функциональной системы диспетчеризации.
Глава 4 «Функциональная совместимость» касается методов, посредством которых Julia может взаимодействовать с операционной системой и другими языками 
программирования. Эти методы являются в основном нативными для Julia. Глава 
заканчивается введением в параллелизм, который будет рассмотрен подробнее 
в главе 9.
Глава 5 «Работа с данными» рассматривает выполняемую аналитиком данных 
процедуру – от источника данных до результатов анализа. Большинство проектов начинается с данных, которые нужно прочесть, очистить и отобрать. Об этом 
и идет речь в главе. Далее описываются простые статистические и аналитические 
показатели.
Глава 6 «Научное программирование» фактически освещает главную причину 
для программирования на Julia. Мощь языка заключена в его быстродействии 
в сочетании с простотой разработки на языке сценариев, что делает его особенно 
ценным при решении задач c процессами, вычислительно ограниченными возможностями ЦПУ. В главе рассматриваются различные подходы, используемые 
при решении математических и естественнонаучных задач.

Для кого эта книга  17

Глава 7 «Графика» описывает тот аспект, в котором Julia часто не выдерживает 
сравнения с другими альтернативными языками, такими как MATLAB и R. Действительно, более ранние версии языка имели достаточно ограниченную поддержку графики, но теперь дело обстоит иначе. В главе представлено большое разнообразие сложных подходов к визуализации графики на экране и сохранению ее 
в дисковых файлах.
Глава 8 «Базы данных» рассказывает о взаимодействии языка Julia с базами данных. В базе данных могут храниться данные для анализа – либо там требуется сохранить результаты анализа. В этой главе будет проанализировано несколько подходов к хранению данных в хранилищах SQL и NoSQL. Они не встроены в язык, 
а скорее полностью опираются на сторонние пакеты, поэтому в ближайшем будущем могут быть усовершенствованы.
Глава 9 «Сетевое взаимодействие» касается аспектов работы с распределенными источниками данных. В науке о данных большие данные и облачные системы 
приобретают все большую популярность, и в этой главе рассказывается о сетевом 
программировании на уровне сокета и взаимодействии через сеть Интернет. Кроме того, она посвящена анализу работы Julia в веб-службах Amazon и с вычислительным сервером Google.
Глава 10 «Работа с Julia» предоставляет читателям дополнительную информацию и побуждает продолжить работу, участвуя в совместной разработке на Julia. 
Можно попробовать свои силы в качестве соавтора, вносящего свой вклад в существующий пакет, либо просто примкнуть к одному из сообществ программистов 
на Julia.

Что вам потребуется для работы

Разработка на Julia может выполняться в любой из известных вычислительных 
операционных систем: Linux, OS X и Windows. В целях углубленного исследования языка читатель может захотеть получить последние версии и собрать язык из 
исходников под Linux. Однако для того, чтобы начать работать с языком в любой 
из трех операционных платформ, предусмотрена простая и удобная инсталляция 
языка с использованием двоичного дистрибутива. Кроме того, можно отдельно 
скачать и установить интегрированную среду разработки (IDE) Juno и плагин для 
среды разработки Eclipse.
Некоторые примеры в более поздних главах, касающиеся поддержки баз данных, сетевого взаимодействия и облачных служб, потребуют установки дополнительных компонентов и использования дополнительных ресурсов, и вопросы их 
получения будут обсуждаться в соответствующих частях книги.

Для кого эта книга

Эта книга не является введением в программирование, и потому предполагается, 
что читатель знаком с понятийным аппаратом по крайней мере одного языка программирования. Для тех, кто знаком с языками сценариев, такими как Python, R 

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